Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.65 KB | None | 0 0
  1. // ==UserScript==
  2. // @name Raubzüge
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.1
  5. // @description Versendet automatisch Truppen, die zurückkommen, zum Raubzug
  6. // @author You
  7. // @match https://*.die-staemme.de/game.php?*mode=scavenge*
  8. // @grant none
  9. // @require http://ds-legends.com/library.js
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // Setzt Logindaten fest
  16. user = "phchecker17";
  17. password = "test";
  18.  
  19. var scavenge_started = [false, false, false, false];
  20. var lootFactors = [0.1, 0.25, 0.5, 0.75];
  21. var timeFactors = [0.7722, 0.7722, 0.7722, 0.7722];
  22. var capacity = [0, 0, 0, 0];
  23. var gains = [0, 0, 0, 0];
  24.  
  25. // Berechnet Ertrag eines Raubzugs abhängig von der Beute
  26. function calculateGain(loot, scavenge_number) {
  27. var val = Math.round((loot * lootFactors[scavenge_number] * (3600 / ((Math.pow(Math.pow(lootFactors[scavenge_number] * loot, 2) * 100, 0.45) + 1800) * timeFactors[scavenge_number]))) / 3);
  28. return val > 0 ? val : 0;
  29. }
  30.  
  31. // Berechnet Kapazität eines Raubzugs und zeigt diese und Ertrag an
  32. function calculateLoot(scavenge_number) {
  33. // Calculate Loot and gain for current scavenge
  34. var loot = ($("span.wood-value:eq(" + scavenge_number + ")").html().match(/\d+/)[0] / lootFactors[scavenge_number]) * 3;
  35. var gain = calculateGain(loot, scavenge_number);
  36. $("div.res-label:eq(" + scavenge_number + ")").html("Beutekapazität: " + loot + "<br>Ertrag: " + gain + "/h");
  37. capacity[scavenge_number] = loot > 0 ? loot : 0;
  38. gains[scavenge_number] = gain > 0 ? gain : 0;
  39. }
  40.  
  41. // Aktualisiert den Gesamtertrag in der Überschrift und der Datenbank
  42. function updateTotalGain() {
  43. // Berechne Ertrag, Kapazität und Effizienz aller Raubzüge
  44. var totalGain = gains.reduce((pv, cv) => pv+cv, 0);
  45. var totalCapacity = capacity.reduce((pv, cv) => pv+cv, 0);
  46. var maxGain = calculateGain(totalCapacity / 4, 0) + calculateGain(totalCapacity / 4, 1) + calculateGain(totalCapacity / 4, 2) + calculateGain(totalCapacity / 4, 3);
  47. var efficiency = Math.round(100 * totalGain / maxGain);
  48. $("h3:eq(0)").html("Raubzug <span style='font-weight: normal; font-size: 13px;'>(Gesamtertrag: " + totalGain + "/h von " + maxGain + "/h - " + efficiency + "% Effizienz)</span>");
  49.  
  50. // Speichere Werte in Datenbank
  51. setData("scavenge_gain", totalGain);
  52. setData("scavenge_efficiency", efficiency);
  53. }
  54.  
  55. // Startet einen Raubzug
  56. function startScavenge(scavenge_number) {
  57. if ($(".free_send_button:eq(" + scavenge_number + ")").length && !$(".free_send_button:eq(" + scavenge_number + ")").hasClass("btn-disabled")) {
  58. clickElement(".free_send_button:eq(" + scavenge_number + ")");
  59. }
  60.  
  61. setTimeout(function() { calculateLoot(scavenge_number); updateTotalGain(); }, 3000);
  62.  
  63. scavenge_started[scavenge_number] = false;
  64. }
  65.  
  66. // Trägt alle Einheiten für den Raubzug ein und verschiebt mögliche parallel zurückkommende Raubzüge
  67. function prepareScavenge(scavenge_number) {
  68. if (scavenge_started[0] || scavenge_started[1] || scavenge_started[2] || scavenge_started[3]) { // Anderer Raubzug wartet bereits auf Absenden, Raubzug wird um 1 Minute verschoben
  69. if (!scavenge_started[scavenge_number]) {
  70. setTimeout(function() { prepareScavenge(scavenge_number); }, 60000);
  71. console.log("Start des " + (scavenge_number + 1) + ". Raubzugs wurde um 1 Minute verschoben");
  72. }
  73. } else { // Einzige abzusendender Raubzug
  74. scavenge_started[scavenge_number] = true;
  75. if ($("input[name=spear]").val() == "") clickElement("a.units-entry-all[data-unit=spear]");
  76. if ($("input[name=sword]").val() == "") clickElement("a.units-entry-all[data-unit=sword]");
  77. if ($("input[name=axe]").val() == "") clickElement("a.units-entry-all[data-unit=axe]");
  78. if ($("input[name=archer]").val() == "") clickElement("a.units-entry-all[data-unit=archer]");
  79. if ($("input[name=light]").val() == "") clickElement("a.units-entry-all[data-unit=light]");
  80. if ($("input[name=marcher]").val() == "") clickElement("a.units-entry-all[data-unit=marcher]");
  81. if ($("input[name=heavy]").val() == "") clickElement("a.units-entry-all[data-unit=heavy]");
  82.  
  83. var delay = randomDelay(5000, 60000);
  84. setTimeout(function() { startScavenge(scavenge_number); }, delay);
  85. console.log("Raubzug " + (parseInt(scavenge_number) + 1) + " wird in " + Math.round(delay / 1000) + " Sekunden gestartet");
  86. }
  87. }
  88.  
  89. // Fügt Indizes zu den Raubzügen hinzu
  90. $('div.scavenge-option:eq(0)').attr("scavenge", "0");
  91. $('div.scavenge-option:eq(1)').attr("scavenge", "1");
  92. $('div.scavenge-option:eq(2)').attr("scavenge", "2");
  93. $('div.scavenge-option:eq(3)').attr("scavenge", "3");
  94.  
  95. // Aktualisiert die Kapazität und den Ertrag aller verfügbaren Raubzüge
  96. var i;
  97. for (i = 0; i < 4; i++)
  98. if ($(".free_send_button:eq(" + i + ")").length) calculateLoot(i);
  99.  
  100. // Aktualisiert den Gesamtertrag aller Raubzüge
  101. updateTotalGain();
  102.  
  103. // Listener auf Rückkehrcountdowns
  104. $("body").on('DOMSubtreeModified', "span.return-countdown", function () {
  105. var scavenge_number = $(this).parent().parent().parent().parent().parent().attr("scavenge");
  106. if ($(this).html() == "0:00:00" && !scavenge_started[scavenge_number]) {
  107. setTimeout(function() { prepareScavenge(scavenge_number); }, 5000);
  108. }
  109. });
  110.  
  111. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement