您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Set the desired arrival time in Tribal Wars and the script will automatically send the attack
当前为
// ==UserScript== // @name Set Arrival Time // @description Set the desired arrival time in Tribal Wars and the script will automatically send the attack // @author FunnyPocketBook // @version 2 // @date 03-10-2017 // @namespace FunnyPocketBook // @include https://*/game.php?village=*&screen=place&try=confirm // ==/UserScript== // CHANGE THESE NUMBERS TO GET THE CORRECT ARRIVAL TIME - higher number means more delay. // Change "windows.delayTime" before "intervalTime" and only change "intervalTime" if you // can't get it quite correct with only "delayTime" delayTime = 11; // Set delay in ms window.intervalTime = 10; // Set interval in ms var arrival; var reloadBefore = 1; // Reload page 1 minute before attack is supposed to be sent /* * Save tab ID */ var tabID = sessionStorage.tabID ? sessionStorage.tabID : sessionStorage.tabID = Math.random(); // Generate ID for tab console.log("tabID: " + tabID); var storedID = JSON.parse(localStorage.getItem("storedID")); // Get tab ID console.log("storedID: " + storedID); if(storedID == null) { // See if any tab IDs already exist, if not, initialize the array storedID = []; console.log("storedID = " + storedID); } if(!storedID.includes(tabID) && !storedID.includes(parseFloat(tabID))) { // If the tab ID of the current tab is not stored yet, push the array storedID.push(tabID); console.log("storedID pushed: " + storedID); } localStorage.setItem("storedID", JSON.stringify(storedID)); console.log("localStorage id set to " + localStorage.getItem("storedID")); /* * Reload boolean - set to true to reload, false to not reload */ var reload = JSON.parse(localStorage.getItem("reload")); // Get reload if(reload == null) { reload = []; } console.log("Reload: " + reload); localStorage.setItem("reload", JSON.stringify(reload)); /* * Get stored times */ var index = storedID.indexOf(tabID); // Get index of time of this tab var storedTimes = JSON.parse(localStorage.getItem("storedTimes")); // Get stored times if(storedTimes == null) { // If there are no times yet, initialize array storedTimes = []; } console.log("storedTimes = " + storedTimes); localStorage.setItem("storedTimes", JSON.stringify(storedTimes)); console.log("localStorage times set to " + localStorage.getItem("storedTimes")); var fullTime = storedTimes[index]; var inputTime; var inputMs; if(fullTime != null) { inputTime = fullTime.slice(0, 8); inputMs = fullTime.slice(9); } // Set arrival time button var showArrTime = document.createElement("tr"); var showArrTimeTd = document.createElement("td"); var showArrTimeTd2 = document.createElement("td"); var pEle = document.getElementById("troop_confirm_go"); // Button comes after this element var btn = document.createElement("a"); // Create button called btn as a link because any button causes the attack to launch btn.setAttribute("id", "arrTime"); btn.setAttribute("class", "btn"); btn.setAttribute("style", "cursor:pointer;"); pEle.parentNode.insertBefore(btn, pEle.nextElementSibling); // Place btn after pEle var t = document.createTextNode("Set arrival time"); btn.appendChild(t); // Create cell where set arrival time is shown var dateArrival = document.getElementById("date_arrival"); // Cell of relative_time showArrTime.appendChild(showArrTimeTd); showArrTime.appendChild(showArrTimeTd2); dateArrival.parentNode.parentNode.insertBefore(showArrTime, dateArrival.parentNode[1]); // Insert tablerow as last cell showArrTimeTd.innerHTML = "Set arrival:"; showArrTimeTd2.setAttribute("id", "setArrTime"); // Display the set time if exist, else say "No time set" if(inputTime != null || inputMs != null) { showArrTimeTd2.innerHTML = "" + inputTime + ":" + inputMs; } else { showArrTimeTd2.innerHTML = "No time set"; inputTime = ""; inputMs = ""; } showArrTimeTd.setAttribute("id", "showArrTime"); var inputTime; var inputMs; btn.onclick = function() { "use strict"; var time = document.getElementsByClassName("relative_time")[0].textContent.slice(-8); // Get the time of arrival if sent now inputTime = prompt("Please enter desired arrival time", time); // Save desired time inputMs = parseInt(prompt("Please enter approximate milliseconds", "000")); // Save desired ms var setTime = inputTime + ":" + inputMs; showArrTimeTd2.innerHTML = inputTime + ":" + inputMs; storedTimes[index] = setTime; // Add new time to the array, same index as the tab ID console.log("SADFLKJASDFLKJSADF " + storedTimes[index]); localStorage.setItem("storedTimes", JSON.stringify(storedTimes)); reload[index] = true; localStorage.setItem("reload", JSON.stringify(reload)); }; // Create delay input var delayTime = localStorage.getItem("delayTime"); if(delayTime == null) { delayTime = 0; } // Create okay button to save delay var delayRow = document.createElement("tr"); var delayC1 = document.createElement("td"); var delayC2 = document.createElement("td"); var parent1 = document.getElementById("date_arrival"); // Cell of relative_time delayRow.appendChild(delayC1); delayRow.appendChild(delayC2); parent1.parentNode.parentNode.insertBefore(delayRow, parent1.parentNode[1]); // Insert tablerow as last cell delayC1.innerHTML = "Offset"; delayC2.innerHTML = "<input id = 'delayInput' value = " + delayTime + " style = 'width: 50%'></input> <a id = 'delayButton' class = 'btn'>OK</a>"; $("#delayButton").click(function() { delayTime = $("#delayInput").val(); localStorage.setItem("delayTime", JSON.stringify(delayTime)); console.log("delayTime: " + localStorage.getItem("delayTime")); }) console.log(inputTime + ":" + inputMs); console.log(delayTime); var delay = delayTime + parseInt(inputMs); // setTimeout time var intervalCheck = setInterval(function retime() { "use strict"; arrival = document.getElementsByClassName("relative_time")[0].textContent; // Get time of arrival if sent now for comparison delay = delayTime + parseInt(inputMs); // setTimeout time if(arrival.slice(-8) === inputTime) { console.log("inside"); setTimeout(function() { console.log("sent"); document.getElementById("troop_confirm_go").click(); // Clear set time for this tab and save again in localStorage storedTimes[index] = null; localStorage.setItem("storedTimes", JSON.stringify(storedTimes)); }, delay); clearInterval(intervalCheck); } }, window.intervalTime); var minute = inputTime.substr(3,2) - reloadBefore; // Get minute of input and subtract reloadBefore from it var arriveNow = document.getElementsByClassName("relative_time")[0].textContent.slice(-8); // Get relative_time to compare var timeReload; setInterval(function() { minute = inputTime.substr(3,2) - reloadBefore; arriveNow = document.getElementsByClassName("relative_time")[0].textContent.slice(-8); timeReload = inputTime.substr(0,3) + minute + inputTime.substr(5,3); // Time stitched together with the minute subtracted by reloadBefore if(timeReload != -1 && arriveNow === timeReload && reload[index]) { reload[index] = false; localStorage.setItem("reload", JSON.stringify(reload)); window.location.reload(); } }, 1000);