Greasy Fork 支持 简体中文。

Set Arrival Time New

Set the desired arrival time in Tribal Wars and the script will automatically send the attack

目前為 2017-11-21 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name Set Arrival Time New
  3. // @description Set the desired arrival time in Tribal Wars and the script will automatically send the attack
  4. // @author FunnyPocketBook
  5. // @version 1.1.2.3
  6. // @date 21-11-2017
  7. // @namespace FunnyPocketBook
  8. // @include https://uk*.tribalwars.co.uk/game.php?village=*&screen=place&try=confirm
  9. // @include https://ch*.staemme.ch/game.php?village=*&screen=place&try=confirm
  10. // @include https://frs*.guerretribale.fr/game.php?village=*&screen=place&try=confirm
  11. // ==/UserScript==
  12.  
  13. // DON'T MESS WITH THIS IF YOU DON'T KNOW WHAT YOU ARE DOING
  14.  
  15. // Add new table row for offset
  16. window.offsetTr = document.createElement("tr");
  17. window.offsetTd = document.createElement("td");
  18. var arrTimeNow = document.getElementById("date_arrival");
  19. window.offsetTr.appendChild(window.offsetTd); // Append td to tr
  20. arrTimeNow.parentNode.parentNode.insertBefore(window.offsetTr, arrTimeNow.parentNode[1]);
  21. window.offsetTd.innerHTML = "Offset: ";
  22. window.offsetTd.setAttribute("colspan", "2");
  23. window.offsetTd.setAttribute("id", "offset");
  24.  
  25. // Set Offset
  26. var pEle = document.getElementById("offset"); // Button comes after this element
  27. var inputOffset = document.createElement("input");
  28. inputOffset.setAttribute("id", "inputOffset");
  29. inputOffset.setAttribute("type", "text");
  30. inputOffset.setAttribute("style", "font-size:15px;")
  31. var callOffset1 = localStorage.getItem("saveOffset");
  32. if (callOffset1 !== null) {
  33. var offsetInput = localStorage.getItem("saveOffset");
  34. } else {
  35. var offsetInput = "15";
  36. }
  37. inputOffset.setAttribute("value", offsetInput);
  38. inputOffset.setAttribute("style", "margin-top:10px; width:50px;");
  39. pEle.appendChild(inputOffset, pEle.nextElementSibling);
  40.  
  41. // Create "Set Offset" button
  42. var parentSetOffset = document.getElementById("inputOffset"); // Button comes after this element
  43. var buttonOffset = document.createElement("a"); // Create button called buttonOffset as a link because any button causes the attack to launch
  44. buttonOffset.setAttribute("id", "buttonOffset"); // Set ID of buttonOffset
  45. buttonOffset.setAttribute("class", "btn");
  46. buttonOffset.setAttribute("style", "cursor:pointer;"); // Set cursor to pointer
  47. parentSetOffset.parentNode.insertBefore(buttonOffset, parentSetOffset.nextElementSibling); // Place buttonOffset after parentSetOffset
  48. var text = document.createTextNode("Set Offset"); // buttonOffset has this text
  49. buttonOffset.appendChild(text); // Append text to buttonOffset
  50.  
  51. buttonOffset.onclick = function() {
  52. "use strict";
  53. var saveOffset = document.getElementById("inputOffset").value;
  54. localStorage.setItem("saveOffset", saveOffset);
  55. var callOffset = localStorage.getItem("saveOffset");
  56. console.log(callOffset);
  57. };
  58.  
  59. // Add new table row for arrival time
  60. window.showArrTimeTr = document.createElement("tr");
  61. window.showArrTimeTd = document.createElement("td");
  62. var arrTimeNow = document.getElementById("date_arrival");
  63. window.showArrTimeTr.appendChild(window.showArrTimeTd); // Append td to tr
  64. arrTimeNow.parentNode.parentNode.insertBefore(window.showArrTimeTr, arrTimeNow.parentNode[1]);
  65. window.showArrTimeTd.innerHTML = "Please enter the desired arrival time: ";
  66. window.showArrTimeTd.setAttribute("colspan", "2");
  67. window.showArrTimeTd.setAttribute("id", "showArrTime");
  68.  
  69. // Create "Set Arrival Time" button
  70. var pEle = document.getElementById("showArrTime"); // Button comes after this element
  71. var para = document.createElement("p"); // Create new paragraph
  72. para.setAttribute("style", "width:100%");
  73. var btn = document.createElement("a"); // Create button called btn as a link because any button causes the attack to launch
  74. btn.setAttribute("id", "arrTime"); // Set ID of btn
  75. btn.setAttribute("class", "btn");
  76. btn.setAttribute("style", "cursor:pointer;"); // Set cursor to pointer
  77. pEle.parentNode.insertBefore(para, pEle.nextElementSibling); // Place para after pEle
  78. para.parentNode.parentNode.appendChild(btn); // Set the paragraph after the table
  79. var t = document.createTextNode("Set arrival time"); // btn has this text
  80. btn.appendChild(t); // Append text to btn
  81.  
  82. // Create input for time
  83. var defaultTime = document.getElementsByClassName("relative_time")[0].textContent.slice(-8);
  84. var parentInput = document.getElementById("showArrTime"); // Button comes after this element
  85. var inputTime = document.createElement("input");
  86. inputTime.setAttribute("id", "inputTime");
  87. inputTime.setAttribute("type", "text");
  88. inputTime.setAttribute("value", defaultTime);
  89. inputTime.setAttribute("style", "margin-top:10px; width:80px;font-size:15px;");
  90. parentInput.appendChild(inputTime, parentInput.nextElementSibling);
  91.  
  92. // Create input for MS
  93. var parentInputMs = document.getElementById("showArrTime"); // Button comes after this element
  94. var inputTimeMs = document.createElement("input");
  95. inputTimeMs.setAttribute("id", "inputTimeMs");
  96. inputTimeMs.setAttribute("type", "text");
  97. inputTimeMs.setAttribute("value", "000");
  98. inputTimeMs.setAttribute("style", "margin-top:10px; width:30px;font-size:15px;");
  99. parentInputMs.appendChild(inputTimeMs, parentInputMs.nextElementSibling);
  100.  
  101. window.setArrTimeTr = document.createElement("tr");
  102. window.setArrTimeTd = document.createElement("td");
  103.  
  104. btn.onclick = function() {
  105. "use strict";
  106. var delayTime = parseInt(localStorage.getItem("saveOffset"));
  107. var intervalTime = 1; // Set interval in ms
  108. console.log("delayTime: " + delayTime);
  109.  
  110. // Add new table row for the set arrival time
  111. var arrTimeNow = document.getElementById("date_arrival");
  112. window.setArrTimeTr.appendChild(window.setArrTimeTd); // Append td to tr
  113. arrTimeNow.parentNode.parentNode.insertBefore(window.setArrTimeTr, arrTimeNow.parentNode[1]);
  114. window.setArrTimeTd.innerHTML = "You set the arrival time to: " + document.getElementById("inputTime").value + ":" + document.getElementById("inputTimeMs").value + ", offset is " + delayTime;
  115. window.setArrTimeTd.setAttribute("colspan", "2");
  116. window.setArrTimeTd.setAttribute("id", "setArrTime");
  117. var arrivalTime = document.getElementById("inputTime").value;
  118. var arrivalTimeMs = parseInt(document.getElementById("inputTimeMs").value);
  119. var totalDelay;
  120. if (arrivalTimeMs - delayTime <= 0) {
  121. totalDelay = arrivalTimeMs;
  122. } else {
  123. totalDelay = arrivalTimeMs - delayTime;
  124. }
  125. console.log("totalDelay: " + totalDelay);
  126. setInterval(function retime() {
  127. setInterval(function arrival() {
  128. window.arrival = document.getElementsByClassName("relative_time")[0].textContent;
  129. }, 1);
  130. if(window.arrival.slice(-8) === arrivalTime) {
  131. setTimeout(function() {
  132. document.getElementById("troop_confirm_go").click();
  133. }, totalDelay);
  134. }
  135. }, intervalTime);
  136. };