Fix bug select in market
All checks were successful
Continuous Deployment / lint (push) Successful in 28s
Continuous Deployment / deploy-chrome (push) Successful in 32s
Continuous Deployment / deploy-firefox (push) Successful in 1m50s

This commit is contained in:
2025-11-15 13:17:40 +01:00
parent c22c2fb254
commit f841780ed9
4 changed files with 141 additions and 101 deletions

View File

@@ -1,5 +1,9 @@
# Changelog # Changelog
### 1.6.1 (2025-11-15)
- correction du bug de sélection de village dans le marché
## 1.5.1 (2025-11-13) ## 1.5.1 (2025-11-13)
- fonctionnalité de multi-attaques dans la même seconde - fonctionnalité de multi-attaques dans la même seconde

View File

@@ -1,9 +1,12 @@
{ {
"manifest_version": 3, "manifest_version": 3,
"name": "KAplus", "name": "KAplus",
"version": "1.5.1", "version": "1.6.1",
"author": "Samuel Campos - netoik.io", "developer": {
"name": "Samuel Campos",
"url": "https://git.netoik.io/samuel/kaplus"
},
"description": "Extension développée pour améliorer l'expérience de jeu KingsAge (fonctionne avec ou sans premium)", "description": "Extension développée pour améliorer l'expérience de jeu KingsAge (fonctionne avec ou sans premium)",
"browser_specific_settings": { "browser_specific_settings": {

View File

@@ -5,8 +5,8 @@
"firefox" "firefox"
], ],
"release_notes": { "release_notes": {
"fr": "- fonctionnalité de multi-attaques dans la même seconde", "fr": "- correction du bug de sélection de village dans le marché",
"en-US": "- feature multi-attack in same second" "en-US": "- fix bug on selecting village in market"
} }
} }
} }

View File

@@ -65,11 +65,17 @@ function shortcutElementReplace(elt, img, text) {
} }
} }
/* Improve main menu display */ function main() {
let layCastleTopElements = document.getElementsByClassName("lay_castle_top"); /* Exit immediately if not on game page */
if (layCastleTopElements.length === 1) { let layCastleTopElements = document.getElementsByClassName("lay_castle_top");
if (layCastleTopElements.length === 0) {
return;
}
/* Remove iframe banner */
document.getElementById("banner_skyscraper").remove(); document.getElementById("banner_skyscraper").remove();
/* Improve navbar icons */
let shortcutElements = layCastleTopElements[0].getElementsByClassName("shortcut_element"); let shortcutElements = layCastleTopElements[0].getElementsByClassName("shortcut_element");
shortcutElementReplace(shortcutElements[0], "ranking", shortcutElements[0].textContent.replace(/[^0-9]/g, "")); shortcutElementReplace(shortcutElements[0], "ranking", shortcutElements[0].textContent.replace(/[^0-9]/g, ""));
shortcutElementReplace(shortcutElements[1], "ally", ""); shortcutElementReplace(shortcutElements[1], "ally", "");
@@ -79,13 +85,19 @@ if (layCastleTopElements.length === 1) {
shortcutElementReplace(shortcutElements[5], "tools", ""); shortcutElementReplace(shortcutElements[5], "tools", "");
shortcutElementReplace(shortcutElements[6], "favorites", ""); shortcutElementReplace(shortcutElements[6], "favorites", "");
/* Center navbar */
let shortcutContainers = layCastleTopElements[0].getElementsByClassName("shortcut_container"); let shortcutContainers = layCastleTopElements[0].getElementsByClassName("shortcut_container");
shortcutContainers[0].classList.add("shortcut_container_left"); shortcutContainers[0].classList.add("shortcut_container_left");
shortcutContainers[2].classList.add("shortcut_container_right"); shortcutContainers[2].classList.add("shortcut_container_right");
}
/* Display unit-points on user profile */ /* Parse url params and switch case */
if (document.body.id === "info_player") { let urlParams = new URLSearchParams(window.location.search);
let section = urlParams.get("s");
let module = urlParams.get("m");
let sub = urlParams.get("sub");
/* Display unit-points on user profile */
if (section === "info_player" && (module === "profile" || module === null)) {
let mainContentPane = document.getElementsByClassName("contentpane")[1]; let mainContentPane = document.getElementsByClassName("contentpane")[1];
let borderLists = mainContentPane.getElementsByClassName("borderlist"); let borderLists = mainContentPane.getElementsByClassName("borderlist");
@@ -97,7 +109,7 @@ if (document.body.id === "info_player") {
let villagesTable = borderLists[1]; let villagesTable = borderLists[1];
let villagesRows = villagesTable.getElementsByTagName("tr"); let villagesRows = villagesTable.getElementsByTagName("tr");
let villagesPoints = 0; let villagesPoints = 0;
for (let i=1; i<villagesRows.length; i+=1) { for (let i = 1; i < villagesRows.length; i += 1) {
villagesPoints += num(villagesRows[i].getElementsByTagName("td")[2].textContent); villagesPoints += num(villagesRows[i].getElementsByTagName("td")[2].textContent);
} }
let villagesBonus = 2250 * Math.max(0, villagesCount - 1); let villagesBonus = 2250 * Math.max(0, villagesCount - 1);
@@ -110,14 +122,14 @@ if (document.body.id === "info_player") {
playerPropertiesTable.appendChild(createRow("Points troupes:", str(armyPoints))); playerPropertiesTable.appendChild(createRow("Points troupes:", str(armyPoints)));
playerPropertiesTable.appendChild(createRow("% points troupes:", armyPercent)); playerPropertiesTable.appendChild(createRow("% points troupes:", armyPercent));
} }
/* Display unit-points on village overview */ /* Display unit-points on village overview */
if (document.body.id === "overview") { if (section === "overview") {
let settlements = document.getElementById("settlement").textContent.split("|"); let settlements = document.getElementById("settlement").textContent.split("|");
let noBorderRows = document.getElementsByClassName("noborder"); let noBorderRows = document.getElementsByClassName("noborder");
let villagePointsRow = noBorderRows[0]; let villagePointsRow = noBorderRows[0];
for (let i=0; i<noBorderRows.length; i++) { for (let i = 0; i < noBorderRows.length; i++) {
if (noBorderRows[i].textContent.startsWith("Points:")) { if (noBorderRows[i].textContent.startsWith("Points:")) {
villagePointsRow = noBorderRows[i]; villagePointsRow = noBorderRows[i];
break; break;
@@ -127,10 +139,10 @@ if (document.body.id === "overview") {
villagePointsRow.getElementsByTagName("td")[1].textContent = "Points village: " + settlements[3]; villagePointsRow.getElementsByTagName("td")[1].textContent = "Points village: " + settlements[3];
unitPointsRow.getElementsByTagName("td")[1].textContent = "Points troupes: " + settlements[4]; unitPointsRow.getElementsByTagName("td")[1].textContent = "Points troupes: " + settlements[4];
villagePointsRow.after(unitPointsRow); villagePointsRow.after(unitPointsRow);
} }
/* Allow multiple attacks */ /* Allow multiple attacks */
if (document.body.id === "build_barracks_command") { if (section === "build_barracks" && module === "command" && sub === "send") {
let table = document.createElement("table"); let table = document.createElement("table");
table.classList.add("borderlist"); table.classList.add("borderlist");
let tbody = document.createElement("tbody"); let tbody = document.createElement("tbody");
@@ -151,17 +163,17 @@ if (document.body.id === "build_barracks_command") {
let form = document.getElementsByTagName("form")[0]; let form = document.getElementsByTagName("form")[0];
let firstInput = form.getElementsByTagName("input")[0]; let firstInput = form.getElementsByTagName("input")[0];
form.insertBefore(table, firstInput); form.insertBefore(table, firstInput);
form.addEventListener("submit", function(event) { form.addEventListener("submit", function (event) {
event.preventDefault(); event.preventDefault();
let formData = new FormData(this); let formData = new FormData(this);
let attackCount = parseInt(formData.get("attack_count").toString()); let attackCount = parseInt(formData.get("attack_count").toString());
formData.delete("attack_count"); formData.delete("attack_count");
let sent = 0; let sent = 0;
for (let i = 0; i < attackCount; i ++) { for (let i = 0; i < attackCount; i++) {
let xhr = new XMLHttpRequest(); let xhr = new XMLHttpRequest();
xhr.onload = function() { xhr.onload = function () {
sent ++; sent++;
if (sent === attackCount) { if (sent === attackCount) {
window.location.replace(xhr.responseURL); window.location.replace(xhr.responseURL);
} }
@@ -170,4 +182,25 @@ if (document.body.id === "build_barracks_command") {
xhr.send(formData); xhr.send(formData);
} }
}); });
}
/* Fix select bug in market */
if (section === "build_market" && (module === "send" || module === null)) {
let select = document.getElementsByName("village_name")[0];
select.removeAttribute("onchange");
select.addEventListener("change", function () {
let sendX = document.getElementById("send_x");
let sendY = document.getElementById("send_y");
if (this.selectedIndex === 0) {
sendX.value = "";
sendY.value = "";
} else {
let xy = this.value.split("|");
sendX.value = xy[0];
sendY.value = xy[1];
}
});
}
} }
main();