Jump to content


Photo

Quality of life works only on classic server


  • Please log in to reply
13 replies to this topic

#1 OPTtheTI

OPTtheTI

    Опытный игрок

  • Пользователь
  • 58 posts

Posted 24 May 2025 - 23:08

Ich habe am 18.5.2025

dem Admin odiabile per Telegramm ein Shortcut Script für Expos vorgestellt, so wie ein Mond Namen Fix in der Übersicht.

Heute habe ich nachgefragt, wie das ganze nun aussieht und bekam die Antwort, dass sie gerade Simultan daran gearbeitet hat, das offensichtlich ins Spiel ein zu binden.
Leider vermute ich, dass sie genau wie beim einbinden der Enter Taste vor 2 Jahren wieder Fehler einbauen und oder nur halbe Sachen machen machen.

Denn die Entertaste ist Kaputt bei einer offenen [ im code der flotten.js das kann jeder sehen in der Browserconse die ihr über F12 öffnen könnt.

 

Naja Egal, ich habe das hier vorgeschlagen und entnehme den Chatverlauf, der erlaubt ist, da sie das ja gerade Selber ein bauen er sagte, wenn ich das richtig verstanden habe zu Morgen.

Somit poste ich jetzt hier kack frech mein Tampermonkey / Gasemonkey Script für die Quality of Life und den Mond namen Fix. chatverlauf würde ich zwar auch gerne öffentlich machen, aber das ist nach deutschem recht verboten und ich will den Admin ja auch nicht ganz ans bein pissen.


Lebensqualität für Expos aber das ist auf deutsch eine übersetzung ihr selbst machen sry.

 

  1. // ==Benutzerskript==
  2. // @name Xterium Lebensqualität
  3. // @namespace http://tampermonkey.net/
  4. // @version 3.29
  5. // @description Tool zum Verbessern der Lebensqualität in Xterium
  6. // @author OPTtheTI
  7. // @match https://classic.xterium.com/game.php*
  8. // @grant GM_addStyle
  9. // ==/Benutzerskript==
  10.  
  11. (Funktion() {
  12. streng verwenden“;
  13.  
  14. // CSS für die Buttons und Checkboxen definieren
  15. GM_addStyle(`
  16. .button-container {
  17. Rand: 5px 0;
  18. Polsterung: 5px;
  19. }
  20. .button-wrapper {
  21. Box-Größe: Rahmenbox;
  22. Polsterung: 5px;
  23. Anzeige: Flex;
  24. Elemente ausrichten: zentrieren;
  25. Höhe: 30px; /* Höhe an die oberen Menüs anpassen */
  26. Breite: 100 %; /* Erstmitteilung */
  27. }
  28. .benutzerdefiniertes Kontrollkästchen {
  29. Breite: 24px;
  30. Höhe: 24px;
  31. Cursor: Zeiger;
  32. vertikale Ausrichtung: Mitte;
  33. Rand links: 10px;
  34. Anzeige: Inline-Block !wichtig; /* Sicherstellen, dass die Checkbox sichtbar ist */
  35. Sichtbarkeit: sichtbar !wichtig; /* Verhindern, dass sie ausgeblendet wird */
  36. }
  37. .nuovomenusinistra {
  38. Anzeige: Inline-Block;
  39. vertikale Ausrichtung: Mitte;
  40. Farbe: #ccc;
  41. Textdekoration: keine;
  42. Schriftgröße: 14px;
  43. Flex-Wachstum: 1;
  44. }
  45. .Menüsymbol {
  46. Breite: 20px;
  47. Höhe: 20px;
  48. Rand rechts: 10px;
  49. Anzeige: Inline-Block;
  50. vertikale Ausrichtung: Mitte;
  51. Hintergrundgröße: enthalten;
  52. Hintergrundwiederholung: keine Wiederholung;
  53. }
  54. /* Platzhalter-Icons für die Buttons */
  55. .menu-icon.expo {
  56. Hintergrundbild: URL('https://classic.xterium.com/styles/images/iconav/expo.png');
  57. }
  58. .menu-icon.barbaren {
  59. Hintergrundbild: URL('https://classic.xterium.com/styles/images/iconav/barbaren.png');
  60. }
  61. .menu-icon.pirate {
  62. Hintergrundbild: URL('https://classic.xterium.com/styles/images/iconav/piraten.png');
  63. }
  64. .menu-icon.aliens {
  65. Hintergrundbild: URL('https://classic.xterium.com/styles/images/iconav/aliens.png');
  66. }
  67. .menu-icon.droiden {
  68. Hintergrundbild: URL('https://classic.xterium.com/styles/images/iconav/droiden.png');
  69. }
  70. .menu-icon.miners {
  71. Hintergrundbild: URL('https://classic.xterium.com/styles/images/iconav/miners.png');
  72. }
  73. .menu-icon.ruinen {
  74. Hintergrundbild: URL('https://classic.xterium.com/styles/images/iconav/ruinen.png');
  75. }
  76. #tm-sw-farm-overlay {
  77. Position: fest;
  78. oben: 0;
  79. links: 0;
  80. Breite: 100vw;
  81. Höhe: 100vh;
  82. Hintergrundfarbe: rgba(0, 0, 0, 0,85);
  83. Z-Index: 10000;
  84. Anzeige: keine;
  85. Inhalt ausrichten: zentriert;
  86. Elemente ausrichten: zentrieren;
  87. }
  88. #tm-sw-farm-settings {
  89. Breite: 70 %;
  90. max. Höhe: 80vh;
  91. Hintergrundfarbe: #222;
  92. Farbe: #ccc;
  93. Polsterung: 15px;
  94. Rahmenradius: 10px;
  95. Kastenschatten: 0 4px 8px rgba(0,0,0,0,5);
  96. Überlauf-y: automatisch;
  97. }
  98. #tm-sw-farm-settings h3 {
  99. Textausrichtung: zentriert;
  100. Schriftgröße: 1,2em;
  101. Farbe: weiß;
  102. }
  103. .Einstellungen-Tabelle {
  104. Breite: 100 %;
  105. Rahmenkollaps: Kollaps;
  106. }
  107. .settings-table th, .settings-table td {
  108. Rand: 1px durchgezogen #333;
  109. Polsterung: 8px;
  110. Textausrichtung: zentriert;
  111. }
  112. .settings-table th {
  113. Hintergrundfarbe: #444;
  114. Farbe: #ddd;
  115. Schriftstärke: fett;
  116. }
  117. .Schiffsempfehlung {
  118. Farbe: #4CAF50;
  119. Cursor: Zeiger;
  120. }
  121. .ship-recommendation:hover {
  122. Textdekoration: Unterstreichen;
  123. }
  124. .ship-input {
  125. Breite: 80px;
  126. Textausrichtung: rechts;
  127. Farbe: #fff;
  128. Hintergrundfarbe: #444;
  129. Rand: 1px durchgezogen #666;
  130. Polsterung: 5px;
  131. Rahmenradius: 5px;
  132. }
  133. #Einstellungen-btn speichern, #Empfehlungen-btn verwenden {
  134. Breite: 100 %;
  135. Rand oben: 10px;
  136. Polsterung: 10px;
  137. Schriftgröße: 1em;
  138. Farbe: weiß;
  139. Rand: keiner;
  140. Rahmenradius: 5px;
  141. Cursor: Zeiger;
  142. }
  143. #save-settings-btn {
  144. Hintergrundfarbe: #4CAF50;
  145. }
  146. #use-recommendations-btn {
  147. Hintergrundfarbe: #2196F3;
  148. }
  149. `);
  150.  
  151. // Speichern des Checkbox-Status in localStorage
  152. Funktion saveCheckboxStatus() {
  153. ['expo', 'barbaren', 'piraten', 'ruinen', 'aliens', 'droiden', 'miners'].forEach(id => {
  154. const checkbox = document.getElementById(`tm-${id}-checkbox`);
  155. if (Kontrollkästchen) {
  156. localStorage.setItem(`tm-${id}-checkbox`, checkbox.checked);
  157. }
  158. });
  159. }
  160.  
  161. // Wiederherstellen des Checkbox-Status aus localStorage
  162. Funktion wiederherstellenCheckboxStatus() {
  163. ['expo', 'barbaren', 'piraten', 'ruinen', 'aliens', 'droiden', 'miners'].forEach(id => {
  164. const checkbox = document.getElementById(`tm-${id}-checkbox`);
  165. if (Kontrollkästchen) {
  166. const checked = localStorage.getItem(`tm-${id}-checkbox`);
  167. checkbox.checked = aktiviert === 'true';
  168. }
  169. });
  170. }
  171.  
  172. // Funktion zum Deaktivieren aller anderen Checkboxen
  173. Funktion disableOtherCheckboxes(currentCheckboxId) {
  174. ['expo', 'barbaren', 'piraten', 'ruinen', 'aliens', 'droiden', 'miners'].forEach(id => {
  175. const checkbox = document.getElementById(`tm-${id}-checkbox`);
  176. wenn (Kontrollkästchen && Kontrollkästchen.id !== aktuelleKontrollkästchen-ID) {
  177. Kontrollkästchen.aktiviert = falsch;
  178. localStorage.setItem(`tm-${id}-checkbox`, false);
  179. }
  180. });
  181. }
  182.  
  183. // Warte, bis die Seite geladen ist
  184. window.addEventListener('laden', Funktion() {
  185. const marketImageButton = document.querySelector('a.nuovomenudestra[href="game.php?page=market"]');
  186.  
  187. if (!marketImageButton) {
  188. console.log("Markt-Button nicht gefunden");
  189. zurückkehren;
  190. }
  191.  
  192. // HTML-Container für die zusätzlichen Buttons und Checkboxen
  193. const zusätzlicheButtons = `
  194. <div class="separator"></div>
  195. <div Klasse="Schaltflächen-Container">
  196. <div Klasse="Button-Wrapper">
  197. <span class="menu-icon expo"></span>
  198. <a class="nuovomenusinistra" id="expo-button">Ausstellung</a>
  199. <input type="checkbox" class="custom-checkbox" id="tm-expo-checkbox">
  200. </div>
  201. <div Klasse="Button-Wrapper">
  202. <span class="menu-icon barbaren"></span>
  203. <a class="nuovomenusinistra" id="barbaren-button">Barbaren</a>
  204. <input type="checkbox" class="custom-checkbox" id="tm-barbaren-checkbox">
  205. </div>
  206. <div Klasse="Button-Wrapper">
  207. <span class="menu-icon piraten"></span>
  208. <a class="nuovomenusinistra" id="piraten-button">Piraten</a>
  209. <input type="checkbox" class="custom-checkbox" id="tm-piraten-checkbox">
  210. </div>
  211. <div Klasse="Button-Wrapper">
  212. <span class="menu-icon aliens"></span>
  213. <a class="nuovomenusinistra" id="aliens-button">Außerirdische</a>
  214. <input type="checkbox" class="custom-checkbox" id="tm-aliens-checkbox">
  215. </div>
  216. <div Klasse="Button-Wrapper">
  217. <span class="menu-icon droiden"></span>
  218. <a class="nuovomenusinistra" id="droiden-button">Droiden</a>
  219. <input type="checkbox" class="custom-checkbox" id="tm-droiden-checkbox">
  220. </div>
  221. <div Klasse="Button-Wrapper">
  222. <span class="menu-icon Bergleute"></span>
  223. <a class="nuovomenusinistra" id="miners-button">Bergleute</a>
  224. <input type="checkbox" class="custom-checkbox" id="tm-miners-checkbox">
  225. </div>
  226. <div Klasse="Button-Wrapper">
  227. <span class="menu-icon ruinen"></span>
  228. <a class="nuovomenusinistra" id="ruinen-button">Ruinen</a>
  229. <input type="checkbox" class="custom-checkbox" id="tm-ruinen-checkbox">
  230. </div>
  231. </div>
  232. `;
  233.  
  234. // Buttons nach dem Markt-Bild-Button hinzufügen
  235. marketImageButton.insertAdjacentHTML('afterend', zusätzlicheButtons);
  236.  
  237. // Debugging: Überprüfen Sie, ob die Checkboxen im DOM vorhanden sind
  238. document.querySelectorAll('.custom-checkbox').forEach(checkbox => {
  239. console.log(`Checkbox ${checkbox.id} ist im DOM vorhanden:`, checkbox);
  240. });
  241.  
  242. // Checkbox-Status wiederherstellen
  243. wiederherstellenCheckboxStatus();
  244.  
  245. // Checkbox-Status speichern und andere Checkboxen deaktivieren, wenn eine Checkbox geändert wird
  246. document.querySelectorAll('.custom-checkbox').forEach(checkbox => {
  247. checkbox.addEventListener('ändern', Funktion() {
  248. if (checkbox.checked) {
  249. Deaktivieren Sie andere Kontrollkästchen (Checkbox.id);
  250. }
  251. saveCheckboxStatus();
  252. });
  253. });
  254.  
  255. console.log("Zusätzliche Buttons und Checkboxen nach dem Markt-Button hinzugefügt");
  256. performActionsOnPage();
  257. });
  258.  
  259. // Funktion zum Abrufen der gespeicherten Schiffsanzahlen aus localStorage
  260. Funktion getSavedShipValues(buttonId) {
  261. const Schiffswerte = {};
  262. ['210', '211', '212', '213', '214', '220', '221', '222', '223', '224', '225', '230', '231', '232', '233', '234', '240', '241', '242', '243', '208', '207', '201'].forEach(shipId => {
  263. const-Wert = localStorage.getItem(`${buttonId}-${shipId}`) || '0';
  264. Schiffswerte[Schiffs-ID] = Wert;
  265. });
  266. Schiffswerte zurückgeben;
  267. }
  268.  
  269. Funktion setInputValues() {
  270. var Eingabeelement = {};
  271. inputElement['210'] = document.querySelector('input.countdots.inputhang[name="ship210"]');
  272. inputElement['211'] = document.querySelector('input.countdots.inputhang[name="ship211"]');
  273. inputElement['212'] = document.querySelector('input.countdots.inputhang[name="ship212"]');
  274. inputElement['213'] = document.querySelector('input.countdots.inputhang[name="ship213"]');
  275. inputElement['214'] = document.querySelector('input.countdots.inputhang[name="ship214"]');
  276. inputElement['220'] = document.querySelector('input.countdots.inputhang[name="ship220"]');
  277. inputElement['221'] = document.querySelector('input.countdots.inputhang[name="ship221"]');
  278. inputElement['222'] = document.querySelector('input.countdots.inputhang[name="ship222"]');
  279. inputElement['223'] = document.querySelector('input.countdots.inputhang[name="ship223"]');
  280. inputElement['224'] = document.querySelector('input.countdots.inputhang[name="ship224"]');
  281. inputElement['225'] = document.querySelector('input.countdots.inputhang[name="ship225"]');
  282. inputElement['230'] = document.querySelector('input.countdots.inputhang[name="ship230"]');
  283. inputElement['231'] = document.querySelector('input.countdots.inputhang[name="ship231"]');
  284. inputElement['232'] = document.querySelector('input.countdots.inputhang[name="ship232"]');
  285. inputElement['233'] = document.querySelector('input.countdots.inputhang[name="ship233"]');
  286. inputElement['234'] = document.querySelector('input.countdots.inputhang[name="ship234"]');
  287. inputElement['240'] = document.querySelector('input.countdots.inputhang[name="ship240"]');
  288. inputElement['241'] = document.querySelector('input.countdots.inputhang[name="ship241"]');
  289. inputElement['242'] = document.querySelector('input.countdots.inputhang[name="ship242"]');
  290. inputElement['243'] = document.querySelector('input.countdots.inputhang[name="ship243"]');
  291. inputElement['208'] = document.querySelector('input.countdots.inputhang[name="ship208"]');
  292. inputElement['207'] = document.querySelector('input.countdots.inputhang[name="ship207"]');
  293. inputElement['201'] = document.querySelector('input.countdots.inputhang[name="ship201"]');
  294.  
  295. const checkboxMapping = {
  296. 'tm-expo-checkbox': 'Expo-Schaltfläche',
  297. 'tm-aliens-checkbox': 'Aliens-Schaltfläche',
  298. 'tm-droiden-checkbox': 'droiden-button',
  299. 'tm-piraten-checkbox': 'piraten-button',
  300. 'tm-barbaren-checkbox': 'barbaren-button',
  301. 'tm-ruinen-checkbox': 'ruinen-button',
  302. 'tm-miners-checkbox': 'Bergarbeiter-Schaltfläche'
  303. };
  304.  
  305. für (checkboxId in checkboxMapping lassen) {
  306. wenn(document.getElementById(checkboxId).checked) {
  307. const Schiffswerte = getSavedShipValues(checkboxMapping[checkboxId]);
  308. für (lass Schiffs-ID in Schiffswerten) {
  309. if (Eingabeelement[Schiffs-ID]) {
  310. inputElement[shipId].value = ShipValues[shipId];
  311. }
  312. }
  313. brechen;
  314. }
  315. }
  316. }
  317.  
  318. Funktion setzePlanetValue() {
  319. var planetInput = document.getElementById('planet');
  320. if (planetInput && isAnyCheckboxChecked()) {
  321. planetInput.value = '21';
  322. }
  323. }
  324.  
  325. Funktion isAnyCheckboxChecked() {
  326. const checkboxes = ['expo', 'barbaren', 'piraten', 'ruinen', 'aliens', 'droiden', 'miners'];
  327. returniere Kontrollkästchen.some(id => {
  328. const checkbox = document.getElementById(`tm-${id}-checkbox`);
  329. Kontrollkästchen zurückgeben && Kontrollkästchen.aktiviert;
  330. });
  331. }
  332.  
  333. Funktion addCheckboxListeners() {
  334. ['expo', 'barbaren', 'piraten', 'ruinen', 'aliens', 'droiden', 'miners'].forEach(id => {
  335. const checkbox = document.getElementById(`tm-${id}-checkbox`);
  336. if (Steuerung) {
  337. checkbox.addEventListener('ändern', Funktion() {
  338. setzePlanetValue();
  339. clickLabelElement();
  340. saveCheckboxStatus();
  341. });
  342. } anders {
  343. console.log(`Checkbox tm-${id}-checkbox nicht gefunden!`);
  344. }
  345. });
  346. }
  347.  
  348. Funktion clickLabelElement() {
  349. Klasse Versuche = 0;
  350. Funktion tryClick() {
  351. let labelSelector = '';
  352. let SectorId = '';
  353.  
  354. wenn (document.querySelector('#tm-expo-checkbox:checked')) {
  355. labelSelector = 'label.i-miss15o';
  356. } sonst wenn (document.querySelector('#tm-barbaren-checkbox:geprüft') || document.querySelector('#tm-piraten-checkbox:geprüft') || document.querySelector('#tm-aliens-checkbox:geprüft') || document.querySelector('#tm-ruinen-checkbox:geprüft') || document.querySelector('#tm-droiden-checkbox:geprüft') ||. document.querySelector('#tm-miners-checkbox:geprüft')) {
  357. labelSelector = 'label.i-miss16o';
  358. if (document.querySelector('#tm-barbaren-checkbox:checked')) SektorId = 'Sektor_1';
  359. sonst wenn (document.querySelector('#tm-piraten-checkbox:checked')) SektorId = 'Sektor_2';
  360. sonst wenn (document.querySelector('#tm-aliens-checkbox:checked')) Sektor-ID = 'Sektor_3';
  361. sonst wenn (document.querySelector('#tm-ruinen-checkbox:checked')) Sektor-ID = 'Sektor_4';
  362. sonst wenn (document.querySelector('#tm-droiden-checkbox:checked')) Sektor-ID = 'Sektor_6';
  363. sonst wenn (document.querySelector('#tm-miners-checkbox:checked')) Sektor-ID = 'Sektor_5';
  364. }
  365.  
  366. const labelElement = document.querySelector(labelSelector);
  367. if (labelElement) {
  368. labelElement.click();
  369. if (Sektor-ID) {
  370. const radioElement = document.querySelector(`#${sectorId}`);
  371. wenn (Radioelement) Radioelement.geprüft = wahr;
  372. }
  373. } sonst wenn (Versuche < 10) {
  374. setTimeout(tryClick, 500);
  375. Versuche++;
  376. }
  377. }
  378.  
  379. versuchenKlick();
  380. }
  381.  
  382. Funktion performActionsOnPage() {
  383. const currentPage = Fenster.Standort.href;
  384. if (currentPage.includes('fleetTable')) {
  385. setInputValues();
  386. } sonst wenn (currentPage.includes('fleetStep1')) {
  387. setzePlanetValue();
  388. } sonst wenn (currentPage.includes('fleetStep2')) {
  389. clickLabelElement();
  390. }
  391. }
  392.  
  393. document.addEventListener('DOMContentLoaded', function() {
  394. performActionsOnPage();
  395. addCheckboxListeners();
  396. wiederherstellenCheckboxStatus();
  397. });
  398. })();
  399.  
  400. //Untergrund
  401. (Funktion() {
  402. die Stärken nehmen zu“;
  403.  
  404. Funktion clickButton(Selector) {
  405. var button = document.querySelector(Selektor);
  406. wenn (kurz für kurz) {
  407. button.click();
  408. }
  409. }
  410.  
  411. Funktion handleKeyPress(Ereignis) {
  412. wenn(event.keyCode === 13) {
  413. if (window.location.href.includes("fleetTable")) {
  414. Klicken Sie auf die Schaltfläche "Klicken Sie auf die Schaltfläche" ('.fl_bigbtn_go');
  415. } sonst wenn (window.location.href.includes("fleetStep1")) {
  416. Klicken Sie auf die Schaltfläche "Klicken Sie auf die Schaltfläche" ('.fl_bigbtn_go');
  417. } sonst wenn (window.location.href.includes("fleetStep2")) {
  418. clickButton('.fl_bigbtn_go[value=" Flotte verschicken "]');
  419. }
  420. }
  421. }
  422.  
  423. document.addEventListener('Tastendruck', handleKeyPress);
  424. })();
  425.  
  426. //Menüpunkte anzeigen
  427. (Funktion() {
  428. die Stärken nehmen zu“;
  429.  
  430. const Schiff = [
  431. { id: '210', name: 'Leichterjäger' },
  432. { id: '211', name: 'Kreuzer' },
  433. { id: '212', name: 'Zerstörer' },
  434. { id: '213', name: 'Schlachtschiff' },
  435. { id: '214', name: 'Kammerjäger' },
  436. { id: '220', name: 'Galeone' },
  437. { id: '221', name: 'Dreadnought' },
  438. { id: '222', name: 'Bomber' },
  439. { id: '223', name: 'Vernichter' },
  440. { id: '224', name: 'Schwarze Wanderer' },
  441. { id: '225', name: 'Fregatten' },
  442. { id: '230', name: 'Todesstern' },
  443. { id: '231', name: 'Schwerer Bomber' },
  444. { id: '232', name: 'Avatar' },
  445. { id: '233', name: 'Fliegender Tod' },
  446. { id: '234', name: 'ONeill' },
  447. { id: '240', name: 'Jäger' },
  448. { id: '241', name: 'Aid' },
  449. { id: '242', name: 'Cerberus' },
  450. { id: '243', name: 'Titanium' },
  451. { id: '208', name: 'Evolution Transporter' },
  452. { id: '207', name: 'Gigarecycler' },
  453. { id: '201', name: 'SpionageSonden' },
  454. ];
  455.  
  456. const buttonLabels = {
  457. 'expo-button': 'Ausstellung', //In Ihre Sprache übersetzen
  458. 'barbaren-button': 'Barbaren', //Übersetze in deine Sprache
  459. 'pirate-button': 'Piraten', //Übersetze in deine Sprache
  460. 'aliens-button': 'Außerirdische', //Übersetze in deine Sprache
  461. 'droiden-button': 'Droiden', //Übersetze in deine Sprache
  462. 'miners-button': 'Bergleute', //Übersetze in deine Sprache
  463. 'ruined-button': 'Ruiniert' //Übersetze in deine Sprache
  464. };
  465.  
  466. Funktion getButtonLabel(buttonId) {
  467. Zurück zu den Schaltflächenbeschriftungen[Schaltflächen-ID] || Intelligente ID;
  468. }
  469.  
  470. Funktion getRecommendations(buttonId) {
  471. const Empfehlungen = {
  472. 'Expo-Button': { '224': '36364' },
  473. 'Aliens-Button': {
  474. '210': '121000', '211': '162000', '212': '14000', '214': '14000',
  475. '221': '16000', '232': '180', '233': '16', '234': '15',
  476. '240': '12', '241': '50', '242': '20', '243': '10', '207': '1'
  477. },
  478. 'Droid-Button': {
  479. '210': '121000', '211': '162000', '212': '14000', '214': '14000',
  480. '221': '16000', '232': '180', '233': '16', '234': '15',
  481. '240': '12', '241': '50', '242': '20', '243': '10', '207': '1'
  482. },
  483. 'piraten-button': { '210': '15625', '221': '9375', '224': '125', '225': '125' },
  484. 'barbaren-button': { '210': '15625', '221': '9375', '224': '125', '225': '125' },
  485. 'ruinen-button': { '210': '656908', '221': '393800', '224': '5270', '225': '5161' },
  486. 'Bergarbeiter-Schaltfläche': { '222': '1000', '231': '200' }
  487. };
  488. Empfehlungen zurückgeben[buttonId] || {};
  489. }
  490.  
  491. const overlay = Dokument.createElement('div');
  492. overlay.id = 'tm-sw-farm-overlay';
  493. Dokument.body.appendChild(Overlay);
  494.  
  495. Funktion showSettings(buttonId) {
  496. const label = getButtonLabel(buttonId);
  497. const Empfehlungen = getRecommendations(buttonId);
  498.  
  499. overlay.innerHTML = `
  500. <div id="tm-sw-farm-settings">
  501. <h3>Einstellungen für ${label}</h3>
  502. <table class="settings-table">
  503. <thead>
  504. <tr>
  505. <th>Schiffe</th> //In Ihre Sprache übersetzen
  506. <th>Empfehlung</th> //In Ihre Sprache übersetzen
  507. <th>Anzahl</th> /bersetze in deine Sprache
  508. <th>Eingestellt</th> //In Ihre Sprache übersetzen
  509. </tr>
  510. </thead>
  511. <tbody>
  512. ${ships.map(ship => {
  513. const savedValue = localStorage.getItem(`${buttonId}-${ship.id}`) || '0';
  514. return `
  515. <tr class="Schiffsreihe">
  516. <td class="ship-label">${Schiffsname}</td>
  517. <td class="Schiffsempfehlung" data-id="${buttonId}-${ship.id}">
  518. ${Empfehlungen[Schiffs-ID] || '0'}
  519. </td>
  520. <td><input type="text" id="${buttonId}-${ship.id}" class="ship-input" placeholder="Anzahl" /></td>
  521. <td>${gespeicherterWert}</td>
  522. </tr>
  523. `;
  524. }).Verb('')}
  525. </tbody>
  526. </Tabelle>
  527. <button id="use-recommendations-btn">Empfehlung nutzen und speichern</button>
  528. <button id="save-settings-btn">Einstellungen speichern</button>
  529. </div>
  530. `;
  531.  
  532. overlay.style.display = 'flex';
  533.  
  534. document.getElementById('use-recommendations-btn').onclick = () => {
  535. Schiffe.forJedes(Schiff => {
  536. const Empfehlung = Empfehlungen[Schiffs-ID] || '0';
  537. const input = document.getElementById(`${buttonId}-${ship.id}`);
  538. Eingabewert = Empfehlung;
  539. localStorage.setItem(`${buttonId}-${ship.id}`, Empfehlung);
  540. });
  541. Überlagerungstext (wahr);
  542. };
  543.  
  544. document.querySelectorAll('.ship-recommendation').forEach(element => {
  545. element.addEventListener('click', () => {
  546. const shipId = element.getAttribute('data-id');
  547. const Empfehlung = element.textContent.trim();
  548. document.getElementById(shipId).value = Empfehlung;
  549. });
  550. });
  551.  
  552. document.addEventListener('keydown', handleCloseOverlay);
  553. overlay.addEventListener('click', (e) => {
  554. wenn(e.target === overlay) closeOverlay();
  555. });
  556.  
  557. document.getElementById('save-settings-btn').onclick = () => {
  558. Schiffe.forJedes(Schiff => {
  559. const input = document.getElementById(`${buttonId}-${ship.id}`);
  560. localStorage.setItem(`${buttonId}-${ship.id}`, input.value || '');
  561. });
  562. Überlagerungstext (wahr);
  563. };
  564. }
  565.  
  566. Funktion closeOverlay() {
  567. overlay.style.display = "keine";
  568. document.removeEventListener('keydown', handleCloseOverlay);
  569. }
  570.  
  571. Funktion handleCloseOverlay(Ereignis) {
  572. wenn (Ereignischlüssel === 'Escape') {
  573. Schrägstriche überlagern();
  574. }
  575. }
  576.  
  577. const buttonIds = Object.keys(buttonLabels);
  578.  
  579. Funktion secureButtonListeners() {
  580. buttonIds.forEach(id => {
  581. const Intervall = setInterval(() => {
  582. const button = document.getElementById(id);
  583. wenn (kurz für kurz) {
  584. clearInterval(Intervall);
  585. button.addEventListener('klicken', (e) => {
  586. e.preventDefault();
  587. Suchergebnisse (ID);
  588. });
  589. }
  590. }, 300);
  591. });
  592. }
  593.  
  594. Stellen Sie sicher, dass die Schaltflächenlistener();
  595. })();

Das Skript ermöglicht es euch, die EnterTaste auf den Flottenseiten zu benutzen und die voreingestellten Shortcuts zu verwenden. Die Optik ist nicht das Beste, was ich weiß, aber es funktioniert.

Attached File  Screenshot_18.png   425.09KB   0 downloadsAttached File  Screenshot_19.png   402.48KB   0 downloadsAttached File  Screenshot_20.png   242.56KB   0 downloadsAttached File  Screenshot_23.png   318.17KB   0 downloads


Ünbersetzen der Schiffe müsst ihr hier machen

 

  1. const Schiff = [
  2. { id: '210', name: 'Leichtejäger' },
  3. { id: '211', name: 'Kreuzer' },
  4. { id: '212', name: 'Zerstörer' },
  5. { id: '213', name: 'Schlachtschiff' },
  6. { id: '214', name: 'Kammerjäger' },
  7. { id: '220', name: 'Galeone' },
  8. { id: '221', name: 'Dreadnought' },
  9. { id: '222', name: 'Bomber' },
  10. { id: '223', name: 'Vernichter' },
  11. { id: '224', name: 'Schwarze Wanderer' },
  12. { id: '225', name: 'Fregatten' },
  13. { id: '230', name: 'Todesstern' },
  14. { id: '231', name: 'Schwerer Bomber' },
  15. { id: '232', name: 'Avatar' },
  16. { id: '233', name: 'Fliegender Tod' },
  17. { id: '234', name: 'ONeill' },
  18. { id: '240', name: 'Jäger' },
  19. { id: '241', name: 'Aid' },
  20. { id: '242', name: 'Cerberus' },
  21. { id: '243', name: 'Titanium' },
  22. { id: '208', name: 'Evolution Transporter' },
  23. { id: '207', name: 'Gigarecycler' },
  24. { id: '201', name: 'SpionageSonden' },
  25. ];

Die Anordnung der Schiffe entspricht der Anzeige, wo ihr auch die Schiffe eintragt.

nun macht damit was ihr wollt ich werde da die admins das angeblich Morgen oder die tage einbauen wollen ist es wahrscheinlich nur heute von nutzen aber ich finde es nicht fair.

Ich sage ich möchte das für die Community machen schlage das am 18.05.2025 vor weil alle im Forum am weinen sind und bekomme dann so eine Antwort.
was dann zur folge hätte das sie es sich auf die eigene Fahne schreiben zu 100%

somit werde ich hier keine Verbesserungen oder eine Multi Lanugae Support für bauen. dann kann ich mich auch um andere Sachen kümmern

 

 

MfG

OPTtheTI

 


  • 2

#2 Bezobrazniy

Bezobrazniy

    Гуру

  • Пользователь
  • 163 posts
  • ГородНе Рио
  • Вселенная:RU, RU
  • Альянс:☠КØРСАРЫ☠
  • Тип игры:Атакер

Posted 25 May 2025 - 19:00

 Переводчик говорит, что он не хочет мочиться на ногу админу  :kolobok_biggrin:


  • 0

#3 Natt

Natt

    Рейдер

  • Пользователь
  • 401 posts
  • Вселенная:WoA
  • Альянс:Камелот

Posted 28 May 2025 - 13:26

Bezobrazniy, on 25 May 2025 - 16:00, said:

 Переводчик говорит, что он не хочет мочиться на ногу админу  :kolobok_biggrin:

 

Ну какой хозяин такой и переводчик ))))


  • 0

#4 Wirtus

Wirtus

    Новичок

  • Пользователь
  • 18 posts

Posted 29 May 2025 - 06:26

Я-так-понимаю-тут-показали-как-отправлять-автоЭкспы?))


  • 0

#5 Bezobrazniy

Bezobrazniy

    Гуру

  • Пользователь
  • 163 posts
  • ГородНе Рио
  • Вселенная:RU, RU
  • Альянс:☠КØРСАРЫ☠
  • Тип игры:Атакер

Posted 29 May 2025 - 06:55

Девочка Нат, привет Хозяюшка!  Ты я вижу тоже "мочишься на ногу админу"  :kolobok_biggrin:

Ты пользуешься авто обновлением страниц. Только страница форума палит тебя. Ты бы закрыла ее хотя бы, девочка программистка  :kolobok_biggrin:

В воа звездочек активности нет, казалось бы и авто обновления страниц не нужны. Но в воа есть помощница экспедиций, для помощницы и пользуешься автообновлением. А страницу форума закрывать забываешь порой  :kolobok_biggrin:

 

И ты, набравшись наглости, писала в чате что раньше без помощницы экспедиций  играть было гораздо интересней!  :kolobok_wink:

Ты не боись, ты ДОНАТЕР, поэтому тебя Шатай не накажет. Но ты попроси все таки товарища Шатаева, что бы он убрал помощницу экспедиций. И снова играть станет гораздо интересней!!

Давно за тобой наблюдаю. Скринов много сделал.. От одной до четырех минут активность у тебя..  :acute_mini:

 

 

 

 

 

Attached Files


  • 0

#6 Natt

Natt

    Рейдер

  • Пользователь
  • 401 posts
  • Вселенная:WoA
  • Альянс:Камелот

Posted 03 June 2025 - 13:26

Bezobrazniy, on 29 May 2025 - 03:55, said:

Девочка Нат, привет Хозяюшка!  Ты я вижу тоже "мочишься на ногу админу"  :kolobok_biggrin:

Ты пользуешься авто обновлением страниц. Только страница форума палит тебя. Ты бы закрыла ее хотя бы, девочка программистка  :kolobok_biggrin:

В воа звездочек активности нет, казалось бы и авто обновления страниц не нужны. Но в воа есть помощница экспедиций, для помощницы и пользуешься автообновлением. А страницу форума закрывать забываешь порой  :kolobok_biggrin:

 

И ты, набравшись наглости, писала в чате что раньше без помощницы экспедиций  играть было гораздо интересней!  :kolobok_wink:

Ты не боись, ты ДОНАТЕР, поэтому тебя Шатай не накажет. Но ты попроси все таки товарища Шатаева, что бы он убрал помощницу экспедиций. И снова играть станет гораздо интересней!!

Давно за тобой наблюдаю. Скринов много сделал.. От одной до четырех минут активность у тебя..  :acute_mini:

 

Помощница сама обновляет страницу. Ей автообновление не нужно. Ей просто нужно чтобы страница была открыта и в активном окне. Стыдно играть в игру и не знать таких элементарных вещей.

И браузер Хром имеет встроееный функционал поддержания страниц в актуальном состоянии. Чтобы страницы периодически не обновлялись нужно специальный екстеншин, позволяющий страницам становиться неактивными и не тратить интернет на обновление.

Дома у меня стоит такой екстеншин чтобы страницы обновлять только вручную. А на работе нам запрещено устанавливать стороннее программное обеспечение. Поэтому хром работает как умеет))

Стыдно не знать таких элементарных вещей о самых распространенных браузерах. Ну или если не знаешь то хотя бы не пиши чушь. Не позорься)


И кстати похоже что данные об активности на форуме врут.

В 7.55 когда ты показывал скрин с форума я еще крепко спала, часов 5 как.

И все компьютеры были выключены.

Помощник летал с телефона с приложения.

На телефоне браузер и форум никогда не открывались вообще.

Так что я ни как не могла быть в сети 2 минуты назад.)))))))


  • 0

#7 Bezobrazniy

Bezobrazniy

    Гуру

  • Пользователь
  • 163 posts
  • ГородНе Рио
  • Вселенная:RU, RU
  • Альянс:☠КØРСАРЫ☠
  • Тип игры:Атакер

Posted 03 June 2025 - 15:57

Я участвовал как то в ваших турнирах марафонах с помощницей.. Что бы помощница работала я выводил открытую страницу(вкладку) на второй монитор..  
Наблюдая за многими игроками в воа делаю выводы. Предположим все игроки(многие) играют честно без хромовского расширения. Нашел в инете, называется авто рефреш плюс. Очень интересные настройки там )) Но в воа основные топ игроки играют конечно без этого расширения. Они всего-навсего никогда не спят, никогда нигде не работают сутками, неделями, месяцами )))
У этих игроков всего-навсего постоянно круглосуточно включены компьютеры и (или) планшеты, телефоны на которых постоянно открыта страница игры ))) В реале игроки постоянно ходят с негаснущими экранами, для того что бы работала помощница. Иногда они лишь меняют контракты))
А может быть их сменяют порой родственники или знакомые?! Типа день ночь 48 ))
 
Отличная игра!! Довольно таки жертвенная ))
Это насколько нужно быть наивным, что бы поверить в такую реальность..
 
Рекомендую многим это дело испробовать на себе. Условия просты
 
Цитирую: Помощница сама обновляет страницу. Ей автообновление не нужно. Ей просто нужно чтобы страница была открыта и в активном окне.
Вопрос!! Автообновление разве не делает эффект активного окна?!  :kolobok_biggrin:
 
 
Заставьте Помощницу экспедиций без промахов сутками отыгрывать турниры по экспам!! ) Внимательно наблюдайте за "промахами" других игроков ))
 
Наташенька, рад что данные о твоей активности на форуме прекратили врать. Кажись второй день уж как все ок)) Надо же. У всех все отлично, а у тебя такая оказия была регулярно.. Товарищу Шатаеву напиши, это же безобразие!
 
Проси что бы убрали помощницу. Ты ведь говорила что с ней играть хуже..
 
И двух жертвенных сосудов достаточно вместо восьми.(Гексаграмма 41, Сунь) 
 
 
Я против тех кто пользуется сторонними программами и расширениями,  а так же против тех кто играет в режиме "негаснущий экран". Звуковых уведомлений в экспе было мало?! 

  • 0

#8 Natt

Natt

    Рейдер

  • Пользователь
  • 401 posts
  • Вселенная:WoA
  • Альянс:Камелот

Posted 03 June 2025 - 19:29

Ты же понимаешь что ты можешь быть против чего угодно.

Но все что разрешено механикой игры твоим "против" не подчиняется.

Негаснущий экран телефона ни кто не запрещал.

Так же как и включенный компьютер.

Каждый раз когда помощница переотправляет экспедицию, она сама рефрешит страницу.

За 4 минуты пока летит экспедиция страница браузера не успевает уйти в неактив))

А с 2 миссиями это 2 минуты между миссиями.)

Учите мат часть, как говорил великий классик.

И удачных вам протестов против всего, против чего вы против.)))

P.S.

За последние дни у меня ничего не изменилось. Так что продолжай следить за моей активностью.

Если тебе конечно это интересно и больше нечем заняться.)))


И да, у меня 3 монитора на работе и 2 монитора дома.)))


Edited by Natt, 03 June 2025 - 19:20.

  • 0

#9 Bezobrazniy

Bezobrazniy

    Гуру

  • Пользователь
  • 163 posts
  • ГородНе Рио
  • Вселенная:RU, RU
  • Альянс:☠КØРСАРЫ☠
  • Тип игры:Атакер

Posted 03 June 2025 - 20:30

Интересно, для какого контингента ты это все пишешь и зачем! Ты точно программистка?  :kolobok_biggrin:

Я лишь высказал свое мнение,  имею право!

Могу быть против чего угодно.  :kolobok_smile:

Могу просто не вестись на такую негаснущую "механику игры"  :acute_mini:

 

Гаситесь дальше в негаснущий экран, очень интересная забавка!  :kolobok_biggrin:


  • 0

#10 Natt

Natt

    Рейдер

  • Пользователь
  • 401 posts
  • Вселенная:WoA
  • Альянс:Камелот

Posted 03 June 2025 - 23:27

Самая интересная забавка здесь - это читать коменты от человека, который не играл, не играет и играть не собирается...

От человека который понятия не имеет об игре, потыкал пару часов кнопки и написал целую петицию как все плохо.

При чем это после того как в чате ВОА он несколько лет настойчиво писал как там все плохо пока там не добавили возможность игнорировать отдельных пользователей.

Его все заигнорили и его сообщения перестали отображаться в чате.

Теперь он начал писать на форуме. На его счастье здесь его заигнорить нельзя. 

И ты прав. Для таких как ты вообще нет смысла что-то писать. Проще не читать твои посты. Скоро и здесь будут монологи от Безобразного))))


Edited by Natt, 03 June 2025 - 23:28.

  • 0

#11 Nemesis220

Nemesis220

    Гуру

  • Пользователь
  • 240 posts
  • Вселенная:WoA
  • Альянс:Imperium
  • Тип игры:Экспедитор

Posted 03 June 2025 - 23:32

Ты как кара, пытаешься что то доказать, не понимая, что доказательства совсем звучат не убедительно. Как ребенок, который врет' и думает что он всех обманул, не понимая, что ложь звучит максимально глупо. Я порой думаю, что ты и кара одно лицо. Так же подлизываете админу.
  • 0

#12 Bezobrazniy

Bezobrazniy

    Гуру

  • Пользователь
  • 163 posts
  • ГородНе Рио
  • Вселенная:RU, RU
  • Альянс:☠КØРСАРЫ☠
  • Тип игры:Атакер

Posted 04 June 2025 - 09:58

Natt, on 03 Jun 2025 - 20:27, said:

Самая интересная забавка здесь - это читать коменты от человека, который не играл, не играет и играть не собирается...

От человека который понятия не имеет об игре, потыкал пару часов кнопки и написал целую петицию как все плохо.

При чем это после того как в чате ВОА он несколько лет настойчиво писал как там все плохо пока там не добавили возможность игнорировать отдельных пользователей.

Его все заигнорили и его сообщения перестали отображаться в чате.

Теперь он начал писать на форуме. На его счастье здесь его заигнорить нельзя. 

И ты прав. Для таких как ты вообще нет смысла что-то писать. Проще не читать твои посты. Скоро и здесь будут монологи от Безобразного))))

 

Девочка Наташенька, я ведь тебя не трогал и сюда не звал. Ты указала на мой переводчик, тем самым напомнила о себе и что ты "мочишься на ногу админа". Прикольно было почитать твои чудесные оправдания, это было так трогательно  :kolobok_biggrin:
Я не запрещал и не запрещаю тебе выключать компьютер и гасить экран телефона  :kolobok_wink:
Рад, что ты нашла себя в негаснущей механике игры!  :acute_mini:
Береги ноги свои и админа!  :kolobok_biggrin:

  • 0

#13 Natt

Natt

    Рейдер

  • Пользователь
  • 401 posts
  • Вселенная:WoA
  • Альянс:Камелот

Posted 04 June 2025 - 16:00

Nemesis220, on 03 Jun 2025 - 20:32, said:

Ты как кара, пытаешься что то доказать, не понимая, что доказательства совсем звучат не убедительно. Как ребенок, который врет' и думает что он всех обманул, не понимая, что ложь звучит максимально глупо. Я порой думаю, что ты и кара одно лицо. Так же подлизываете админу.

 

Упаси Бог. Какие оправдания? Просто объяснила человеку как это можно делать.

Раз он за несколько лет регистрации в игре этого еще не знает.

И кто он такой чтоб перед ним оправдываться?

А оправдываться перед Админом нет смысла, у него есть все логи.)))


  • 0

#14 Bezobrazniy

Bezobrazniy

    Гуру

  • Пользователь
  • 163 posts
  • ГородНе Рио
  • Вселенная:RU, RU
  • Альянс:☠КØРСАРЫ☠
  • Тип игры:Атакер

Posted 05 June 2025 - 13:29

Натаха, смотрю снова ноги мокрые у кого то  :kolobok_lol:  

Как ты так умудряешься? У других все ок.


  • 0