Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1f3addf328 | |||
| 3dd67d776b |
10
CHANGELOG.md
10
CHANGELOG.md
@@ -1,6 +1,14 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## 1.12.4 (2026-12-07)
|
## 1.12.3 (2026-12-07)
|
||||||
|
|
||||||
|
- correction du bug de récupération du token
|
||||||
|
|
||||||
|
## 1.12.2 (2026-12-07)
|
||||||
|
|
||||||
|
- correction du bug sur les villages non trouvés
|
||||||
|
|
||||||
|
## 1.12.1 (2026-12-07)
|
||||||
|
|
||||||
- ajout du planificateur autonome d'attaques
|
- ajout du planificateur autonome d'attaques
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"manifest_version": 3,
|
"manifest_version": 3,
|
||||||
"name": "KAplus",
|
"name": "KAplus",
|
||||||
"version": "1.12.1",
|
"version": "1.12.3",
|
||||||
|
|
||||||
"developer": {
|
"developer": {
|
||||||
"name": "Samuel Campos",
|
"name": "Samuel Campos",
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
"firefox"
|
"firefox"
|
||||||
],
|
],
|
||||||
"release_notes": {
|
"release_notes": {
|
||||||
"fr": "- ajout du planificateur autonome d'attaques",
|
"fr": "- correction du bug de récupération du token",
|
||||||
"en-US": "- add autonomous attack planer"
|
"en-US": "- fix bug retrieving token"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
108
src/kaplus.js
108
src/kaplus.js
@@ -122,68 +122,66 @@ function selectVillage(selectRef, inputXRef, inputYRef) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function storeOrderToken(ownVillages, targetVillage) {
|
function storeOrderToken(ownVillages, targetVillage, recursiveIndex) {
|
||||||
let orderToken = sessionStorage.getItem("orderToken");
|
let orderToken = sessionStorage.getItem("orderToken");
|
||||||
if (orderToken !== null) {
|
if (orderToken !== null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let breakLoop = false;
|
let villageId = Object.keys(ownVillages)[recursiveIndex];
|
||||||
for (let villageId in ownVillages) {
|
let xhrOrder = new XMLHttpRequest();
|
||||||
if (breakLoop === true) {
|
xhrOrder.addEventListener("readystatechange", function () {
|
||||||
return;
|
if (xhrOrder.readyState === xhrOrder.DONE) {
|
||||||
}
|
let parser = new DOMParser();
|
||||||
let xhrOrder = new XMLHttpRequest();
|
let doc = parser.parseFromString(xhrOrder.responseText, "text/html");
|
||||||
xhrOrder.addEventListener("readystatechange", function () {
|
let quantityDivs = doc.getElementsByClassName("quantity");
|
||||||
if (xhrOrder.readyState === xhrOrder.DONE) {
|
let unit = null;
|
||||||
let parser = new DOMParser();
|
for (let i = 0; i < quantityDivs.length; i ++) {
|
||||||
let doc = parser.parseFromString(xhrOrder.responseText, "text/html");
|
let quantityInput = quantityDivs[i].getElementsByTagName("input")[0];
|
||||||
let quantityDivs = doc.getElementsByClassName("quantity");
|
let quantityClick = quantityDivs[i].getElementsByClassName("click")[0];
|
||||||
let unit = null;
|
if (quantityClick.textContent !== "(0)") {
|
||||||
for (let i = 0; i < quantityDivs.length; i ++) {
|
unit = quantityInput.getAttribute("name");
|
||||||
let quantityInput = quantityDivs[i].getElementsByTagName("input")[0];
|
break;
|
||||||
let quantityClick = quantityDivs[i].getElementsByClassName("click")[0];
|
|
||||||
if (quantityClick.textContent !== "(0)") {
|
|
||||||
unit = quantityInput.getAttribute("name");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (unit === null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let xhrSend = new XMLHttpRequest();
|
|
||||||
let formData = new FormData();
|
|
||||||
formData.set(unit, "1");
|
|
||||||
formData.set("send_x", targetVillage.x);
|
|
||||||
formData.set("send_y", targetVillage.y);
|
|
||||||
formData.set("support", "Envoyer du renfort");
|
|
||||||
let formParams = new URLSearchParams(formData);
|
|
||||||
xhrSend.addEventListener("readystatechange", function () {
|
|
||||||
if (xhrSend.readyState === xhrSend.DONE) {
|
|
||||||
let parser = new DOMParser();
|
|
||||||
let doc = parser.parseFromString(xhrSend.responseText, "text/html");
|
|
||||||
let form = doc.getElementsByTagName("form")[0];
|
|
||||||
let action = form.getAttribute("action");
|
|
||||||
let orderToken = action.replace(/^.*p=([a-z0-9]+).*$/, "$1");
|
|
||||||
sessionStorage.setItem("orderToken", orderToken);
|
|
||||||
breakLoop = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
xhrSend.open("POST", "/?village=" + villageId + "&s=build_barracks&m=command&sub=send");
|
|
||||||
xhrSend.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
||||||
xhrSend.send(formParams.toString());
|
|
||||||
}
|
}
|
||||||
});
|
if (unit === null) {
|
||||||
xhrOrder.open("GET", "/?village=" + villageId + "&s=build_barracks");
|
if (recursiveIndex < ownVillages.length - 1) {
|
||||||
xhrOrder.send();
|
storeOrderToken(ownVillages, targetVillage, recursiveIndex + 1);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let xhrSend = new XMLHttpRequest();
|
||||||
|
let formData = new FormData();
|
||||||
|
formData.set(unit, "1");
|
||||||
|
formData.set("send_x", targetVillage.x);
|
||||||
|
formData.set("send_y", targetVillage.y);
|
||||||
|
formData.set("support", "Envoyer du renfort");
|
||||||
|
let formParams = new URLSearchParams(formData);
|
||||||
|
xhrSend.addEventListener("readystatechange", function () {
|
||||||
|
if (xhrSend.readyState === xhrSend.DONE) {
|
||||||
|
let parser = new DOMParser();
|
||||||
|
let doc = parser.parseFromString(xhrSend.responseText, "text/html");
|
||||||
|
let form = doc.getElementsByTagName("form")[0];
|
||||||
|
let action = form.getAttribute("action");
|
||||||
|
let orderToken = action.replace(/^.*p=([a-z0-9]+).*$/, "$1");
|
||||||
|
sessionStorage.setItem("orderToken", orderToken);
|
||||||
|
breakLoop = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
xhrSend.open("POST", "/?village=" + villageId + "&s=build_barracks&m=command&sub=send");
|
||||||
|
xhrSend.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
||||||
|
xhrSend.send(formParams.toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
xhrOrder.open("GET", "/?village=" + villageId + "&s=build_barracks");
|
||||||
|
xhrOrder.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
function storeTargetVillage(ownVillages) {
|
function storeTargetVillage(ownVillages) {
|
||||||
let targetVillage = sessionStorage.getItem("targetVillage");
|
let targetVillage = sessionStorage.getItem("targetVillage");
|
||||||
if (targetVillage !== null) {
|
if (targetVillage !== null) {
|
||||||
storeOrderToken(ownVillages, JSON.parse(targetVillage));
|
storeOrderToken(ownVillages, JSON.parse(targetVillage), 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,7 +191,7 @@ function storeTargetVillage(ownVillages) {
|
|||||||
if (xhr.readyState === xhr.DONE) {
|
if (xhr.readyState === xhr.DONE) {
|
||||||
let parser = new DOMParser();
|
let parser = new DOMParser();
|
||||||
let doc = parser.parseFromString(xhr.responseText, "text/html");
|
let doc = parser.parseFromString(xhr.responseText, "text/html");
|
||||||
let cells = doc.getElementsByClassName("occupied range");
|
let cells = doc.getElementsByClassName("occupied");
|
||||||
for (let i = 0; i < cells.length; i ++) {
|
for (let i = 0; i < cells.length; i ++) {
|
||||||
let links = cells[i].getElementsByTagName("a");
|
let links = cells[i].getElementsByTagName("a");
|
||||||
if (links.length === 0) {
|
if (links.length === 0) {
|
||||||
@@ -206,7 +204,7 @@ function storeTargetVillage(ownVillages) {
|
|||||||
let villageXY = links[0].getAttribute("onmouseover").replace(/^.*(\d{3}\|\d{3}).*$/, "$1").split("|");
|
let villageXY = links[0].getAttribute("onmouseover").replace(/^.*(\d{3}\|\d{3}).*$/, "$1").split("|");
|
||||||
targetVillage = {x: parseInt(villageXY[0]), y: parseInt(villageXY[1])};
|
targetVillage = {x: parseInt(villageXY[0]), y: parseInt(villageXY[1])};
|
||||||
sessionStorage.setItem("targetVillage", JSON.stringify(targetVillage));
|
sessionStorage.setItem("targetVillage", JSON.stringify(targetVillage));
|
||||||
storeOrderToken(ownVillages, targetVillage);
|
storeOrderToken(ownVillages, targetVillage, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -833,10 +831,8 @@ function handleAutoPlanerSubmit(event) {
|
|||||||
let doc = parser.parseFromString(xhr.responseText, "text/html");
|
let doc = parser.parseFromString(xhr.responseText, "text/html");
|
||||||
let mapContainer = doc.getElementById("mapContainer");
|
let mapContainer = doc.getElementById("mapContainer");
|
||||||
let map = mapContainer.getElementsByTagName("table")[1];
|
let map = mapContainer.getElementsByTagName("table")[1];
|
||||||
let mapRows = map.getElementsByTagName("tr");
|
let tbody = map.getElementsByTagName("tbody")[0];
|
||||||
let mapRow = mapRows[Math.floor(mapRows.length / 2) - 1];
|
let mapCell = tbody.children[6].children[8];
|
||||||
let mapCells = mapRow.getElementsByTagName("td");
|
|
||||||
let mapCell = mapCells[Math.floor(mapCells.length / 2) + 1];
|
|
||||||
let mapLinks = mapCell.getElementsByTagName("a");
|
let mapLinks = mapCell.getElementsByTagName("a");
|
||||||
if (mapLinks.length === 0) {
|
if (mapLinks.length === 0) {
|
||||||
autoPlanerError.textContent = "Opération impossible car le village cible n'existe pas!";
|
autoPlanerError.textContent = "Opération impossible car le village cible n'existe pas!";
|
||||||
|
|||||||
Reference in New Issue
Block a user