Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.74 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().replace("<span class=\"grey\">.</span>", "").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(1000 * totalGain / maxGain) / 10;
  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. var date = new Date();
  69. 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
  70. if (!scavenge_started[scavenge_number]) {
  71. setTimeout(function() { prepareScavenge(scavenge_number); }, 60000);
  72. console.log(getTime() + ": Start des " + (scavenge_number + 1) + ". Raubzugs wurde um 1 Minute verschoben");
  73. }
  74. } else { // Einzige abzusendender Raubzug
  75. scavenge_started[scavenge_number] = true;
  76. if ($("input[name=spear]").val() == "") clickElement("a.units-entry-all[data-unit=spear]");
  77. if ($("input[name=sword]").val() == "") clickElement("a.units-entry-all[data-unit=sword]");
  78. if ($("input[name=axe]").val() == "") clickElement("a.units-entry-all[data-unit=axe]");
  79. if ($("input[name=archer]").val() == "") clickElement("a.units-entry-all[data-unit=archer]");
  80. if ($("input[name=light]").val() == "") clickElement("a.units-entry-all[data-unit=light]");
  81. if ($("input[name=marcher]").val() == "") clickElement("a.units-entry-all[data-unit=marcher]");
  82. if ($("input[name=heavy]").val() == "") clickElement("a.units-entry-all[data-unit=heavy]");
  83.  
  84. var delay = randomValue(5, 60);
  85. setTimeout(function() { startScavenge(scavenge_number); }, delay * 1000);
  86. console.log(getTime() + ": Raubzug " + (parseInt(scavenge_number) + 1) + " wird in " + delay + " Sekunden gestartet");
  87. }
  88. }
  89.  
  90. // Fügt Indizes zu den Raubzügen hinzu
  91. $('div.scavenge-option:eq(0)').attr("scavenge", "0");
  92. $('div.scavenge-option:eq(1)').attr("scavenge", "1");
  93. $('div.scavenge-option:eq(2)').attr("scavenge", "2");
  94. $('div.scavenge-option:eq(3)').attr("scavenge", "3");
  95.  
  96. // Aktualisiert die Kapazität und den Ertrag aller verfügbaren Raubzüge
  97. var i;
  98. for (i = 0; i < 4; i++)
  99. if ($(".free_send_button:eq(" + i + ")").length) calculateLoot(i);
  100.  
  101. // Aktualisiert den Gesamtertrag aller Raubzüge
  102. updateTotalGain();
  103.  
  104. // Listener auf Rückkehrcountdowns
  105. $("body").on('DOMSubtreeModified', "span.return-countdown", function () {
  106. var scavenge_number = $(this).parent().parent().parent().parent().parent().attr("scavenge");
  107. if ($(this).html() == "0:00:00" && !scavenge_started[scavenge_number]) {
  108. setTimeout(function() { prepareScavenge(scavenge_number); }, 5000);
  109. }
  110. });
  111.  
  112. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement