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();
});
})();