|
|
|
@@ -1,3 +1,8 @@
|
|
|
|
|
|
|
|
let tomorrow = new Date(new Date().getTime() + 24*60*60*1000);
|
|
|
|
|
|
|
|
tomorrow.setHours(0, 0, 0, 0);
|
|
|
|
|
|
|
|
let afterTomorrow = new Date(tomorrow.getTime() + 24*60*60*1000);
|
|
|
|
|
|
|
|
let movingDuration = 0;
|
|
|
|
|
|
|
|
|
|
|
|
function num(s) {
|
|
|
|
function num(s) {
|
|
|
|
return parseInt(s.replace(".", ""));
|
|
|
|
return parseInt(s.replace(".", ""));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -39,6 +44,12 @@ function createInput(type, name, value) {
|
|
|
|
return elt;
|
|
|
|
return elt;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function searchPoint(text) {
|
|
|
|
|
|
|
|
let index = text.search(/\d{3}\|\d{3}/);
|
|
|
|
|
|
|
|
let point = text.slice(index, index + 7).split("|");
|
|
|
|
|
|
|
|
return {x: point[0], y: point[1]}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function shortcutElementReplace(elt, img, text) {
|
|
|
|
function shortcutElementReplace(elt, img, text) {
|
|
|
|
// If more than one hyperlink element found,
|
|
|
|
// If more than one hyperlink element found,
|
|
|
|
// then keep the last one but with href of the first one.
|
|
|
|
// then keep the last one but with href of the first one.
|
|
|
|
@@ -73,6 +84,25 @@ function shortcutElementReplace(elt, img, text) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function countUpMs() {
|
|
|
|
|
|
|
|
let arrivalDate = new Date(new Date().getTime() + movingDuration * 1000);
|
|
|
|
|
|
|
|
let prefix = "";
|
|
|
|
|
|
|
|
if (arrivalDate >= afterTomorrow) {
|
|
|
|
|
|
|
|
prefix = "le " + arrivalDate.getDate() + "." + arrivalDate.getMonth() + " ";
|
|
|
|
|
|
|
|
} else if (arrivalDate > tomorrow) {
|
|
|
|
|
|
|
|
prefix = "demain ";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
document.getElementById("countup-time-ms").textContent = prefix
|
|
|
|
|
|
|
|
+ "à "
|
|
|
|
|
|
|
|
+ arrivalDate.getHours().toString().padStart(2, "0")
|
|
|
|
|
|
|
|
+ ":"
|
|
|
|
|
|
|
|
+ arrivalDate.getMinutes().toString().padStart(2, "0")
|
|
|
|
|
|
|
|
+ ":"
|
|
|
|
|
|
|
|
+ arrivalDate.getSeconds().toString().padStart(2, "0")
|
|
|
|
|
|
|
|
+ ":"
|
|
|
|
|
|
|
|
+ Math.floor(arrivalDate.getMilliseconds() / 100);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function main() {
|
|
|
|
function main() {
|
|
|
|
/* Exit immediately if not on game page */
|
|
|
|
/* Exit immediately if not on game page */
|
|
|
|
let layCastleTopElements = document.getElementsByClassName("lay_castle_top");
|
|
|
|
let layCastleTopElements = document.getElementsByClassName("lay_castle_top");
|
|
|
|
@@ -103,6 +133,7 @@ function main() {
|
|
|
|
let section = urlParams.get("s");
|
|
|
|
let section = urlParams.get("s");
|
|
|
|
let module = urlParams.get("m");
|
|
|
|
let module = urlParams.get("m");
|
|
|
|
let sub = urlParams.get("sub");
|
|
|
|
let sub = urlParams.get("sub");
|
|
|
|
|
|
|
|
let sendCommandForm = document.getElementById("sendCommandForm");
|
|
|
|
|
|
|
|
|
|
|
|
/* Display unit-points on user profile */
|
|
|
|
/* Display unit-points on user profile */
|
|
|
|
if (section === "info_player" && (module === "profile" || module === null)) {
|
|
|
|
if (section === "info_player" && (module === "profile" || module === null)) {
|
|
|
|
@@ -149,34 +180,131 @@ function main() {
|
|
|
|
villagePointsRow.after(unitPointsRow);
|
|
|
|
villagePointsRow.after(unitPointsRow);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Allow multiple attacks */
|
|
|
|
/* Units order page */
|
|
|
|
if (section === "build_barracks" && module === "command" && sub === "send") {
|
|
|
|
if (section === "build_barracks" && (module === null || module === "command") && sendCommandForm !== null) {
|
|
|
|
|
|
|
|
let barracksCommands = sendCommandForm.getElementsByClassName("barracksCommand");
|
|
|
|
|
|
|
|
let borderListTables = sendCommandForm.getElementsByClassName("borderlist");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let quantityLabel = document.createElement("label");
|
|
|
|
|
|
|
|
let quantityInput = document.createElement("input");
|
|
|
|
|
|
|
|
quantityInput.setAttribute("type", "checkbox");
|
|
|
|
|
|
|
|
quantityInput.addEventListener("change", function () {
|
|
|
|
|
|
|
|
let clickSpans = [];
|
|
|
|
|
|
|
|
if (barracksCommands.length === 1) {
|
|
|
|
|
|
|
|
clickSpans = barracksCommands[0].getElementsByClassName("click");
|
|
|
|
|
|
|
|
} else if (borderListTables.length === 1) {
|
|
|
|
|
|
|
|
clickSpans = borderListTables[0].getElementsByClassName("click");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
for (let i = 0; i < 12; i++) {
|
|
|
|
|
|
|
|
if (clickSpans[i].classList.contains("all")) {
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
clickSpans[i].click();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
quantityLabel.appendChild(quantityInput);
|
|
|
|
|
|
|
|
let quantitySpan = document.createElement("span");
|
|
|
|
|
|
|
|
quantitySpan.classList.add("click", "all");
|
|
|
|
|
|
|
|
quantitySpan.textContent = "(Tout sélectionner)";
|
|
|
|
|
|
|
|
quantityLabel.appendChild(quantitySpan);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (barracksCommands.length === 1) {
|
|
|
|
|
|
|
|
let boxCell = document.createElement("div");
|
|
|
|
|
|
|
|
boxCell.classList.add("box");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let backgroundCell = document.createElement("div");
|
|
|
|
|
|
|
|
backgroundCell.classList.add("background");
|
|
|
|
|
|
|
|
let backgroundImg = document.createElement("img");
|
|
|
|
|
|
|
|
backgroundImg.setAttribute("src", "//s58-fr.kingsage.gameforge.com/img/modern/card_sendunit.png");
|
|
|
|
|
|
|
|
backgroundCell.appendChild(backgroundImg);
|
|
|
|
|
|
|
|
boxCell.appendChild(backgroundCell);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let imageCell = document.createElement("div");
|
|
|
|
|
|
|
|
imageCell.classList.add("image");
|
|
|
|
|
|
|
|
let imageImg = document.createElement("img");
|
|
|
|
|
|
|
|
imageImg.setAttribute("src", "//s58-fr.kingsage.gameforge.com/img/shortcut/barracks.png");
|
|
|
|
|
|
|
|
imageImg.style.width = "28px";
|
|
|
|
|
|
|
|
imageCell.appendChild(imageImg);
|
|
|
|
|
|
|
|
boxCell.appendChild(imageCell);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let nameCell = document.createElement("div");
|
|
|
|
|
|
|
|
nameCell.classList.add("name");
|
|
|
|
|
|
|
|
let nameA = document.createElement("a");
|
|
|
|
|
|
|
|
nameA.setAttribute("href", "help.php?m=units");
|
|
|
|
|
|
|
|
nameA.setAttribute("target", "_help");
|
|
|
|
|
|
|
|
let nameB = document.createElement("b");
|
|
|
|
|
|
|
|
nameB.textContent = "Tout";
|
|
|
|
|
|
|
|
nameA.appendChild(nameB);
|
|
|
|
|
|
|
|
nameCell.appendChild(nameA);
|
|
|
|
|
|
|
|
boxCell.appendChild(nameCell);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let quantityCell = document.createElement("div");
|
|
|
|
|
|
|
|
quantityCell.classList.add("quantity");
|
|
|
|
|
|
|
|
quantityCell.appendChild(quantityLabel);
|
|
|
|
|
|
|
|
boxCell.appendChild(quantityCell);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let brTag = barracksCommands[0].getElementsByTagName("br")[1];
|
|
|
|
|
|
|
|
barracksCommands[0].insertBefore(boxCell, brTag);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else if (borderListTables.length === 1) {
|
|
|
|
|
|
|
|
let borderListRows = borderListTables[0].getElementsByTagName("tr");
|
|
|
|
|
|
|
|
let selectAllCell = borderListRows[1].getElementsByTagName("td")[3];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let imageA = document.createElement("a");
|
|
|
|
|
|
|
|
imageA.setAttribute("href", "help.php?m=units");
|
|
|
|
|
|
|
|
imageA.setAttribute("target", "_help");
|
|
|
|
|
|
|
|
let imageImg = document.createElement("img");
|
|
|
|
|
|
|
|
imageImg.setAttribute("src", "//s58-fr.kingsage.gameforge.com/img/shortcut/barracks.png")
|
|
|
|
|
|
|
|
imageImg.setAttribute("title", "Tout");
|
|
|
|
|
|
|
|
imageA.appendChild(imageImg);
|
|
|
|
|
|
|
|
selectAllCell.appendChild(imageA);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
selectAllCell.appendChild(quantityLabel);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Units sending page */
|
|
|
|
|
|
|
|
if (section === "build_barracks" && module === "command" && sub === "send" && sendCommandForm === null) {
|
|
|
|
|
|
|
|
/* Improve countup time cell */
|
|
|
|
|
|
|
|
let oldCell = document.getElementById("countup-time");
|
|
|
|
|
|
|
|
let hms = oldCell.parentElement.previousElementSibling.getElementsByTagName("td")[1].textContent.split(":");
|
|
|
|
|
|
|
|
movingDuration = parseInt(hms[0]) * 3600 + parseInt(hms[1]) * 60 + parseInt(hms[2]) ;
|
|
|
|
|
|
|
|
let newRow = document.createElement("tr");
|
|
|
|
|
|
|
|
let newLeftCell = document.createElement("td");
|
|
|
|
|
|
|
|
newLeftCell.textContent = "Arrivée:";
|
|
|
|
|
|
|
|
newRow.appendChild(newLeftCell);
|
|
|
|
|
|
|
|
let newRightCell = document.createElement("td");
|
|
|
|
|
|
|
|
newRightCell.setAttribute("id", "countup-time-ms");
|
|
|
|
|
|
|
|
newRow.appendChild(newRightCell);
|
|
|
|
|
|
|
|
oldCell.parentElement.parentElement.insertBefore(newRow, oldCell.parentElement);
|
|
|
|
|
|
|
|
oldCell.parentElement.style.display = "none";
|
|
|
|
|
|
|
|
setInterval(countUpMs, 100);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Allow multiple occurrences of 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");
|
|
|
|
let tr = document.createElement("tr");
|
|
|
|
let tr = document.createElement("tr");
|
|
|
|
let th = document.createElement("th");
|
|
|
|
let th = document.createElement("th");
|
|
|
|
th.textContent = "Nombre d'attaques:";
|
|
|
|
th.textContent = "Nombre d'occurrences:";
|
|
|
|
tr.appendChild(th)
|
|
|
|
tr.appendChild(th)
|
|
|
|
let td = document.createElement("td");
|
|
|
|
let td = document.createElement("td");
|
|
|
|
let input = document.createElement("input");
|
|
|
|
let input = document.createElement("input");
|
|
|
|
input.setAttribute("type", "number");
|
|
|
|
input.setAttribute("type", "number");
|
|
|
|
input.setAttribute("name", "attack_count");
|
|
|
|
input.setAttribute("name", "occurrences");
|
|
|
|
input.setAttribute("value", "1");
|
|
|
|
input.setAttribute("value", "1");
|
|
|
|
td.appendChild(input);
|
|
|
|
td.appendChild(input);
|
|
|
|
tr.appendChild(td);
|
|
|
|
tr.appendChild(td);
|
|
|
|
tbody.appendChild(tr);
|
|
|
|
tbody.appendChild(tr);
|
|
|
|
table.appendChild(tbody);
|
|
|
|
table.appendChild(tbody);
|
|
|
|
|
|
|
|
|
|
|
|
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("occurrences").toString());
|
|
|
|
formData.delete("attack_count");
|
|
|
|
formData.delete("occurrences");
|
|
|
|
|
|
|
|
|
|
|
|
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();
|
|
|
|
@@ -230,16 +358,16 @@ function main() {
|
|
|
|
let hour = arrival.toLocaleTimeString("fr-FR");
|
|
|
|
let hour = arrival.toLocaleTimeString("fr-FR");
|
|
|
|
arrivalDateCell.textContent = arrivalDateCell.textContent.replace(/(.*)\d\d:\d\d(.*)/, "$1" + hour + "$2");
|
|
|
|
arrivalDateCell.textContent = arrivalDateCell.textContent.replace(/(.*)\d\d:\d\d(.*)/, "$1" + hour + "$2");
|
|
|
|
|
|
|
|
|
|
|
|
let startPoint = cells[2].textContent.replace(/.*(\d{3}\|\d{3}).*/, "$1").split("|");
|
|
|
|
let startPoint = searchPoint(cells[2].textContent);
|
|
|
|
let targetPoint = cells[1].textContent.replace(/.*(\d{3}\|\d{3}).*/, "$1").split("|");
|
|
|
|
let targetPoint = searchPoint(cells[1].textContent);
|
|
|
|
let calculatorCell = document.createElement("td");
|
|
|
|
let calculatorCell = document.createElement("td");
|
|
|
|
let calculatorForm = document.createElement("form");
|
|
|
|
let calculatorForm = document.createElement("form");
|
|
|
|
calculatorForm.setAttribute("method", "post");
|
|
|
|
calculatorForm.setAttribute("method", "post");
|
|
|
|
calculatorForm.setAttribute("action", "/?s=tools&m=runtime_calculator&inta=calculate");
|
|
|
|
calculatorForm.setAttribute("action", "/?s=tools&m=runtime_calculator&inta=calculate");
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "start_x", startPoint[0]));
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "start_x", startPoint.x));
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "start_y", startPoint[1]));
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "start_y", startPoint.y));
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "target_x", targetPoint[0]));
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "target_x", targetPoint.x));
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "target_y", targetPoint[1]));
|
|
|
|
calculatorForm.appendChild(createInput("hidden", "target_y", targetPoint.y));
|
|
|
|
let calculatorImg = document.createElement("input");
|
|
|
|
let calculatorImg = document.createElement("input");
|
|
|
|
calculatorImg.setAttribute("type", "image");
|
|
|
|
calculatorImg.setAttribute("type", "image");
|
|
|
|
calculatorImg.setAttribute("src", chrome.runtime.getURL("images/calculator.svg"));
|
|
|
|
calculatorImg.setAttribute("src", chrome.runtime.getURL("images/calculator.svg"));
|
|
|
|
|