NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name OGame Splitt-Tab // @namespace http://tampermonkey.net/ // @version 1.0 // @description Fügt einen Splitt-Tab zu OGame hinzu, um Schiffe und Ressourcen zu teilen und zu senden. // @license MIT // @author Bobber // @match https://*.gameforge.com/game/index.php?page=ingame&component=fleetdispatch* // @grant none // ==/UserScript== (function() { 'use strict'; function addSplittTab() { // Finde das Panel, in das der neue Tab eingefügt werden soll let panel = document.querySelector('#ago_panel'); // Füge den neuen Tab "Splitt" hinzu let newTab = document.createElement('div'); newTab.id = 'ago_panel_Splitt'; newTab.className = 'ago_panel_tab'; newTab.setAttribute('ago-data', '{"update":{"tab":"Splitt","status":"toggle"}}'); newTab.innerHTML = 'Splitt<span class="ago_panel_tab_info"></span>'; // Finde die Position für den neuen Tab und füge ihn ein let toolsTab = document.querySelector('#ago_panel_Tools'); toolsTab.parentNode.insertBefore(newTab, toolsTab.nextSibling); // Erstelle das Splitt-Menü und füge es direkt unter dem Tab ein let splittMenu = document.createElement('div'); splittMenu.id = 'ago_panel_Splitt_Content'; splittMenu.className = 'ago_panel_tab_content'; splittMenu.style.display = 'none'; splittMenu.innerHTML = ` <div id="split_panel_content" style="background: rgb(17, 16, 23); padding: 10px;"> <div> <div style="width: calc(100% - 4px); padding: 0 2px; float: left;">Split Anzahl:</div> <div style="clear: left;"></div> </div> <div> <div style="width: calc(100% - 4px); padding: 0 2px; float: left;"> <input type="number" id="splitNumber" min="1" step="1" style="width: 100%; margin-top: 3px; text-align: center; font-weight: bold; height: 24px; box-sizing: border-box;"> </div> <div style="clear: left;"></div> </div> <div style="background: #111017; margin: 10px 0;"> <input id="splitButton" type="button" value="Split" style="cursor: pointer; width: 100%; background: #3b4858; color: #c8c8c8; height: 24px; background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0,rgba(0, 0, 0, 0.1)),color-stop(1,rgba(255, 255, 255, 0.1)));"> </div> </div> `; newTab.insertAdjacentElement('afterend', splittMenu); // Zeige das Splitt-Menü, wenn auf den neuen Tab geklickt wird newTab.addEventListener('click', function() { // Alle anderen Menüs ausblenden document.querySelectorAll('.ago_panel_tab_content').forEach(function(content) { if (content !== splittMenu) { content.style.display = 'none'; } }); // Das Splitt-Menü ein- und ausblenden splittMenu.style.display = splittMenu.style.display === 'none' ? 'block' : 'none'; }); // Füge die Funktionalität zum Split-Button hinzu document.getElementById('splitButton').addEventListener('click', function() { let splitNumber = parseInt(document.getElementById('splitNumber').value); if (splitNumber > 0) { // Hier wird die Logik zum Teilen der Schiffanzahl und Ressourcen eingefügt splitFleetAndResources(splitNumber); } }); } // Funktion zur robusteren Simulation der Eingabe function setInputValue(element, value) { element.value = value; const events = ['input', 'change', 'blur']; events.forEach(eventType => { const event = new Event(eventType, { bubbles: true }); element.dispatchEvent(event); }); } // Beispielhafte Funktion, um die Flotte und Ressourcen zu teilen function splitFleetAndResources(splitNumber) { // Finde und teile die Ressourcen let metalElement = document.getElementById('ago_calc_available_metal'); let crystalElement = document.getElementById('ago_calc_available_crystal'); let deuteriumElement = document.getElementById('ago_calc_available_deuterium'); let metal = parseInt(metalElement.textContent.replace(/\./g, '')) || 0; let crystal = parseInt(crystalElement.textContent.replace(/\./g, '')) || 0; let deuterium = parseInt(deuteriumElement.textContent.replace(/\./g, '')) || 0; let metalField = document.getElementById('ago_calc_resource_metal'); let crystalField = document.getElementById('ago_calc_resource_crystal'); let deuteriumField = document.getElementById('ago_calc_resource_deuterium'); setInputValue(metalField, Math.floor(metal / splitNumber)); setInputValue(crystalField, Math.floor(crystal / splitNumber)); setInputValue(deuteriumField, Math.floor(deuterium / splitNumber)); // Finde alle Schiff-Textfelder let shipFields = document.querySelectorAll('#shipsChosen input[type="text"]'); shipFields.forEach(function(field) { if (!field.disabled) { let shipCount = parseInt(field.previousElementSibling.querySelector('.amount').getAttribute('data-value')) || 0; // Entfernt eventuelle Punkte und konvertiert in Zahl let newCount = Math.floor(shipCount / splitNumber); // Teilt die Schiffszahl durch die Split-Anzahl setInputValue(field, newCount); // Setzt das neue Ergebnis und löst Ereignisse aus } }); } // Warte, bis das Dokument vollständig geladen ist window.addEventListener('load', function() { // Füge den neuen Tab hinzu addSplittTab(); }); })();