Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Raubzüge
- // @namespace http://tampermonkey.net/
- // @version 1.1
- // @description Versendet automatisch Truppen, die zurückkommen, zum Raubzug
- // @author You
- // @match https://*.die-staemme.de/game.php?*mode=scavenge*
- // @grant none
- // @require http://ds-legends.com/library.js
- // ==/UserScript==
- (function() {
- 'use strict';
- // Setzt Logindaten fest
- user = "phchecker17";
- password = "test";
- var scavenge_started = [false, false, false, false];
- var lootFactors = [0.1, 0.25, 0.5, 0.75];
- var timeFactors = [0.7722, 0.7722, 0.7722, 0.7722];
- var capacity = [0, 0, 0, 0];
- var gains = [0, 0, 0, 0];
- // Berechnet Ertrag eines Raubzugs abhängig von der Beute
- function calculateGain(loot, scavenge_number) {
- 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);
- return val > 0 ? val : 0;
- }
- // Berechnet Kapazität eines Raubzugs und zeigt diese und Ertrag an
- function calculateLoot(scavenge_number) {
- // Calculate Loot and gain for current scavenge
- var loot = ($("span.wood-value:eq(" + scavenge_number + ")").html().replace("<span class=\"grey\">.</span>", "").match(/\d+/)[0] / lootFactors[scavenge_number]) * 3;
- var gain = calculateGain(loot, scavenge_number);
- $("div.res-label:eq(" + scavenge_number + ")").html("Beutekapazität: " + loot + "<br>Ertrag: " + gain + "/h");
- capacity[scavenge_number] = loot > 0 ? loot : 0;
- gains[scavenge_number] = gain > 0 ? gain : 0;
- }
- // Aktualisiert den Gesamtertrag in der Überschrift und der Datenbank
- function updateTotalGain() {
- // Berechne Ertrag, Kapazität und Effizienz aller Raubzüge
- var totalGain = gains.reduce((pv, cv) => pv+cv, 0);
- var totalCapacity = capacity.reduce((pv, cv) => pv+cv, 0);
- var maxGain = calculateGain(totalCapacity / 4, 0) + calculateGain(totalCapacity / 4, 1) + calculateGain(totalCapacity / 4, 2) + calculateGain(totalCapacity / 4, 3);
- var efficiency = Math.round(1000 * totalGain / maxGain) / 10;
- $("h3:eq(0)").html("Raubzug <span style='font-weight: normal; font-size: 13px;'>(Gesamtertrag: " + totalGain + "/h von " + maxGain + "/h - " + efficiency + "% Effizienz)</span>");
- // Speichere Werte in Datenbank
- setData("scavenge_gain", totalGain);
- setData("scavenge_efficiency", efficiency);
- }
- // Startet einen Raubzug
- function startScavenge(scavenge_number) {
- if ($(".free_send_button:eq(" + scavenge_number + ")").length && !$(".free_send_button:eq(" + scavenge_number + ")").hasClass("btn-disabled")) {
- clickElement(".free_send_button:eq(" + scavenge_number + ")");
- }
- setTimeout(function() { calculateLoot(scavenge_number); updateTotalGain(); }, 3000);
- scavenge_started[scavenge_number] = false;
- }
- // Trägt alle Einheiten für den Raubzug ein und verschiebt mögliche parallel zurückkommende Raubzüge
- function prepareScavenge(scavenge_number) {
- var date = new Date();
- 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
- if (!scavenge_started[scavenge_number]) {
- setTimeout(function() { prepareScavenge(scavenge_number); }, 60000);
- console.log(getTime() + ": Start des " + (scavenge_number + 1) + ". Raubzugs wurde um 1 Minute verschoben");
- }
- } else { // Einzige abzusendender Raubzug
- scavenge_started[scavenge_number] = true;
- if ($("input[name=spear]").val() == "") clickElement("a.units-entry-all[data-unit=spear]");
- if ($("input[name=sword]").val() == "") clickElement("a.units-entry-all[data-unit=sword]");
- if ($("input[name=axe]").val() == "") clickElement("a.units-entry-all[data-unit=axe]");
- if ($("input[name=archer]").val() == "") clickElement("a.units-entry-all[data-unit=archer]");
- if ($("input[name=light]").val() == "") clickElement("a.units-entry-all[data-unit=light]");
- if ($("input[name=marcher]").val() == "") clickElement("a.units-entry-all[data-unit=marcher]");
- if ($("input[name=heavy]").val() == "") clickElement("a.units-entry-all[data-unit=heavy]");
- var delay = randomValue(5, 60);
- setTimeout(function() { startScavenge(scavenge_number); }, delay * 1000);
- console.log(getTime() + ": Raubzug " + (parseInt(scavenge_number) + 1) + " wird in " + delay + " Sekunden gestartet");
- }
- }
- // Fügt Indizes zu den Raubzügen hinzu
- $('div.scavenge-option:eq(0)').attr("scavenge", "0");
- $('div.scavenge-option:eq(1)').attr("scavenge", "1");
- $('div.scavenge-option:eq(2)').attr("scavenge", "2");
- $('div.scavenge-option:eq(3)').attr("scavenge", "3");
- // Aktualisiert die Kapazität und den Ertrag aller verfügbaren Raubzüge
- var i;
- for (i = 0; i < 4; i++)
- if ($(".free_send_button:eq(" + i + ")").length) calculateLoot(i);
- // Aktualisiert den Gesamtertrag aller Raubzüge
- updateTotalGain();
- // Listener auf Rückkehrcountdowns
- $("body").on('DOMSubtreeModified', "span.return-countdown", function () {
- var scavenge_number = $(this).parent().parent().parent().parent().parent().attr("scavenge");
- if ($(this).html() == "0:00:00" && !scavenge_started[scavenge_number]) {
- setTimeout(function() { prepareScavenge(scavenge_number); }, 5000);
- }
- });
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement