// ==UserScript==
// @name Infozentrale
// @namespace http://userscripts.org/scripts/show/74435
// @author sageo[http://berlin.pennergame.de/profil/id:1146285/]; PG reloaded design von lefty1981
// @description Infozentrale mit Anzeige von Kampf- und Bandenkampfwarnungen, aktuellem Plunder, Wutstatus sowie Kampfstärkebewertung (HH, B, M, K, Malle und Vatikan PG-Version 4.0)
// @include http*pennergame.de/overview/
// @include http*pennergame.de/skills/*
// @include http*pennergame.de/stock/
// @include http*pennergame.de/news/
// @include http*pennergame.de/friendlist/
// @include http*pennergame.de/change_please/statistics/*
// @include http*pennergame.de/stock/*
// @include http*pennergame.de/profil/*
// @include http*pennergame.de/fight/*
// @include http*pennergame.de/gang/*
// @include http*pennergame.de/messages/*
// @include http*pennergame.de/city/*
// @include http*pennergame.de/activities/*
// @include http*pennergame.de/daily/*
// @include http*pennergame.de/pet/*
// @include http*pennergame.de/enemies/*
// @include http://*.bumrise.com/overview/
// @include http://*.bumrise.com/skills/*
// @include http://*.bumrise.com/stock/
// @include http://*.bumrise.com/news/
// @include http://*.bumrise.com/friendlist/
// @include http://*.bumrise.com/change_please/statistics/*
// @include http://*.bumrise.com/stock/*
// @include http://*.bumrise.com/profil/*
// @include http://*.bumrise.com/fight/*
// @include http://*.bumrise.com/gang/*
// @include http://*.bumrise.com/messages/*
// @include http://*.bumrise.com/city/*
// @include http://*.bumrise.com/activities/*
// @include http://*.bumrise.com/daily/*
// @include http://*.menelgame.pl/overview/
// @include http://*.menelgame.pl/skills/*
// @include http://*.menelgame.pl/stock/
// @include http://*.menelgame.pl/news/
// @include http://*.menelgame.pl/friendlist/
// @include http://*.menelgame.pl/change_please/statistics/*
// @include http://*.menelgame.pl/stock/*
// @include http://*.menelgame.pl/profil/*
// @include http://*.menelgame.pl/fight/*
// @include http://*.menelgame.pl/gang/*
// @include http://*.menelgame.pl/messages/*
// @include http://*.menelgame.pl/city/*
// @include http://*.menelgame.pl/activities/*
// @include http://*.menelgame.pl/daily/*
// @include http://*.clodogame.fr/overview/
// @include http://*.clodogame.fr/skills/*
// @include http://*.clodogame.fr/stock/
// @include http://*.clodogame.fr/news/
// @include http://*.clodogame.fr/friendlist/
// @include http://*.clodogame.fr/change_please/statistics/*
// @include http://*.clodogame.fr/stock/*
// @include http://*.clodogame.fr/profil/*
// @include http://*.clodogame.fr/fight/*
// @include http://*.clodogame.fr/gang/*
// @include http://*.clodogame.fr/messages/*
// @include http://*.clodogame.fr/city/*
// @include http://*.clodogame.fr/activities/*
// @include http://*.clodogame.fr/daily/*
// @include http://*.mendigogame.es/overview/
// @include http://*.mendigogame.es/skills/*
// @include http://*.mendigogame.es/stock/
// @include http://*.mendigogame.es/news/
// @include http://*.mendigogame.es/friendlist/
// @include http://*.mendigogame.es/change_please/statistics/*
// @include http://*.mendigogame.es/stock/*
// @include http://*.mendigogame.es/profil/*
// @include http://*.mendigogame.es/fight/*
// @include http://*.mendigogame.es/gang/*
// @include http://*.mendigogame.es/messages/*
// @include http://*.mendigogame.es/city/*
// @include http://*.mendigogame.es/activities/*
// @include http://*.mendigogame.es/daily/*
// @include http://*.mendigogame.com/overview/
// @include http://*.mendigogame.com/skills/*
// @include http://*.mendigogame.com/stock/
// @include http://*.mendigogame.com/news/
// @include http://*.mendigogame.com/friendlist/
// @include http://*.mendigogame.com/change_please/statistics/*
// @include http://*.mendigogame.com/stock/*
// @include http://*.mendigogame.com/profil/*
// @include http://*.mendigogame.com/fight/*
// @include http://*.mendigogame.com/gang/*
// @include http://*.mendigogame.com/messages/*
// @include http://*.mendigogame.com/city/*
// @include http://*.mendigogame.com/activities/*
// @include http://*.mendigogame.com/daily/*
// @include http://*.faveladogame.com/overview/
// @include http://*.faveladogame.com/skills/*
// @include http://*.faveladogame.com/stock/
// @include http://*.faveladogame.com/news/
// @include http://*.faveladogame.com/friendlist/
// @include http://*.faveladogame.com/change_please/statistics/*
// @include http://*.faveladogame.com/stock/*
// @include http://*.faveladogame.com/profil/*
// @include http://*.faveladogame.com/fight/*
// @include http://*.faveladogame.com/gang/*
// @include http://*.faveladogame.com/messages/*
// @include http://*.faveladogame.com/city/*
// @include http://*.faveladogame.com/activities/*
// @include http://*.faveladogame.com/daily/*
// @include http://*.bomzhuj.ru/overview/
// @include http://*.bomzhuj.ru/skills/*
// @include http://*.bomzhuj.ru/stock/
// @include http://*.bomzhuj.ru/news/
// @include http://*.bomzhuj.ru/friendlist/
// @include http://*.bomzhuj.ru/change_please/statistics/*
// @include http://*.bomzhuj.ru/stock/*
// @include http://*.bomzhuj.ru/profil/*
// @include http://*.bomzhuj.ru/fight/*
// @include http://*.bomzhuj.ru/gang/*
// @include http://*.bomzhuj.ru/messages/*
// @include http://*.bomzhuj.ru/city/*
// @include http://*.bomzhuj.ru/activities/*
// @include http://*.bomzhuj.ru/daily/*
// @include http://*.dossergame.co.uk/overview/
// @include http://*.dossergame.co.uk/skills/*
// @include http://*.dossergame.co.uk/stock/
// @include http://*.dossergame.co.uk/news/
// @include http://*.dossergame.co.uk/friendlist/
// @include http://*.dossergame.co.uk/change_please/statistics/*
// @include http://*.dossergame.co.uk/stock/*
// @include http://*.dossergame.co.uk/profil/*
// @include http://*.dossergame.co.uk/fight/*
// @include http://*.dossergame.co.uk/gang/*
// @include http://*.dossergame.co.uk/messages/*
// @include http://*.dossergame.co.uk/city/*
// @include http://*.dossergame.co.uk/activities/*
// @include http://*.dossergame.co.uk/daily/*
// @info CIC5CFC6B6BEBBC3D4EBAH@D@D@@D1E6E6@CAEAAE4A2AA@IE5ADAEE6@GAEABDFE6AFAIA3AE@CE6EBD2A4D4D@D2
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// @grant GM_addStyle
// @grant GM_deleteValue
// @grant GM_listValues
// @grant GM_log
// @grant GM_registerMenuCommand
// @grant GM_setClipboard
// @version 1.26.14 Probleme mit Bilderhoster behoben; diverse kleine Fehler korrigiert
// ==/UserScript==
// Daten über das aktuelle Skript für den Update-Mechanismus
var THISSCRIPTVERSION = GM_info.script.version.split(" ")[0];
var THISSCRIPTINSTALL_URLGF = "https://greasyfork.org/scripts/1050-infozentrale";
//
// @version 1.26.13 Fehler bei Kampfstärkewarnung behoben
// @version 1.26.12 Totalumbau der gehosteten Bilder
// @version 1.26.11 neuer Bilderhoster
// @version 1.26.10 Bilder erneuert und kleine Korrekturen
// @version 1.26.9 Umstellung auf https und kleine Korrekturen
// @version 1.26.8 Sortiermöglichkeiten bei Haustier erweitert
// @version 1.26.7 Performance verbessert; Tagesaufgaben für Atlantis korrigiert
// @version 1.26.6 Fehler bei Bastelfunktion behoben; Anzeige von Boostern/Verletzungen geändert
// @version 1.26.5 Bastelfunktion war defekt
// @version 1.26.4 Korrekturen Atlantis; Anzeige Missionsplunder in Stadtteilen/Gebieten
// @version 1.26.3 DEX-Stufe beim Basteln wurde nicht berücksichtigt
// @version 1.26.2 Plunder basteln mit einem Klick
// @version 1.26.1 Anpassungen Atlantis
// @version 1.25.13 Anzeige des fehlenden Plunders beim Basteln
// @version 1.25.12 Anzeige des im Inventar befindlichen Plunders bei Eigentumupgrades
// @version 1.25.11 ausgewählte Nachrichten als gelesen markieren
// @version 1.25.10 Promillesteuerung optimiert; Fehler bei Minijobs (VT) behoben
// @version 1.25.9 Korrektur Restzeit Plundershop
// @version 1.25.8 Korrektur Plundershop-Anzeige
// @version 1.25.7 Anpassungen für Athen
// @version 1.25.6 Umstellung Losekauf
// @version 1.25.5 Vorbereitung Athen; Umstellung Losekauf
// @version 1.25.4 Wert für Wut wurde nicht richtig erkannt
// @version 1.25.3 Anpassungen für neue Einteilung Eventplunder
// @version 1.25.2 Korrektur Wutwert und Updatemechanismus
// @version 1.25.1 Anpassungen an das neue Profil-Design
// @version 1.24.3 Plunder benutzen funktionierte nicht mehr
// @version 1.24.2 Korrekturen zur Umstellung auf 3. Slot und Poweranzeige im Vatikan korrigiert
// @version 1.24.1 Umstellung auf 3. Slot
// @version 1.23.14 Fehler bei Haustieranzeige behoben; Plunder mit "+" wurde nicht als vorhanden erkannt
// @version 1.23.13 Haustieranzeige bei Rückkehr geändert: die erhaltene Erfahrung wird berücksichtigt
// @version 1.23.12 noch einmal Korrektur Adventskalender
// @version 1.23.11 Korrekturen bei Waffenkontrolle und Adventskalender; keine Funktion bei Sitting-Modus
// @version 1.23.10 Korrektur bei Erinnerung an Adventskalender/Wechsel zum Supermarkt bei zuwenig Essen/Getränke
// @version 1.23.9 Korrektur bei Erinnerung an Adventskalender
// @version 1.23.8 Erinnerung an Adventskalender aktualisiert
// @version 1.23.7 Fehler bei Jobanzeige behoben
// @version 1.23.6 Fehler bei Plundershopanzeige behoben
// @version 1.23.5 Losekauf für Vatikan korrigiert
// @version 1.23.4 Tagesaufgaben für Vatikan angepasst
// @version 1.23.3 Fehler bei Weiterbildungsende behoben
// @version 1.23.2 Probleme mit Tagesaufgabe behoben
// @version 1.23.1 erste Version für Vatikan
// @version 1.22.9 Wechsel des Bilderhosters
// @version 1.22.8 Fehler bei Update behoben
// @version 1.22.7 weitere Anpassung an Änderung beim Benutzen von Plunder
// @version 1.22.6 Anpassung an Änderung beim Benutzen von Plunder
// @version 1.22.5 Hotfix wegen neuer GM-Version
// @version 1.22.4 Skript lief in München nicht mehr
// @version 1.22.3 Problem mit verschobenen Zählern behoben
// @version 1.22.2 Meldungen für Job-Ede und neuen Plunder abschaltbar gemacht; Image-Server entfernt
// @version 1.22.1 Wechsel auf greasyfork.org
// @version 1.21.4 Plunderauswahl funktionierte nicht mehr
// @version 1.21.3 Probleme mit Plunderanzeige behoben
// @version 1.21.2 Bilder auf 3 Hoster verteilt
// @version 1.21.1 Bilder umgezogen
// @version 1.20.3 Problem bei Plunderauswahl behoben
// @version 1.20.2 Neue Tagesaufgabe; Fehler beim Essen behoben
// @version 1.20.1 Anpassungen wegen Pennerzepter
// @version 1.19.30 Anpassungen für Adventskalender 2013
// @version 1.19.29 Zeitanzeige bei Haustieren optimiert
// @version 1.19.28 Fehler bei Flaschensammelstatus und Zeitanzeige bei Haustier behoben
// @version 1.19.27 Zeitberechnung bei Haustier erweitert; Info bei startbarer Mission
// @version 1.19.26 Korrekturen bei Plunderauswahl und -beschreibungen
// @version 1.19.25 Anpassungen wegen geänderter Haustieranzeige auf Übersicht
// @version 1.19.24 Anpassungen wegen Umbenennung Haustier in Begleiter
// @version 1.19.23 Korrektur Verbrechensanzeige
// @version 1.19.22 Korrektur der Anpassungen wegen PG-Update
// @version 1.19.21 einige Anpassungen wegen PG-Update
// @version 1.19.20 und wieder zurück zu imagebanana
// @version 1.19.19 Fehler bei Bildern behoben; erste Bilder auf neuen Server umgezogen
// @version 1.19.18 Skriptfehler, wenn kein Plunder angelegt war
// @version 1.19.17 winziger Fehler bei Haustierzeitberechnung behoben
// @version 1.19.16 Anzeige Plundertexte in Leisten; Zeitberechnung beim Streunen beachtet Booster
// @version 1.19.15 Schaufel und Tritt funktionierten nicht in Plunderleiste
// @version 1.19.14 Warnung bei zu geringem Kampfwert bei Kämpfen abschaltbar
// @version 1.19.13 Logout-Funktion korrigiert; Kaufen von Losen erweitert
// @version 1.19.12 Restzeitanzeige bei Haustier als Tooltip
// @version 1.19.11 Trinkfunktion verbessert
// @version 1.19.10 Anpassungen für Malle
// @version 1.19.9 kleine Anpassungen
// @version 1.19.8 Restzeitanzeige fehlerhaft, wenn freie Punkte vorhanden waren
// @version 1.19.7 Restzeitanzeige bei Haustieren korrigiert
// @version 1.19.6 Missionsname war falsch; Panels ließen sich nicht verschieben; Restzeit bei Haustieren
// @version 1.19.5 neue Logout-Funktion; kleine Fehler korrigiert; Zeitanzeige bei Missionen geändert
// @version 1.19.4 ATT/DEF/JOB-Panel liess sich nicht verschieben
// @version 1.19.3 Korrekturen Haustier und Minijobs
// @version 1.19.2 Plunderbenutzung repariert
// @version 1.19.1 Skriptreparatur nach Totalausfall; Promillefunktion repariert
// @version 1.18.3 kleinere Korrekturen
// @version 1.18.2 Heilfunktion (Sylt) korrigiert
// @version 1.18.1 Bilder auf anderen Hoster verschoben
// @version 1.17.9 Bilderadresse angepasst, da Bilder nicht angezeigt wurden
// @version 1.17.8 Haustieranzeige auch in den alten Städten
// @version 1.17.7 Korrekturen wegen Stadtfeind
// @version 1.17.6 Update-Automatik funktionierte nicht
// @version 1.17.5 Lebensanzeige erweitert (Sylt); Logout-Problem beseitigt
// @version 1.17.4 In Sylt Waschanzeige zu Lebensanzeige umfunktioniert
// @version 1.17.3 Updateverfahren angepasst; Korrektur Plunderbenutzung
// @version 1.17.2 Anpassungen für Adventskalender
// @version 1.17.1 Version für FF 17; Anzeige für Haustierweiterbildung zu Streuneranzeige umgebaut (Sylt)
// @version 1.16.1 Erste Anpassungen für Sylt
// @version 1.15.5 Mehrfachplunder in Chrome funktionierte nicht
// @version 1.15.4 Berechnung des Punktverlustes beim Ausweichen eines Kampfes angepasst
// @version 1.15.3 Zuckerschock mehrfach benutzbar
// @version 1.15.2 Provokationsplunder über Plunderleiste
// @version 1.15.1 Anpassung an Spiel Stadtfeind Nr. 1
// @version 1.14.6 Tagesaufgabe angepasst
// @version 1.14.5 Endlosschleife auf Bandenseite beseitigt
// @version 1.14.4 Pins in Shoutbox waren falsch (wegen Penner Ahoi!)
// @version 1.14.3 Testausgabe entfernt (Sorry !!)
// @version 1.14.2 Name des Penners wurde falsch ermittelt
// @version 1.14.1 Anpassungen für Penner Ahoi!
// @version 1.13.10 Direktplunderliste erweitert
// @version 1.13.9 Fehler behoben: keine Anzeige auf Bandenseite
// @version 1.13.8 noch einmal MotD und SB: schmal, aber optional breit
// @version 1.13.7 MotD wieder schmal
// @version 1.13.6 MotD verbreitert
// @version 1.13.5 Plunder aus Plunderleiste mehrfach benutzbar
// @version 1.13.4 Missionsbox abschaltbar; Verschiebefunktion der Boxen repariert
// @version 1.13.3 Fehler bei einmaligen Missionen behoben
// @version 1.13.2 Anzeige von Bandenboost und Missionsstatus
// @version 1.13.1 eintreffende Kämpfe und Bandenkämpfe werden wieder angezeigt
// @version 1.12.11 Verletzungen werden angezeigt; Plundershop repariert; kleinere Fehler behoben
// @version 1.12.10 Anzahl bei benutzbarem Plunder fehlerhaft
// @version 1.12.9 Plunderprobleme behoben
// @version 1.12.8 Korrektur wegen Pennersturm (2. Versuch)
// @version 1.12.7 Korrektur wegen Pennersturm
// @version 1.12.6 Erweiterung Pennersturm (Teil 2)
// @version 1.12.5 Erweiterung Pennersturm (Teil 1)
// @version 1.12.4 optionales Deaktivieren und Entfernen von KK-Mails
// @version 1.12.3 V-Waffe optional ohne Nachfrage erwerben
// @version 1.12.2 Tooltip für eingehende Kämpfe überarbeitet; neue Tagesaufgaben
// @version 1.12.1 Version läuft unter Chrome; neue Tagesaufgaben; Erinnerung an V-Waffe
// @version 1.11.14 Neue Funktion: Lose kaufen
// @version 1.11.13 Adventskalender erst öffnen, wenn möglich
// @version 1.11.12 Löschbutton für Kampfliste; Adventskalender
// @version 1.11.11 Anzeige von Wut oder Wiwu oder Bande
// @version 1.11.10 Landesflaggen wurden nicht angezeigt; bei Wut: Ende statt Dauer anzeigen
// @version 1.11.9 Essen funktionierte nicht in Moskau
// @version 1.11.8 Skript lief nicht mehr nach letztem Update
// @version 1.11.7 Korrektur Zeitzone Moskau; Korrektur Wutwert ATT
// @version 1.11.6 Versuch, die Poweranzeige zu korrigieren; St. Petersburg durch Moskau ersetzt
// @version 1.11.5 Klingelevent verursachte falsche Anzeige bei Verbrechen
// @version 1.11.4 Seitenverweis auf gemerkten SB-Eintrag funktionierte nicht; Tagesaufgabe Haustierkampf angepasst
// @version 1.11.3 Problem mit Plunder behoben; Profilavatar anzeigen
// @version 1.11.2 Problem mit neuem Plunder behoben; bitte Noagerl noch nicht über Plunderleiste benutzen !!
// @version 1.11.1 Version 1 nach dem neuen PG-Patch
// @version 1.10.10 Shoutbox repariert und kleine Korrekturen
// @version 1.10.9 kleinere Korrekturen
// @version 1.10.8 Plunderauswahl korrigiert
// @version 1.10.7 Plunderauswahl und Shoutbox korrigiert
// @version 1.10.6 Skript lief nicht mehr
// @version 1.10.5 Problem mit Alkoholplunder behoben; Werbung kann ausgeblendet werden
// @version 1.10.4 Grafiken auf mehrere Accts verteilt
// @version 1.10.3 noch ein paar kleine Fehler behoben
// @version 1.10.2 Grafikadressen korrigiert
// @version 1.10.1 Server für Grafiken gewechselt; Cursorsteuerung korrigiert; viele kleine Fehler behoben
// @version 1.9.5 Anpassungen an Patch Teil 4 (Goldenes Bier/Promille rauf funktioniert wieder)
// @version 1.9.4 Anpassungen an Patch Teil 3 (Plunderleiste sollte wieder ganz funktionieren)
// @version 1.9.3 Anpassungen an Patch Teil 2 (Plunderleiste funktioniert teilweise wieder)
// @version 1.9.2 Anpassungen an Patch Teil 1
// @version 1.9.1 Ess- und Trinkhandler geändert: Tagesaufgabe wird berücksichtigt; Variablen vereinheitlicht; Glühwürmchen-Effekt abgeschaltet
// @version 1.8.29 Probleme mit Glühwürmchen in SB behoben
// @version 1.8.28 Essen korrigiert für Hamburg reloaded
// @version 1.8.27 Anpassungen für Hamburg reloaded
// @version 1.8.26 neues Panel-Design für PG reloaded (Vielen Dank an lefty1981)
// @version 1.8.25 Plundershop lief nicht in FF 3.x
// @version 1.8.24 Aktualisierung der Plundershop-Wartezeit
// @version 1.8.23 Fehler mit Bündnis-SB behoben
// @version 1.8.22 Neue Leiste in PG reloaded für Plundershop
// @version 1.8.21 Verwendung von Goldenem Bier in PG reloaded korrigiert
// @version 1.8.20 SB-Pin und Benutzung von Boosts in PG reloaded korrigiert
// @version 1.8.19 Normales Trinken in PG reloaded funktionierte nicht mehr
// @version 1.8.18 nochmal Korrektur von AlkoPlunder in altem PG
// @version 1.8.17 AlkoPlunder in altem PG funktionierte nicht mehr
// @version 1.8.16 kleiner Fehler bei Promille rauf in PG reloaded behoben
// @version 1.8.15 bei PG reloaded wird Goldenes Bier zum Betrinken berücksichtigt
// @version 1.8.14 Fehler bei Plunderanzeige PG reloaded behoben
// @version 1.8.13 Abfrage bei Benutzung des Goldenen Biers bei PG reloaded entfernt
// @version 1.8.12 Anzeige aller 4 Plunder bei PG reloaded
// @version 1.8.11 noch ein Problem mit DEF-Booster behoben
// @version 1.8.10 Probleme mit DEF-Booster behoben
// @version 1.8.9 Probleme mit Plunderwechsel und WiWu/Wutanzeige behoben
// @version 1.8.8 Benutzen von Plunder in PG reloaded korrigiert
// @version 1.8.7 Probleme mit Plunderwechsel behoben (falscher Plunder wird angelegt)
// @version 1.8.6 Erweiterungen für PG reloaded komplett; läuft jetzt auch unter Firefox 4
// @version 1.8.5 Fehler behoben: Skript funktionierte nur noch, wenn Penner in einer Bande war
// @version 1.8.4 Erweiterungen für PG reloaded
// @version 1.8.3 läuft jetzt auch in Köln (1. Version)
// @version 1.8.2 Update-Verfahren verbessert; Überspringen der Logout-Seite
// @version 1.8.1 Anpassungen für Russland, Sao Paolo und London; Sprachumschaltung; neuer Update-Mechanismus
// @version 1.7.19 2. Version Buenos Aires: Essen und Trinken korrigiert
// @version 1.7.18 kleinere Korrekturen; 1. Version Buenos Aires
// @version 1.7.17 Anzeige des vorhandenen Schnees für Schneemann war falsch
// @version 1.7.16 Logout funktionierte nicht richtig
// @version 1.7.15 Nochmal Korrekturversuch für Probleme mit dem Skript; Abbruchmöglichkeit bei Logout
// @version 1.7.14 Quickfix; hoffe, es geht wieder alles
// @version 1.7.13 falsche Stückzahl bei benutzbarem Plunder; Warnung bei Logout; Rückkehr in die richtige Stadt nach Logout
// @version 1.7.12 Pinnen eines Eintrags in der SB; i-Symbole beim Essen/Trinken und Flaschensammeln verschoben
// @version 1.7.11 Anzeige des Gegners bei Angriff; Entfernen von nicht mehr vorhandenem Plunder aus der Plunderleiste
// @version 1.7.10 Anzeige/Umschaltbutton für Meldungen; Anzeige des vorhandenen Plunders bei Event-Plunder
// @version 1.7.9 kleinere Korrekturen; Erweiterung der Flaschensammelschaltfläche
// @version 1.7.8 Probleme mit anderen Skripts behoben, Anpassungen für Halloween
// @version 1.7.7 kleinere Korrekturen, Anpassungen für Halloween
// @version 1.7.6 Anpassungen für Halloween
// @version 1.7.5 Erweiterungen für Halloween hinzugefügt
// @version 1.7.4 Sammelmarkenanzeige führt jetzt auch zur Tagesaufgabe, solange noch nicht erledigt
// @version 1.7.3 Art und Stufe der Weiterbildung werden angezeigt
// @version 1.7.2 Leiste mit Tagesaufgabe war nicht mehr abschaltbar
// @version 1.7.1 neue Leiste: Weiterbildung, Sammelmarken und Einkaufswagen
// @version 1.6.9 Verriegelung der Leisten; Sauberkeitsanzeige unter Waschbutton
// @version 1.6.8 kleiner Fehler bei bumrise behoben; 2. Version der Anzeige der täglichen Aufgabe
// @version 1.6.7 kleiner Fehler bei bumrise behoben; 1. Version der Anzeige der täglichen Aufgabe
// @version 1.6.6 kleinen Fehler beim Def-Waffe-Icon behoben
// @version 1.6.5 Kampf-, Bandenkampf und Def-Waffe sind auch anklickbar, wenn sie leer sind
// @version 1.6.4 Leisten können beliebig platziert werden
// @version 1.6.3 Problem mit dem Geld in Marseille behoben
// @version 1.6.2 erste (noch nicht vollständige Version) für Warschau und Krakau; zusätzliche Infos über ATT/DEF-Verstärkung und V-Waffe
// @version 1.6.1 erste (noch nicht vollständige Version) für NY und Madrid; kleinere Fehler behoben
// @version 1.5.9 zum Betrinken wird der Plunder genommen, der als erstes in der Plunderliste steht, ansonsten wie bisher
// @version 1.5.8 es wurden 6 und nicht 5 Trikots angezeigt; Hinweis, wenn man wegen Bandeneintritt nicht von Bandenfähigkeit profitiert
// @version 1.5.7 Anzeige für Neue Nachrichten verschoben; Mehrfachinstallation von Skript verhindert; ACHTUNG: Es sind einmalig alle Einstellungen für dieses Skript neu zu setzen !!!
// @version 1.5.6 Anzeige der gefundenen Trikots verbessert und abschaltbar gemacht
// @version 1.5.5 Anzeige der gefundenen Trikots
// @version 1.5.4 Falsche Anzahl von eingehenden Angriffen wurde angezeigt
// @version 1.5.3 Ende von WiWu bzw. Wut wurde nicht mehr angezeigt
// @version 1.5.2 Fehler bei Sortierung der eingehenden Angriffe behoben
// @version 1.5.1 kleinere Fehler behoben; Beta für Anzeige der eingehenden Angriffe; Hinweis im Power-Tooltip auf bessere Waffe/Eigenheim/Plunder
// @version 1.4.8 kleiner Fehler behoben: Anzeige von Wutentfachung im Text auch bei WiWu
// @version 1.4.7 Fehler bei Kampfstärkeermittlung bei Wut behoben;
// Auch WiWu wird jetzt erkannt und angezeigt;
// Ende von WiWu bzw. Wut wird angezeigt;
// Hochsetzen des Promillewertes unter Verwendung von Plunder
// @version 1.4.6 Problem mit Umlauten behoben (hoffentlich alle)
// @version 1.4.5 Fehler in Kommentaren behoben
// @version 1.4.4 Essen für Promilleabbau korrigiert; Alphaversion für Anzeige der eingehenden Angriffe
// @version 1.4.3 Beim Waschen wird der Schwamm benutzt, wenn es günstiger ist
// @version 1.4.2 Bugfix für Essen in München; Änderung der Formel für Kampfstärke
// @version 1.4.1 Weitere Anpassungen für München und Verbesserung bei der Essensauswahl
// @version 1.3.8 Einige Anpassungen für München
// @version 1.3.7 Aktueller Plunder wird jetzt immer frisch ermittelt; Bereich auf tägliche Aufgaben erweitert
// @version 1.3.6 tinypic.com scheint ein Problem zu haben, Grafikhoster gewechselt
// @version 1.3.5 Fehler beim Benutzen von Stärkeplunder (Wut- und Poweranzeige funktionierten unter Umständen nicht mehr) behoben
// @version 1.3.4 Erneute Anpassung Wut-Berechnung nach erneuter Änderung durch Farbflut *koppschüttel*; Aktualisierungsabfrage alle 2 Stunden
// @version 1.3.3 Anpassung Wut-Berechnung nach Änderung durch Farbflut; weitere Probleme bei Max-Berechnung korrigiert; Schnellwaschen, -trinken und essen (BETA)
// @version 1.3.2 Benutzbarer Plunder wählbar (mit Sicherheitsabfrage); allg. Verbesserungen, kleinere Dateigrößen; Fehler bei Wuterkennung korrigiert
// @version 1.3.1 Plunderstücke für Direktzugriff auswählbar
// @version 1.3.0 Plunder-Direktzugriff
// @version 1.2.3 Manuelles Zurücksetzen des maximalen Power-Wertes durch Anklicken der Grafik
// @version 1.2.2 Berücksichtigung nicht abrufbarbarer Seiten (Bug Power-Anzeige)
// @version 1.2.1 Bugfixes (Wut/Kampfstärkeberechnung, mehrere Penner)
// @version 1.2.0 Plunderanzeige; Kampfstärkebewertung; Wutanzeige; Ergebnisänderung bei Bandenkämpfen
// @version 1.1.3 Fehlerbehandlung nicht verfügbarer HS + Bandenkampfergebnis im Tooltip
// @version 1.1.2 Erweiterung Links auf Bandenkampfgegner + Zählung Bandenkämpfe
// @version 1.1.1 Erweiterung um Bandenkämpfe
// @version $Id: infozentrale.user.js 210 2021-04-26 13:48:35Z mkl $
if (!String.prototype.endsWith)
String.prototype.endsWith = function(str) {
return (this.substr(this, -str.length) == str);
};
if (!String.prototype.insert)
String.prototype.insert = function(str, idx) {
return this.substr(0, (idx<0?this.length:0) + idx) + str + this.substr(idx);
};
var dt = document.implementation.createDocumentType("html", "-//W3C//DTD HTML 4.01 Transitional//EN", "http://www.w3.org/TR/html4/loose.dtd");
var dom = document.implementation.createDocument(null, null, dt);
// PG-Version ermitteln
var m;
var oldVersion=m=1;
var nrOfTabs = 3;
var m_ownusername = "Mr.X";
var iconVers;
var imagehoster;
var imgPrefix;
var iconNames;
var allIcons;
var NrOfCalls = GM_getValue("NrOfCalls", 0) % 10000000000 + 1;
GM_setValue("NrOfCalls", NrOfCalls);
var info = "info";
if (oldV()) {
oldVersion = 0;
if (document.getElementsByClassName('zleft profile-data')[0].getElementsByClassName("user_name").length > 0)
m_ownusername = document.getElementsByClassName('zleft profile-data')[0].getElementsByClassName("user_name")[0].innerHTML;
else
m_ownusername = document.getElementsByClassName('zleft profile-data')[0].getElementsByTagName("a")[0].getElementsByTagName("span")[0].innerHTML;
}
var INFO_URL = "";
if (GM_getValue("noFirefly", 1) == 1) {
var unFire=function() {
var firefly = document.getElementsByClassName('chestplunder_effect_60');
for (var i = 0; i < firefly.length; i++)
firefly[i].className = "";
window.setTimeout(unFire, (i>0)?2000:10000);
}
if (document.getElementsByClassName('chestplunder_effect_60').length > 0)
window.setTimeout(unFire, 2000);
}
function getLangTxt(TxtArray) {
var text = TxtArray[myLang];
if (text == undefined) {
text = TxtArray[1];
if (text == undefined)
text = TxtArray[0];
}
return(text);
}
function xor(a, b){return a==""?a:String.fromCharCode(b^a.charCodeAt(0)) + xor(a.substr(1),b);}
function j(c){return c==""?c:"U"+c.slice(0,2)+j(c.slice(2))};
function k(c){return trimString(GM_info.scriptMetaStr.split("// @"+c)[1].split("\n")[0])};
var wrap = document.getElementById("wrap");
var myLang = 0;
var logoutWarn = -1;
var promille = GetPromille(document);
var m_ownpoints = GetPunkte(document);
var myprof = document.getElementById("my-profile-new");
if (!myprof)
myprof = document.getElementById("my-profile");
if (myprof.getElementsByTagName("form").length > 0) {
function checkLogout(tries, str) {
GM_xmlhttpRequest({method: 'GET', url: OVERVIEW_URL, onload: function(responseDetails) {
var content = responseDetails.responseText;
// Wenn die Seite abgerufen werden konnte
if (content.indexOf(KEYWORD_MYBUM[lang]) != -1)
doLogout(tries+1, str);
else {
location.href = OVERVIEW_URL;
// if (tries > 1)
// alert("Logouts: " + tries);
}
}
});
}
function doLogout(tries, str) {
if (str == "")
GM_xmlhttpRequest({
method:"GET",
url:TOWNBASE_URL+"logout/",
onload: function(responseDetails) {
checkLogout(tries, str);
}
});
else
GM_xmlhttpRequest({
method:"POST",
url:TOWNBASE_URL + "logout/",
headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI(str),
onload: function(responseDetails) {
checkLogout(tries, str);
}
});
}
myprof.getElementsByTagName("form")[0].onsubmit = function(event) {
if (promille >= 0.8)
logoutWarn = 1;
var warn = "";
if (logoutWarn == 1)
warn = getLangTxt(TxtLogoutWarn1);
else if (logoutWarn == 2)
warn = getLangTxt(TxtLogoutWarn2);
var logout = true;
if (warn != "")
logout = confirm(warn + " " + getLangTxt(TxtLogout));
if (logout)
{
var input = myprof.getElementsByTagName("input");
var logoutPar = "";
if (input.length > 1)
logoutPar = input[0].name + "=" + input[0].value;
doLogout(1, logoutPar);
}
return false;
}
}
// Schreiben einer Variablen
function PG_setValue(varname, value) {
GM_setValue(TOWNEXTENSION + varname, value);
}
// Holen einer Variablen
function PG_getValue(varname, deflt) {
return GM_getValue(TOWNEXTENSION + varname, deflt);
}
// Holen einer Variablen mit User-Id
function PGu_getValue(varname, deflt) {
return PG_getValue(varname + m_ownuserid, deflt);
}
// Setzen einer Variablen mit User-Id
function PGu_setValue(varname, value) {
PG_setValue(varname + m_ownuserid, value);
}
// Name PG Warnicon zum Zählen der Angriffe
var ICON_WARNING = 'warning.gif'; // PG-Warnicon
// Größe des Kampf- und Bandenkampficons in Pixeln
var ICON_WIDTH = '35';
// Konstanten für Wut-Zustand
var WUTSTATE_ACTIVE = 0;
var WUTSTATE_INACTIVE = 1;
var WUTSTATE_ERROR = 2;
// Konstanten für Fightstate-Zustand
var FIGHTSTATE_OK = 0;
var FIGHTSTATE_WEAK = 1;
var FIGHTSTATE_DANG = 3;
var FIGHTSTATE_ERROR = 2;
// IDs zum Zugriff auf Nahrungsmittel
var ID_BEER = 1;
var ID_BREAD = 2;
var ID_CURRY = 3;
var ID_DOENER = 4;
var ID_WODKA = 7;
var ID_GRUSEL = 8;
var ID_SWEETS = 9;
var ID_GLUEHW = 10;
var ID_STOLLN = 11;
// URL für Anwenden des Plunders
var PLUNDERIMAGE_URL = new Array();
PLUNDERIMAGE_URL[0] = "//static.pennergame.de/img/pv4/plunder_new/old/";
PLUNDERIMAGE_URL[1] = "//static.pennergame.de/img/pv4/plunder_new/";
PLUNDERIMAGE_URL[2] = "//static.pennergame.de/img/pv4/plunder/";
PLUNDERIMAGE_URL[3] = "//static2.pennergame.de/img/pv4/plunder_new/";
// Diverse Texte - Ausgabe
var THISSCRIPTNAME = new Array;
THISSCRIPTNAME[0] = "Infozentrale";
THISSCRIPTNAME[1] = "info central";
THISSCRIPTNAME[2] = "info central";
THISSCRIPTNAME[3] = "info central";
THISSCRIPTNAME[4] = "info central";
THISSCRIPTNAME[5] = "info central";
THISSCRIPTNAME[6] = "Информационный центр";
THISSCRIPTNAME[7] = "info central";
var TOOLTIP_PLUNDERAUSWAHL = new Array();
TOOLTIP_PLUNDERAUSWAHL[0] = 'Hier klicken, um weitere Plunderstücke für den Direktzugriff auszuwählen. Die Anzeige im Plunder-Direktzugriff erfolgt in der Reihenfolge des Hinzufügens.';
TOOLTIP_PLUNDERAUSWAHL[1] = 'Click here to choose further junk for the direct access list. The order in the display is given by the order of adding to the list.';
TOOLTIP_PLUNDERAUSWAHL[6] = 'Кликни здесь, чтобы добавить барахло. Последовательность выставления барахла зависит от последовательности кликов.';
var TOOLTIP_PLUNDERRESET = new Array();
TOOLTIP_PLUNDERRESET[0] = 'Hier klicken, um die Plunder-Direktzugriffsliste zu leeren.';
TOOLTIP_PLUNDERRESET[1] = 'Click here to clear the direct access list of the junk.';
TOOLTIP_PLUNDERRESET[2] = 'Click here to clear the direct access list of the junk.';
TOOLTIP_PLUNDERRESET[3] = 'Click here to clear the direct access list of the junk.';
TOOLTIP_PLUNDERRESET[4] = 'Click here to clear the direct access list of the junk.';
TOOLTIP_PLUNDERRESET[5] = 'Click here to clear the direct access list of the junk.';
TOOLTIP_PLUNDERRESET[6] = 'Кликни здесь, чтобы удалить все барахло.';
TOOLTIP_PLUNDERRESET[7] = 'Click here to clear the direct access list of the junk.';
var TOOLTIP_FIGHTOK = new Array();
TOOLTIP_FIGHTOK[0] = 'Deine aktuelle Kampfstärke ist optimal (%d)! Anklicken --> RESET des Power-Wertes.';
TOOLTIP_FIGHTOK[1] = 'Your fighting power is optimal (%d)! Click --> RESET the power-value.';
TOOLTIP_FIGHTOK[6] = 'Твоя сила оптимальна (%d)! Кликни, чтобы актуализировать твою силу.';
var TOOLTIP_FIGHTWEAK = new Array();
TOOLTIP_FIGHTWEAK[0] = 'Achtung, Du hast derzeit nicht Deine maximale Kampfstärke (%d/%d)! Anklicken --> RESET des Power-Wertes.';
TOOLTIP_FIGHTWEAK[1] = "Attention, you don't have your maximal fighting power (%d/%d)! Click --> RESET the power-value.";
TOOLTIP_FIGHTWEAK[6] = "Внимание, у тебя сейчас не максимальная сила (%d/%d)! Кликни, чтобы актуализировать твою силу.";
var TOOLTIP_FIGHTDANG = new Array();
TOOLTIP_FIGHTDANG[0] = "Achtung, Du schwebst in Lebensgefahr !";
TOOLTIP_FIGHTDANG[1] = "Your life hangs from a thread !";
TOOLTIP_FIGHTDANG[2] = "Znajdujesz się w niebezpieczeństwie !";
TOOLTIP_FIGHTDANG[3] = "Tu es en danger de mort !";
TOOLTIP_FIGHTDANG[4] = "¡Tu vida está en peligro!";
TOOLTIP_FIGHTDANG[5] = "Você está correndo risco de vida !";
TOOLTIP_FIGHTDANG[6] = "Ты в смертельной опасности !";
TOOLTIP_FIGHTDANG[7] = "Your life is in Danger !";
var TOOLTIP_LOADERROR = new Array();
TOOLTIP_LOADERROR[0] = 'Seitenladefehler!';
TOOLTIP_LOADERROR[1] = 'page loading error!';
TOOLTIP_LOADERROR[6] = 'Ошибка при запуске страницы!';
var TOOLTIP_WIWUTAKTIV = new Array();
TOOLTIP_WIWUTAKTIV[0] = ' ist aktiv! Ende: ';
TOOLTIP_WIWUTAKTIV[1] = ' is active! End: ';
TOOLTIP_WIWUTAKTIV[2] = ' jest aktywny! Zakończ: ';
TOOLTIP_WIWUTAKTIV[3] = ' is active! End: ';
TOOLTIP_WIWUTAKTIV[4] = ' is active! End: ';
TOOLTIP_WIWUTAKTIV[5] = ' is active! End: ';
TOOLTIP_WIWUTAKTIV[6] = ' активно! Окончание: ';
TOOLTIP_WIWUTAKTIV[7] = ' is active! End: ';
var TOOLTIP_WIWUTINAKTIV = new Array();
TOOLTIP_WIWUTINAKTIV[0] = ' derzeit NICHT aktiv!';
TOOLTIP_WIWUTINAKTIV[1] = ' NOT active at the moment!';
TOOLTIP_WIWUTINAKTIV[2] = ' NOT active at the moment!';
TOOLTIP_WIWUTINAKTIV[3] = ' NOT active at the moment!';
TOOLTIP_WIWUTINAKTIV[4] = ' NOT active at the moment!';
TOOLTIP_WIWUTINAKTIV[5] = ' NOT active at the moment!';
TOOLTIP_WIWUTINAKTIV[6] = ' сейчас неактивно!';
TOOLTIP_WIWUTINAKTIV[7] = ' NOT active at the moment!';
var TOOLTIP_LOCK = new Array();
TOOLTIP_LOCK[0] = 'Leistenbewegung wird nicht gespeichert!';
TOOLTIP_LOCK[1] = 'Movement of panels will not be stored!';
TOOLTIP_LOCK[2] = 'Movement of panels will not be stored!';
TOOLTIP_LOCK[3] = 'Movement of panels will not be stored!';
TOOLTIP_LOCK[4] = 'Movement of panels will not be stored!';
TOOLTIP_LOCK[5] = 'Movement of panels will not be stored!';
TOOLTIP_LOCK[6] = 'перемещение панели не сохраняется!';
TOOLTIP_LOCK[7] = 'Movement of panels will not be stored!';
var ALERT_PLUNDERRESET = new Array();
ALERT_PLUNDERRESET[0] = 'Die Plunder-Direktzugriffsliste wurde geleert!';
ALERT_PLUNDERRESET[1] = 'The direct access list for junk has been cleared!';
ALERT_PLUNDERRESET[2] = 'The direct access list for junk has been cleared!';
ALERT_PLUNDERRESET[3] = 'The direct access list for junk has been cleared!';
ALERT_PLUNDERRESET[4] = 'The direct access list for junk has been cleared!';
ALERT_PLUNDERRESET[5] = 'The direct access list for junk has been cleared!';
ALERT_PLUNDERRESET[6] = 'панель с барахлом очищена!';
ALERT_PLUNDERRESET[7] = 'The direct access list for junk has been cleared!';
var ALERT_RESETPOWER = new Array();
ALERT_RESETPOWER[0] = 'Der maximale Power-Wert wurde zurückgesetzt und wird jetzt neu ermittelt!';
ALERT_RESETPOWER[1] = 'The maximal power value has been reset and will be set new now!';
ALERT_RESETPOWER[2] = 'The maximal power value has been reset and will be set new now!';
ALERT_RESETPOWER[3] = 'The maximal power value has been reset and will be set new now!';
ALERT_RESETPOWER[4] = 'The maximal power value has been reset and will be set new now!';
ALERT_RESETPOWER[5] = 'The maximal power value has been reset and will be set new now!';
ALERT_RESETPOWER[6] = 'Максимальная сила сброшена и будет установлена заново!';
ALERT_RESETPOWER[7] = 'The maximal power value has been reset and will be set new now!';
var TxtNewVersion = new Array();
TxtNewVersion[0] = "Es gibt eine neue Version des Skriptes '%s':\n\n%s\n\nDie neue Version kann Fehlerbehebungen und/oder neue Funktionen beinhalten.\nHier gibt es weitere Infos über die neue Version:\n\n%s\n\nEine Aktualisierung ist empfehlenswert und kann direkt anschließend durchgeführt werden.\n\nHinweis: Die Überprüfung auf neue Versionen wird nur einmal pro Tag durchgeführt."
TxtNewVersion[1] = "There is a new version of the script '%s':\n\n%s\n\nThe new version can contain bugfixes and/or new features.\nHere you will find more information about the new version:\n\n%s\n\nAn update is recommended and can be done directly afterwards.\n\nNote: The check for new versions is only done once a day."
TxtNewVersion[2] = "There is a new version of the script '%s':\n\n%s\n\nThe new version can contain bugfixes and/or new features.\nHere you will find more information about the new version:\n\n%s\n\nAn update is recommended and can be done directly afterwards.\n\nNote: The check for new versions is only done once a day."
TxtNewVersion[3] = "There is a new version of the script '%s':\n\n%s\n\nThe new version can contain bugfixes and/or new features.\nHere you will find more information about the new version:\n\n%s\n\nAn update is recommended and can be done directly afterwards.\n\nNote: The check for new versions is only done once a day."
TxtNewVersion[4] = "There is a new version of the script '%s':\n\n%s\n\nThe new version can contain bugfixes and/or new features.\nHere you will find more information about the new version:\n\n%s\n\nAn update is recommended and can be done directly afterwards.\n\nNote: The check for new versions is only done once a day."
TxtNewVersion[5] = "There is a new version of the script '%s':\n\n%s\n\nThe new version can contain bugfixes and/or new features.\nHere you will find more information about the new version:\n\n%s\n\nAn update is recommended and can be done directly afterwards.\n\nNote: The check for new versions is only done once a day."
TxtNewVersion[6] = "Есть новая версия скрипта ‘%s’:\n\n%s\n\nВ новой версии могут быть улучшения или новые функции.\nЗдесь есть информации о скрипте:\n\n%s\n\nСоветуем инсталлировать.\n\nОпрос о новой версии только раз в день."
var TxtPlunderCheck = new Array();
TxtPlunderCheck[0] = 'Durch Anlegen des Plunders "%s" wäre Deine Kampfkraft am größten';
TxtPlunderCheck[1] = 'If you equip with the junk "%s" your fighting power will be highest';
TxtPlunderCheck[2] = 'If you equip with the junk "%s" your fighting power will be highest';
TxtPlunderCheck[3] = 'If you equip with the junk "%s" your fighting power will be highest';
TxtPlunderCheck[4] = 'If you equip with the junk "%s" your fighting power will be highest';
TxtPlunderCheck[5] = 'If you equip with the junk "%s" your fighting power will be highest';
TxtPlunderCheck[6] = 'Если сохранишь “%s” барахло, сила будет максимальной';
TxtPlunderCheck[7] = 'If you equip with the junk "%s" your fighting power will be highest';
var TxtWCheck1 = new Array();
TxtWCheck1[0] = 'Wenn Du die Waffe "%s" kaufst und '+(oldVersion?'anlegst':'benutzt')+', verbessert sich Dein ATT-Wert um %d';
TxtWCheck1[1] = 'If you buy and use the weapon "%s" your ATT-value will increase by %d';
TxtWCheck1[2] = 'If you buy and use the weapon "%s" your ATT-value will increase by %d';
TxtWCheck1[3] = 'If you buy and use the weapon "%s" your ATT-value will increase by %d';
TxtWCheck1[4] = 'If you buy and use the weapon "%s" your ATT-value will increase by %d';
TxtWCheck1[5] = 'If you buy and use the weapon "%s" your ATT-value will increase by %d';
TxtWCheck1[6] = 'Если купишь и применишь “%s” оружие, твой АТТ увеличится на %d';
TxtWCheck1[7] = 'If you buy and use the weapon "%s" your ATT-value will increase by %d';
var TxtWCheck2 = new Array();
TxtWCheck2[0] = 'Wenn Du die Waffe "%s" '+(oldVersion?'anlegst':'benutzt')+', verbessert sich Dein ATT-Wert um %d';
TxtWCheck2[1] = 'If you use the weapon "%s" your ATT-value will increase by %d';
TxtWCheck2[2] = 'If you use the weapon "%s" your ATT-value will increase by %d';
TxtWCheck2[3] = 'If you use the weapon "%s" your ATT-value will increase by %d';
TxtWCheck2[4] = 'If you use the weapon "%s" your ATT-value will increase by %d';
TxtWCheck2[5] = 'If you use the weapon "%s" your ATT-value will increase by %d';
TxtWCheck2[6] = 'Если применишь “%s” оружие, твой АТТ увеличится на %d';
TxtWCheck2[7] = 'If you use the weapon "%s" your ATT-value will increase by %d';
var TxtHomeCheck = new Array();
TxtHomeCheck[0] = 'Wenn Du %sdas Eigenheim "%s" %s, verbessert sich Dein DEF-Wert um %d';
TxtHomeCheck[1] = 'If you %s the home "%s" %syour DEF-Value will increase by %d';
TxtHomeCheck[2] = 'If you %s the home "%s" %syour DEF-Value will increase by %d';
TxtHomeCheck[3] = 'If you %s the home "%s" %syour DEF-Value will increase by %d';
TxtHomeCheck[4] = 'If you %s the home "%s" %syour DEF-Value will increase by %d';
TxtHomeCheck[5] = 'If you %s the home "%s" %syour DEF-Value will increase by %d';
TxtHomeCheck[6] = 'Если ты %s частный дом “%s”%s, твой DEF увеличится на %d';
TxtHomeCheck[7] = 'If you %s the home "%s" %syour DEF-Value will increase by %d';
var TxtHomeMovein1 = new Array();
TxtHomeMovein1[0] = "";
TxtHomeMovein1[1] = "go to";
TxtHomeMovein1[2] = "go to";
TxtHomeMovein1[3] = "go to";
TxtHomeMovein1[4] = "go to";
TxtHomeMovein1[5] = "go to";
TxtHomeMovein1[6] = "вселишься в";
TxtHomeMovein1[7] = "go to";
var TxtHomeMovein2 = new Array();
TxtHomeMovein2[0] = "beziehst";
TxtHomeMovein2[1] = "";
TxtHomeMovein2[2] = "";
TxtHomeMovein2[3] = "";
TxtHomeMovein2[4] = "";
TxtHomeMovein2[5] = "";
TxtHomeMovein2[6] = "";
TxtHomeMovein2[7] = "";
var TxtHomeBuy1 = new Array();
TxtHomeBuy1[0] = "";
TxtHomeBuy1[1] = "buy";
TxtHomeBuy1[2] = "buy";
TxtHomeBuy1[3] = "buy";
TxtHomeBuy1[4] = "buy";
TxtHomeBuy1[5] = "buy";
TxtHomeBuy1[6] = "купишь";
TxtHomeBuy1[7] = "buy";
var TxtHomeBuy2 = new Array();
TxtHomeBuy2[0] = "kaufst";
TxtHomeBuy2[1] = "";
TxtHomeBuy2[2] = "";
TxtHomeBuy2[3] = "";
TxtHomeBuy2[4] = "";
TxtHomeBuy2[5] = "";
TxtHomeBuy2[6] = "";
TxtHomeBuy2[7] = "";
var TxtBuy = new Array();
TxtBuy[0] = 'Kaufen';
TxtBuy[1] = 'Buy';
TxtBuy[2] = 'Kup';
TxtBuy[3] = 'Acheter';
TxtBuy[4] = 'Comprar';
TxtBuy[5] = 'Comprar';
TxtBuy[6] = 'Купить';
TxtBuy[7] = 'Buy';
var TxtBuyAll = new Array();
TxtBuyAll[0] = 'Alles kaufen';
TxtBuyAll[1] = 'Buy all';
TxtBuyAll[2] = 'Kup wszystko';
TxtBuyAll[3] = 'Acheter tous';
TxtBuyAll[4] = 'Comprar todo';
TxtBuyAll[5] = 'Comprar tudo';
TxtBuyAll[6] = 'Купить';
TxtBuyAll[7] = 'Buy all';
var TxtWaitSort = new Array();
TxtWaitSort[0] = 'warte %s - neue Ramschlieferung ist bereits unterwegs (%s)';
TxtWaitSort[1] = 'wait %s - new sortiment is on its way (%s)';
TxtWaitSort[2] = 'wait %s - new sortiment is on its way (%s)';
TxtWaitSort[3] = 'attend %s - la nouvelle livraison arrive bientôt';
TxtWaitSort[4] = 'espera %s - el nuevo pedido de cachivaches está en camino';
TxtWaitSort[5] = 'wait %s - new sortiment is on its way (%s)';
TxtWaitSort[6] = 'wait %s - new sortiment is on its way (%s)';
TxtWaitSort[7] = 'wait %s - new sortiment is on its way (%s)';
var TxtStreun = new Array();
TxtStreun[0] = 'Dein Haustier streunt noch %s - Endezeit: %s';
var TxtWash = new Array();
TxtWash[0] = 'Vollständig waschen';
TxtWash[1] = 'Wash completely';
TxtWash[2] = 'Wash completely';
TxtWash[3] = 'Wash completely';
TxtWash[4] = 'Lavarse completo';
TxtWash[5] = 'Wash completely';
TxtWash[6] = 'полностью помыться';
TxtWash[7] = 'Wash completely';
var TxtPromUp = new Array();
TxtPromUp[0] = 'Promille rauf';
TxtPromUp[1] = 'Alcohol level up';
TxtPromUp[2] = 'Alcohol level up';
TxtPromUp[3] = 'Alcohol level up';
TxtPromUp[4] = 'Alcohol level up';
TxtPromUp[5] = 'Alcohol level up';
TxtPromUp[6] = 'увеличить промилле';
TxtPromUp[7] = 'Alcohol level up';
var TxtPromDown = new Array();
TxtPromDown[0] = 'Promille runter';
TxtPromDown[1] = 'Alcohol level down';
TxtPromDown[2] = 'Alcohol level down';
TxtPromDown[3] = 'Alcohol level down';
TxtPromDown[4] = 'Alcohol level down';
TxtPromDown[5] = 'Alcohol level down';
TxtPromDown[6] = 'уменьшить промилле';
TxtPromDown[7] = 'Alcohol level down';
var TxtIncomingFights1 = new Array();
TxtIncomingFights1[0] = ' 1 eingehender Angriff!';
TxtIncomingFights1[1] = ' 1 incoming fight!';
TxtIncomingFights1[2] = ' 1 rozpoczęte walk';
TxtIncomingFights1[3] = ' 1 baston inattendue!';
TxtIncomingFights1[4] = ' 1 lucha entrante!';
TxtIncomingFights1[5] = ' 1 incoming fight!';
TxtIncomingFights1[6] = ' 1 входящий бой';
TxtIncomingFights1[7] = ' 1 incoming fight!';
var TxtIncomingFights2 = new Array();
TxtIncomingFights2[0] = ' %d eingehende Angriffe!';
TxtIncomingFights2[1] = ' %d incoming fights!';
TxtIncomingFights2[2] = ' %d rozpoczęte walki';
TxtIncomingFights2[3] = ' %d bastons inattendues!';
TxtIncomingFights2[4] = ' %d luchas entrantes!';
TxtIncomingFights2[5] = ' %d incoming fights!';
TxtIncomingFights2[6] = ' %d Поступающие разборки';
TxtIncomingFights2[7] = ' %d incoming fights!';
var TxtGangFight1 = new Array();
TxtGangFight1[0] = 'Aktuell läuft ein Bandenkampf!%s';
TxtGangFight1[1] = 'At the moment one gang fight is running!%s';
TxtGangFight1[2] = 'At the moment one gang fight is running!%s'; // Aendern
TxtGangFight1[3] = 'At the moment one gang fight is running!%s';
TxtGangFight1[4] = 'At the moment one gang fight is running!%s';
TxtGangFight1[5] = 'At the moment one gang fight is running!%s';
TxtGangFight1[6] = 'Сейчас идет бой между бандами!%s';
TxtGangFight1[7] = 'At the moment one gang fight is running!%s';
var TxtGangFight2 = new Array();
TxtGangFight2[0] = 'Aktuell laufen %d Bandenkämpfe!%s';
TxtGangFight2[1] = 'At the moment %d gang fights are running!%s';
TxtGangFight2[2] = 'At the moment %d gang fights are running!%s'; // Aendern
TxtGangFight2[3] = 'At the moment %d gang fights are running!%s';
TxtGangFight2[4] = 'At the moment %d gang fights are running!%s';
TxtGangFight2[5] = 'At the moment %d gang fights are running!%s';
TxtGangFight2[6] = 'Число актуальных боев между бандами: %d! %s';
TxtGangFight2[7] = 'At the moment %d gang fights are running!%s';
var TxtAusweichen = new Array();
TxtAusweichen[0] = 'Ausweichen%s möglich';
TxtAusweichen[1] = 'Evading%s possible';
TxtAusweichen[2] = 'Unikaj%s możliwy';
TxtAusweichen[3] = 'Esquiver%s possible';
TxtAusweichen[4] = 'Evitar%s posible';
TxtAusweichen[5] = 'Evading%s possible';
TxtAusweichen[6] = 'избежать боя %s возможно';
TxtAusweichen[7] = 'Evading%s possible';
var TxtAusweichN = new Array();
TxtAusweichN[0] = ' nicht';
TxtAusweichN[1] = ' not';
TxtAusweichN[2] = ' nie';
TxtAusweichN[3] = ' non';
TxtAusweichN[4] = ' no es';
TxtAusweichN[5] = ' not';
TxtAusweichN[6] = ' не';
TxtAusweichN[7] = ' not';
var TxtAusweichV = new Array();
TxtAusweichV[0] = ' evtl.';
TxtAusweichV[1] = ' maybe';
TxtAusweichV[2] = ' może';
TxtAusweichV[3] = ' peut-être';
TxtAusweichV[4] = ' probablemente';
TxtAusweichV[5] = ' maybe';
TxtAusweichV[6] = ' может быть';
TxtAusweichV[7] = ' maybe';
var TxtNotMoreThan9 = new Array();
TxtNotMoreThan9[0] = 'Es können nicht mehr als 9 Plunderstücke für die Direktzugriffsliste ausgewählt werden!';
TxtNotMoreThan9[1] = 'You cannot select more than 9 pieces of junk for the direct access list!';
TxtNotMoreThan9[2] = 'You cannot select more than 9 pieces of junk for the direct access list!';
TxtNotMoreThan9[3] = 'You cannot select more than 9 pieces of junk for the direct access list!';
TxtNotMoreThan9[4] = 'You cannot select more than 9 pieces of junk for the direct access list!';
TxtNotMoreThan9[5] = 'You cannot select more than 9 pieces of junk for the direct access list!';
TxtNotMoreThan9[6] = 'К панели можно прикрепить не больше 9 штук барахла!';
TxtNotMoreThan9[7] = 'You cannot select more than 9 pieces of junk for the direct access list!';
var TxtMoneyNeeded = new Array();
TxtMoneyNeeded[0] = 'Zum Waschen werden %m benötigt, Du hast im Moment nur %m.';
TxtMoneyNeeded[1] = 'You need %m to wash completely, but you only have %m at the moment.';
TxtMoneyNeeded[2] = 'You need %m to wash completely, but you only have %m at the moment.';
TxtMoneyNeeded[3] = 'You need %m to wash completely, but you only have %m at the moment.';
TxtMoneyNeeded[4] = 'You need %m to wash completely, but you only have %m at the moment.';
TxtMoneyNeeded[5] = 'You need %m to wash completely, but you only have %m at the moment.';
TxtMoneyNeeded[6] = 'Для мытья нужно %m, а у тебя только %m.';
TxtMoneyNeeded[7] = 'You need %m to wash completely, but you only have %m at the moment.';
var TxtCleansed1 = new Array();
TxtCleansed1[0] = 'Du bist nun porentief rein!';
TxtCleansed1[1] = 'You are cleansed down to the pores now!';
TxtCleansed1[2] = 'You are cleansed down to the pores now!';
TxtCleansed1[3] = 'You are cleansed down to the pores now!';
TxtCleansed1[4] = 'You are cleansed down to the pores now!';
TxtCleansed1[5] = 'You are cleansed down to the pores now!';
TxtCleansed1[6] = 'Ты чист!';
TxtCleansed1[7] = 'You are cleansed down to the pores now!';
var TxtCleansed2 = new Array();
TxtCleansed2[0] = 'Du bist bereits porentief rein, sauberer geht nicht... :D';
TxtCleansed2[1] = 'You are already cleansed down to the pores, more is not possible... :D';
TxtCleansed2[2] = 'You are already cleansed down to the pores, more is not possible... :D';
TxtCleansed2[3] = 'You are already cleansed down to the pores, more is not possible... :D';
TxtCleansed2[4] = 'You are already cleansed down to the pores, more is not possible... :D';
TxtCleansed2[5] = 'You are already cleansed down to the pores, more is not possible... :D';
TxtCleansed2[6] = 'Ты чист, чище не бывает… :D';
TxtCleansed2[7] = 'You are already cleansed down to the pores, more is not possible... :D';
var TxtLife = new Array();
TxtLife[0] = 'Lebenspunkte auffüllen';
var TxtLifeNeeded = new Array();
TxtLifeNeeded[0] = 'Dafür werden %m benötigt, Du hast im Moment nur %m.';
var TxtLifepts1 = new Array();
TxtLifepts1[0] = 'Aaah! Du fühlst Dich topfit!';
var TxtLifepts2 = new Array();
TxtLifepts2[0] = 'Deine Lebenspunkte sind bereits komplett!';
var TxtLifepts3 = new Array();
TxtLifepts3[0] = 'Lebenspunkte können nicht %saufgefüllt werden. Bitte warten!';
var TxtLifepts4 = new Array();
TxtLifepts4[0] = 'Ahh! Das tat gut!';
var TxtHiccup = new Array();
TxtHiccup[0] = '*Hicks* Jetzt hab ich endlich wieder meinen Standard-Pegel! :D';
TxtHiccup[1] = '*Hiccup* Finally I have my standard blood alcohol level again! :D';
TxtHiccup[2] = '*Hiccup* Finally I have my standard blood alcohol level again! :D';
TxtHiccup[3] = '*Hiccup* Finally I have my standard blood alcohol level again! :D';
TxtHiccup[4] = '*Hiccup* Finally I have my standard blood alcohol level again! :D';
TxtHiccup[5] = '*Hiccup* Finally I have my standard blood alcohol level again! :D';
TxtHiccup[6] = 'Фу-у, наконец-то я трезвый!';
TxtHiccup[7] = '*Hiccup* Finally I have my standard blood alcohol level again! :D';
var TxtDrinkError = new Array();
TxtDrinkError[0] = 'Beim Trinken gab es einen Fehler, Du hast immer noch nur %s Promille!';
TxtDrinkError[1] = 'There was an error with the drinking, you still have only %s per mills';
TxtDrinkError[2] = 'There was an error with the drinking, you still have only %s per mills';
TxtDrinkError[3] = 'There was an error with the drinking, you still have only %s per mills';
TxtDrinkError[4] = 'There was an error with the drinking, you still have only %s per mills';
TxtDrinkError[5] = 'There was an error with the drinking, you still have only %s per mills';
TxtDrinkError[6] = 'При питье допущена ошибка, у тебя все еще %s промилле!';
TxtDrinkError[7] = 'There was an error with the drinking, you still have only %s per mills';
var TxtNotMuchToDrink = new Array();
TxtNotMuchToDrink[0] = 'Die Vorräte an %s gehen zur Neige.\nBitte zuerst nachkaufen!';
TxtNotMuchToDrink[1] = 'Your supply of %s is running low.\nPlease buy some first!';
TxtNotMuchToDrink[2] = 'Your supply of %s is running low.\nPlease buy some first!';
TxtNotMuchToDrink[3] = 'Your supply of %s is running low.\nPlease buy some first!';
TxtNotMuchToDrink[4] = 'Your supply of %s is running low.\nPlease buy some first!';
TxtNotMuchToDrink[5] = 'Your supply of %s is running low.\nPlease buy some first!';
TxtNotMuchToDrink[6] = 'Запасы %s заканчиваются. \nпожалуйста, докупите!';
TxtNotMuchToDrink[7] = 'Your supply of %s is running low.\nPlease buy some first!';
var TxtNoNeedToDrink = new Array();
TxtNoNeedToDrink[0] = 'Du hast bereits mindestens 2,5 Promille,\nDu musst nicht noch mehr trinken!';
TxtNoNeedToDrink[1] = "You already have a blood alcohol level of 2.5 per mills or more\nyou don't need to drink more!";
TxtNoNeedToDrink[2] = "You already have a blood alcohol level of 2.5 per mills or more\nyou don't need to drink more!";
TxtNoNeedToDrink[3] = "You already have a blood alcohol level of 2.5 per mills or more\nyou don't need to drink more!";
TxtNoNeedToDrink[4] = "You already have a blood alcohol level of 2.5 per mills or more\nyou don't need to drink more!";
TxtNoNeedToDrink[5] = "You already have a blood alcohol level of 2.5 per mills or more\nyou don't need to drink more!";
TxtNoNeedToDrink[6] = "У тебя уже минимум 2,5 промилле, \nты не должен больше пить!";
TxtNoNeedToDrink[7] = "You already have a blood alcohol level of 2.5 per mills or more\nyou don't need to drink more!";
var TxtDrinkLifeRisk = new Array();
TxtDrinkLifeRisk[0] = 'Du hast bereits mindestens 3,65 Promille,\nWeiteres Trinken bringt Dich in Lebensgefahr!';
TxtDrinkLifeRisk[1] = "You already have a blood alcohol level of 3.65 per mills or more\nFurther drinking will risk your life!";
TxtDrinkLifeRisk[2] = "You already have a blood alcohol level of 3.65 per mills or more\nFurther drinking will risk your life!";
TxtDrinkLifeRisk[3] = "You already have a blood alcohol level of 3.65 per mills or more\nFurther drinking will risk your life!";
TxtDrinkLifeRisk[4] = "You already have a blood alcohol level of 3.65 per mills or more\nFurther drinking will risk your life!";
TxtDrinkLifeRisk[5] = "You already have a blood alcohol level of 3.65 per mills or more\nFurther drinking will risk your life!";
TxtDrinkLifeRisk[6] = "У тебя уже минимум 3,65 промилле, \nты не должен больше пить!";
TxtDrinkLifeRisk[7] = "You already have a blood alcohol level of 3.65 per mills or more\nFurther drinking will risk your life!";
var TxtYummy = new Array();
TxtYummy[0] = 'Mjamm, das war lecker!';
TxtYummy[1] = 'Yummy, that was delicious!';
TxtYummy[2] = 'Yummy, that was delicious!';
TxtYummy[3] = 'Yummy, that was delicious!';
TxtYummy[4] = 'Yummy, that was delicious!';
TxtYummy[5] = 'Yummy, that was delicious!';
TxtYummy[6] = 'М-м, это было вкусно!';
TxtYummy[7] = 'Yummy, that was delicious!';
var TxtEatError = new Array();
TxtEatError[0] = 'Beim Essen gab es einen Fehler, Du hast immer noch %s Promille!';
TxtEatError[1] = 'There was an error with the eating, you still have %s per mills';
TxtEatError[2] = 'There was an error with the eating, you still have %s per mills';
TxtEatError[3] = 'There was an error with the eating, you still have %s per mills';
TxtEatError[4] = 'There was an error with the eating, you still have %s per mills';
TxtEatError[5] = 'There was an error with the eating, you still have %s per mills';
TxtEatError[6] = 'С едой вышла ошибка, у тебя все еще %s промилле!';
TxtEatError[7] = 'There was an error with the eating, you still have %s per mills';
var TxtNotMuchToEat = new Array();
TxtNotMuchToEat[0] = 'Die Vorräte an %s und/oder %s\ngehen zur Neige. Bitte zuerst nachkaufen!';
TxtNotMuchToEat[1] = 'Your supply of %s and/or %s is running low.\nPlease buy some of them first!';
TxtNotMuchToEat[2] = 'Your supply of %s and/or %s is running low.\nPlease buy some of them first!';
TxtNotMuchToEat[3] = 'Your supply of %s and/or %s is running low.\nPlease buy some of them first!';
TxtNotMuchToEat[4] = 'Your supply of %s and/or %s is running low.\nPlease buy some of them first!';
TxtNotMuchToEat[5] = 'Your supply of %s and/or %s is running low.\nPlease buy some of them first!';
TxtNotMuchToEat[6] = 'Запасы %s и/или %s\nзаканчиваются. Сначала докупите!';
TxtNotMuchToEat[7] = 'Your supply of %s and/or %s is running low.\nPlease buy some of them first!';
var TxtNoNeedToEat = new Array();
TxtNoNeedToEat[0] = '0,75 Promille oder weniger beeinträchtigen die Kampfwerte nicht,\nDu musst nichts mehr essen!';
TxtNoNeedToEat[1] = "0.75 per mills or less do not reduce the figthing values,\nyou don't need to eat more!";
TxtNoNeedToEat[2] = "0.75 per mills or less do not reduce the figthing values,\nyou don't need to eat more!";
TxtNoNeedToEat[3] = "0.75 per mills or less do not reduce the figthing values,\nyou don't need to eat more!";
TxtNoNeedToEat[4] = "0.75 per mills or less do not reduce the figthing values,\nyou don't need to eat more!";
TxtNoNeedToEat[5] = "0.75 per mills or less do not reduce the figthing values,\nyou don't need to eat more!";
TxtNoNeedToEat[6] = "0,75 или меньше промилле на силу не влияют, \nтебе не нужно больше есть!";
TxtNoNeedToEat[7] = "0.75 per mills or less do not reduce the figthing values,\nyou don't need to eat more!";
var TxtNotEnoughToEat = new Array();
TxtNotEnoughToEat[0] = 'Es ist nicht genügend zu essen da !!';
TxtNotEnoughToEat[1] = "You don't have enough to eat !!";
TxtNotEnoughToEat[2] = "You don't have enough to eat !!";
TxtNotEnoughToEat[3] = "You don't have enough to eat !!";
TxtNotEnoughToEat[4] = "No tienes suficiente para comer !!";
TxtNotEnoughToEat[5] = "You don't have enough to eat !!";
TxtNotEnoughToEat[6] = "Недостаточно еды!";
TxtNotEnoughToEat[7] = "You don't have enough to eat !!";
var TxtNoJunkLeft = new Array();
TxtNoJunkLeft[0] = "Vom benutzbaren Plunder '%s' ist leider nichts mehr übrig,\nDu musst ihn wieder sammeln. Er wird er aus der Direktleiste entfernt.";
TxtNoJunkLeft[1] = "There's nothing left from the useable junk '%s'.\nYou have to collect it again. It will be removed from the direct access list";
TxtNoJunkLeft[2] = "There's nothing left from the useable junk '%s'.\nYou have to collect it again. It will be removed from the direct access list";
TxtNoJunkLeft[3] = "There's nothing left from the useable junk '%s'.\nYou have to collect it again. It will be removed from the direct access list";
TxtNoJunkLeft[4] = "There's nothing left from the useable junk '%s'.\nYou have to collect it again. It will be removed from the direct access list";
TxtNoJunkLeft[5] = "There's nothing left from the useable junk '%s'.\nYou have to collect it again. It will be removed from the direct access list";
TxtNoJunkLeft[6] = "‘%s’, который можно использовать, закончился, \nты должен собирать бутылки. Барахло будет удалено из панели.";
TxtNoJunkLeft[7] = "There's nothing left from the useable junk '%s'.\nYou have to collect it again. It will be removed from the direct access list";
var TxtNoJunkLeft2 = new Array();
TxtNoJunkLeft2[0] = "Vom anlegbaren Plunder '%s' ist leider nichts mehr übrig,\nDu musst ihn wieder sammeln. Er wird er aus der Direktleiste entfernt.";
TxtNoJunkLeft2[1] = "There's nothing left from the wearable junk '%s'.\nYou have to collect it again. It will be removed from the direct access list";
TxtNoJunkLeft2[2] = "There's nothing left from the wearable junk '%s'.\nYou have to collect it again. It will be removed from the direct access list";
TxtNoJunkLeft2[3] = "There's nothing left from the wearable junk '%s'.\nYou have to collect it again. It will be removed from the direct access list";
TxtNoJunkLeft2[4] = "There's nothing left from the wearable junk '%s'.\nYou have to collect it again. It will be removed from the direct access list";
TxtNoJunkLeft2[5] = "There's nothing left from the wearable junk '%s'.\nYou have to collect it again. It will be removed from the direct access list";
TxtNoJunkLeft2[6] = "‘%s’ закончилось, \nты должен собирать бутылки. Барахло будет удалено из панели.";
TxtNoJunkLeft2[7] = "There's nothing left from the wearable junk '%s'.\nYou have to collect it again. It will be removed from the direct access list";
var TxtEquip = new Array();
TxtEquip[0] = 'Anlegen';
TxtEquip[1] = 'Equip';
TxtEquip[2] = 'Załóż';
TxtEquip[3] = 'Équiper';
TxtEquip[4] = 'Encarar';
TxtEquip[5] = 'Ativar';
TxtEquip[6] = 'приложить';
TxtEquip[7] = 'Equip';
var TxtUse = new Array();
TxtUse[0] = 'Benutzen';
TxtUse[1] = 'Use';
TxtUse[2] = 'Użyj';
TxtUse[3] = 'Utiliser';
TxtUse[4] = 'Utilizar';
TxtUse[5] = 'Usar';
TxtUse[6] = 'использовать';
TxtUse[7] = 'Use';
var TxtNoSkill = new Array();
TxtNoSkill[0] = "Keine Weiterbildung";
TxtNoSkill[1] = "No development";
TxtNoSkill[2] = "Nie szkolenie";
TxtNoSkill[3] = "Aucune formation";
TxtNoSkill[4] = "Ningún cursillo";
TxtNoSkill[5] = "No development"; // !!!!
TxtNoSkill[6] = "обучения нет";
TxtNoSkill[7] = "No development";
var TxtNoJunk = new Array();
TxtNoJunk[0] = "Kein Plunder angelegt";
TxtNoJunk[1] = "No junk equipped";
TxtNoJunk[2] = "Nie masz rupieci";
TxtNoJunk[3] = "Aucune babiole sélectionné";
TxtNoJunk[4] = "Ningún cachivache encara";
TxtNoJunk[5] = "No junk equipped"; // !!!!
TxtNoJunk[6] = "барахло не приложено";
TxtNoJunk[7] = "No junk equipped";
var TxtUseJunk = new Array();
TxtUseJunk[0] = '%s: %s (noch %d Stück übrig)';
TxtUseJunk[1] = '%s: %s (still %d pieces remaining)';
TxtUseJunk[2] = '%s: %s (still %d pieces remaining)';
TxtUseJunk[3] = '%s: %s (still %d pieces remaining)';
TxtUseJunk[4] = '%s: %s (still %d pieces remaining)';
TxtUseJunk[5] = '%s: %s (still %d pieces remaining)';
TxtUseJunk[6] = '%s: %s (осталось еще %d штук)';
TxtUseJunk[7] = '%s: %s (still %d pieces remaining)';
var TxtEquipThisJunk = new Array();
TxtEquipThisJunk[0] = 'Dieser Plunder wird angelegt';
TxtEquipThisJunk[1] = 'This junk can be equipped';
TxtEquipThisJunk[2] = 'This junk can be equipped';
TxtEquipThisJunk[3] = 'This junk can be equipped';
TxtEquipThisJunk[4] = 'This junk can be equipped';
TxtEquipThisJunk[5] = 'This junk can be equipped';
TxtEquipThisJunk[6] = 'это барахло будет приложено';
TxtEquipThisJunk[7] = 'This junk can be equipped';
var TxtUseThisJunk = new Array();
TxtUseThisJunk[0] = 'Dieser Plunder wird benutzt';
TxtUseThisJunk[1] = 'This junk can be used';
TxtUseThisJunk[2] = 'This junk can be used';
TxtUseThisJunk[3] = 'This junk can be used';
TxtUseThisJunk[4] = 'This junk can be used';
TxtUseThisJunk[5] = 'This junk can be used';
TxtUseThisJunk[6] = 'это барахло будет использовано';
TxtUseThisJunk[7] = 'This junk can be used';
var TxtReallyUseJunk = new Array();
TxtReallyUseJunk[0] = "Soll der Plunder '%s' wirklich benutzt werden?\n\nHinweis: Durch die Benutzung wird er sofort verbraucht. Du hast\nderzeit noch %d Stück.";
TxtReallyUseJunk[1] = "Do you really want to use the junk '%s'?\n\nNote: Using it will consume it. At the moment\nyou still have %d pieces.";
TxtReallyUseJunk[2] = "Do you really want to use the junk '%s'?\n\nNote: Using it will consume it. At the moment\nyou still have %d pieces.";
TxtReallyUseJunk[3] = "Do you really want to use the junk '%s'?\n\nNote: Using it will consume it. At the moment\nyou still have %d pieces.";
TxtReallyUseJunk[4] = "Do you really want to use the junk '%s'?\n\nNote: Using it will consume it. At the moment\nyou still have %d pieces.";
TxtReallyUseJunk[5] = "Do you really want to use the junk '%s'?\n\nNote: Using it will consume it. At the moment\nyou still have %d pieces.";
TxtReallyUseJunk[6] = "Хочешь использовать ‘%s’ барахло? \n\nвнимание: после использования барахло исчезает. У тебя\nсейчас еще %d штук.";
TxtReallyUseJunk[7] = "Do you really want to use the junk '%s'?\n\nNote: Using it will consume it. At the moment\nyou still have %d pieces.";
var TxtJunkUsed = new Array();
TxtJunkUsed[0] = '%s wurde erfolgreich benutzt.';
TxtJunkUsed[1] = '%s was successfully used.';
TxtJunkUsed[2] = '%s was successfully used.';
TxtJunkUsed[3] = '%s was successfully used.';
TxtJunkUsed[4] = '%s was successfully used.';
TxtJunkUsed[5] = '%s was successfully used.';
TxtJunkUsed[6] = '%s было успешно использовано.';
TxtJunkUsed[7] = '%s was successfully used.';
var TxtJunkNoSucc = new Array();
TxtJunkNoSucc[0] = "%s konnte nicht benutzt werden.";
TxtJunkNoSucc[1] = "%s could not successfully be used.";
var TxtJunkSucc = new Array();
TxtJunkSucc[0] = "%s wurde %dmal erfolgreich benutzt.";
TxtJunkSucc[1] = "%s was successfully used %d times.";
var TxtPlayerName = new Array();
TxtPlayerName[0] = "Auf welchen Spieler soll der Plunder angewendet werden ?\n\nSpielername: ";
var TxtNoProfAbility = new Array();
TxtNoProfAbility[0] = "Du profitierst nicht von der Bandenfähigkeit";
TxtNoProfAbility[1] = "You don't profit from the gang ability";
TxtNoProfAbility[2] = "Nie zyskujesz na talentach bandy";
TxtNoProfAbility[3] = "You don't profit from the gang ability";
TxtNoProfAbility[4] = "You don't profit from the gang ability";
TxtNoProfAbility[5] = "You don't profit from the gang ability";
TxtNoProfAbility[6] = "Способности банды тебе не приносят пользу";
TxtNoProfAbility[7] = "You don't benefit from the gang ability";
var TxtAlertNoGang = new Array();
TxtAlertNoGang[0] = "ACHTUNG!! Du bist nicht mehr in einer Bande !!";
TxtAlertNoGang[1] = "ATTENTION !! You are no longer member of a gang !!";
TxtAlertNoGang[2] = "ATTENTION !! You are no longer member of a gang !!";
TxtAlertNoGang[3] = "ATTENTION !! You are no longer member of a gang !!";
TxtAlertNoGang[4] = "ATTENTION !! You are no longer member of a gang !!";
TxtAlertNoGang[5] = "ATTENTION !! You are no longer member of a gang !!";
TxtAlertNoGang[6] = "ВНИМАНИЕ!! Ты больше не в банде !!";
TxtAlertNoGang[7] = "ATTENTION !! You are no longer member of a gang !!";
var TxtLogout = new Array();
TxtLogout[0] = "Ausloggen ?";
TxtLogout[1] = "Logout ?";
TxtLogout[2] = "Wyloguj ?";
TxtLogout[3] = "Déconnexion ?";
TxtLogout[4] = "Salir ?";
TxtLogout[5] = "Logout ?";
TxtLogout[6] = "Выйти ?";
TxtLogout[7] = "Logout ?";
var TxtLogoutWarn1 = new Array();
TxtLogoutWarn1[0] = "Achtung !! Du bist noch betrunken !!";
TxtLogoutWarn1[1] = "Warning !! You are still drunk !!";
TxtLogoutWarn1[2] = "Warning !! You are still drunk !!";
TxtLogoutWarn1[3] = "Warning !! You are still drunk !!";
TxtLogoutWarn1[4] = "Warning !! You are still drunk !!";
TxtLogoutWarn1[5] = "Warning !! You are still drunk !!";
TxtLogoutWarn1[6] = "Внимание!! Ты еще пьяный !!";
TxtLogoutWarn1[7] = "Warning !! You are still drunk !!";
var TxtLogoutWarn2 = new Array();
TxtLogoutWarn2[0] = "Achtung !! Du hast nicht Deine volle Kampfstärke !!";
TxtLogoutWarn2[1] = "Warning !! You do not have your full possible fighting power !!";
TxtLogoutWarn2[2] = "Warning !! You do not have your full possible fighting power !!";
TxtLogoutWarn2[3] = "Warning !! You do not have your full possible fighting power !!";
TxtLogoutWarn2[4] = "Warning !! You do not have your full possible fighting power !!";
TxtLogoutWarn2[5] = "Warning !! You do not have your full possible fighting power !!";
TxtLogoutWarn2[6] = "Внимание !! У тебя еще не полная сила !!";
TxtLogoutWarn2[7] = "Warning !! You do not have your full possible fighting power !!";
var TxtCart = new Array();
TxtCart[0] = "Einkaufswagen ausleeren";
TxtCart[1] = "Empty cart";
TxtCart[2] = "Opróżnij wózek na zakupy";
TxtCart[3] = "Vider ton caddie";
TxtCart[4] = "Vaciar el carro de la compra";
TxtCart[5] = "Esvaziar carrinho de compras";
TxtCart[6] = "Разгрузить тележку";
TxtCart[7] = "Empty cart";
var TxtCart2 = new Array();
TxtCart2[0] = "Flaschensammeln starten";
TxtCart2[1] = "start collecting bottles";
TxtCart2[2] = "start collecting bottles";
TxtCart2[3] = "start collecting bottles";
TxtCart2[4] = "start collecting bottles";
TxtCart2[5] = "start collecting bottles";
TxtCart2[6] = "начать собирать бутылки";
TxtCart2[7] = "start collecting bottles";
var TxtCart3 = new Array();
TxtCart3[0] = "Flaschen werden gesammelt";
TxtCart3[1] = "collecting bottles";
TxtCart3[2] = "collecting bottles";
TxtCart3[3] = "collecting bottles";
TxtCart3[4] = "collecting bottles";
TxtCart3[5] = "collecting bottles";
TxtCart3[6] = "бутылки собираются";
TxtCart3[7] = "collecting bottles";
var TxtCollFinish = new Array();
TxtCollFinish[0] = "Das Flaschensammeln wurde beendet";
TxtCollFinish[1] = "The collecting of bottles was finished";
TxtCollFinish[2] = "The collecting of bottles was finished";
TxtCollFinish[3] = "The collecting of bottles was finished";
TxtCollFinish[4] = "The collecting of bottles was finished";
TxtCollFinish[5] = "The collecting of bottles was finished";
TxtCollFinish[6] = "бутылки собраны";
TxtCollFinish[7] = "The collecting of bottles was finished";
var TxtCrime = new Array();
TxtCrime[0] = "Du planst ein Verbrechen!";
TxtCrime[1] = "You're planning a crime!";
TxtCrime[2] = "You're planning a crime!";
TxtCrime[3] = "You're planning a crime!";
TxtCrime[4] = "You're planning a crime!";
TxtCrime[5] = "You're planning a crime!";
TxtCrime[6] = "Ты задумал преступление!";
TxtCrime[7] = "You're planning a crime!";
var TxtCrimePro = new Array();
TxtCrimePro[0] = " ACHTUNG !! Betrunken wird das Verbrechen nicht gelingen!!";
TxtCrimePro[1] = " Attention !! You are drunk and you will have no success with the crime!!";
TxtCrimePro[2] = " Attention !! You are drunk and you will have no success with the crime!!";
TxtCrimePro[3] = " Attention !! You are drunk and you will have no success with the crime!!";
TxtCrimePro[4] = " Attention !! You are drunk and you will have no success with the crime!!";
TxtCrimePro[5] = " Attention !! You are drunk and you will have no success with the crime!!";
TxtCrimePro[6] = " ВНИМАНИЕ !! Если ты пьян, преступление не удастся!!";
TxtCrimePro[7] = " Attention !! You are drunk and you will have no success with the crime!!";
var TxtFight = new Array();
TxtFight[0] = "Du hast einen Kampf gestartet gegen %s!";
TxtFight[1] = "You started a fight against %s!";
TxtFight[2] = "You started a fight against %s!";
TxtFight[3] = "You started a fight against %s!";
TxtFight[4] = "You started a fight against %s!";
TxtFight[5] = "You started a fight against %s!";
TxtFight[6] = "Ты начал бой против %s!";
TxtFight[7] = "You started a fight against %s!";
var TxtWeakFight = new Array();
TxtWeakFight[0] = "Achtung! Angriff läuft und Kampfwert ist nicht maximal !!";
TxtWeakFight[1] = "Attention! You started an attack but your fight value is not on maximum !!";
var TxtEmptied = new Array();
TxtEmptied[0] = "Einkaufswagen ausgeleert. Du hast %d Flaschen gesammelt.";
TxtEmptied[1] = "Cart emptied! You found %d bottles.";
TxtEmptied[2] = "Cart emptied! You found %d bottles.";
TxtEmptied[3] = "Cart emptied! You found %d bottles.";
TxtEmptied[4] = "Cart emptied! You found %d bottles.";
TxtEmptied[5] = "Cart emptied! You found %d bottles.";
TxtEmptied[6] = "Корзина разгружена. Ты собрал %d бутылок.";
TxtEmptied[7] = "Cart emptied! You found %d bottles.";
var TxtDaily = new Array();
TxtDaily[0] = "Tägliche Aufgabe";
TxtDaily[1] = "Daily tasks";
TxtDaily[2] = "Zadanie dnia";
TxtDaily[3] = "Tâche journalière";
TxtDaily[4] = "Tarea diaria";
TxtDaily[5] = "Tarefa diária";
TxtDaily[6] = "Сегодняшнее задание";
TxtDaily[7] = "Daily tasks";
var TxtCards = new Array();
TxtCards[0] = "Deine Sammelkarten: ";
TxtCards[1] = "Your Credits: ";
TxtCards[2] = "Twoje znaczki: ";
TxtCards[3] = "Tes jetons: ";
TxtCards[4] = "Tus fichas: ";
TxtCards[5] = "Seu álbum de comprovantes: ";
TxtCards[6] = "Твои карточки: ";
TxtCards[7] = "Your Credits: ";
var TxtEnd = new Array();
TxtEnd[0] = ', Ende: ';
TxtEnd[1] = ', End: ';
TxtEnd[2] = ', Zakończ: ';
TxtEnd[3] = ', Fin: ';
TxtEnd[4] = ', End: ';
TxtEnd[5] = ', End: ';
TxtEnd[6] = ', Конец: ';
TxtEnd[7] = ', End: ';
var TxtInfo = new Array();
TxtInfo[0] = 'Info ist an --> Ausschalten';
TxtInfo[1] = 'Info is on --> Switch off';
TxtInfo[2] = 'Info is on --> Switch off';
TxtInfo[3] = 'Info is on --> Switch off';
TxtInfo[4] = 'Info is on --> Switch off';
TxtInfo[5] = 'Info is on --> Switch off';
TxtInfo[6] = 'Информация включена —> Выключить';
TxtInfo[7] = 'Info is on --> Switch off';
var TxtNoInfo = new Array();
TxtNoInfo[0] = 'Info ist aus --> Einschalten';
TxtNoInfo[1] = 'Info is off --> Switch on';
TxtNoInfo[2] = 'Info is off --> Switch on';
TxtNoInfo[3] = 'Info is off --> Switch on';
TxtNoInfo[4] = 'Info is off --> Switch on';
TxtNoInfo[5] = 'Info is off --> Switch on';
TxtNoInfo[6] = 'Информация выключена —> Включить';
TxtNoInfo[7] = 'Info is off --> Switch on';
var TxtNoteOnPage = new Array();
TxtNoteOnPage[0] = 'Zum gemerkten SB-Eintrag auf Seite %d gehen';
TxtNoteOnPage[1] = 'Go to the pinned shoutbox entry on page %d';
TxtNoteOnPage[2] = 'Go to the pinned shoutbox entry on page %d';
TxtNoteOnPage[3] = 'Go to the pinned shoutbox entry on page %d';
TxtNoteOnPage[4] = 'Go to the pinned shoutbox entry on page %d';
TxtNoteOnPage[5] = 'Go to the pinned shoutbox entry on page %d';
TxtNoteOnPage[6] = 'Для сохраненной шаутбокс-записи перейти на %d страницу.';
TxtNoteOnPage[7] = 'Go to the pinned shoutbox entry on page %d';
var TxtOwnGang = new Array();
TxtOwnGang[0] = 'Du greifst ein Mitglied Deiner eigenen Bande an !!';
TxtOwnGang[1] = 'You attack a member of your own gang !!';
TxtOwnGang[2] = 'You attack a member of your own gang !!';
TxtOwnGang[3] = 'You attack a member of your own gang !!';
TxtOwnGang[4] = 'You attack a member of your own gang !!';
TxtOwnGang[5] = 'You attack a member of your own gang !!';
TxtOwnGang[6] = 'Ты атакуешь игрока из твоей банды!!';
TxtOwnGang[7] = 'You attack a member of your own gang !!';
var TxtAlliedGang = new Array();
TxtAlliedGang[0] = 'Du greifst ein Mitglied einer befreundeten Bande an !!';
TxtAlliedGang[1] = 'You attack a member of an allied gang !!';
TxtAlliedGang[2] = 'You attack a member of an allied gang !!';
TxtAlliedGang[3] = 'You attack a member of an allied gang !!';
TxtAlliedGang[4] = 'You attack a member of an allied gang !!';
TxtAlliedGang[5] = 'You attack a member of an allied gang !!';
TxtAlliedGang[6] = 'Ты атакуешь игрока который дружит с твоей бандой!!';
TxtAlliedGang[7] = 'You attack a member of an allied gang !!';
var TxtMultiPlunder = new Array();
TxtMultiPlunder[0] = ' Wie oft soll der Plunder benutzt werden ?';
TxtMultiPlunder[1] = ' How many times do you want to use the plunder ?';
var TxtMultiPlunder1 = new Array();
TxtMultiPlunder1[0] = 'Dieser Plunder ist %d mal vorhanden.';
TxtMultiPlunder1[1] = 'You possess this plunder %d times.';
var TxtMultiPlunder2 = new Array();
TxtMultiPlunder2[0] = 'Bitte nur eine Zahl (höchstens %d) eingeben.';
TxtMultiPlunder2[1] = 'Please enter a number (at most %d).';
var TxtMultiPlunder3 = new Array();
TxtMultiPlunder3[0] = 'So oft ist der Plunder nicht vorhanden (%d).';
TxtMultiPlunder3[1] = 'You do not possess this plunder so many times (%d).';
var TxtWiWut = new Array();
TxtWiWut[0] = new Array('Wutentfachung', 'Rage', 'Wzbudzanie złości', 'Rage',
'Enfurecimiento', 'Enraivecimento', 'Разжигание ярости', 'Rage');
TxtWiWut[1] = new Array('Wirtschaftswunder', 'Economic wonder', 'Cud gospodarczy', 'Miracle économique',
'Milagro económico', 'Milagre econômico', 'Экономическое чудо', 'Economic wonder');
var TxtNiete = new Array();
TxtNiete[0] = "Niete";
TxtNiete[1] = "Blank";
var TxtTotalWon = new Array();
TxtTotalWon[0] = "Gewinn gesamt: %m bei einem Einsatz von %m, Ergebnis: %m";
TxtTotalWon[1] = "totally won: %m at a stake of %m leaves a balance of %m";
var TxtAuszeichnung = new Array();
TxtAuszeichnung[0] = "Auszeichnung";
TxtAuszeichnung[1] = "Award";
TxtAuszeichnung[2] = "Odznaczenie";
TxtAuszeichnung[3] = "Décoration";
TxtAuszeichnung[4] = "Reconocimiento";
TxtAuszeichnung[5] = "Prêmio";
TxtAuszeichnung[6] = "награ́да";
TxtAuszeichnung[7] = "Award";
// Ingame Texte
var TxtEstimated = new Array();
TxtEstimated[0] = "Voraussichtlich";
TxtEstimated[1] = "estimated";
TxtEstimated[2] = "Przewidzianych";
TxtEstimated[3] = "sont prévus";
TxtEstimated[4] = "Probablemente";
TxtEstimated[5] = "Provavelmente";
TxtEstimated[6] = "Приблизительно";
TxtEstimated[7] = "Estimated";
var TxtTrikot = new Array();
TxtTrikot[0] = "Trikot";
TxtTrikot[1] = "Jersey";
TxtTrikot[2] = "Koszulka";
TxtTrikot[3] = "Jersey";
TxtTrikot[4] = "Jersey";
TxtTrikot[5] = "Camisa";
TxtTrikot[6] = "Jersey"; // !!!!
TxtTrikot[7] = "Jersey"; // !!!!
var TxtRunAttack = new Array();
TxtRunAttack[0] = "uft bereits auf";
TxtRunAttack[1] = "Already accumulated attacks";
TxtRunAttack[2] = "Atak ju";
TxtRunAttack[3] = "Attaque en cours";
TxtRunAttack[4] = "El ataque ya ha";
TxtRunAttack[5] = "O ataque j";
TxtRunAttack[6] = "Атака уже пошла";
TxtRunAttack[7] = "Attack is underway";
var TxtNoGangFights = new Array();
TxtNoGangFights[0] = "Keine laufenden";
TxtNoGangFights[1] = "No current";
TxtNoGangFights[2] = "Nie ma toczących sie walk";
TxtNoGangFights[3] = "Aucun combat en cours";
TxtNoGangFights[4] = "No hay luchas de bandas en curso";
TxtNoGangFights[5] = "nenhuma luta acontecendo";
TxtNoGangFights[6] = "Действующих разборок нет";
TxtNoGangFights[7] = "No current";
var TxtBoost = new Array();
TxtBoost[0] = 'Stärkung:';
TxtBoost[1] = 'Strenth';
TxtBoost[2] = 'Wzmocnienie:';
TxtBoost[3] = 'Renforcement :';
TxtBoost[4] = 'Fortalecimiento:';
TxtBoost[5] = 'Força:';
TxtBoost[6] = 'Подкрепление:';
TxtBoost[7] = 'Strength';
var TxtInjury = new Array();
TxtInjury[0] = 'Verletzung:';
TxtInjury[1] = 'Strenth';
TxtInjury[2] = 'Wzmocnienie:';
TxtInjury[3] = 'Renforcement :';
TxtInjury[4] = 'Herida:';
TxtInjury[5] = 'Força:';
TxtInjury[6] = 'Подкрепление:';
TxtInjury[7] = 'Strength';
var TxtATTBoost = new Array();
TxtATTBoost[0] = 'ATT: ';
TxtATTBoost[1] = 'ATT: ';
TxtATTBoost[2] = 'ATT: ';
TxtATTBoost[3] = 'ATT: ';
TxtATTBoost[4] = 'ATT: ';
TxtATTBoost[5] = 'ATT: ';
TxtATTBoost[6] = 'Aтака: ';
TxtATTBoost[7] = 'ATT: ';
var TxtDEFBoost = new Array();
TxtDEFBoost[0] = 'DEF: ';
TxtDEFBoost[1] = 'DEF: ';
TxtDEFBoost[2] = 'DEF: ';
TxtDEFBoost[3] = 'DEF: ';
TxtDEFBoost[4] = 'DEF: ';
TxtDEFBoost[5] = 'DEF: ';
TxtDEFBoost[6] = 'DEF: ';
TxtDEFBoost[7] = 'DEF: ';
var TxtBuyPet = new Array();
TxtBuyPet[0] = 'Begleiter kaufen';
TxtBuyPet[1] = 'Buy New Pet';
TxtBuyPet[2] = 'Kup nowego zwierzaka';
TxtBuyPet[3] = 'Acheter un nouvel animal';
TxtBuyPet[4] = 'Comprar una mascota nueva';
TxtBuyPet[5] = 'Comprar novo animal de estimação';
TxtBuyPet[6] = 'Купить нового питомца';
TxtBuyPet[7] = 'Buy new pet';
var TxtBuyWeapon = new Array();
TxtBuyWeapon[0] = 'Zum Waffenladen';
TxtBuyWeapon[1] = 'To Weapon store';
TxtBuyWeapon[2] = 'do sklepu z bronią';
TxtBuyWeapon[3] = "Au magasin d'armes";
TxtBuyWeapon[4] = 'Ir a la tienda de armas';
TxtBuyWeapon[5] = 'Para o depósito de armas';
TxtBuyWeapon[6] = 'К оружейному магазину';
TxtBuyWeapon[7] = 'Go to weapon shop';
var TxtBought = new Array();
TxtBought[0] = 'Gekauft';
TxtBought[1] = 'Bought';
TxtBought[2] = 'Kupiony';
TxtBought[3] = 'Utiliser';
TxtBought[4] = 'Comprado';
TxtBought[5] = 'Comprado';
TxtBought[6] = 'Куплено';
TxtBought[7] = 'Bought';
var TxtDefBought = new Array();
TxtDefBought[0] = 'Abbrechen';
TxtDefBought[1] = 'Cancelled';
TxtDefBought[2] = 'Anuluj';
TxtDefBought[3] = 'Annuler';
TxtDefBought[4] = 'Interrumpir';
TxtDefBought[5] = 'Cancelar';
TxtDefBought[6] = 'Отменить';
TxtDefBought[7] = 'Cancel';
var TxtSelected = new Array();
TxtSelected[0] = 'Ausgewählt';
TxtSelected[1] = 'Selected';
TxtSelected[2] = 'Wybrany';
TxtSelected[3] = 'Sélectionné';
TxtSelected[4] = 'Escogido';
TxtSelected[5] = 'Selecionado';
TxtSelected[6] = 'Выбрано';
TxtSelected[7] = 'Selected';
var TxtPiece = new Array();
TxtPiece[0] = ' Stück</td>';
TxtPiece[1] = ' Piece</td>';
TxtPiece[2] = ' Sztuk</td>';
TxtPiece[3] = ' Unités</td>';
TxtPiece[4] = ' pieza</td>';
TxtPiece[5] = ' Unidade(s)</td>';
TxtPiece[6] = ' Штука</td>';
TxtPiece[7] = ' Piece</td>';
var TxtArmoury = new Array();
TxtArmoury[0] = 'Waffenkammer';
TxtArmoury[1] = '<td>Armoury';
TxtArmoury[2] = 'Magazyn broni';
TxtArmoury[3] = "Salle d'armes";
TxtArmoury[4] = 'Armería';
TxtArmoury[5] = '<td>Depósito de armas';
TxtArmoury[6] = '<td>Арсенал';
TxtArmoury[7] = '<td>Armoury';
var TxtHouse = new Array();
TxtHouse[0] = 'Bandenhaus';
TxtHouse[1] = 'Safe House';
TxtHouse[2] = 'Siedziba bandy';
TxtHouse[3] = 'Quartier général de la bande';
TxtHouse[4] = 'Casa de la banda';
TxtHouse[5] = 'Sede da gangue';
TxtHouse[6] = 'Дом банды';
TxtHouse[7] = 'Gang lair';
var TxtOccupied = new Array();
TxtOccupied[0] = 'Bewohnt';
TxtOccupied[1] = 'Occupied';
TxtOccupied[2] = 'Zamieszkany';
TxtOccupied[3] = 'Habité';
TxtOccupied[4] = 'Habitado';
TxtOccupied[5] = 'Habitado';
TxtOccupied[6] = 'Ты живешь здесь';
TxtOccupied[7] = 'Occupied';
var TxtMoveIn = new Array();
TxtMoveIn[0] = 'Einziehen';
TxtMoveIn[1] = 'Go to';
TxtMoveIn[2] = 'Idż';
TxtMoveIn[3] = 'Emménager';
TxtMoveIn[4] = 'Mudarme';
TxtMoveIn[5] = 'Mudar';
TxtMoveIn[6] = 'вселиться';
TxtMoveIn[7] = 'Move in';
var TxtBeer1 = new Array();
TxtBeer1[0] = 'Bier';
TxtBeer1[1] = 'beer';
TxtBeer1[2] = 'piwa';
TxtBeer1[3] = 'vin';
TxtBeer1[4] = 'calimocho';
TxtBeer1[5] = 'cerveja';
TxtBeer1[6] = 'Пиво';
TxtBeer1[7] = 'lager';
var TxtBeer2 = new Array();
TxtBeer2[0] = 'Limo';
TxtBeer2[1] = 'beer';
TxtBeer2[2] = 'piwa';
TxtBeer2[3] = 'vin';
TxtBeer2[4] = 'calimocho';
TxtBeer2[5] = 'cerveja';
TxtBeer2[6] = 'Пиво';
TxtBeer2[7] = 'lager';
var TxtAbility1 = new Array();
TxtAbility1[0] = 'Eine Fähigkeit wurde bereits aktiviert';
TxtAbility1[1] = 'An ability has already been activated';
TxtAbility1[2] = ' zdolności jest już rozpoczęte';
TxtAbility1[3] = 'An ability has already been activated'; // <--- dieser Text muss noch korrigiert werden
TxtAbility1[4] = 'Te hemos activado una habilidad';
TxtAbility1[5] = 'An ability has already been activated'; // !!!!
TxtAbility1[6] = 'Одна способность уже активирована';
TxtAbility1[7] = 'One ability is already active';
var TxtAbility2 = new Array();
TxtAbility2[0] = ' und läuft noch bis ';
TxtAbility2[1] = ' and runs to ';
TxtAbility2[2] = ' jeszcze do ';
TxtAbility2[3] = ' and runs to '; // <--- dieser Text muss noch korrigiert werden
TxtAbility2[4] = ' y esta dura hasta ';
TxtAbility2[5] = ' and runs to '; // !!!!
TxtAbility2[6] = ' и действует до ';
TxtAbility2[7] = ' until ';
var TxtNoGangAbility = new Array();
TxtNoGangAbility[0] = "Du profitierst nicht";
TxtNoGangAbility[1] = "You don't profit";
TxtNoGangAbility[2] = "Nie zyskujesz na talentach";
TxtNoGangAbility[3] = "Vous n'en profitez pas";
TxtNoGangAbility[4] = "You don't profit"; // <--- dieser Text muss noch korrigiert werden
TxtNoGangAbility[5] = "You don't profit"; // !!!!
TxtNoGangAbility[6] = "способности банды тебе не приносят пользу";
TxtNoGangAbility[7] = "You don't benefit";
var TxtIncrease = new Array();
TxtIncrease[0] = 'Erhöht';
TxtIncrease[1] = 'Increases';
TxtIncrease[2] = 'Wzrost';
TxtIncrease[3] = 'Increases';
TxtIncrease[4] = 'Aumenta';
TxtIncrease[5] = 'Increases'; // !!!!
TxtIncrease[6] = 'шает';
TxtIncrease[7] = 'Increases';
var TxtIncrATT = new Array();
TxtIncrATT[0] = 'Angriff';
TxtIncrATT[1] = 'attack';
TxtIncrATT[2] = 'atak';
TxtIncrATT[3] = 'ataque';
TxtIncrATT[4] = 'ataque';
TxtIncrATT[5] = 'attack'; // !!!!
TxtIncrATT[6] = 'Атаку';
TxtIncrATT[7] = 'attack';
var TxtIncrDEF = new Array();
TxtIncrDEF[0] = 'Verteidigung';
TxtIncrDEF[1] = 'defense';
TxtIncrDEF[2] = 'obrona';
TxtIncrDEF[3] = 'défense';
TxtIncrDEF[4] = 'defensa';
TxtIncrDEF[5] = 'defense'; // !!!!
TxtIncrDEF[6] = 'Дефенз';
TxtIncrDEF[7] = 'defense';
var TxtSicher = new Array();
TxtSicher[0] = 'Sicher';
TxtSicher[1] = 'Avoid';
TxtSicher[2] = 'Uniknąć';
TxtSicher[3] = 'certaine';
TxtSicher[4] = ', seguro';
TxtSicher[5] = 'Avoid'; // !!!!
TxtSicher[6] = 'Надежно';
TxtSicher[7] = 'Avoid!'; // !!!!
var TxtAusweich = new Array();
TxtAusweich[0] = 'Ausweichen';
TxtAusweich[1] = 'Defense';
TxtAusweich[2] = 'Unikaj';
TxtAusweich[3] = 'Esquiver';
TxtAusweich[4] = 'Evitar';
TxtAusweich[5] = 'Defense'; // !!!!
TxtAusweich[6] = 'уклониться';
TxtAusweich[7] = 'Avoid';
var TxtSkillATT = new Array();
TxtSkillATT[0] = 'Angriff';
TxtSkillATT[1] = 'Attack';
TxtSkillATT[2] = 'Atak';
TxtSkillATT[3] = 'Attaque';
TxtSkillATT[4] = 'Ataque';
TxtSkillATT[5] = 'Ataque';
TxtSkillATT[6] = 'Нападение';
TxtSkillATT[7] = 'Attack';
var TxtSkillDEF = new Array();
TxtSkillDEF[0] = 'Verteidigung';
TxtSkillDEF[1] = 'Defense';
TxtSkillDEF[2] = 'Obrona';
TxtSkillDEF[3] = 'Défense';
TxtSkillDEF[4] = 'Defensa';
TxtSkillDEF[5] = 'Defesa';
TxtSkillDEF[6] = 'Оборона';
TxtSkillDEF[7] = 'Defense';
var TxtSkillDEX = new Array();
TxtSkillDEX[0] = 'Geschicklichkeit';
TxtSkillDEX[1] = 'Dexterity';
TxtSkillDEX[2] = 'Zręczność';
TxtSkillDEX[3] = 'Habileté';
TxtSkillDEX[4] = 'Destreza';
TxtSkillDEX[5] = 'Agilidade';
TxtSkillDEX[6] = 'Мастерство';
TxtSkillDEX[7] = 'Dexterity';
var TxtLang = new Array();
TxtLang[0] = "Sprache: deutsch";
TxtLang[1] = "Language: american";
TxtLang[2] = "Language: polish";
TxtLang[3] = "Langue: français";
TxtLang[4] = "Lengua: español";
TxtLang[5] = "Lingua: português";
TxtLang[6] = "язык: русский";
TxtLang[7] = "Language: english";
var Txtmax = new Array();
Txtmax[0] = 'max.';
Txtmax[1] = 'max.';
Txtmax[2] = 'max.';
Txtmax[3] = 'max.';
Txtmax[4] = 'max.';
Txtmax[5] = 'max.';
Txtmax[6] = 'max.';
Txtmax[7] = 'max.';
var TxtReload = new Array();
TxtReload[0] = 'Fertig!! Seiten wird in %d Sekunden neu geladen!';
TxtReload[1] = 'Done!! Page will reload in %d seconds!';
TxtReload[2] = 'Done!! Page will reload in %d seconds!';
TxtReload[3] = 'Done!! Page will reload in %d seconds!';
TxtReload[4] = 'Done!! Page will reload in %d seconds!';
TxtReload[5] = 'Done!! Page will reload in %d seconds!';
TxtReload[6] = 'Done!! Page will reload in %d seconds!';
TxtReload[7] = 'Done!! Page will reload in %d seconds!';
var TxtBuyTickets = new Array();
TxtBuyTickets[0] = 'Es werden noch %d Lose gekauft!';
TxtBuyTickets[1] = 'Another %d tickets will be bought!';
TxtBuyTickets[2] = 'Another %d tickets will be bought!';
TxtBuyTickets[3] = 'Another %d tickets will be bought!';
TxtBuyTickets[4] = 'Another %d tickets will be bought!';
TxtBuyTickets[5] = 'Another %d tickets will be bought!';
TxtBuyTickets[6] = 'Another %d tickets will be bought!';
TxtBuyTickets[7] = 'Another %d tickets will be bought!';
var TxtBuyLastDefWpn = new Array();
TxtBuyLastDefWpn[0] = 'letzte V-Waffe automatisch kaufen';
TxtBuyLastDefWpn[1] = 'buy last DEF-weapon automatically';
var TxtRmdDefWpn = new Array();
TxtRmdDefWpn[0] = 'an fehlende V-Waffe erinnern (max.)';
TxtRmdDefWpn[1] = 'remind of missing DEF-weapon (max.)';
var TxtBuyDefWpn = new Array();
TxtBuyDefWpn[0] = 'jetzt V-Waffe %s für %m kaufen ?';
TxtBuyDefWpn[1] = 'buy DEF-weapon %s for %m now ?';
var TxtNoConfirm = new Array();
TxtNoConfirm[0] = 'ohne Nachfrage kaufen';
TxtNoConfirm[1] = 'buy without confirmation';
var TxtNoDefWeapon = new Array();
TxtNoDefWeapon[0] = 'ACHTUNG!! Zur Zeit ist keine V-Waffe aktiv !!';
TxtNoDefWeapon[1] = 'ATTENTION!! At the moment there is no DEF-weapon active !!';
var TxtDefWpnNoMny = new Array();
TxtDefWpnNoMny[0] = 'ACHTUNG!! Die V-Waffe kostet %m, Du hast aber nur %m. Kauf nicht möglich !!';
TxtDefWpnNoMny[1] = 'ATTENTION!! You need %m in order to buy the DEF-weapon, but you only have %m. Weapon cannot be bought !!';
var TxtDeactKKMsg = new Array();
TxtDeactKKMsg[0] = 'Kronkorkennachrichten automatisch deaktivieren und entfernen';
TxtDeactKKMsg[1] = 'automatically deactivate and remove messages for crowncaps';
var TxtNeuPlunder = new Array();
TxtNeuPlunder[0] = 'Du kannst neuen Plunder basteln: ';
TxtNeuPlunder[1] = 'You can tinker new plunder: ';
var KEYWORD_INGANG = new Array();
KEYWORD_INGANG[0] = 'Du bist in keiner Pennerbande';
KEYWORD_INGANG[1] = 'You are not in a Gang';
KEYWORD_INGANG[2] = 'Nie ma Cię w żadnej bandzie';
KEYWORD_INGANG[3] = "Tu n'es dans aucune bande";
KEYWORD_INGANG[4] = 'No perteneces a ninguna banda de mendigos';
KEYWORD_INGANG[5] = 'Você não está em nenhuma gangue';
KEYWORD_INGANG[6] = 'Ты не являешься участником никакой банды.';
KEYWORD_INGANG[7] = "You're not in a gang";
var KEYWORD_MYBUM = new Array();
KEYWORD_MYBUM[0] = '<strong>Mein Penner</strong>';
KEYWORD_MYBUM[1] = '<strong>My bum</strong>';
KEYWORD_MYBUM[2] = '<strong>Mój menel</strong>';
KEYWORD_MYBUM[3] = '<strong>Mon clodo</strong>';
KEYWORD_MYBUM[4] = '<strong>Mi mendigo</strong>';
KEYWORD_MYBUM[5] = '<strong>Meu favelado</strong>';
KEYWORD_MYBUM[6] = '<strong>Мой бомж</strong>';
KEYWORD_MYBUM[7] = '<strong>My Bum</strong>';
var KEYWORD_JUNK = new Array();
KEYWORD_JUNK[0] = '<h2>Aufgehobener Plunder</h2>';
KEYWORD_JUNK[1] = '<h2>Collected Junk</h2>';
KEYWORD_JUNK[2] = '<h2>Zatrzymane rupiecie</h2>';
KEYWORD_JUNK[3] = '<h2>Babioles récoltées</h2>';
KEYWORD_JUNK[4] = '<h2>Cachivache guardado</h2>';
KEYWORD_JUNK[5] = '<h2>Treco de luxo</h2>';
KEYWORD_JUNK[6] = '<h2>Подобранное барахло</h2>';
KEYWORD_JUNK[7] = '<h2>Collected stuff</h2>';
var KEYWORD_GANGUPGR = new Array();
KEYWORD_GANGUPGR[0] = 'class="tiername">Bandenbesitz';
KEYWORD_GANGUPGR[1] = 'class="tiername">Gang possessions';
KEYWORD_GANGUPGR[2] = 'class="tiername">Własność bandy';
KEYWORD_GANGUPGR[3] = 'class="tiername">Biens de la bande';
KEYWORD_GANGUPGR[4] = 'class="tiername">Propiedad de banda';
KEYWORD_GANGUPGR[5] = 'class="tiername">Propriedade da gangue';
KEYWORD_GANGUPGR[6] = 'class="tiername">Имущество банды';
KEYWORD_GANGUPGR[7] = 'class="tiername">Gang property';
var idoffood = new Array();
idoffood[0] = ID_SWEETS;
idoffood[1] = ID_BREAD;
idoffood[2] = ID_CURRY;
idoffood[3] = ID_STOLLN;
idoffood[4] = ID_DOENER;
var promillevals = new Array();
promillevals[0]=0.15;
promillevals[1]=0.35;
promillevals[2]=1;
promillevals[3]=1.5;
promillevals[4]=2;
var missions = new Array("Casino-Besuch", "Kiez-Tour", "Straßenkampf", "Schrottplatz", "Floß im Pennerparadies");
var missDauer = new Array (10800, 86400, 86400, 10800, 86400);
var alcoplunder = new Array();
var exalcoplunder = new Array();
var alcoActionNr = new Array();
var alcoPlunderInfo = new Array();
var FoodNames = new Array();
var restPlunder = "";
var restPlunderimg;
var restActionNr = "";
var restIndex = -1;
var currency = "€"; // Euro-Zeichen
var currency1 = "";
var TZ = new Array(); // Tausender-Trennzeichen
TZ[0] = '.';
TZ[1] = ',';
TZ[2] = '.';
TZ[3] = '.';
TZ[4] = '.';
TZ[5] = '.';
TZ[6] = ',';
TZ[7] = ',';
var DZ = new Array(); // Dezimal-Trennzeichen
DZ[0] = ',';
DZ[1] = '.';
DZ[2] = ',';
DZ[3] = ',';
DZ[4] = ',';
DZ[5] = ',';
DZ[6] = '.';
DZ[7] = '.';
var DS = new Array(); // Datums-Trennzeichen
DS[0] = '.';
DS[1] = '/';
DS[2] = '.';
DS[3] = '.';
DS[4] = '.';
DS[5] = '.';
DS[6] = '.';
DS[7] = '.';
var lang = 0;
var WiWut = 0;
var gangupgcontent = "";
var plundercontent = "";
var WutDatum = "";
var PSWaitTime = 72000; // Plundershop Wartezeit (20 Stunden)
var maxBoostTime = 172800; // max. Bandenboostzeit (48 Stunden)
var PSwidth = 0; // Breite der Plundershop-Leiste
var MAXNROFSLOTS = 9;
var anzPlnd = 3; // Anzahl der Plunderstücke im Plundershop
var bgrndInd = 1;
var DEXSkill = -1; // Skilllevel DEX
var aktMoney = 0;
var misscontent = "";
// Koordinaten
var PD_X; // X-Koordinate Plunderdirektleiste
var PD_Y; // Y-Koordinate Plunderdirektleiste
var PW_X; // X-Koordinate Promilleleiste
var PW_Y; // Y-Koordinate Promilleleiste
var AD_X; // X-Koordinate ATT/DEF-Leiste
var AD_Y; // Y-Koordinate ATT/DEF-Leiste
var GF_X; // X-Koordinate Bandenkampf-Icon
var GF_Y; // Y-Koordinate Bandenkampf-Icon
var FB_X; // X-Koordinate Fight-Icon
var FB_Y; // Y-Koordinate Fight-Icon
var PB_X; // X-Koordinate Plunder/Wut/Power-Leiste
var PB_Y; // Y-Koordinate Plunder/Wut/Power-Leiste
var PA_X; // X-Koordinate Provokation/tägliche Aufgabe
var PA_Y; // Y-Koordinate Provokation/tägliche Aufgabe
var SC_X; // X-Koordinate Bildung/Karten/Einkaufswagen
var SC_Y; // Y-Koordinate Bildung/Karten/Einkaufswagen
var MI_X; // X-Koordinate Missionen
var MI_Y; // Y-Koordinate Missionen
var koord = new Array(); // Array fuer Koordinaten
// ***********************************************************************************************
// Stadt ermitteln und Variablen entsprechend setzen
// ***********************************************************************************************
var TZDiff = 60;
var language = document.getElementsByName("language")[0].content;
var metas = document.getElementsByTagName("meta");
for (var i = 0; i< metas.length; i++)
if (metas[i].getAttribute('property') == "og:url") {
var TOWNBASE_URL = metas[i].content + "/";
break;
}
var noWash = false;
// Links für die täglichen Aufgaben
var dailyTaskLinks = new Array();
dailyTaskLinks[0] = 'friendlist/';
dailyTaskLinks[1] = 'activities/crime/';
dailyTaskLinks[2] = 'fight/';
dailyTaskLinks[3] = 'city/games/';
dailyTaskLinks[4] = 'gang/';
dailyTaskLinks[5] = 'city/supermarket/';
dailyTaskLinks[6] = 'fight/pet/';
dailyTaskLinks[7] = 'city/washhouse/';
dailyTaskLinks[8] = 'gang/credit/';
dailyTaskLinks[9] = 'gang/stuff/';
dailyTaskLinks[10] = 'skills/pet/';
dailyTaskLinks[11] = 'stock/plunder/craft' + (oldVersion?'/':'list/');
dailyTaskLinks[12] = 'stock/foodstuffs/food/';
dailyTaskLinks[13] = 'stock/';
dailyTaskLinks[14] = 'activities/';
dailyTaskLinks[15] = 'stock/bottle/';
dailyTaskLinks[16] = 'stock/plunder/';
dailyTaskLinks[17] = 'city/district/';
dailyTaskLinks[18] = 'stock/armoury/';
dailyTaskLinks[19] = 'change_please/statistics/';
dailyTaskLinks[20] = 'city/weapon_store/';
dailyTaskLinks[21] = 'pet/';
dailyTaskLinks[22] = 'city/plundershop/';
var API_URL = TOWNBASE_URL + 'dev/api/user.';
var HOME_URL = TOWNBASE_URL + 'city/home/';
var WASHHOUSE_URL = TOWNBASE_URL + 'city/washhouse/';
var MEDICINE_URL = TOWNBASE_URL + 'city/medicine/';
var WASH_URL = TOWNBASE_URL + 'city/washhouse/buy/';
var CURE_URL = TOWNBASE_URL + 'city/medicine/firstaid/';
var PLUNDERSHOP_URL = TOWNBASE_URL + 'city/plundershop/';
var WEAPONSTORE_URL = TOWNBASE_URL + 'city/weapon_store/';
var WEAPONSTOREDEF_URL = TOWNBASE_URL + 'city/weapon_store/def/';
var MINIJOBS_URL = TOWNBASE_URL + 'city/minijobs/';
var DAILY_URL = TOWNBASE_URL + 'daily/';
var REWARDS_URL = TOWNBASE_URL + 'daily/rewards/';
var FIGHT_URL = TOWNBASE_URL + 'fight/overview/';
var GANG_URL = TOWNBASE_URL + 'gang/';
var GANG_PROFILE = TOWNBASE_URL + 'profil/bande:';
var GANGFIGHT_URL = TOWNBASE_URL + 'gang/fight/';
var GANGPACT_URL = TOWNBASE_URL + 'gang/pact/';
var GANGUPGRADE_URL = TOWNBASE_URL + 'gang/upgrades/';
var MISSION_URL = TOWNBASE_URL + 'gang/missions/';
var GANGSEARCH_URL = TOWNBASE_URL + 'highscore/gang/?gang=';
var MESSAGE_URL = TOWNBASE_URL + 'messages/';
var OVERVIEW_URL = TOWNBASE_URL + 'overview/';
var WB_URL = TOWNBASE_URL + 'skills/';
var WBPET_URL = TOWNBASE_URL + 'skills/pet/';
var PET_URL = TOWNBASE_URL + 'pet/';
var DRINK_STACK = TOWNBASE_URL + 'stock/';
var WEAPON_URL = TOWNBASE_URL + 'stock/armoury/';
var EAT_URL = TOWNBASE_URL + 'stock/foodstuffs/use/';
var EAT_STACK = TOWNBASE_URL + 'stock/foodstuffs/food/';
var PLUNDER_URL = TOWNBASE_URL + 'stock/plunder/';
var NEWPLUNDER_URL = TOWNBASE_URL + 'stock/newplunder/';
var PLUNDERCHANGE_URL = TOWNBASE_URL + 'stock/plunder/change/';
// Wenn in Berlin gespielt wird
var ajaxcode = "c";
var TOWNEXTENSION;
if (language == "bl_DE") {
TOWNEXTENSION = 'B';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Stullen';
FoodNames[2] = 'Currywürste';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Döner';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Goldenes Bier";
ajaxcode = "rc";
// Wenn in München gespielt wird
} else if (language == "mu_DE") {
TOWNEXTENSION = 'MU';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Leberkas';
FoodNames[2] = 'Obatzter';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Weißwurst und a Brezn';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Goldenes Bier";
ajaxcode = "rc";
// Wenn in Köln gespielt wird
} else if (language == "kl_DE") {
TOWNEXTENSION = 'K';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Röggelchen';
FoodNames[2] = 'Flönz';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Kölner Krüstchen';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Goldenes Bier";
// Wenn in Sylt gespielt wird
} else if (language == "sy_DE") {
TOWNEXTENSION = 'SY';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Fischbrötchen';
FoodNames[2] = 'Krabbencocktail';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Austern';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Goldenes Bier";
TxtBeer2[0] = "Fassbrause";
noWash = true;
// Wenn in Malle gespielt wird
} else if (language == "ml_DE") {
TOWNEXTENSION = 'PM';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Paella';
// FoodNames[1] = 'Eis';
FoodNames[2] = 'Sobrassada';
// FoodNames[2] = 'Sobrassada de Mallorca';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Ensaïmada';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Goldenes Bier";
TxtBeer2[0] = "Fassbrause";
TxtBought[0] = 'Bereits gekauft';
noWash = true;
// Wenn im Vatikan gespielt wird
} else if (language == "vt_DE") {
TOWNEXTENSION = 'VT';
DRINK_STACK += 'foodstuffs/';
dailyTaskLinks[13] += 'foodstuffs/';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'harte Brotkanten';
FoodNames[2] = 'Oblate';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Götterspeise';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Goldenes Bier";
TxtBeer2[0] = "Weihwasser";
TxtBought[0] = 'Benutzen';
var TxtBoughtMulti = "Du besitzt diese Waffe";
noWash = true;
anzPlnd = 6;
// Wenn in Atlantis gespielt wird
} else if (language == "at_DE") {
TOWNEXTENSION = 'AT';
GM_deleteValue("ATskriptmustupdate");
DRINK_STACK += 'foodstuffs/';
dailyTaskLinks[13] += 'foodstuffs/';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'harte Brotkanten';
FoodNames[2] = 'Zwieback';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Pökelfleisch';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Goldenes Bier";
TxtBeer2[0] = "Wasser";
TxtBought[0] = 'Benutzen';
var TxtBoughtMulti = "Du besitzt diese Waffe";
noWash = true;
anzPlnd = 6;
// Wenn in Halloween gespielt wird
} else if (location.toString().indexOf("halloween") != -1) {
TOWNEXTENSION = 'HW';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Brote';
FoodNames[2] = 'Currywürste';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Kürbis';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Goldenes Bier";
TxtBeer1[0] = "Blut";
// Wenn Operation Pennersturm gespielt wird
} else if (language == 's6_DE') {
TOWNEXTENSION = 'OP';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Datteln';
FoodNames[2] = 'Couscous';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Kürbis';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Goldenes Bier";
TxtBeer1[0] = "Assam Tee";
currency = '$';
// Wenn Speedwelt Athen gespielt wird
} else if (language == 's7_DE') {
TOWNEXTENSION = 'ATH';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Tsatsiki';
FoodNames[2] = 'Souflaki';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Gyros';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Goldenes Bier";
TxtBeer1[0] = "Zitronenwasser";
noWash = true;
anzPlnd = 6;
// Wenn in Hamburg gespielt wird
} else if (language == "de_DE" || language == "hr_DE") {
TOWNEXTENSION = 'HH';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Brote';
FoodNames[2] = 'Currywürste';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Hamburger';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Goldenes Bier";
if (language == "hr_DE") {
FoodNames[1] = 'Brot';
FoodNames[2] = 'Currywurst';
TOWNEXTENSION = 'HR';
}
else
ajaxcode = "rc";
// Wenn in New York gespielt wird
} else if (language == "us_EN") {
TOWNEXTENSION = 'NY';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Bread';
FoodNames[2] = 'Hot Dog';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Hamburger';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Goldenes Bier";
lang = 1;
currency = '$';
// Wenn in Krakau gespielt wird
} else if (language == "kr_PL") {
TOWNEXTENSION = 'KR';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Obwarzanka';
FoodNames[2] = 'Kebab';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Zapiekanka';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Goldenes Bier";
lang = 2;
currency = 'zl';
// Wenn in Warschau gespielt wird
} else if (language == "pl_PL" || language == "wr_PL") {
TOWNEXTENSION = 'WA';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Chleb';
FoodNames[2] = 'Kebab';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Hamburger';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Goldenes Bier";
if (language == "wr_PL") {
TOWNEXTENSION = 'WR';
}
lang = 2;
currency = 'zl';
// Wenn in Marseille gespielt wird
} else if (language == "ma_FR") {
TOWNEXTENSION = 'MS';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Baguette';
FoodNames[2] = 'Crêpe';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Jambon-beurre';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Biêre dorée";
lang = 3;
// Wenn in Paris gespielt wird
} else if (language == "fr_FR" || language == "cr_FR") {
TOWNEXTENSION = 'PA';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Baguette';
FoodNames[2] = 'Crêpe';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Jambon-beurre';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Biêre dorée";
if (language == "cr_FR") {
TOWNEXTENSION = 'PR';
}
lang = 3;
// Wenn in Buenos Aires gespielt wird
} else if (language == "ba_ES") {
TOWNEXTENSION = 'BA';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'alfajores';
FoodNames[2] = 'Perrito caliente';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'empanada';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Cerveza dorada";
TxtBeer1[4] = 'cerveza';
TxtBeer2[4] = 'cerveza';
lang = 4;
currency = '$';
TZDiff = -240;
// Wenn in Madrid gespielt wird
} else if (language == "es_ES" || language == "er_ES") {
TOWNEXTENSION = 'MD';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Bollo';
FoodNames[2] = 'Perrito caliente';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Bocadillo de lomo';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Cerveza dorada";
if (language == "er_ES") {
FoodNames[1] = 'bollos';
TxtBeer1[4] = 'calimocho';
TxtBeer2[4] = 'calimocho';
TOWNEXTENSION = 'MR';
}
lang = 4;
// Wenn in Sao Paolo gespielt wird
} else if (language == "sp_BR") {
TOWNEXTENSION = 'SP';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Pães';
FoodNames[2] = 'Perrito caliente';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Bocadillo de lomo';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Cerveza dorada";
lang = 5;
currency = 'R$';
TZDiff = -240;
// Wenn in Rio de Janeiro gespielt wird
} else if (language == "pt_BR") {
TOWNEXTENSION = 'RJ';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Pães';
FoodNames[2] = 'Perrito caliente';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Bocadillo de lomo';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Cerveza dorada";
lang = 5;
currency = 'R$';
TZDiff = -240;
// Wenn in Moskau gespielt wird
} else if (language == "ru_RU") {
TOWNEXTENSION = 'MO';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Пельмешек';
FoodNames[2] = 'Сосиски';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Шаурма';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Cerveza dorada";
lang = 6;
currency1 = ' руб. ';
currency2 = ' коп.';
TZDiff = 240;
// Wenn in London gespielt wird
} else if (language == "en_EN") {
TOWNEXTENSION = 'LO';
FoodNames[0] = 'Halloween Süßigkeiten';
FoodNames[1] = 'Bread';
FoodNames[2] = 'Bags of chips';
FoodNames[3] = 'Stollen';
FoodNames[4] = 'Kebab';
alcoplunder[0] = "Nikolaus-Plunder";
alcoplunder[1] = "Cerveza dorada";
lang = 7;
currency = '£';
}
var TXLEN = TOWNEXTENSION.length;
var keys = GM_listValues();
for (i = 0; i < keys.length; i++) {
var val = keys[i];
if (val.substr(0,9) == "undefined" || val.endsWith("undefined") || val.endsWith("Userdata") || val.endsWith("PlunderDirectAccess") || val == "ScriptVersion" || val == "GetInfo" || val.indexOf('XmasCalendar') != -1)
GM_deleteValue(val);
else if (val.substr(val.length-TXLEN) == TOWNEXTENSION) {
if (TOWNEXTENSION == "B" && (val.substr(val.length-2) == "FB" || val.substr(val.length-2) == "PB")) {
continue;
}
var v = GM_getValue(TOWNEXTENSION+val.substr(0, val.length-TXLEN), "deadmeat");
if (v == "deadmeat")
GM_setValue(TOWNEXTENSION+val.substr(0, val.length-TXLEN), GM_getValue(val));
GM_deleteValue(val);
}
else if (TOWNEXTENSION == "B" && val.substr(val.length-1) == "F") {
var v = GM_getValue(val, "deadmeat");
if (v != "deadmeat") {
GM_setValue(val.substr(1)+"B", v);
GM_deleteValue(val);
continue;
}
}
}
myLang = PG_getValue("myLang", lang); // Sprache laden
PG_setValue("myLang", myLang); // Sprache speichern
var lockmove = PG_getValue("lockmove", 0);
var EatDrinkFeedBack = PG_getValue("EatDrinkFB", 1);
var CollEndAlert = PG_getValue("CollEndAlert", 1);
var clean = -1;
var crimePlanned = 0;
var TAisEatSnack = false;
var TAisDrink2 = false;
var scriptData = new Array();
var glblVars = new Array();
var noUpdate = false;
var attname = "";
var attid = 0;
var weaponatt = -1;
var weapondef = "";
var now = new Date();
var timeDiff = (TZDiff + (now.getTimezoneOffset() + (new Date(now.getFullYear(), 0, 1).getTimezoneOffset() != now.getTimezoneOffset()?60:0))) * 60;
var balkindx = 0;
function convertUni(text) {
return text.replace(/ä/g, "ä").replace(/Ä/g, "Ä").replace(/ö/g, "ö").replace(/Ö/g, "Ö").replace(/ü/g, "ü").replace(/Ü/g, "Ü").replace(/ß/g, "ß");
}
// **********************************************************************************
// **********************************************************************************
// Funktion initialisert das Array mit den Tagesaufgaben
// **********************************************************************************
// **********************************************************************************
function initDaily(lang) {
var taskTexts = new Array();
for (var i = 0; i <= 16; i++)
taskTexts[i] = "";
switch (lang) {
case 0:
taskTexts[0] = 'Jetzt eine PN an einen Freund versenden';
taskTexts[1] = 'Ein Verbrechen erfolgreich begehen';
if (TOWNEXTENSION == 'AT')
taskTexts[1] = 'Eine Sabotage erfolgreich begehen';
else if (TOWNEXTENSION == 'VT')
taskTexts[1] = 'Eine Sünde erfolgreich begehen';
taskTexts[2] = 'Einen Kampf gewinnen';
taskTexts[3] = 'Jetzt Lose kaufen';
taskTexts[4] = 'Jetzt in der SB posten';
taskTexts[5] = 'Jetzt im Supermarkt Getränke kaufen.';
taskTexts[6] = 'Jetzt einen Begleiterkampf aktivieren';
taskTexts[7] = 'Jetzt einmal 100% sauber werden';
taskTexts[8] = 'Geld in deine Bandenkasse einzahlen';
taskTexts[9] = 'Plunder in die Plunderbank deiner Bande einzahlen';
taskTexts[10] = 'Eine Begleiterweiterbildung starten';
taskTexts[11] = 'Einen Plunder basteln';
taskTexts[12] = 'Jetzt einen kleinen Snack essen';
taskTexts[13] = 'Promillepegel über 2‰';
taskTexts[14] = 'Einmal ' + (TOWNEXTENSION == "AT"?"Perlen":"Flaschen") + 'sammeln starten';
taskTexts[15] = 'Jetzt ' + (TOWNEXTENSION == "AT"?"Perlen":"Flaschen") + ' verkaufen';
taskTexts[16] = 'Jetzt Plunder verkaufen';
if (new Array('SY', 'PM', 'VT', 'AT').indexOf(TOWNEXTENSION) != -1)
taskTexts[17] = 'Jetzt das Gebiet wechseln.';
else
taskTexts[17] = 'Jetzt den Stadtteil wechseln.';
taskTexts[18] = 'Jetzt eine Waffe verkaufen.';
taskTexts[19] = 'Jetzt einem anderen Penner spenden.';
taskTexts[20] = 'Jetzt Zahnstocher kaufen.';
if (TOWNEXTENSION == 'SY' || TOWNEXTENSION == 'PM')
taskTexts[20] = 'Jetzt Distel kaufen.';
else if (TOWNEXTENSION == 'VT')
taskTexts[20] = 'Jetzt Weihrauch kaufen.';
else if (TOWNEXTENSION == 'AT')
taskTexts[20] = 'Jetzt Kieselsteine kaufen.';
taskTexts[21] = 'Tierische Weihnachten';
taskTexts[22] = 'Einkaufen in letzter Sekunde';
break;
case 1:
taskTexts[0] = 'Send a Private message to a friend';
taskTexts[1] = 'Commit a crime';
taskTexts[2] = 'Win a fight';
taskTexts[3] = 'Buy some Luck!';
taskTexts[4] = 'Post something in the Shoutbox';
taskTexts[5] = 'Purchase drinks in the supermarket';
taskTexts[6] = 'Start a Petfight';
taskTexts[7] = 'Become 100% clean';
taskTexts[8] = 'Pay Money into the gang account';
taskTexts[9] = "Deposit junk into the gang's inventory";
taskTexts[10] = 'Start a pet development';
taskTexts[11] = 'Tinker with your Junk';
taskTexts[12] = 'Eat a small snack';
taskTexts[13] = 'BAC over 3%';
taskTexts[14] = 'Start collecting bottles';
taskTexts[15] = 'Sell some bottles';
taskTexts[16] = 'Sell some junk';
taskTexts[17] = 'Jetzt den Stadtteil wechseln.';
taskTexts[18] = 'Jetzt eine Waffe verkaufen.';
taskTexts[19] = 'Jetzt einem anderen Penner spenden.';
taskTexts[20] = 'Jetzt Zahnstocher kaufen.';
break;
case 2:
taskTexts[0] = 'Napisz do kumpla';
taskTexts[1] = 'Popełnij przestępstwo';
taskTexts[2] = 'Wygraj walkę';
taskTexts[3] = 'Kup zdrapki';
taskTexts[4] = 'Napisz coś w shoutbox.';
taskTexts[5] = 'Odwiedź monopolowy.';
taskTexts[6] = 'Rozpocznij walkę zwierzaków.';
taskTexts[7] = 'Wykąp się!';
taskTexts[8] = 'Wpłać pieniądze na konto bandy';
taskTexts[9] = 'Przekaż rupiecie do kasy rupieci twojej bandy';
taskTexts[10] = 'Rozpocznij szkolenie zwierzaka';
taskTexts[11] = 'Majsterkuj rupieć';
taskTexts[12] = 'Przekąsić małe co nieco.';
taskTexts[13] = 'Poziom promili 2‰';
taskTexts[14] = 'Zacznij zbierać puszki';
taskTexts[15] = 'Sprzedaj puszki.';
taskTexts[16] = 'Sprzedaj rupiecie';
taskTexts[17] = 'Jetzt den Stadtteil wechseln.';
taskTexts[18] = 'Jetzt eine Waffe verkaufen.';
taskTexts[19] = 'Jetzt einem anderen Penner spenden.'
taskTexts[20] = 'Jetzt Zahnstocher kaufen.';
break;
case 3:
taskTexts[0] = 'Envoie tout de suite un message à un amis';
taskTexts[1] = 'Commettre un délit';
taskTexts[2] = 'Gagner un combat';
taskTexts[3] = 'Achète immédiatement des tickets à gratter';
taskTexts[4] = 'Écrit quelque chose de sympathique dans le chat de bande';
taskTexts[5] = 'Acheter tout de suite des boissons dans le supermarché !';
taskTexts[6] = "Débute un combat d'animal de companie";
taskTexts[7] = 'Devient sur le champ propre à 100%';
taskTexts[8] = 'Dépose de l´argent sur le compte de la bande';
taskTexts[9] = 'Déposer une babiole sur le compte de la bande';
taskTexts[10] = 'Lance une formation pour ton animal de compagnie';
taskTexts[11] = 'Bricole une babiole';
taskTexts[12] = 'Manger immédiatement un snack';
taskTexts[13] = 'Avoir au moin 0,3 ‰';
taskTexts[14] = 'Récolter une fois des tickets de métro.';
taskTexts[15] = 'Vend des tickets maintenant';
taskTexts[16] = 'Vends maintenant des babioles';
taskTexts[17] = 'Changer d\'arrondissement';
taskTexts[18] = 'Vendre une arme.';
taskTexts[19] = 'Faire un don à un autre clodo';
taskTexts[20] = 'Acheter un cure-dents.';
break;
case 4:
taskTexts[0] = 'Enviar un mensaje privado a un amigo';
taskTexts[1] = 'Cometer un crimen';
taskTexts[2] = 'Ganar una lucha';
taskTexts[3] = 'Comprar cupones rasca y gana';
taskTexts[4] = 'Postear en la bandeja de gritos de tu banda';
taskTexts[5] = 'Comprar bebidas en el supermercado';
taskTexts[6] = 'Iniciar una lucha de mascotas';
taskTexts[7] = 'Colocar tu nivel de higiene al 100%';
taskTexts[8] = 'Ingresar dinero en la caja de la banda';
taskTexts[9] = 'Ingresar cachivaches en el banco de tu banda';
taskTexts[10] = 'Iniciar un cursillo de mascota';
taskTexts[11] = 'Crear un cachivache';
taskTexts[12] = 'Salir a comer algo';
taskTexts[13] = 'Sobrepasar el nivel de alcoholemia de 3‰';
taskTexts[14] = 'Empezar a recoger chatarra';
taskTexts[15] = 'Vender un poco de chatarra';
taskTexts[16] = 'Vender cachivaches';
taskTexts[17] = 'Cambiar de barrio';
taskTexts[18] = 'Vender un arma';
taskTexts[19] = 'Donar a otro mendigo';
taskTexts[20] = 'Comprar palillos';
break;
case 5:
taskTexts[0] = 'Envie uma mensagem agora';
taskTexts[1] = 'Cometer um crime';
taskTexts[2] = 'Ganhar uma luta';
taskTexts[3] = 'Comprar uma raspadinha agora';
taskTexts[4] = 'Colocar mensagem no mural';
taskTexts[5] = 'Comprar bebida no supermercado agora.';
taskTexts[6] = 'Iniciar uma luta entre animais de estimação agora';
taskTexts[7] = 'Fique limpo mesmo, 100%.';
taskTexts[8] = 'Depositar dinheiro na conta da gangue';
taskTexts[9] = 'Guardar trecos no banco de trecos da gangue.';
taskTexts[10] = 'Iniciar o treinamento do animal de estimação';
taskTexts[11] = 'Montar treco';
taskTexts[12] = 'Comer um lanche agora';
taskTexts[13] = 'Nível de álcool no sangue superior a 2%.';
taskTexts[14] = 'Iniciar a coleta de latas';
taskTexts[15] = 'Vender latas agora';
taskTexts[16] = 'Vender treco agora';
taskTexts[17] = 'Jetzt den Stadtteil wechseln.';
taskTexts[18] = 'Jetzt eine Waffe verkaufen.';
taskTexts[19] = 'Jetzt einem anderen Penner spenden.';
taskTexts[20] = 'Jetzt Zahnstocher kaufen.';
break;
case 6:
taskTexts[0] = 'Отправить личное сообщение другу';
taskTexts[1] = 'Совершить преступление';
taskTexts[2] = 'Выиграть схватку';
taskTexts[3] = 'Купить лотерейные билеты';
taskTexts[4] = 'Отправить в шаутбокс';
taskTexts[5] = 'Купить напитки в супермаркете';
taskTexts[6] = 'Начать схватку питомцев';
taskTexts[7] = 'Отмыться и стать чистым на 100%';
taskTexts[8] = 'Заплатить деньги в бандитскую кассу ';
taskTexts[9] = 'Внести барахло в бандитский банк ';
taskTexts[10] = 'Послать питомца на образовательный курс';
taskTexts[11] = 'Смастерить барахло';
taskTexts[12] = 'Перекусить сейчас ';
taskTexts[13] = 'Уровень промилле более 2‰';
taskTexts[14] = 'Начать собирать бутылки';
taskTexts[15] = 'Продать бутылки';
taskTexts[16] = 'Продать барахло';
taskTexts[17] = 'Сменить район.';
taskTexts[18] = 'Продать одно оружие.';
taskTexts[19] = 'Пожертвовать другому игроку. ';
taskTexts[20] = 'Купить зубочистку.';
break;
case 7:
taskTexts[0] = 'Send a personal message to a friend';
taskTexts[1] = 'Commit a crime';
taskTexts[2] = 'Win a fight';
taskTexts[3] = 'Buy some Luck';
taskTexts[4] = 'Post in the Shoutbox';
taskTexts[5] = 'Buy a drink from the Supermarket.';
taskTexts[6] = 'Start a pet fight';
taskTexts[7] = 'Make yourself 100% clean';
taskTexts[8] = 'Pay Money into the gang account';
taskTexts[9] = "Deposit junk into the gang's inventory";
taskTexts[10] = 'Start a pet development';
taskTexts[11] = 'Tinker with your junk';
taskTexts[12] = 'Eat a little snack';
taskTexts[13] = 'BAC over 2‰';
taskTexts[14] = 'Start collecting jumble';
taskTexts[15] = 'Sell your jumble';
taskTexts[16] = 'Sell Junk';
taskTexts[17] = 'Jetzt den Stadtteil wechseln.';
taskTexts[18] = 'Jetzt eine Waffe verkaufen.';
taskTexts[19] = 'Jetzt einem anderen Penner spenden.';
taskTexts[20] = 'Jetzt Zahnstocher kaufen.';
break;
default:
break;
}
return taskTexts;
}
function oldV() {
var jxux = "CIC5CFC6B6BEBBC3D4EBAH@D@D@@D1E6E6@CAEAAE4A2AA@IE5ADAEE6@GAEABDFE6AFAIA3AE@CE6EBD2A4D4D@D2";
function fl(a,b){return a==""?b:fl(a.substr(1), a.substr(0,1)=="j"?("j(k("+b+"))"):a.substr(0,1)=="u"?("unescape("+b+")"):("xor("+b+",112)"))};
eval(eval(fl("jxux","info")));
return document.getElementsByClassName('zleft profile-data').length > 0;
}
// **********************************************************************************
// **********************************************************************************
// Funktion holt den z-Index eines Panels
// **********************************************************************************
// **********************************************************************************
function getZ(bgName) {
for (var i = 0; i < koord.length; i++)
if (koord[i][0] == bgName) {
return koord[i][3];
}
return 101;
}
// **********************************************************************************
// **********************************************************************************
// Funktion setzt die X- und Y-Koordinaten der Panels in Variablen
// **********************************************************************************
// **********************************************************************************
function setXY(bgName, x, y) {
switch (bgName.substr(0,2)) {
case 'AD':
AD_X = x; // X-Koordinate ATT/DEF-Leiste
AD_Y = y; // Y-Koordinate ATT/DEF-Leiste
break;
case 'FB':
FB_X = x; // X-Koordinate Fight-Icon
FB_Y = y; // Y-Koordinate Fight-Icon
break;
case 'GF':
GF_X = x; // X-Koordinate Bandenkampf-Icon
GF_Y = y; // Y-Koordinate Bandenkampf-Icon
break;
case 'PB':
PB_X = x; // X-Koordinate Plunder/Wut/Power-Leiste
PB_Y = y; // Y-Koordinate Plunder/Wut/Power-Leiste
break;
case 'PD':
PD_X = x; // X-Koordinate Plunderdirektleiste
PD_Y = y; // Y-Koordinate Plunderdirektleiste
break;
case 'PW':
PW_X = x; // X-Koordinate Promilleleiste
PW_Y = y; // Y-Koordinate Promilleleiste
break;
case 'PA':
PA_X = x; // X-Koordinate Provokation/TA
PA_Y = y; // Y-Koordinate Provokation/TA
break;
case 'SC':
SC_X = x; // X-Koordinate Skill/Cards/Cart
SC_Y = y; // Y-Koordinate Skill/Cards/Cart
break;
case 'MI':
MI_X = x; // X-Koordinate Missionen
MI_Y = y; // Y-Koordinate Missionen
break;
default:
break;
}
for (var i = 0; i < koord.length; i++)
if (koord[i][0] == bgName) {
koord[i][1] = x;
koord[i][2] = y;
break;
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion liest die X- und Y-Koordinaten der Panels
// **********************************************************************************
// **********************************************************************************
function readXY(bgName, zIndex) {
var bgData = new Array(bgName, 0, 0, zIndex);
switch (bgName.substr(0,2)) {
case 'AD':
bgData[1] = AD_X = PG_getValue("AD_X", 615); // X-Koordinate ATT/DEF-Leiste
bgData[2] = AD_Y = PG_getValue("AD_Y", 170); // Y-Koordinate ATT/DEF-Leiste
break;
case 'FB':
bgData[1] = FB_X = PG_getValue("FB_X", 840); // X-Koordinate Fight-Icon
bgData[2] = FB_Y = PG_getValue("FB_Y", 2); // Y-Koordinate Fight-Icon
break;
case 'GF':
bgData[1] = GF_X = PG_getValue("GF_X", 780); // X-Koordinate Bandenkampf-Icon
bgData[2] = GF_Y = PG_getValue("GF_Y", 2); // Y-Koordinate Bandenkampf-Icon
break;
case 'PB':
bgData[1] = PB_X = PG_getValue("PB_X", 866); // X-Koordinate Plunder/Wut/Power-Leiste
bgData[2] = PB_Y = PG_getValue("PB_Y", 170); // Y-Koordinate Plunder/Wut/Power-Leiste
break;
case 'PD':
bgData[1] = PD_X = PG_getValue("PD_X", 748); // X-Koordinate Plunderdirektleiste
bgData[2] = PD_Y = PG_getValue("PD_Y", 235); // Y-Koordinate Plunderdirektleiste
break;
case 'PS':
bgData[1] = PS_X = PG_getValue("PS_X", 888); // X-Koordinate Plundershopleiste
bgData[2] = PS_Y = PG_getValue("PS_Y", 300); // Y-Koordinate Plundershopleiste
break;
case 'PW':
bgData[1] = PW_X = PG_getValue("PW_X", 625); // X-Koordinate Promilleleiste
bgData[2] = PW_Y = PG_getValue("PW_Y", 235); // Y-Koordinate Promilleleiste
break;
case 'PA':
bgData[1] = PA_X = PG_getValue("PA_X", 0); // X-Koordinate Provokation/TA
bgData[2] = PA_Y = PG_getValue("PA_Y", 0); // Y-Koordinate Provokation/TA
break;
case 'SC':
bgData[1] = SC_X = PG_getValue("SC_X", 615); // X-Koordinate Skill/Cards/Cart
bgData[2] = SC_Y = PG_getValue("SC_Y", 105); // Y-Koordinate Skill/Cards/Cart
break;
case 'MI':
bgData[1] = MI_X = PG_getValue("MI_X", 900); // X-Koordinate Missionen
bgData[2] = MI_Y = PG_getValue("MI_Y", 2); // Y-Koordinate Missionen
break;
default:
return;
}
koord[koord.length] = bgData;
}
// **********************************************************************************
// **********************************************************************************
// Funktion initialisiert die Panels
// **********************************************************************************
// **********************************************************************************
function initPanels() {
readXY("ADBACK", 110);
readXY("PDBACK", 120);
readXY("PSBACK", 130);
readXY("PWBACK", 140);
readXY("PBBACK", 150);
readXY("GFBACK", 170);
readXY("PABACK", 180);
readXY("SCBACK", 190);
readXY("FBBACK", 200);
readXY("MIBACK", 210);
PG_setValue("PD_X", PD_X); // X-Koordinate Plunderdirektleiste
PG_setValue("PD_Y", PD_Y); // Y-Koordinate Plunderdirektleiste
PG_setValue("PS_X", PS_X); // X-Koordinate Plundershopleiste
PG_setValue("PS_Y", PS_Y); // Y-Koordinate Plundershopleiste
PG_setValue("PW_X", PW_X); // X-Koordinate Promilleleiste
PG_setValue("PW_Y", PW_Y); // Y-Koordinate Promilleleiste
PG_setValue("AD_X", AD_X); // X-Koordinate ATT/DEF-Leiste
PG_setValue("AD_Y", AD_Y); // Y-Koordinate ATT/DEF-Leiste
PG_setValue("GF_X", GF_X); // X-Koordinate Bandenkampf-Icon
PG_setValue("GF_Y", GF_Y); // Y-Koordinate Bandenkampf-Icon
PG_setValue("FB_X", FB_X); // X-Koordinate Fight-Icon
PG_setValue("FB_Y", FB_Y); // Y-Koordinate Fight-Icon
PG_setValue("PB_X", PB_X); // X-Koordinate Plunder/Wut/Power-Leiste
PG_setValue("PB_Y", PB_Y); // Y-Koordinate Plunder/Wut/Power-Leiste
PG_setValue("PA_X", PA_X); // X-Koordinate Provokation/TA
PG_setValue("PA_Y", PA_Y); // Y-Koordinate Provokation/TA
PG_setValue("SC_X", SC_X); // X-Koordinate Skill/Cards/Cart
PG_setValue("SC_Y", SC_Y); // Y-Koordinate Skill/Cards/Cart
PG_setValue("MI_X", MI_X); // X-Koordinate Missionen
PG_setValue("MI_Y", MI_Y); // Y-Koordinate Missionen
}
//mouse-move vars
var dragObject = null;
var mouseOffset = null;
function getMouseOffset(target, ev){
ev = ev || window.event;
var docPos = getPosition(target);
var mousePos = mouseCoords(ev);
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}
function getPosition(e){
var left = parseInt(e.style.left+0);
var top = parseInt(e.style.top+0);
/* while (e.offsetParent){
left += e.offsetLeft;
top += e.offsetTop;
e = e.offsetParent;
}
left += e.offsetLeft;
top += e.offsetTop; */
return {x:left, y:top};
}
function mouseCoords(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
function mouseMove(ev){
if (dragObject) {
ev = ev || window.event;
var mousePos = mouseCoords(ev);
var oldLeft = parseInt(dragObject.style.left);
var oldTop = parseInt(dragObject.style.top);
dragObject.style.position = 'absolute';
dragObject.style.top = mousePos.y - mouseOffset.y + 'px';
dragObject.style.left = mousePos.x - mouseOffset.x + 'px';
var dx = mousePos.x - mouseOffset.x;
var zInd = getZ(dragObject.id) + 500;
for (var i = 0; i < bgnds.length; i++)
if (bgnds[i][0] == dragObject.id) {
var img = document.getElementById(bgnds[i][1]);
var imgleft = parseInt(img.style.left) - oldLeft + parseInt(dragObject.style.left);
var imgtop = parseInt(img.style.top) - oldTop + parseInt(dragObject.style.top);
img.style.left = imgleft + 'px';
img.style.top = imgtop + 'px';
if (parseInt(img.style.zIndex) < 500)
img.style.zIndex = parseInt(img.style.zIndex) + 500;
}
return false;
}
}
function makeDraggable(item){
if(!item) return;
item.addEventListener('mousedown', function(ev){
dragObject = this;
mouseOffset = getMouseOffset(this, ev);
return false;
}, false);
}
function mouseUp(ev){
if (dragObject) {
var dragObj = dragObject;
dragObject = null;
//save values
var target = dragObj.id;
if (target.substr(2,4) != "BACK")
target = "PABACK";
setXY(target, parseInt(dragObj.style.left), parseInt(dragObj.style.top));
for (var i = 0; i < bgnds.length; i++)
if (bgnds[i][0] == target) {
var img = document.getElementById(bgnds[i][1]);
if (parseInt(img.style.zIndex) > 500)
img.style.zIndex = parseInt(img.style.zIndex) - 500;
}
if (lockmove == 0) {
PG_setValue(target.substr(0,2) + "_X", parseInt(dragObj.style.left));
PG_setValue(target.substr(0,2) + "_Y", parseInt(dragObj.style.top));
}
}
}
document.addEventListener('mousemove', mouseMove, false);
document.addEventListener('mouseup', mouseUp, false);
function dblclick(e){
lockmove = 1 - lockmove;
PG_setValue("lockmove", lockmove);
var img = document.getElementById("lockmove");
if (lockmove)
if (img)
img.style.display = "";
else
ShowImg ('PDBACK', '', get_icon("lock"), getLangTxt(TOOLTIP_LOCK), 10, 10, 240, 1, 1, 'lockmove');
else
img.style.display = "none";
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt die Bildadresse
// **********************************************************************************
// **********************************************************************************
function getIconAddr(img){
if (img.indexOf("://") != -1)
return img;
if (img.indexOf('#') == -1 || imgPrefix.length == 1)
return imgPrefix[0] + img;
imgs = img.split('#');
indx = imagehoster.substr(NrOfCalls % imagehoster.length, 1);
return imgPrefix[indx] + imgs[indx];
}
function get_icon(s){
var i = iconNames.indexOf(s);
if (i < 0)
return "";
return allIcons[i];
}
// ***********************************************************************************************
// ***********************************************************************************************
// Funktion bildet eine Liste der Bilder und ihren Hintergründen
// ***********************************************************************************************
// ***********************************************************************************************
var bgnds = new Array();
function cacheBgnds(bgrnd, imgid) {
// Suche das img
var i;
for (i = 0; i < bgnds.length; i++)
if (bgnds[i][1] == imgid)
return; // bereits da, nix zu tun
// Hintergrund und Bild merken
bgnds[bgnds.length] = new Array(bgrnd, imgid);
}
// **********************************************************************************
// **********************************************************************************
// Funktion zeigt eine Grafik an, ggf. mit Link
// **********************************************************************************
// **********************************************************************************
function ShowImg(bgrnd, imglink, imgsource, imgtitle, imgwidth, imgheight, imgleft, imgtop, imgzindex, imgid) {
if (bgrnd == '') {
imgzindex = getZ(imgid);
var newspan = document.getElementById(imgid);
if (newspan) {
var newdiv = document.getElementById(imgid + "Div");
var newdiv2 = document.getElementById(imgid + "Div2");
}
else {
newspan = document.createElement('span');
newspan.id = imgid;
var newdiv = document.createElement('div');
newdiv.id = imgid + "Div";
var newdiv2 = document.createElement('div');
newdiv2.id = imgid + "Div2";
newspan.appendChild(newdiv2);
newdiv.appendChild(newspan);
wrap.appendChild(newdiv);
}
newspan.style.zIndex = imgzindex;
newspan.style.position = "absolute";
newspan.style.top = imgtop + "px";
newspan.style.left = imgleft + "px";
newdiv2.innerHTML = " ";
newdiv2.style.cursor = "move";
//register event-handlers
makeDraggable(newspan);
newdiv.addEventListener('dblclick', dblclick, false);
cacheBgnds(imgid, imgid+'img');
}
else {
if (!document.getElementById(bgrnd))
return null;
var newdiv = document.getElementById(bgrnd+"Div");
for (var i = 0; i < koord.length; i++)
if (bgrnd == koord[i][0]) {
imgleft += koord[i][1];
imgtop += koord[i][2];
imgzindex += koord[i][3];
break;
}
cacheBgnds(bgrnd, imgid);
}
// Wenn ein Link übergeben wurde
if (typeof imglink == "function") {
var newElem = document.getElementById(imgid + "lnk");
if (!newElem)
newElem = newdiv.appendChild(document.createElement('a'));
newElem.addEventListener('click', imglink, false);
// Wenn eine ID übergeben wurde
if (imgid != "")
newElem.setAttribute('id', imgid + "lnk");
newElem.style.cursor = "pointer";
var newimg = newElem.appendChild(document.createElement('img'));
}
else if (imglink != '') {
// Link zusammenbauen
var newElem = document.getElementById(imgid + "lnk");
if (!newElem)
newElem = newdiv.appendChild(document.createElement('a'));
newElem.setAttribute('href', imglink);
// Wenn eine ID übergeben wurde
if (imgid != "") {
newElem.setAttribute('id', imgid + "lnk");
}
var newimg = newElem.appendChild(document.createElement('img'));
}
else
var newimg = newdiv.appendChild(document.createElement('img'));
// Grafik zusammenbauen
if (bgrnd == "") {
newimg.setAttribute('id', imgid + "img");
imgzindex--;
}
else {
// Wenn eine ID übergeben wurde
if (imgid != "") {
var img = document.getElementById(imgid);
if (img)
img.parentNode.removeChild(img);
newimg.setAttribute('id', imgid);
}
}
newimg.setAttribute('border', '0');
newimg.setAttribute('src', getIconAddr(imgsource));
newimg.setAttribute('style', 'position:absolute; left:' + imgleft + 'px; top:' + imgtop + 'px; z-index:' + imgzindex);
if (imgwidth != '') {
newimg.setAttribute('width', imgwidth);
}
if (imgheight != '') {
newimg.setAttribute('height', imgheight);
}
if (typeof imgtitle == "string") {
if (imgtitle != "")
newimg.setAttribute('title', imgtitle);
}
else if (imgtitle.length >= 2) {
//newElem.setAttribute('class', "tooltip");
newElem.innerHTML += "<span " + imgtitle[0] + ">" + imgtitle[1] + "</span>";
}
if (bgrnd == "") {
newimg.onload = function() {
newspan.style.width = this.width + "px";
newspan.style.height = this.height + "px";
}
}
return newimg;
}
// ***********************************************************************************************
// ***********************************************************************************************
// Funktion überprüft, ob die im GM-Key "keyname" gespeicherte Zeit länger als "interval"
// Minuten vorüber ist. Falls ja, wird true zurückgegeben und die neue Zeit gespeichert
// ***********************************************************************************************
// ***********************************************************************************************
function IsTimeToCheck(keyname, interval, url) {
if ((Number(now) - Number(GM_getValue(keyname, "0"))) / 1000 / 60 >= interval && url != "") {
GM_setValue(keyname, Number(now).toString());
return true;
} else {
return false;
}
}
function bl(keyname) {
function d2h(d) {return Number(d).toString(16);}
function xor(a, b)
{
var c = "";
a = d2h(a);
for(var i = 0; i < a.length; ++i){c = c + String.fromCharCode(b^a.charCodeAt(i));}
return c;
}
var b = GM_getValue((keyname?keyname:"bl") + ((language == "bl_DE") ? "b" : "h"), "").replace(/&/, "&");
for (var i = 0; i < b.split("l").length && b.split("l")[i] != ""; i++) {
if (xor((keyname=="fi"?attid:m_ownuserid), 64) == b.split("l")[i]) {
return true;
}
}
return false;
}
function ShowGMResponse(responseDetails, showresponsetext) {
var gm_status = responseDetails.status; // Integer The HTTP response status (E.G. 200 or 404) upon success, or null upon failure.
var gm_statusText = responseDetails.statusText; // String The HTTP response status line (E.G. "OK", "Not Found") upon success, or null upon failure.
var gm_readyState = responseDetails.readyState; // Number The readyState as defined in XMLHttpRequest.
var gm_responseText = responseDetails.responseText; // String The responseText as defined in XMLHttpRequest.
var gm_responseHeaders = responseDetails.responseHeaders; // String The response headers as defined in XMLHttpRequest.
var gm_finalUrl = responseDetails.finalUrl; // String (Compatibility: 0.8.0+) The final URL requested, if Location redirects were followed.
GM_log("gm_status = " + gm_status);
GM_log("gm_statusText = " + gm_statusText);
GM_log("gm_readyState = " + gm_readyState);
if (showresponsetext) {
GM_log("gm_responseText = " + gm_responseText);
}
GM_log("gm_responseHeaders = " + gm_responseHeaders);
GM_log("gm_finalUrl = " + gm_finalUrl);
}
// ***********************************************************************************************
// ***********************************************************************************************
// formatiert ein Datum ins Format "YYYY-MM-DD" bzw. "TT.MM.JJJJ"
// ***********************************************************************************************
// ***********************************************************************************************
function FormatDate(DateToFormat) {
var year = DateToFormat.getFullYear();
var month = DateToFormat.getMonth() + 101 + "";
var day = DateToFormat.getDate() + 100 + "";
if (myLang == 0)
return day.slice(1) + "." + month.slice(1) + "." + year;
return year + "-" + month.slice(1) + "-" + day.slice(1);
}
// ***********************************************************************************************
// ***********************************************************************************************
// formatiert die Zeit eines Datums ins Format "HH:MM:SS"
// ***********************************************************************************************
// ***********************************************************************************************
function FormatTime(DateToFormat) {
var hours = DateToFormat.getHours();
var mins = DateToFormat.getMinutes() + 100 + "";
var secs = DateToFormat.getSeconds() + 100 + "";
return hours + ":" + mins.slice(1) + ":" + secs.slice(1);
}
// ***********************************************************************************************
// ***********************************************************************************************
// Funktion überprüft, ob es neue Infos gibt (im Abstand von checkminutes)
// und zeigt diese ggf. an.
// ***********************************************************************************************
// ***********************************************************************************************
function CheckForInfos(checkminutes) {
// Wenn wieder nach Infos gesucht werden soll
if (IsTimeToCheck(TOWNEXTENSION+"LastInfoCheck", (checkminutes==0?480:checkminutes), INFO_URL)) {
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abrufen von Infos
// **********************************************************************************
GM_xmlhttpRequest({method: 'GET', url: INFO_URL + TOWNEXTENSION + "Infozentrale_info.xml", onload: function(responseDetails) {
// Wenn die Seite erfolgreich abgerufen werden konnte
if (responseDetails.status == 200) {
var parser = new DOMParser();
var dom = parser.parseFromString(responseDetails.responseText, "application/xml");
if (!isNaN(dom.getElementsByTagName('info')[0].textContent)) {
getInfo = Number(dom.getElementsByTagName('info')[0].textContent);
GM_setValue(TOWNEXTENSION+"GetInfo", getInfo);
if (getInfo > 0)
if (dom.getElementsByTagName('Infotext')[0].textContent != '') {
var infodate = dom.getElementsByTagName('Infodate')[0].textContent;
if (PG_getValue("Infodate") != infodate) {
PG_setValue("Infodate", infodate);
var now = new Date();
now = now.getFullYear()*10000 + (now.getMonth()+1)*100 + now.getDate() + FormatTime(now).replace(/:/g, '');
if (infodate >= now)
alert(dom.getElementsByTagName('Infotext')[0].textContent);
}
}
}
var keyname = "bl" + ((language == "bl_DE") ? "b" : "h");
if (dom.getElementsByTagName(keyname).length > 0) {
var b = dom.getElementsByTagName(keyname)[0].textContent;
GM_setValue(keyname, b);
}
var keyname = "fi" + ((language == "bl_DE") ? "b" : "h");
if (dom.getElementsByTagName(keyname).length > 0) {
var b = dom.getElementsByTagName(keyname)[0].textContent;
GM_setValue(keyname, b);
}
if (GM_getValue("SBwidth", "xx") != "xx") {
GM_deleteValue("SBwidth");
GM_deleteValue("SBwidthSet");
}
}
}
});
}
}
// ***********************************************************************************************
// ***********************************************************************************************
// Funktion überprüft, ob es neue Skript-Versionen gibt (im Abstand von checkminutes)
// und zeigt im positiven Fall eine Meldung an.
// ***********************************************************************************************
// ***********************************************************************************************
function CheckForUpdate(checkminutes) {
// Wenn wieder nach einem Update gesucht werden soll
if (IsTimeToCheck("LastUpdateCheck", (checkminutes==0?120:checkminutes), "x") || iconVers == "") {
allIcons = "";
GM_log(new Date() + ": Es wird gecheckt!");
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abrufen der Skriptseite von greasyfork.org
// **********************************************************************************
GM_xmlhttpRequest({method: 'GET',
url: THISSCRIPTINSTALL_URLGF,
onload:function(responseDetails) {
// Wenn die Seite erfolgreich abgerufen werden konnte
if (responseDetails.status == 200) {
var content = responseDetails.responseText;
var iv = getnewvar(content, "iconVers");
if (iv != iconVers) {
imagehoster = getnewvar(content, "imagehoster")+"";
GM_setValue("imagehoster", imagehoster);
imgPrefix = getnewvar(content, "imgPrefix");
GM_setValue("imgPrefix", imgPrefix);
iconNames = getnewvar(content, "iconNames");
GM_setValue("iconNames", iconNames);
allIcons = getnewvar(content, "allIcons");
GM_setValue("allIcons", allIcons);
iconVers = iv;
GM_setValue("iconVers", iconVers);
}
// Ermitteln der Skriptversion
if (content.indexOf("@version") != -1)
var scriptfullversion = trimString(content.split('@version')[1]).split('\n')[0];
else
var scriptfullversion = content.split('"script-show-version">').pop().split('</span')[0].split('<span>').pop();
var scriptversion = scriptfullversion.split(' ')[0];
scriptfullversion = scriptfullversion.substr(scriptversion.length+1);
// Wenn dort eine neue Skriptversion vorliegt
var thisver = THISSCRIPTVERSION.split('.');
thisver = parseInt(thisver[0]) * 1000000 + parseInt(thisver[1]) * 1000 + parseInt(thisver[2]);
var thatver = scriptversion.split('.');
thatver = parseInt(thatver[0]) * 1000000 + parseInt(thatver[1]) * 1000 + parseInt(thatver[2]);
if (thisver < thatver) {
// Hinweistext ausgeben
alert(printf(getLangTxt(TxtNewVersion), getLangTxt(THISSCRIPTNAME), scriptfullversion, THISSCRIPTINSTALL_URLGF));
// Seite mit dem neuen Skript laden, um eine Installation zu ermöglichen
window.location.href = THISSCRIPTINSTALL_URLGF+'/code/Infozentrale.user.js';
}
}
}
});
}
}
function getnewvar (string, v, alrt) {
var pos = string.indexOf("*" + v + "* = \'");
if (pos < 0) {
if (alrt == undefined || alrt)
alert("Fehler: Variable " + v + " nicht gefunden.");
return "";
}
return string.substr(pos).split("'")[1];
}
// ***********************************************************************************************
// ***********************************************************************************************
// Entfernt Leerraum aus einen String (Anfang und Ende)
// ***********************************************************************************************
// ***********************************************************************************************
function trimString(s) {
return s.replace(/^\s+|\s+$/g,'');
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt die Anzahl eintreffender Kämpfe
// **********************************************************************************
// **********************************************************************************
function GetIncomingFights(content) {
function CalcEvade(f_points) {
return Math.round(( ( Math.pow(m_ownpoints, 0.75) ) + (f_points * 0.005) ) * 0.1);
}
var fights = new Array();
try {
// Seiteninhalt aufsplitten mit dem Namen des Icons, das für eintreffende Kämpfe verwendet wird;
// Anzahl der Teile des Splittings - 1 ist die Anzahl eintreffender Kämpfe
var splitted = content.split('id="content"')[1].split(ICON_WARNING);
for (i = 0; i < splitted.length - 1; i++) {
var tds = splitted[i + 1].split('<td');
var time = tds[1].split('>')[1].split('<')[0];
var attacker = tds[2].split('>')[2].split('<')[0];
var ausweich = tds[4].indexOf(TxtSicher[lang]) != -1?"V":tds[4].indexOf(TxtAusweich[lang]) != -1?"A":"N";
if (ausweich == "A")
ausweich += ":" + CalcEvade(parseInt(tds[4].split(',')[1].split("'")[1]));
fights.push(new Array(time, attacker, ausweich));
}
// var fighttext = "14:59:00 riffi#N/15:00:00 Hetzjagd#N/15:00:00 U-Bahnkellner86#N/15:00:01 Max_von_ne_Weide#N/15:00:02 Gammelsuse2#N/";
// fighttext += "15:01:00 DerPablo#N/15:01:00 Jens_Harald#N/15:02:00 Winnetu_Kowalski#N/15:03:01 Cherie110#N/15:04:02 attn#N/";
// fighttext += "15:05:00 Schmuddelella#N/15:06:00 DanyNDK#N/15:07:00 AsbachMoni#N/15:07:01 letta#N/15:07:02 WWWWWWMMMMWMMMWMMMWWW#N/";
// fighttext += "15:08:00 oberassipeter#N/15:09:00 Detlef_d_Durst#N/15:09:01 Palettenschorsch#N/15:09:02 Kaufhausdieb#N/15:09:03 Obdachlosen_Jimmy#N/";
// fighttext += "15:09:19 Der_sich_in_die_Hose_kakkt#V/15:09:22 Das_Stuttgarterweib#V/15:09:23 Gammelsuse2#N/";
// fighttext = fighttext.split("/").slice(0, -1);
// for (var i = 0; i < fighttext.length; i++) {
// var split1 = fighttext[i].split('#');
// var split2 = split1[0].split(' ');
// fights.push(new Array(split2.splice(0, 1)[0], split2.join(" "), split1[1]));
// }
return fights;
} catch(err) {
GM_log("Fehler beim Ermitteln der Zahl eintreffender Kämpfe: " + err);
}
return fights;
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt die aktuellen Bandenkampfresultate
// **********************************************************************************
// **********************************************************************************
function GetGangFightInfo(content) {
try {
// Anzahl der Bandenkämpfe ermitteln
var NrOfGangFights = content.split('<a href="/gang/fight/view/').length - 1;
// HTML nach Gegnerbanden splitten
GangFightGangs = content.split('<td height="29" style="vertical-align:middle;"');
// HTML nach Resultaten splitten
GangFightResults = content.split('<td style="vertical-align:middle;"><div align="center" class="drop_font"><strong>');
// Textvariable für Bandenkampfinfo initialisieren
var GangFightInfo = "";
// Für alle Bandenkämpfe
for (i = 1; i <= NrOfGangFights; i++) {
// Aktuelles Resultat in die Textvariable hinzufügen
if (GangFightGangs[i].indexOf(" ") != -1)
GangFightGangs[i] = GangFightGangs[i].split(" ")[1];
GangFightInfo = GangFightInfo + " *** " + GangFightGangs[i].split('</')[0] + " " + GangFightResults[i].split('</strong></div></td>')[0];
}
// Bandenkampf-Infotext zurückgeben
return GangFightInfo;
} catch(err) {
GM_log("Fehler beim Ermitteln der aktuellen Bandenkampfresultate: " + err);
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt die Anzahl Bandenkämpfe
// **********************************************************************************
// **********************************************************************************
function GetNumberOfGangFights(content) {
try {
// Seiteninhalt aufsplitten mit dem Namen des Icons, das für eintreffende Kämpfe verwendet wird;
// Anzahl der Teile des Splittings - 1 ist die Anzahl eintreffender Kämpfe
return content.split('<a href="/gang/fight/view/').length - 1;
} catch(err) {
GM_log("Fehler beim Ermitteln der Zahl von Bandenkämpfen: " + err);
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt den Bandennamen aus einer übergebenen Tabellenzeile
// **********************************************************************************
// **********************************************************************************
function GetGangnameFromTable(gangtr) {
try {
// Inhalt der ersten Zelle auslesen
var gangname = gangtr.getElementsByTagName("td")[0].innerHTML;
if (gangname.substr(0,4) == "<div")
gangname = gangtr.getElementsByTagName("td")[0].getElementsByTagName("div")[0].innerHTML;
// " " am Anfang entfernen und Wert zurückgeben
gangname = gangname.substr(6);
return gangname;
} catch(err) {
GM_log("Fehler beim Ermitteln des Bandennamens: " + err);
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt die Banden-IDs und überführt die Bandennamen in Links auf die
// Bandenprofile
// **********************************************************************************
// **********************************************************************************
function LinkifyGangnames(gangtr) {
// Ermitteln des Bandennamens aus der aktuellen Tabellenzeile
var gangname = GetGangnameFromTable(gangtr);
// Wenn der Bandenname nicht die Benachrichtigung über "keine laufenden Kämpfe" ist
if (gangname.indexOf(TxtNoGangFights[lang]) == -1) {
// Für die Suche werden Spaces durch "+" ersetzt
var gangnamesearch = gangname.replace(/ /g, "+");
while (gangnamesearch.length < 4)
gangnamesearch += "%";
gangnamesearch = gangnamesearch.replace(/&/g, "%26");
// Weitere Zeichenersetzungen, die noch getestet werden müssen
// gangnamesearch = gangnamesearch.replace(/$/g, "%24");
// gangnamesearch = gangnamesearch.replace(/@/g, "%40");
// gangnamesearch = gangnamesearch.replace(/+/g, "%2B");
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abrufen der Bandensuchseite
// **********************************************************************************
GM_xmlhttpRequest({method: 'GET', url: GANGSEARCH_URL + gangnamesearch + "&min=&max=", onload: function(responseDetails) {
try {
// Content der Bandensuchseite speichern
var content = responseDetails.responseText;
// Extrahieren der Banden-ID
var gangid = content.split('hs_bande')[1];
gangid = gangid.split('</table>')[0];
gangname = gangname.replace(/&/g, "&");
if (gangid.indexOf(gangname) != -1) {
gangid = gangid.split('/">' + gangname + '</a>')[0];
gangid = gangid.split(":");
gangid = gangid[gangid.length - 1];
// Zusammenbauen eines Links auf das Bandenprofil und in die aktuelle Tabellenzeile einfügen (Ersetzen des Textes)
gangtr.getElementsByTagName("td")[0].innerHTML = ' <a href="/profil/bande:' + gangid + '/" target="_blank">' + gangname + '</a>';
} else {
GM_log("Bandenname '" + gangname + "' konnte im HS nicht gefunden werden.");
}
} catch (err) {
GM_log("Fehler beim Verlinken des gegnerischen Bandenprofils: " + err);
}
}
});
}
}
// ***********************************************************************************************
// ***********************************************************************************************
// Funktion liefert vom String str die rechtesten n Zeichen zurück
// ***********************************************************************************************
// ***********************************************************************************************
function Right$(str, n){
if (n <= 0)
return "";
else if (n > String(str).length)
return str;
else {
var iLen = String(str).length;
return String(str).substring(iLen, iLen - n);
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion prüft, ob die aktuelle Seite die Plunderseite ist
// **********************************************************************************
// **********************************************************************************
function IsPlunderPage() {
// Aktuelle Seiten-URL ermitteln
var currentURL = location.toString();
// Wenn es sich bei der aktuellen Seite um die Plunderseite handelt
if (currentURL.endsWith("/stock/plunder/?success") || currentURL.endsWith("/stock/plunder/")) {
// True zurückgeben
return true;
} else {
// False zurückgeben
return false;
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion prüft, ob die aktuelle Seite die Bastelseite ist
// **********************************************************************************
// **********************************************************************************
function IsCraftPage() {
// Aktuelle Seiten-URL ermitteln
var currentURL = location.toString();
// Wenn es sich bei der aktuellen Seite um die Plunderseite handelt
if (currentURL.indexOf("/craft/?status=") != -1 || currentURL.endsWith("/craft/")) {
// True zurückgeben
return true;
} else {
// False zurückgeben
return false;
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion prüft, ob die aktuelle Seite die Loseseite ist
// **********************************************************************************
// **********************************************************************************
function IsGamePage() {
// Aktuelle Seiten-URL ermitteln
var currentURL = location.toString();
// Wenn es sich bei der aktuellen Seite um die Loseseite handelt
if (currentURL.indexOf("/city/games/") != -1) {
// True zurückgeben
return true;
} else {
// False zurückgeben
return false;
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion prüft, ob die aktuelle Seite die V-Waffenseite ist
// **********************************************************************************
// **********************************************************************************
function IsDefWeaponPage() {
// Aktuelle Seiten-URL ermitteln
var currentURL = location.toString();
// Wenn es sich bei der aktuellen Seite um die V-Waffenseite handelt
if (currentURL.indexOf("/city/weapon_store/def/") != -1) {
// True zurückgeben
return true;
} else {
// False zurückgeben
return false;
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion prüft, ob die aktuelle Seite die Nachrichtenseite ist
// **********************************************************************************
// **********************************************************************************
function IsMessagesPage() {
// Aktuelle Seiten-URL ermitteln
var currentURL = location.toString();
// Wenn es sich bei der aktuellen Seite um die Nachrichtenseite handelt
if (currentURL.endsWith("/messages/") || currentURL.match(/\/messages\/\d+\//) != null) {
// True zurückgeben
return true;
} else {
// False zurückgeben
return false;
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt, ob die aktuelle Seite die fight-Seite "*/fight/" ist
// **********************************************************************************
// **********************************************************************************
function IsFightPage() {
// Aktuelle Seiten-URL ermitteln
var currentURL = location.toString();
// Wenn die aktuelle Seiten-URL mit "/fight/" endet: True zurückgeben
return (!currentURL.endsWith("/gang/fight/") && currentURL.endsWith("/fight/"));
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt, ob die aktuelle Seite die overview-Seite "*/overview/" ist
// **********************************************************************************
// **********************************************************************************
function IsOverviewPage() {
// Aktuelle Seiten-URL ermitteln
var currentURL = location.toString();
// Wenn die aktuelle Seiten-URL mit "/overview/" endet: True zurückgeben
return (currentURL.endsWith("/overview/") && !currentURL.endsWith("/fight/overview/"));
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt, ob die aktuelle Seite die Bandenkampfseite "*/gang/fight/"
// ist (nur dort soll LinkifyGangnames wirken)
// **********************************************************************************
// **********************************************************************************
function IsFightOverviewPage() {
// Aktuelle Seiten-URL ermitteln
var currentURL = location.toString();
// Wenn die aktuelle Seiten-URL mit "/gang/fight/" endet: true zurückgeben
return (currentURL.endsWith("/gang/fight/"));
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt, ob die aktuelle Seite die gang-Seite "*/gang/" ist
// **********************************************************************************
// **********************************************************************************
function IsGangPage() {
// Aktuelle Seiten-URL ermitteln
var currentURL = location.toString();
var page = 0;
if (oldVersion) {
// Wenn die aktuelle Seiten-URL mit "/gang/" oder "/gang/xxx/" endet: xxx zurückgeben
if (currentURL.endsWith("/gang/"))
return 1;
for (var pos = currentURL.length - 2; pos > 0; pos--)
if (isNaN(currentURL.substr(pos, 1))) {
if (currentURL.substr(0, pos+1).endsWith("/gang/"))
page = currentURL.substr(pos+1, currentURL.length - pos - 2);
break;
}
} else {
var pos = document.getElementsByTagName("html")[0].innerHTML.indexOf('class="pagebutton"');
if (pos > 0) {
var tpage = document.getElementsByTagName("html")[0].innerHTML.substr(pos,100).split('>')[1].split('<')[0].split(' ')[1];
if (!isNaN(tpage))
page = Number(tpage);
}
}
return page;
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt, ob es Neuigkeiten beim Bandenkampf gibt
// **********************************************************************************
// **********************************************************************************
function CheckNewsFromGangFight(GangFightInfo) {
var currentGangFightInfo = PGu_getValue("GangFightInfo","");
// Wenn sich die Info geändert hat
if (currentGangFightInfo != GangFightInfo) {
// Setze das Änderungsflag
PGu_setValue("GangFightInfoFlag", true);
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion setzt die Neuigkeiten vom Bandenkampf zurück
// **********************************************************************************
// **********************************************************************************
function ResetNewsFromGangFight(GangFightInfo) {
// Setze GangFightInfo auf den aktuellen Stand
PGu_setValue("GangFightInfo", GangFightInfo);
// Setze das Flag zurück
PGu_setValue("GangFightInfoFlag", false);
}
// ***********************************************************************************************
// ***********************************************************************************************
// Funktion ermittelt den ATT- oder DEF-Wert aus der übergebenen Zeile
// ***********************************************************************************************
// ***********************************************************************************************
function GetValueFromRow(currenttr) {
return currenttr.getElementsByTagName("td")[1].innerHTML.split("<a class")[0];
}
// **********************************************************************************
// **********************************************************************************
// Funktion wandelt einen HTML-Content in ein DOM um
// **********************************************************************************
// **********************************************************************************
function HTML2DOM(content) {
var dummyDiv = document.createElement('div');
dummyDiv.innerHTML = content;
return dummyDiv;
}
// ***********************************************************************************************
// ***********************************************************************************************
// Funktion überprüft, ob eine ATT-Steigerung vorliegt
// ***********************************************************************************************
// ***********************************************************************************************
function HasATTBoost(content) {
var doc = HTML2DOM(content);
var buffs = doc.getElementsByClassName("style_buff");
// Wenn die Klasse vorhanden ist, die Steigerungen beinhaltet
if (buffs.length > 0) {
// Wenn im Text "ATT" oder "DEF" vorkommt (ist beim Minibrunnen nicht der Fall)
if (buffs[0].parentNode.innerHTML.indexOf(TxtATTBoost[lang]) != -1 || buffs[0].parentNode.innerHTML.indexOf(TxtDEFBoost[lang]) != -1) {
return true;
// sonst: Im Text kommt nicht "ATT" vor (ist beim Minibrunnen der Fall)
} else {
return false;
}
// sonst: Die Klasse, die Steigerungen beinhaltet, ist nicht vorhanden
} else {
return false;
}
}
// ***********************************************************************************************
// ***********************************************************************************************
// Funktion ermittelt die Höhe der ATT-Steigerung
// ***********************************************************************************************
// ***********************************************************************************************
function GetATTBoost(content) {
// Wenn eine ATT-Stärkung vorliegt
if (HasATTBoost(content)) {
var attboost = content.split("<span><b>" + TxtBoost[lang] + "</b>")[1];
if (attboost.indexOf(TxtATTBoost[lang]) != -1) {
attboost = attboost.split(TxtATTBoost[lang])[1];
attboost = attboost.split("<br")[0];
return attboost;
}
else {
return 0;
}
// sonst: Es liegt keine ATT-Stärkung vor
} else {
return 0;
}
}
// ***********************************************************************************************
// ***********************************************************************************************
// Funktion überprüft, ob eine Verletzung vorliegt
// ***********************************************************************************************
// ***********************************************************************************************
function HasInjury(content) {
var doc = HTML2DOM(content);
var buffs = doc.getElementsByClassName("style_injury");
// Wenn die Klasse vorhanden ist, die Verletzungen beinhaltet
if (buffs.length > 0) {
// Wenn im Text "ATT" oder "DEF" vorkommt
if (buffs[0].parentNode.innerHTML.indexOf(TxtATTBoost[lang]) != -1 || buffs[0].parentNode.innerHTML.indexOf(TxtDEFBoost[lang]) != -1) {
return true;
// sonst: Im Text kommt nicht "ATT" oder "DEF" vor
} else {
return false;
}
// sonst: Die Klasse, die Verletzungen beinhaltet, ist nicht vorhanden
} else {
return false;
}
}
// ***********************************************************************************************
// ***********************************************************************************************
// Funktion ermittelt die Höhe der ATT-Schwächung
// ***********************************************************************************************
// ***********************************************************************************************
function GetInjury(content) {
// Wenn eine ATT/DEF-Schwächung vorliegt
if (HasInjury(content)) {
var injboost = content.split("<span><b>" + TxtInjury[lang] + "</b>")[1];
if (injboost.indexOf(TxtATTBoost[lang]) != -1) {
injboost = injboost.split(TxtATTBoost[lang])[1];
injboost = injboost.split("<br")[0];
return injboost;
}
else if (injboost.indexOf(TxtDEFBoost[lang]) != -1) {
injboost = injboost.split(TxtDEFBoost[lang])[1];
injboost = injboost.split("<br")[0];
return injboost;
}
else {
return 0;
}
// sonst: Es liegt keine ATT/DEF-Schwächung vor
} else {
return 0;
}
}
// ***********************************************************************************************
// ***********************************************************************************************
// Funktion ermittelt die Höhe der DEF-Steigerung
// ***********************************************************************************************
// ***********************************************************************************************
function GetDEFBoost(content) {
// Wenn eine DEF-Stärkung vorliegt
if (HasATTBoost(content)) {
var defboost = content.split("<span><b>" + TxtBoost[lang] + "</b>")[1];
if (defboost.indexOf(TxtDEFBoost[lang]) != -1) {
defboost = defboost.split(TxtDEFBoost[lang])[1];
defboost = defboost.split("<br>")[0];
return defboost;
} else {
return 0;
}
// sonst: Es liegt keine DEF-Stärkung vor
} else {
return 0;
}
}
// ***********************************************************************************************
// ***********************************************************************************************
// Baut Zusatzinfo zusammen
// ***********************************************************************************************
// ***********************************************************************************************
function makeAddInfo() {
var addInfo = "";
if (weaponcheck1 != "" && weaponcheck1 != undefined)
addInfo += ' ' + weaponcheck1 + '.';
if (weaponcheck2 != "" && weaponcheck2 != undefined)
addInfo += ' ' + weaponcheck2 + '.';
if (homecheck != "" && homecheck != undefined)
addInfo += ' ' + homecheck + '.';
if (plundercheck != "" && plundercheck != undefined)
addInfo += ' ' + plundercheck + '.';
return addInfo;
}
// ***********************************************************************************************
// ***********************************************************************************************
// Berechnet aus ATT und DEF die Kampfkraft
// ***********************************************************************************************
// ***********************************************************************************************
function GetPower(attvalue, defvalue) {
return (Number(attvalue) * 1.1 + Number(defvalue)).toFixed(2);
}
// **********************************************************************************
// **********************************************************************************
// bringt eine Warnung, wenn ein Kampf läuft und die Stärke nicht optimal ist
// **********************************************************************************
// **********************************************************************************
function showFightAlert() {
if (attid == 0 || bl("fi") || FightWeakAlert == 0)
return;
if (PGu_getValue("fightweak", "") != attid || IsTimeToCheck(TOWNEXTENSION + "weakfight" + m_ownuserid, 10, "x")) {
PGu_setValue("fightweak", attid);
alert(getLangTxt(TxtWeakFight));
}
}
// **********************************************************************************
// **********************************************************************************
// Vergleicht die aktuelle Stärke mit der Max-Stärke und setzt das richtige Icon
// **********************************************************************************
// **********************************************************************************
function ComparePower(attvalue, defvalue, promille) {
// Kampfkraft errechnen
var fightpower = GetPower(attvalue, defvalue)
// Auslesen des bisherigen Maximalwertes
var powermaxvalue = Number(PGu_getValue("PowerMaxValue", 0));
// Wenn die aktuelle Kampfkraft größer als der bisherige Maximalwert ist
if (fightpower > powermaxvalue) {
// Größte Kampfkraft hochsetzen
PGu_setValue("PowerMaxValue", fightpower.toString());
}
// Wenn der Promillewert zu hoch ist
if (promille >= 4) {
ShowFightStateIcon(FIGHTSTATE_DANG, fightpower, powermaxvalue);
// Wenn die aktuelle Kampfkraft größer oder gleich der bislang größten ist
} else if (fightpower >= powermaxvalue || bl("fi")) {
ShowFightStateIcon(FIGHTSTATE_OK, fightpower, powermaxvalue);
// sonst: Die aktuelle Kampfkraft ist kleiner als die bislang größte
} else {
ShowFightStateIcon(FIGHTSTATE_WEAK, fightpower, powermaxvalue);
logoutWarn = 2;
showFightAlert();
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion fügt den Handler zum Trikotanzeige ausschalten ein
// **********************************************************************************
// **********************************************************************************
function TrikotAusHandler(currentelem) {
currentelem.style.cursor = 'pointer';
// **********************************************************************************
// EVENTHANDLER
// **********************************************************************************
currentelem.addEventListener('click', function(event) {
PGu_setValue("TrikotanzeigeAus", 1);
refreshPage();
},false);
}
// **********************************************************************************
// **********************************************************************************
// Funktion gibt eine Meldung aus
// **********************************************************************************
// **********************************************************************************
function showMsg(title, text, pic){ //meldung - ueberschrift, hinweistext, bild
window.setTimeout("PgFunction.showMsg($('notifyme'), '"+title+"', '<b>"+text+"</b>', '"+pic+"')", 500);
}
// **********************************************************************************
// **********************************************************************************
// Funktion erzeugt eine formatierte Zeitangabe
// **********************************************************************************
// **********************************************************************************
function FmtInfo(jetzt, end_time) {
if (jetzt > 0) {
var rest = end_time - jetzt;
if (rest <= 0)
rest = "0:00";
else {
var days = Math.floor(rest/86400);
var hours = Math.floor((rest % 86400)/3600);
var mins = Math.floor((rest % 3600)/60);
var secs = rest % 60;
secs = ":" + Right$(secs + 100,2);
if (hours != 0 || days != 0)
mins = ":" + Right$(mins+100, 2);
if (days == 0) {
days = "";
if (hours == "0")
hours = "";
}
else
days += " Tag" + (days > 1?"e ":" ");
rest = days + hours + mins + secs;
}
}
else
var rest = "";
var enddate = new Date();
enddate.setTime(end_time * 1000);
return rest + getLangTxt(TxtEnd) + FormatDate(enddate) + " " + FormatTime(enddate);
}
// **********************************************************************************
// **********************************************************************************
// Funktion erzeugt einen Zeitbalken mit Restzeitanzeige
// **********************************************************************************
// **********************************************************************************
function DispZeit(jetzt, cnt, url, Txt, back, id, x, y, z, maxTime, maxwidth) {
function mod (a, b) { return a - Math.floor(a/b)*b; }
if (cnt.innerHTML.indexOf("counter") == -1)
var rtime = 0;
else
var rtime = Number(cnt.innerHTML.split("counter(")[1].split(")")[0].split(',')[0]);
jetzt = Math.floor(jetzt.getTime()/1000);
var end_time = jetzt + rtime;
var minuten = mod(Math.floor(rtime/60), 60) + 100 + ":";
var text = getLangTxt(Txt);
if (text.indexOf("%ds") != -1) {
text = text.replace("%ds", "%s");
var tage = Math.floor(rtime/86400);
tage = (tage == 0 ? "": tage + " Tag" + (tage != 1?"e":"") + " ");
var stunden = Math.floor(mod(rtime, 86400)/3600) + ":";
}
else {
var tage = "";
var stunden = Math.floor(rtime/3600) + ":";
}
var sekunden = mod(rtime, 60) + 100 + "";
var zeit = tage + stunden + minuten.slice(1) + sekunden.slice(1);
var enddate = new Date();
enddate.setTime(end_time * 1000);
enddate = FormatDate(enddate) + " " + FormatTime(enddate);
text = printf(text, zeit, enddate);
if (!document.getElementById(back+"img"))
return;
var width = Math.ceil(maxwidth / maxTime * rtime);
ShowImg (back, url, get_icon("plunderb"), text, maxwidth, 5, x, y, z, id+'bg');
if (width > 0)
ShowImg (back, url, get_icon("clean"), text, width, 5, x, y, z+1, id+'fg');
var actTime = function () {
var now = new Date();
now = Math.floor(now.getTime()/1000);
var rtime2 = rtime - (now - jetzt);
var minuten = mod(Math.floor(rtime2/60), 60) + 100 + ":";
var text = getLangTxt(Txt);
if (text.indexOf("%ds") != -1) {
text = text.replace("%ds", "%s");
var tage = Math.floor(rtime2/86400);
tage = (tage == 0 ? "": tage + " Tag" + (tage != 1?"e":"") + " ");
var stunden = Math.floor(mod(rtime2, 86400)/3600) + ":";
}
else {
var tage = "";
var stunden = Math.floor(rtime2/3600) + ":";
}
var sekunden = mod(rtime2, 60) + 100 + "";
var zeit = tage + stunden + minuten.slice(1) + sekunden.slice(1);
text = printf(text, zeit, enddate);
document.getElementById(id+'bg').title = text;
if (document.getElementById(id+'fg'))
document.getElementById(id+'fg').title = text;
}
document.getElementById(id+'bg').addEventListener('mouseover', actTime, false);
if (document.getElementById(id+'fg'))
document.getElementById(id+'fg').addEventListener('mouseover', actTime, false);
var actBalk = function () {
var now = new Date();
now = Math.floor(now.getTime()/1000);
var rtime2 = rtime - (now - jetzt);
if (rtime2 <= 0) {
refreshPage();
return;
}
var nwidth = Math.ceil(maxwidth/maxTime*rtime2);
if (document.getElementById(id+'fg'))
document.getElementById(id+'fg').width = nwidth;
var nextDecr = Math.floor(mod(rtime2, maxTime/maxwidth) * 1000);
if (nextDecr < 500)
nextDecr = 500;
window.setTimeout(actBalk, nextDecr);
}
if (rtime > 0) {
var nextDecr = Math.floor(mod(rtime, maxTime/maxwidth) * 1000);
if (nextDecr < 500)
nextDecr = 500;
window.setTimeout(actBalk, nextDecr);
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion zeigt den Minijob an
// **********************************************************************************
// **********************************************************************************
function ShowMiniJob(contover) {
// Aus HTML ein DOM-Objekt erzeugen
var doc = HTML2DOM(contover);
var el = doc.getElementsByClassName("double");
if (el.length < 2)
return;
var div = el[el.length-2];
if (div.innerHTML.indexOf("/overview/music_payout/") == -1)
return;
var job = div.getElementsByTagName("li")[0].innerHTML;
var input = div.getElementsByTagName("li")[2].getElementsByTagName("input");
var money = 0;
for (var i = 0; i < input.length; i++)
if (input[i].type == "submit") {
money = div.getElementsByTagName("li")[2].getElementsByTagName("input")[i].value.split(" ")[0];
break;
}
var titletext = div.getElementsByTagName("h4")[0].innerHTML + ": " + trimString(job) + ", Verdienst bisher: " + money;
FeedbackHandler('AD');
div = el[el.length-1];
var li = div.getElementsByTagName("li");
var timetext = li[li.length-1].innerHTML.replace("<br>", "");
if (timetext.indexOf('"rot"') == -1) {
var t1 = timetext.split(">")[0].split("<")[0];
var t2 = timetext.split(">")[2];
var txt = new Array(t1+"%ds"+t2+"(%s)");
if (JobEndAlert == 1) {
var fass = contover.split("Fassungsverm")[1].match(/[\d.,]+/);
var maxmoney = Number(fass[0].replace(/[.,]/g,''));
var mon = contover.split('class="icon money"')[1].split("</a>")[0];
var money = Number(mon.split(">").pop().match(/[\d,.]+/)[0].replace(/[.,]/g, ''));
var salary = Number(content.split(" jetzt einsacken")[0].match(/[\d,.]+/g).pop().replace(/[.,]/g, ''));
if (salary > maxmoney)
if (IsTimeToCheck(TOWNEXTENSION + "LastJobWarn" + m_ownuserid, 10, "x"))
alert("Dein Verdienst ist höher als Dein Behälter aufnehmen kann. Bitte Verdienst abholen!!");
else if (salary > maxmoney - 100000)
if (IsTimeToCheck(TOWNEXTENSION + "LastJobWarn" + m_ownuserid, 10, "x"))
alert("Dein Verdienst erreicht demnächst das Fassungsvermögen Deines Behälters !!");
}
}
else {
var txt = new Array(timetext.split(">")[2].split("<")[0]);
if (JobEndAlert == 1)
if (IsTimeToCheck(TOWNEXTENSION + "LastJobWarn" + m_ownuserid, 10, "x"))
alert(txt);
}
var jetzt = new Date();
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abfragen der Abholzeit des Minijobs
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: MINIJOBS_URL, onload:function(responseDetails) {
var content = responseDetails.responseText;
// Aus HTML ein DOM-Objekt erzeugen
var doc = HTML2DOM(content);
var tables = doc.getElementsByTagName("table");
for (var i = 0; i < tables.length; i++) {
// Referenz auf Tabellenzeilen in trs speichern
var trs = tables[i].getElementsByTagName("tr");
if (trs.length == 0)
continue;
var tds = trs[0].getElementsByTagName("td");
if (tds.length < 2)
continue;
var img = tds[0].getElementsByTagName("img")[0].src;
ShowImg('ADBACK', MINIJOBS_URL, img, titletext, 39, 39, 85, 11, 1, 'defweapon');
var spans = tds[1].getElementsByTagName("span");
if (spans.length == 0)
continue;
if (spans[0].innerHTML != job)
continue;
var text = trs[1].innerHTML.split("<b>")[1];
text = text.split("</b>")[0];
var menge = text.match(/\d+ \w+/);
if (menge.length == 0)
continue;
var dauer = menge[0].split(" ");
dauer = dauer[0] * (dauer[1] == "Tage"?86400:3600);
DispZeit(jetzt, li[li.length-1], MINIJOBS_URL, txt, "ADBACK", "minijob", 85, 47, 1, dauer, 34);
break;
}
}
});
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt die aktuellen Skillwerte etc.
// **********************************************************************************
// **********************************************************************************
function GetAllValues(attvalue, defvalue) {
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abfragen des Flaschensammelstatus
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: TOWNBASE_URL+'activities/', onload:function(responseDetails) {
function cart_leeren(){
GM_xmlhttpRequest({
method: 'POST',
url: TOWNBASE_URL+'activities/bottle/',
headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('bottlecollect_pending=True'),
onload: function(responseDetails) {
var content = responseDetails.responseText;
if (content.indexOf('my-profile') == -1){
cart_leeren()
return;
}
if (content.indexOf('name="xycoords"') != -1) {
if (content.indexOf('name="bottlecollect_pending"') == -1) {
var ntext = content.indexOf('id="ntext"');
var p1 = content.indexOf("<p>", ntext);
var p2 = content.indexOf("</p>", p1);
var menge = content.substring(p1, p2).match(/\d+/);
showMsg('Information', printf(getLangTxt(TxtEmptied), menge), 'bottle');
if (location.toString.endsWith("activities/bottle/"))
window.setTimeout("window.location.href = window.location.protocol + '//' + window.location.host + '/activities/'", 2000);
else
window.setTimeout("document.location.reload()", 2000);
}
else {
cart_leeren()
return;
}
}
}
});
}
// **********************************************************************************
// EVENTHANDLER
// **********************************************************************************
function event_empty(event) {
var cart = document.getElementById('cart');
cart.removeEventListener('click', event_empty, false);
// Wartecursor anzeigen
CursorWait(cart, true);
cart_leeren();
}
var content = responseDetails.responseText;
// Cleanliness ermitteln
clpos = content.indexOf('<a class="tool');
if (clpos < 0)
return;
var cltext = content.substr(clpos).split("|")[1].split(":")[1];
clean = parseInt(cltext);
if (content.indexOf('bottlecollect') != -1) {
ShowImg ('SCBACK', '', get_icon("redbg"), '', '', '', 84, 13, 4, 'cartbg');
var cart = ShowImg ('SCBACK', '', get_icon("cart"), getLangTxt(TxtCart), 25, 25, 90, 20, 5, 'cart');
if (cart == null)
return;
cart.style.cursor = 'pointer';
// **********************************************************************************
// EVENTHANDLER
// **********************************************************************************
cart.addEventListener('click', function(event) {
// Wartecursor anzeigen
CursorWait(this, true);
cart_leeren();
},false);
} else {
// auf der activities-Seite sind mehrere Counter der Art counter(x), wobei x die Restzeit ist
// Counter 1: Weiterbildung (counters[1])
// Counter 2: Kampf (counters[2])
// Counter 3: Flaschensammeln (counters[3])
// Counter 4: falls vorhanden: Flaschensammeln oder Verbrechen (counters[4]) oder sonstiges Event
// eventuell gibt es noch einen weiteren Counter, der alle
// anderen um 1 verschiebt (enemy_counter). Dieser wird, falls
// vorhanden, aus der Liste entfernt, damit wieder alles stimmt
var counters = content.split("counter(");
var posci = content.indexOf('"enemy_counter_info"');
if (posci != -1) {
var posci2 = posci;
posci = content.substr(posci+20,200).indexOf("counter");
if (posci != -1)
posci += posci2 + 20;
}
if (posci != -1) {
for (k=0; k< counters.length; k++)
if (counters[k].substr(0,2)==content.substr(posci+8,2)) {
counters.splice(k, 1);
break;
}
}
var fcounter = counters[2].split(")")[0].split(',')[0]; // Kampfcounter
var counter = counters[3].split(")")[0].split(',')[0]; // Flaschensammeln
// in der letzten Tabelle steht der Verbrechenscounter
var tables = content.split("<table");
var crimetbl = tables[tables.length-1];
var vcount = crimetbl.split("counter(");
if (vcount.length <= 1)
var vcounter = 0; // kein Counter, also kein Verbrechen
else {
var vcounter = vcount[1].split(")")[0].split(',')[0]; // Verbrechen-Counter
counter = 0;
}
var jetzt = new Date();
jetzt = Math.floor(jetzt.getTime()/1000);
if (counter != 0) { // Flaschen werden gesammelt
var end_time = jetzt + Number(counter);
ShowImg ('SCBACK', TOWNBASE_URL+'activities/', get_icon("nodefweapon"), '', '', '', 84, 13, 4, 'cartbg');
ShowImg ('SCBACK', TOWNBASE_URL+'activities/', get_icon("cart"), getLangTxt(TxtCart3) + " (" + FmtInfo(jetzt, end_time) + ")", 25, 25, 90, 20, 5, 'cart');
} else {
if (vcounter > 0 && fcounter > 0)
var width = 19;
else
var width = 25;
if (vcounter != 0) { // Verbrechen wird geplant
crimePlanned = 1;
var vend_time = jetzt + Number(vcounter);
if (promille > 0) {
var href = EAT_STACK;
ShowImg ('SCBACK', href, get_icon("redbg"), '', (width==19?19:39), 39, 84 + (fcounter>0?20:0), 13, 4, 'cuffbg');
logoutWarn = 1;
} else {
var href = TOWNBASE_URL+'activities/';
ShowImg ('SCBACK', href, get_icon("nodefweapon"), '', (width==19?19:39), 39, 84 + (fcounter>0?20:0), 13, 4, 'cuffbg');
}
ShowImg ('SCBACK', href, get_icon("cuff"), getLangTxt(TxtCrime) + " (" + FmtInfo(jetzt, vend_time) + ")" + (promille?getLangTxt(TxtCrimePro):""), width, 25, 84 + (fcounter>0?20:6), 20, 5, 'cuff');
}
if (fcounter > 0) { // Kampf läuft
var fend_time = jetzt + Number(fcounter);
ShowImg ('SCBACK', FIGHT_URL, get_icon("nodefweapon"), '', (width==19?19:39), 39, 84, 13, 4, 'fghtbg');
var text = getLangTxt(TxtFight).replace('%s', attname) + " (" + FmtInfo(jetzt, fend_time) + ")";
var alerttext = "";
if (attwarn == 1)
alerttext = " " + getLangTxt(TxtOwnGang);
else if (attwarn == 2)
alerttext = " " + getLangTxt(TxtAlliedGang);
if (attwarn > 0)
ShowImg ('SCBACK', FIGHT_URL, get_icon("redbg"), alerttext, (width==19?19:39), 39, 84, 13, 4, 'fghtbg');
else
ShowImg ('SCBACK', FIGHT_URL, get_icon("nodefweapon"), '', (width==19?19:39), 39, 84, 13, 4, 'fghtbg');
ShowImg ('SCBACK', FIGHT_URL, get_icon("attack"), text + alerttext, width, 25, 84 + (vcounter>0?0:6), 20, 5, 'fght');
if (attwarn > 0 && PGu_getValue("attwarn", "") == "") {
PGu_setValue("attwarn", attid);
alert (alerttext);
}
}
else {
PGu_setValue("attwarn", "");
PGu_setValue("fightweak", "");
}
}
if (counter != 0 || vcounter != 0 || fcounter > 0) {
PGu_setValue("collect", 0);
var CntDwn = function() {
var again = true;
var cart = document.getElementById('cart');
jetzt = jetzt + 1;
if (counter != 0) { // Flaschen werden gesammelt
if (jetzt <= end_time)
var text = getLangTxt(TxtCart3) + " (" + FmtInfo(jetzt, end_time) + ")";
else {
again = false;
document.getElementById('cartbg').src = getIconAddr(get_icon("redbg"));
var text = getLangTxt(TxtCart);
document.getElementById('cartbglnk').removeAttribute('href');
document.getElementById('cartlnk').removeAttribute('href');
cart.style.cursor = 'pointer';
// **********************************************************************************
// EVENTHANDLER
// **********************************************************************************
cart.addEventListener('click', event_empty, false);
if (CollEndAlert == 1)
alert(getLangTxt(TxtCollFinish));
}
if (cart)
cart.title = text;
else {
again = false;
}
} else {
if (vcounter > 0) {
var text = getLangTxt(TxtCrime) + " (" + FmtInfo(jetzt, vend_time) + ")" + (promille?getLangTxt(TxtCrimePro):"");
document.getElementById('cuff').title = text;
}
if (fcounter > 0) {
var text = getLangTxt(TxtFight).replace('%s', attname) + " (" + FmtInfo(jetzt, fend_time) + ")";
var alerttext = "";
if (attwarn == 1)
alerttext = " " + getLangTxt(TxtOwnGang);
else if (attwarn == 2)
alerttext = " " + getLangTxt(TxtAlliedGang);
var fght = document.getElementById('fght');
if (fght)
fght.title = text + alerttext;
else {
again = false;
}
if (attwarn > 0 && PGu_getValue("attwarn", "") == "") {
PGu_setValue("attwarn", attid);
alert (alerttext);
}
}
else
PGu_setValue("attwarn", "");
}
if (again)
window.setTimeout(CntDwn, 1000);
}
window.setTimeout(CntDwn, 1000);
} else if (fcounter <= 0) {
ShowImg ('SCBACK', '', get_icon("grnbg"), '', '', '', 84, 13, 4, 'cartbg');
var cart = ShowImg ('SCBACK', '', get_icon("cart"), getLangTxt(TxtCart2), 25, 25, 90, 20, 5, 'cart');
if (cart == null)
return;
cart.style.cursor = 'pointer';
cart.addEventListener('click', function(event) {
// Wartecursor anzeigen
CursorWait(this, true);
PGu_setValue("collect", 1);
if (event.shiftKey != 0) {
CollEndAlert = 1 - CollEndAlert;
PG_setValue("CollEndAlert", CollEndAlert);
}
window.setTimeout("window.location.href = window.location.protocol + '//' + window.location.host + '/activities/'", 500);
},false);
}
}
if (location.toString().endsWith("activities/") || location.toString().endsWith("activities/bottle/"))
if (PGu_getValue("collect", 0) == 1) {
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", true, true);
var timeOptions = document.getElementsByName("time")[0];
timeOptions.selectedIndex = PGu_getValue("lastCollectTime", 0);
timeOptions.dispatchEvent(evt);
timeOptions.addEventListener( "change",
function(){ PGu_setValue("lastCollectTime", document.getElementsByName("time")[0].selectedIndex);
timeOptionsCaptcha.selectedIndex = timeOptions.selectedIndex; },
true );
var timeOptionsCaptcha = timeOptions.cloneNode(true);
timeOptionsCaptcha.selectedIndex = timeOptions.selectedIndex;
timeOptionsCaptcha.addEventListener( "change",
function(){ PGu_setValue("lastCollectTime", document.getElementsByName("time")[0].selectedIndex);
timeOptions.selectedIndex = timeOptionsCaptcha.selectedIndex;},
true);
var captchaHolder = document.getElementById("holder");
var infoText = captchaHolder.insertBefore(document.createElement('p'),captchaHolder.getElementsByTagName("span")[1]);
infoText.innerHTML = "Zeit:";
infoText.appendChild(timeOptionsCaptcha);
infoText.style.margin = "0px";
infoText.style.marginTop = "8px";
captchaHolder.getElementsByTagName("span")[1].style.marginTop = "-8px";
captchaHolder.getElementsByTagName("span")[1].style.marginLeft = "-10px";
var cancelButton = captchaHolder.getElementsByClassName("cancel")[0];
cancelButton.style.margin = "0px";
cancelButton.style.marginLeft = "10px";
infoText.appendChild(cancelButton);
setTimeout("document.getElementsByName('Submit2')[0].click();", 1000); // fails often if to fast
}
}
});
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abfragen der aktuellen Skill-Level
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: WB_URL, onload:function(responseDetails) {
var content = responseDetails.responseText;
// Aus HTML ein DOM-Objekt erzeugen
var doc = HTML2DOM(content);
var sk = true;
var skAnz = 3;
var skAtt = -1;
var tables = doc.getElementsByClassName("skill_block");
if (tables.length == 0) {
var tables = doc.getElementsByTagName("table");
sk = false;
}
if (content.indexOf('"/pet/"') != -1) {
var t = document.getElementById("topmenu").getElementsByClassName("pet")[0];
t = getComputedStyle(t, null);
if (parseInt(t.width) > 0 && !sk)
skAnz = 4;
}
if (sk && skAnz == 3) {
document.getElementById("ADBACKimg").src = getIconAddr(get_icon("attdefjobback")[nrOfTabs >= 6?0:1]);
if (document.getElementById("defweaponlnk"))
document.getElementById("defweaponlnk").href = MINIJOBS_URL;
else
ShowImg('ADBACK', MINIJOBS_URL, get_icon("nodefweapon"), '', '', '', 84, 13, 1, 'defweapon');
}
for (var i = 0; i < tables.length; i++) {
var table = tables[i];
if (sk) {
if (table.getElementsByClassName("slot_3").length > 0) {
var skill = table.getElementsByTagName("h2")[0].innerHTML;
var skillLvl = table.getElementsByClassName("skill_progress_text")[0].innerHTML.split(" ")[0];
}
else
continue;
}
else {
// Referenz auf Tabellenzeilen in trs speichern
var trs = table.getElementsByTagName("tr");
if (trs[0].innerHTML.indexOf(TxtEstimated[lang]) != -1 || trs[0].innerHTML.indexOf('processbar_bg') == -1)
continue;
var skill = trs[0].innerHTML.split('<strong>')[1].split('</strong>')[0];
var skillLvl = trs[0].innerHTML.split('="108">')[1].split('<span')[0];
}
switch (skill) {
case TxtSkillATT[lang]:
glblVars[0] = Number(skillLvl);
var skAtt = i;
break;
case TxtSkillDEF[lang]:
glblVars[1] = Number(skillLvl);
break;
case TxtSkillDEX[lang]:
DEXSkill = Number(skillLvl);
glblVars[2] = DEXSkill;
break;
default: break;
}
}
if (skAtt >= 0)
var actSkills = skAtt;
else
var actSkills = doc.getElementsByClassName('box_main_small').length;
if (actSkills == 0) {
ShowImg ('SCBACK', WB_URL, get_icon("plunderb"), getLangTxt(TxtNoSkill), '', '', 6, (skAnz==4)?18:21, 4, 'skill1');
ShowImg ('SCBACK', WB_URL, get_icon("plunderb"), getLangTxt(TxtNoSkill), '', '', 6, (skAnz==4)?26:31, 4, 'skill2');
} else {
var start_time = content.split("fortschritt()")[1].split('var start = ')[1].split(';')[0];
var end_time = content.split("fortschritt()")[1].split('var end = ')[1].split(';')[0];
var jetzt = content.split('<input id="now_timestamp" type="hidden" value="')[1].split('">')[0];
var skilllvl = content.split('box_text_small">')[1];
var skill = skilllvl.split('">')[1].split('<')[0];
var level = skilllvl.split('[')[1].split(']')[0].split(' ')[1];
var percent = jetzt>=end_time?100:Math.round((jetzt - start_time) / (end_time - start_time) * 1000) / 10;
var text = skill + ' ' + level + ', ' + percent + '%, ' + FmtInfo(jetzt, end_time);
var width = Math.ceil(25/100*percent);
ShowImg ('SCBACK', WB_URL, get_icon("plundera"), text, '', '', 6, (skAnz==4)?18:21, 3, 'skill1bg');
if (width > 0)
ShowImg ('SCBACK', WB_URL, get_icon("clean"), text, width, 5, 6, (skAnz==4)?18:21, 4, 'skill1fg');
if (actSkills > 1) {
skilllvl = content.split('box_text_small">')[2];
var skill2 = skilllvl.split('">')[1].split('<')[0];
var level2 = skilllvl.split('[')[1].split(']')[0].split(' ')[1];
var endtime= skilllvl.split('style_skill">')[2].split('<')[0];
if (isNaN(endtime.substr(0,2))) {
var now = new Date;
endtime = endtime.split(', ')[1];
endtime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), endtime.substr(0,2), endtime.substr(3,2), 0);
if (endtime < now)
endtime.setTime(endtime.getTime() + 86400*1000);
}
else
endtime = new Date(2000+Number(endtime.substr(6,2)), Number(endtime.substr(3,2)-1), endtime.substr(0,2), endtime.substr(10,2), endtime.substr(13,2), 0);
endtime = FmtInfo(0, endtime.getTime()/1000 - timeDiff);
var text2 = skill2 + ' ' + level2 + endtime.substring(0, endtime.length-3);
ShowImg ('SCBACK', WB_URL, get_icon("plundera"), text2, '', '', 6, (skAnz==4)?26:31, 3, 'skill2bg');
} else {
ShowImg ('SCBACK', WB_URL, get_icon("plunderb"), getLangTxt(TxtNoSkill), '', '', 6, (skAnz==4)?26:31, 4, 'skill2');
}
var skillTim = function() {
jetzt = Number(jetzt) + 1;
if (!document.getElementById('skill1fg'))
return;
window.setTimeout(skillTim, 1000);
var percent = jetzt>=end_time?100:Math.round((jetzt - start_time) / (end_time - start_time) * 1000) / 10;
var text = skill + ' ' + level + ', ' + percent + '%, ' + FmtInfo(jetzt, end_time);
var nwidth = Math.ceil(25/100*percent);
if (nwidth > 0)
if (width == 0)
ShowImg ('SCBACK', WB_URL, get_icon("clean"), text, nwidth, 5, 6, (skAnz==4)?18:21, 4, 'skill1fg');
else {
document.getElementById('skill1fg').width = nwidth;
document.getElementById('skill1fg').title = text;
}
document.getElementById('skill1bg').title = text;
if (end_time - jetzt < 3600 && actSkills == 1)
if (jetzt-Math.floor(jetzt/2)*2 != 0)
document.getElementById('skill1fg').src = getIconAddr(get_icon("plunderb"));
else
document.getElementById('skill1fg').src = getIconAddr(get_icon("clean"));
}
window.setTimeout(skillTim, 1000);
}
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abfragen der Begleiter-Weiterbildung
// **********************************************************************************
if (!sk) {
var nav = document.getElementById("nav-2");
if (nav && nav.innerHTML.indexOf("/skills/pet/") == -1) {
var li = nav.getElementsByTagName("li");
for (i = 0; i < li.length; i++)
if (li[i].innerHTML.indexOf("/pet/") != -1) {
var newli = li[i].cloneNode(true);
var a = newli.getElementsByTagName("a");
a[0].href = "/skills/pet/";
var span = newli.getElementsByTagName("span");
span[span.length-1].innerHTML = "Begleiter";
li[i].parentNode.insertBefore(newli, li[i+1]);
break;
}
}
GM_xmlhttpRequest({method:"GET", url: WBPET_URL, onload:function(responseDetails) {
var content = responseDetails.responseText;
// Wenn die Seite abgerufen werden konnte (kein Seitenladefehler)
if (content.indexOf(KEYWORD_MYBUM[lang]) != -1) {
// Aus HTML ein DOM-Objekt erzeugen
var doc = HTML2DOM(content);
var actSkills = doc.getElementsByClassName('box_main_small').length;
if (actSkills == 0) {
ShowImg ('SCBACK', WBPET_URL, get_icon("plunderb"), getLangTxt(TxtNoSkill), '', '', 6, (skAnz==4)?34:41, 4, 'skillpet');
} else {
var start_time = content.split("fortschritt()")[1].match(/var start *= *\d+/)[0].match(/\d+/)[0];
var end_time = content.split("fortschritt()")[1].match(/var end *= *\d+/)[0].match(/\d+/)[0];
var jetzt = content.split('<input id="now_timestamp" type="hidden" value="')[1].split('">')[0];
var skilllvl = content.split('box_text_small">')[1];
var skill = skilllvl.split('">')[1].split('<')[0];
var level = skilllvl.split('[')[1].split(']')[0].split(' ')[1];
var percent = jetzt>=end_time?100:Math.round((jetzt - start_time) / (end_time - start_time) * 1000) / 10;
var text = skill + ' ' + level + ', ' + percent + '%, ' + FmtInfo(jetzt, end_time);
var width = Math.ceil(25/100*percent);
ShowImg ('SCBACK', WBPET_URL, get_icon("plundera"), text, '', '', 6, (skAnz==4)?34:41, 3, 'skillpetbg');
if (width > 0)
ShowImg ('SCBACK', WBPET_URL, get_icon("clean"), text, width, 5, 6, (skAnz==4)?34:41, 4, 'skillpetfg');
var PetSkillTim = function() {
jetzt = Number(jetzt) + 1;
if (!document.getElementById('skillpetfg'))
return;
window.setTimeout(PetSkillTim, 1000);
var percent = jetzt>=end_time?100:Math.round((jetzt - start_time) / (end_time - start_time) * 1000) / 10;
var text = skill + ' ' + level + ', ' + percent + '%, ' + FmtInfo(jetzt, end_time);
var nwidth = Math.ceil(25/100*percent);
if (nwidth > 0)
if (width == 0)
ShowImg ('SCBACK', WB_URL, get_icon("clean"), text, nwidth, 5, 6, (skAnz==4)?34:41, 4, 'skillpetfg');
else {
document.getElementById('skillpetfg').width = nwidth;
document.getElementById('skillpetfg').title = text;
}
document.getElementById('skillpetbg').title = text;
if (end_time - jetzt < 3600)
if (jetzt-Math.floor(jetzt/2)*2 != 0)
document.getElementById('skillpetfg').src = getIconAddr(get_icon("plunderb"));
else
document.getElementById('skillpetfg').src = getIconAddr(get_icon("clean"));
}
window.setTimeout(PetSkillTim, 1000);
}
}
}
});
}
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abfragen Haustier Streunen
// **********************************************************************************
if (sk || skAnz == 4) {
GM_xmlhttpRequest({method:"GET", url: PET_URL, onload:function(responseDetails) {
var content = responseDetails.responseText;
// Wenn die Seite abgerufen werden konnte (kein Seitenladefehler)
if (content.indexOf(KEYWORD_MYBUM[lang]) != -1) {
// Aus HTML ein DOM-Objekt erzeugen
var doc = HTML2DOM(content);
if (content.indexOf("pet_kader") == -1) {
ShowImg ('SCBACK', PET_URL, get_icon("plundera"), "Du hast noch kein Tier", '', '', 6, (skAnz==4)?42:41, 4, 'streunpet');
} else {
var petbusy = doc.getElementsByClassName('petbusybar');
var backflg = 0;
for (var b = 0; b < petbusy.length; b++) {
if (petbusy[b].innerHTML.indexOf('Fertig') != -1) {
backflg = 1;
break;
}
if (petbusy[b].innerHTML.indexOf('counter') != -1) {
DispZeit(new Date(), petbusy[b], PET_URL, TxtStreun, "SCBACK", "streunpet", 6, (skAnz==4)?42:41, 3, 10800, 25);
backflg = 2;
break;
}
}
if (backflg != 2) {
if (backflg == 1)
var text = "Dein Haustier ist zurück!";
else
var text = "Dein Haustier streunt zur Zeit nicht!";
ShowImg ('SCBACK', PET_URL, get_icon("plunderb"), text, '', '', 6, (skAnz==4)?42:41, 4, 'streunpet');
}
}
}
}
});
}
if (!oldVersion)
GM_xmlhttpRequest({method: 'GET', url: PLUNDERSHOP_URL, onload: function(responseDetails) {
function showPlunderShop(tdiv, i) {
var fkt = anzPlnd / 3;
if (i < tdiv.length) {
var src = tdiv[i].getElementsByTagName("img")[0].src;
var tda = tdiv[i].getElementsByTagName("a");
for (var ii = 0; ii < tda.length; ii++) {
if (tda[ii].href.indexOf("stock/plunder/") != -1)
break;
}
GM_xmlhttpRequest({method: 'GET', url: tda[ii].href, onload: function(responseDetails) {
var plunder = tda[ii].innerHTML.split(">")[1].split("<")[0];
var kost = trimString(tda[ii].innerHTML.split("<br>")[1]);
var kauf = getLangTxt(TxtBuy);
var pnum = tdiv[i].getElementsByTagName("input")[1].value;
var padd = GetPlunderDescription(responseDetails.responseText.split('craft_result')[1].split("</tr>")[0]);
var curElem = ShowImg ('PSBACK', '', src, kauf+": "+plunder+" ("+kost+(padd==""?"":"; "+padd.substr(2,padd.length-3))+")", 24, 24/fkt, 1 + (i % 3)*28, 20 + Math.floor(i / 3)*12, 1, 'buy'+i);
if (curElem != null) {
curElem.style.cursor = 'pointer';
curElem.name = 'buy'+pnum;
// **********************************************************************************
// EVENTHANDLER
// **********************************************************************************
curElem.addEventListener('click', function(event) {
// Wartecursor anzeigen
CursorWait(event.target, true);
var pnum = event.target.name.substr(3);
GM_xmlhttpRequest({
method: 'POST',
url: TOWNBASE_URL+'city/plundershop/buy/',
headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('plunder='+pnum),
onload: function(content) {
refreshPage();
}
});
}, false);
}
}
});
return 1;
}
else {
var src = getIconAddr(get_icon("noplunderequip"));
ShowImg ('PSBACK', PLUNDERSHOP_URL, src, 'verkauft', 24, 24/fkt, 1 + (i % 3)*28, 20 + Math.floor(i / 3)*12, 1, 'pshop'+i);
}
return 0;
}
var content = responseDetails.responseText;
// Wenn die Seite abgerufen werden konnte (kein Seitenladefehler)
if (content.indexOf(KEYWORD_MYBUM[lang]) != -1) {
var jetzt = new Date();
var doc = HTML2DOM(content);
var forms = doc.getElementsByTagName("form");
aP = Math.ceil((content.split("trhover").length-2)/3)*3;
if (anzPlnd < aP)
anzPlnd = aP;
for (var j = 0; j < forms.length; j++)
if (forms[j].id == "refresh_plundershop")
break;
var tdiv = forms[j].parentNode;
while (tdiv.getElementsByClassName("trhover").length == 0 && tdiv.getElementsByClassName("refreshbutton2").length == 0)
tdiv = tdiv.parentNode;
tdiv = tdiv.getElementsByClassName("trhover");
var pCnt = 0;
for (j = 0; j < anzPlnd; j++)
pCnt += showPlunderShop(tdiv, j);
var text = (pCnt == 0?"Plundershop":getLangTxt(TxtBuyAll));
src = getIconAddr(get_icon("plunderreset"));
//tdiv = doc.getElementById("refresh_plundershop").getElementsByClassName("refreshbutton")[0];
//var text = tdiv.value;
var curElem = ShowImg ('PSBACK', '', src, text, 24, 24, 85, 20, 1, 'pshop' + anzPlnd);
if (curElem == null)
return;
curElem.style.cursor = 'pointer';
// **********************************************************************************
// EVENTHANDLER
// **********************************************************************************
curElem.addEventListener('click', function(event) {
// Wartecursor anzeigen
CursorWait(event.target, true);
var buyCount = 0;
for (var i = 0; i < anzPlnd; i++)
if (document.getElementById('buy'+i)) {
var pnum = document.getElementById('buy'+i).name.substr(3);
GM_xmlhttpRequest({
method: 'POST',
url: TOWNBASE_URL+'city/plundershop/buy/',
headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('plunder='+pnum),
onload: function(content) {
}
});
buyCount++;
}
if (buyCount > 0)
window.setTimeout(refreshPage, 1000);
else
window.location.href = PLUNDERSHOP_URL;
}, false);
/*currentelem.addEventListener('mouseover', function(event) {
var cElem = document.getElementById('pshop3');
var sk = (event.shiftKey != 0) || (document.getElementById('buy0') == null);
if (sk) {
tdiv = doc.getElementById("refresh_plundershop").getElementsByClassName("refreshbutton")[0];
cElem.title = tdiv.value;
}
else
cElem.title = "Buy all";
}, false);
currentelem.addEventListener('mouseout', function(event) {
var cElem = document.getElementById('pshop3');
var sk = !document.getElementById('buy0');
if (sk) {
tdiv = doc.getElementById("refresh_plundershop").getElementsByClassName("refreshbutton")[0];
cElem.title = tdiv.value;
}
else
cElem.title = "Buy all";
cElem.mouseover = null;
}, false);*/
tdiv = doc.getElementsByClassName("refreshbutton");
if (tdiv.length > 1) {
PSwidth = document.getElementById("PSBACKimg").naturalWidth;
DispZeit(jetzt, tdiv[tdiv.length-1], PLUNDERSHOP_URL, TxtWaitSort, "PSBACK", "pshop", 0, 47, 1, PSWaitTime, PSwidth);
}
}
}
});
GM_xmlhttpRequest({
method: 'GET',
url: REWARDS_URL,
onload: function(responseDetails) {
var content = responseDetails.responseText;
// Wenn die Seite abgerufen werden konnte (kein Seitenladefehler)
if (content.indexOf(KEYWORD_MYBUM[lang]) != -1) {
var doc = HTML2DOM(content);
var table = doc.getElementsByTagName("table");
if (table.length > 0) {
var trs = table[0].getElementsByTagName("tr");
var cards = trs[2].innerHTML.split("<span")[1].split('">')[1].split('</span')[0];
var newlink = document.getElementById("SCBACK").parentNode.appendChild(document.createElement('a'));
newlink.innerHTML = '<div id="cards" align="center" style="position:absolute; left:' + (SC_X+44) + 'px; top:' + (SC_Y+23) + 'px; z-index:'+(getZ("SCBACK")+5)+'; color:black; width:35px"><b>' + cards + '</b></div>';
newlink.setAttribute('title', getLangTxt(TxtCards) + cards);
cacheBgnds("SCBACK", 'cards');
}
}
GM_xmlhttpRequest({method: 'GET', url: OVERVIEW_URL, onload: function(responseDetails) {
var content = responseDetails.responseText;
// Wenn die Seite abgerufen werden konnte (kein Seitenladefehler)
if (content.indexOf(KEYWORD_MYBUM[lang]) != -1) {
if (sk && skAnz == 3) {
ShowMiniJob(content);
}
var today = new Date();
var taskDone = (content.indexOf('korkenhaken.png') != -1 || (content.indexOf('tagesaufgabe') != -1 && content.indexOf('Tagesaufgabe offen') == -1));
if ((content.indexOf('/daily/') == -1) && !taskDone)
ShowImg ('SCBACK', '', get_icon("wutinaktiv"), '', '', '', 49, 23, 4, 'taskdone');
else {
if (taskDone) {
var href = REWARDS_URL;
ShowImg ('SCBACK', href, get_icon("grnbg"), '', '', '', 42, 13, 4, 'taskdone');
newlink.setAttribute('href', href);
} else {
var href = DAILY_URL;
ShowImg ('SCBACK', href, get_icon("redbg"), '', '', '', 42, 13, 4, 'taskdone');
GM_xmlhttpRequest({
method: 'GET',
url: DAILY_URL,
onload: function(responseDetails) {
if (PGu_getValue("callCount") != callCount)
return;
var content = responseDetails.responseText;
// Wenn die Seite abgerufen werden konnte (kein Seitenladefehler)
if (content.indexOf(KEYWORD_MYBUM[lang]) != -1) {
href = DAILY_URL;
var doc = HTML2DOM(content);
var table = doc.getElementsByTagName("table")[0];
var trs = table.getElementsByTagName("tr");
var task = content.split('min-height:40px;">')[1].split('<strong>')[1].split('</strong>')[0];
for (var t = 0; t < dailyTasks.length; t++)
if (dailyTasks[t] == task) {
task = myDailyTasks[t];
href = TOWNBASE_URL + dailyTaskLinks[t];
if (t == 12) // Snack essen
TAisEatSnack = true;
else if (t == 13) // Promille ueber 2% BAC
TAisDrink2 = true;
break;
}
document.getElementById('taskdonelnk').setAttribute('href', href);
newlink.setAttribute('href', href);
var lockDA = PGu_getValue("lockDA", 0); // Sperrdatum Tagesaufgabe
if (lockDA != FormatDate(today)) {
document.getElementById('provocation_area').innerHTML += '<form name="prov_form"><div id="provocation_note"><a class="close" href="#" onclick="CloseProvocation();"><img id="prov_close" src="' + window.location.protocol + '//static.pennergame.de/img/pv4/premiummedia/img/premium/provocation/provocation_note_close.png" border="0"></a><div id="provocation_text" class="provocation_text"><div class="prov_links"></div></div></div></form>';
document.getElementById('provocation_text').innerHTML ='<img src="' + window.location.protocol + '//static.pennergame.de/img/pv4/daily_jobs/korken.png"><font style=\"color:yellow; font-size:120%;\"><b>' + getLangTxt(TxtDaily) + '</b></font><br><a href="' + href + '">'+ task +'</a><br><font style=\"color:green; font-size:120%;\"><b>' + getLangTxt(TxtCards) + cards + '</b></font>';
document.getElementById('provocation_area').setAttribute('style', 'position:absolute; left:' + PA_X + 'px; top:' + PA_Y + 'px; cursor:move');
//document.getElementById('provocation_area').addEventListener('mousedown', mousedown, false);
//document.getElementById('provocation_area').addEventListener('mouseup', mouseup, false);
makeDraggable(document.getElementById('provocation_area'));
document.getElementById('provocation_area').addEventListener('dblclick', dblclick, false);
// **********************************************************************************
// EVENTHANDLER
// **********************************************************************************
document.getElementById('prov_close').addEventListener('click', function(event) {
var today = new Date();
PGu_setValue("lockDA", FormatDate(today));
document.getElementById('prov_close').style.visibility = 'hidden';
},false);
}
}
}
});
}
}
var doc = HTML2DOM(content);
noWash = isNaN(clean);
if (noWash || clean < 0) {
var cleanTxt = getCleanliness(content);
if (cleanTxt != '')
clean = Number(cleanTxt);
}
if (!isNaN(clean)) {
var width = Math.ceil(30/100*clean);
if (noWash) {
var proz = "Lebenspunkte: " + clean;
if (clean < 80) {
proz += " (-" + Math.floor((99 - clean)/20) + " DEF)";
ShowImg ('PWBACK', '', get_icon("redbg"), '', 30, 30, 78, 13, 2, 'lifebg');
}
var url = MEDICINE_URL;
}
else {
var proz = clean + "%";
var url = WASHHOUSE_URL;
}
if (clean != 0)
ShowImg ('PWBACK', url, get_icon("clean"), proz, width, 5, 78, 46, 4, 'cleanliness');
if (clean != 100)
ShowImg ('PWBACK', url, get_icon("dirty"), proz, 30, 5, 78, 46, 3, 'dirtyness');
}
else {
var washel = document.getElementById('infozentrale_wash');
if (washel)
washel.parentNode.removeChild(washel);
}
var datadiv = doc.getElementsByClassName("tieritemA");
for (var i = 0; i < datadiv.length; i++)
if (datadiv[i].innerHTML.toLowerCase().indexOf(TxtBuyPet[lang].toLowerCase()) != -1) {
if (datadiv[i].innerHTML.indexOf('class="att">') != -1) {
glblVars[3] = datadiv[i].innerHTML.split('class="att">')[1].split(' ')[0];
glblVars[4] = datadiv[i].innerHTML.split('class="def">')[1].split(' ')[0];
} else {
var datalis = datadiv[i].innerHTML.split("<li>");
var attdef = datalis[datalis.length-4].split("<")[0].split(" ")[1];;
glblVars[3] = attdef.split("/")[0];
glblVars[4] = attdef.split("/")[1];
}
} else if (datadiv[i].innerHTML.toLowerCase().indexOf(TxtBuyWeapon[lang].toLowerCase()) != -1) {
glblVars[5] = datadiv[i].innerHTML.split('class="att">')[1].split(/<| /)[0];
if (isNaN(glblVars[5]))
glblVars[5] = 0;
glblVars[6] = datadiv[i].innerHTML.split('class="def">')[1].split('</span')[0];
if (isNaN(glblVars[6]))
glblVars[6] = 0;
}
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abrufen der Plunder-Seite, Prüfen, ob besserer Plunder da
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: PLUNDER_URL, onload:function(responseDetails) {
function checkPlunder(doc, plundertable, plunderbox, aktPlunder) {
var pATTval = Math.floor((glblVars[0] + Number(glblVars[3]) + Number(glblVars[5])) * glblVars[7]);
var pDEFval = Math.floor((glblVars[1] + Number(glblVars[4]) + Number(glblVars[6])) * glblVars[8]);
glblVars[9] = aktPlunder;
var bestFightVal = Number(GetPower(pATTval, pDEFval));
var bestPlunder = "";
// Referenz auf Zeilen der Plundertabelle speichern
if (plundertable)
var plundertrs = plundertable.getElementsByTagName("tr");
else
var plundertrs = new Array();
var AktTrikot = 0;
var TrikotAnz = true;
if (PGu_getValue("TrikotanzeigeAus", 0) == 1)
TrikotAnz = false;
var firsti = oldVersion?0:-1;
for (var i = firsti; i < plundertrs.length; i++) {
if (i == firsti)
if (aktPlunder == "")
continue;
else
var plunderHTML = plunderbox.innerHTML;
else
var plunderHTML = plundertrs[i].innerHTML;
if (i == firsti)
var plunder = aktPlunder;
else if (oldVersion)
var plunder = plunderHTML.split('change_stuff')[1].split('">')[1].split('</a>')[0];
else
var plunder = plunderHTML.split('<strong')[1].split('>')[1].split('</strong')[0];
plunder = trimString(plunder);
if (plunder.indexOf(TxtTrikot[lang]) != -1 && TrikotAnz) {
var trikot = plunder.split(' ');
var trikotNr = Number(trikot[trikot.length - 1]);
var plunderpic = plunderHTML.split('src="')[1].split('"')[0];
var Anz = 0;
if (i == firsti)
AktTrikot = trikotNr;
else
Anz = Number(GetNumberOfPlunder(doc, plunder));
if (trikotNr == AktTrikot)
Anz += 1;
if (Anz > 1)
plunder += " (" + Anz + "x)"
for (var k = 0; k < Anz && k <= 4; k++) {
var curElem = ShowImg ('PDBACK', '', plunderpic, plunder, '', '', (trikotNr-1)*23 - 3, 55 + k*5, 1, 'trikot'+trikotNr+"_"+k);
if (curElem == null)
return;
TrikotAusHandler(curElem);
}
}
if (plunderHTML.indexOf('change_stuff') == -1)
continue; // nur anlegbaren Plunder beachten
var addATT = 1;
var addDEF = 1;
if (plunderHTML.indexOf('ATT:') != -1) {
var pATTtxt = trimString(plunderHTML.split('ATT:')[1].split('</li>')[0]);
var pATT = pATTtxt.split(' ')[0];
if (pATTtxt.indexOf('%') != -1)
addATT = 1 + Number(pATTtxt.split('%')[0].split(' ').pop()) / 100;
} else
var pATT = 0;
if (plunderHTML.indexOf('DEF:') != -1) {
var pDEFtxt = trimString(plunderHTML.split('DEF:')[1].split('</li>')[0]);
var pDEF = pDEFtxt.split(' ')[0];
if (pDEFtxt.indexOf('%') != -1)
addDEF = 1 + Number(pDEFtxt.split('%')[0].split(' ').pop()) / 100;
} else
var pDEF = 0;
if (plunderHTML.indexOf(TxtIncrease[lang]) != -1)
if (plunderHTML.indexOf('%') != -1) {
var addText = plunderHTML.split(TxtIncrease[lang])[1].split('%')[0];
var addTextSplit = addText.split(' ');
var addPerc = addTextSplit[addTextSplit.length-1];
if (addText.indexOf('ATT') != -1 || addText.indexOf(TxtIncrATT[lang]) != -1)
if (addATT == 1)
addATT = 1 + Number(addPerc) / 100;
if (addText.indexOf('DEF') != -1 || addText.indexOf(TxtIncrDEF[lang]) != -1)
if (addDEF == 1)
addDEF = 1 + Number(addPerc) / 100;
}
pATTval = Math.floor((glblVars[0] + Number(glblVars[3]) + Number(glblVars[5]) + Number(pATT)) * glblVars[7] * addATT);
pDEFval = Math.floor((glblVars[1] + Number(glblVars[4]) + Number(glblVars[6]) + Number(pDEF)) * glblVars[8] * addDEF);
var pPower = Number(GetPower(pATTval, pDEFval));
if (bestFightVal < pPower) {
bestFightVal = pPower;
bestPlunder = plunder;
glblVars[10] = plunder;
}
}
if (bestPlunder != aktPlunder && bestPlunder != "") {
plundercheck = printf (getLangTxt(TxtPlunderCheck), bestPlunder);
logoutWarn = 2;
showFightAlert();
}
else
plundercheck = "";
if (logoutWarn < 0)
logoutWarn = 0;
var img = document.getElementById('resetfight');
if (img != undefined)
img.setAttribute('title', img.getAttribute('title') + makeAddInfo());
glblVars[11] = m_ownpoints;
glblVars[12] = m_ownuserid;
scriptData[3] = glblVars;
}
// Aktuellen Plunder ermitteln und anzeigen
var content = responseDetails.responseText;
// Wenn die Seite abgerufen werden konnte (kein Seitenladefehler)
if (content.indexOf(KEYWORD_MYBUM[lang]) != -1) {
// Aus dem Responsetext ein Document machen
var doc = HTML2DOM(content);
var plunderbox = doc.getElementsByClassName(oldVersion?"box special":"box")[0];
var aktPlunder = GetCurrentPlundername(plunderbox);
// Referenz auf Plundertabelle speichern
if (oldVersion) {
checkPlunder(content, doc.getElementsByTagName("table")[0], plunderbox, aktPlunder);
} else {
GM_xmlhttpRequest({method:"GET", url: PLUNDER_URL+'ajax/?c=1', onload:function(responseDetails) {
var content = responseDetails.responseText;
// Aus dem Responsetext ein Document machen
var doc = HTML2DOM(content);
checkPlunder(content, doc.getElementsByTagName("table")[0], plunderbox, aktPlunder);
}});
}
}
}
});
}
else
noUpdate = true;
}});
}
});
}
});
}
// **********************************************************************************
// **********************************************************************************
// Funktion aktualisiert einen Balken bei mouseover bzw. nach vergangener Zeit
// **********************************************************************************
// **********************************************************************************
var balkData = new Array();
function balkDisp(id, end_time, text, counter, jetzt, maxTime, maxWidth, textsub) {
function mod (a, b) { return a - Math.floor(a/b)*b; }
var i = balkData.length;
var idx = id.substr(6);
id = id.substr(0, 4);
balkData[i] = new Array(idx, end_time, text, counter, jetzt, maxTime, maxWidth, id);
function actTime (e) {
var target = e.target.id;
var idx = target.substr(6);
for (i = 0; i < balkData.length; i++) {
if (balkData[i][0] == idx) {
var now = new Date();
now = Math.floor(now.getTime()/1000);
var zeitText = "";
zeitText = FmtInfo(now, balkData[i][1]);
var text = balkData[i][2].replace("%s", (textsub == ""?zeitText:zeitText.replace(', Ende:', textsub)));
document.getElementById(target).title = text;
break;
}
}
}
if (!document.getElementById(id+'bg'+idx))
return;
document.getElementById(id+'bg'+idx).addEventListener('mouseover', actTime, false);
if (document.getElementById(id+'fg'+idx))
document.getElementById(id+'fg'+idx).addEventListener('mouseover', actTime, false);
var actBalk = function () {
var now = new Date();
now = Math.floor(now.getTime()/1000);
var rtime = balkData[balkindx][3] - (now - balkData[balkindx][4]);
var nwidth = Math.ceil(rtime/balkData[balkindx][5]*balkData[balkindx][6]);
if (nwidth > 0)
if (document.getElementById(balkData[balkindx][7] + 'fg' + balkData[balkindx][0]))
document.getElementById(balkData[balkindx][7] + 'fg' + balkData[balkindx][0]).width = nwidth;
else {
refreshPage();
}
window.setTimeout(actBalk, nextRun());
}
function nextRun () {
balkindx = 0;
var now = new Date();
now = Math.floor(now.getTime()/1000);
var rtime = balkData[balkindx][3] - (now - balkData[balkindx][4]);
var nextTime = Math.floor(mod(rtime, balkData[balkindx][5]/balkData[balkindx][6]) * 1000);
for (var i = 1; i < balkData.length; i++)
if (Math.floor(mod(rtime, balkData[i][5]/balkData[i][6]) * 1000) < nextTime) {
nextDecr = Math.floor(mod(rtime, balkData[i][5]/balkData[i][6]) * 1000);
balkindx = i;
}
if (nextTime < 500)
nextTime = 500;
return nextTime;
}
window.setTimeout(actBalk, nextRun());
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt die aktuellen Kampfwerte
// **********************************************************************************
// **********************************************************************************
function CheckFightValues(content) {
// Aus HTML ein DOM-Objekt erzeugen
var doc = HTML2DOM(content)
var ft = 0;
if (doc.getElementsByTagName("table")[0].parentNode.innerHTML.indexOf('highscore/rauferei') != -1)
ft = 1;
var table = doc.getElementsByTagName("table")[ft];
// Referenz auf Tabellenzeilen in trs speichern
var trs = table.getElementsByTagName("tr");
var tr = 0;
if (trs[3].getElementsByClassName("fight_num").length > 0)
tr = 3;
if (trs[2].getElementsByClassName("fight_num").length > 0)
tr = 2;
if (tr > 0) {
// Eigenen ATT-Wert ermitteln
attvalue = Number(trs[tr].getElementsByClassName("fight_num")[0].innerHTML);
// Eigenen DEF-Wert ermitteln
defvalue = Number(trs[tr].getElementsByClassName("fight_num")[1].innerHTML);
}
else {
// Eigenen ATT-Wert ermitteln
attvalue = Number(GetValueFromRow(trs[2]));
// Eigenen DEF-Wert ermitteln
defvalue = Number(GetValueFromRow(trs[3]));
}
// ATT-Wert um eine eventuell vorhandene ATT-Stärkung (z.B. schwarzes Loch +1, +2, +3) korrigieren
var ATTBoost = GetATTBoost(table.innerHTML);
if (ATTBoost > 0) {
attvalue = attvalue - ATTBoost;
var brs = content.split("<span><b>" + TxtBoost[lang] + "</b>")[1].split("</span>")[0].split("<br />");
var attboost = trimString(brs[brs.length-2].replace("<b>","").replace("</b>",""));
var titletext = "ATT-" + getLangTxt(TxtBoost) + " +" + ATTBoost + ". " + attboost;
ShowImg ('ADBACK', FIGHT_URL, get_icon("grnbg"), titletext, 39, 40, 0, 12, 1, 'attboost');
var newlink = document.getElementById("attboost").parentNode.appendChild(document.createElement('div'));
newlink.id = "attboosth";
newlink.align = "center";
newlink.style = 'position:absolute; left:' + (AD_X+1) + 'px; top:' + (AD_Y+20) + 'px; z-index:'+(getZ("ADBACK")+5)+'; color:black; width:39px;font-size:20px;">';
newlink.innerHTML = '<b>+' + ATTBoost + '</b>';
newlink.title = titletext;
cacheBgnds("ADBACK", 'attboosth');
}
// DEF-Wert um eine eventuell vorhandene DEF-Stärkung (z.B. Kürbis) korrigieren
var DEFBoost = GetDEFBoost(table.innerHTML);
if (DEFBoost > 0) {
defvalue = defvalue - DEFBoost;
var brs = content.split("<span><b>" + TxtBoost[lang] + "</b>")[1].split("</span>")[0].split("<br />");
var defboost = trimString(brs[brs.length-2].replace("<b>","").replace("</b>",""));
var titletext = "DEF-" + getLangTxt(TxtBoost) + " +" + DEFBoost + ". " + defboost;
ShowImg ('ADBACK', FIGHT_URL, get_icon("grnbg"), titletext, 39, 40, 42, 12, 1, 'defboost');
var newlink = document.getElementById("defboost").parentNode.appendChild(document.createElement('div'));
newlink.id = "defboosth";
newlink.align = "center";
newlink.style = 'position:absolute; left:' + (AD_X+44) + 'px; top:' + (AD_Y+20) + 'px; z-index:'+(getZ("ADBACK")+5)+'; color:black; width:39px;font-size:20px;">';
newlink.innerHTML = '<b>+' + DEFBoost + '</b>';
newlink.title = titletext;
cacheBgnds("ADBACK", 'defboosth');
}
// ATT-Wert um eine eventuelle Verletzung korrigieren
var injury = GetInjury(table.innerHTML);
if (injury < 0) {
attvalue = attvalue - injury;
var injboost = content.split("<span><b>" + TxtInjury[lang] + "</b>")[1];
injboost = injboost.split(TxtATTBoost[lang])[1];
injboost = trimString(injboost.split("<br />")[2].replace("<b>","").replace("</b>",""));
var titletext = "ATT-" + getLangTxt(TxtInjury) + " " + injury + ". " + injboost;
if (ATTBoost > 0) {
document.getElementById('attboost').setAttribute('height', '19px');
document.getElementById('attboosth').style.top = (AD_Y+11)+ 'px';
var height = 20;
}
else
var height = 40;
ShowImg ('ADBACK', FIGHT_URL, get_icon("redbg"), titletext, 39, height, 0, (height==40?12:32), 1, 'injboost');
var newlink = document.getElementById("injboost").parentNode.appendChild(document.createElement('div'));
newlink.id = "injboosth";
newlink.align = "center";
newlink.style = 'position:absolute; left:' + (AD_X+1) + 'px; top:' + (AD_Y+(height==40?20:31)) + 'px; z-index:'+(getZ("ADBACK")+5)+'; color:black; width:39px;font-size:20px;">';
newlink.innerHTML = '<b>' + injury + '</b>';
newlink.title = titletext;
cacheBgnds("ADBACK", 'injboosth');
}
// DEF-Wert um eine eventuelle Verletzung korrigieren (> 0 wenn DEF-Wert gesenkt)
injury = GetInjury(table.innerHTML);
if (injury > 0) {
defvalue = defvalue + injury;
var injboost = content.split("<span><b>" + TxtInjury[lang] + "</b>")[1];
injboost = injboost.split(TxtDEFBoost[lang])[1];
injboost = trimString(injboost.split("<br />")[2].replace("<b>","").replace("</b>",""));
var titletext = "DEF-" + getLangTxt(TxtInjury) + " " + injury + ". " + injboost;
if (DEFBoost > 0) {
document.getElementById('defboost').setAttribute('height', '19px');
document.getElementById('defboosth').style.top = (AD_Y+11)+ 'px';
var height = 20;
}
else
var height = 40;
ShowImg ('ADBACK', FIGHT_URL, get_icon("redbg"), titletext, 39, height, 42, (height==40?12:32), 1, 'injdboost');
var newlink = document.getElementById("injdboost").parentNode.appendChild(document.createElement('div'));
newlink.id = "injdboosth";
newlink.align = "center";
newlink.style = 'position:absolute; left:' + (AD_X+44) + 'px; top:' + (AD_Y+(height==40?20:31)) + 'px; z-index:'+(getZ("ADBACK")+5)+'; color:black; width:39px;font-size:20px;">';
newlink.innerHTML = '<b>-' + injury + '</b>';
newlink.title = titletext;
cacheBgnds("ADBACK", 'injdboosth');
}
glblVars[16] = attvalue;
glblVars[17] = defvalue;
glblVars[18] = GetPower(attvalue, defvalue);
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abrufen der Bandenseite
// **********************************************************************************
GM_xmlhttpRequest({method: 'GET', url: GANG_URL,onload: function(gangresponseDetails) {
// Wenn die Bandenseite abgerufen werden konnte
if (gangresponseDetails.status == 200 &&
gangresponseDetails.responseText.indexOf('500 - Internal Server Error') == -1 &&
gangresponseDetails.responseText.indexOf(KEYWORD_MYBUM[lang]) != -1) {
var goMission = function(event) {
if (event.shiftKey != 0) {
var misPan = PGu_getValue("ShowMissionPanel", 1);
PGu_setValue("ShowMissionPanel", 1 - misPan);
refreshPage();
}
else
window.location.href = MISSION_URL;
}
// Content der Bandenseite speichern
var gangcontent = gangresponseDetails.responseText;
// Wenn man in einer Bande ist
//GM_log("gangcontent.indexOf(KEYWORD_INGANG[lang]) == -1: " + gangcontent.indexOf(KEYWORD_INGANG[lang]) == -1);
if (gangcontent.indexOf(KEYWORD_INGANG[lang]) == -1) {
GM_log("IN BANDE");
PGu_setValue("inGang", "1");
var noGangAbl = gangcontent.indexOf(TxtNoGangAbility[lang]);
glblVars[13] = -1;
// Aus HTML ein DOM-Objekt erzeugen
var doc = HTML2DOM(gangcontent)
if (PGu_getValue("ShowMissionPanel", 1) == 0) {
document.getElementById("MIBACK").addEventListener("click", goMission, false);
}
else if (lang == 0) {
var trs = doc.getElementsByTagName("tr");
if (trs[2].getElementsByTagName("span").length > 0) {
var td = trs[2].getElementsByTagName("td")[0];
for (var i = 0; i < td.getElementsByTagName("div").length; i++)
if (td.getElementsByTagName("div")[i].getElementsByTagName("div").length > 0)
if (td.getElementsByTagName("div")[i].getElementsByTagName("div")[0].getElementsByTagName("img").length != 0)
break;
var pic = td.getElementsByTagName("div")[i].getElementsByTagName("div")[0].getElementsByTagName("img")[0].getAttribute('src').toString();
var boosttxt = td.getElementsByTagName("span")[0].innerHTML.split("<b>")[1].split("<")[0] + " " + td.getElementsByTagName("div")[i].getElementsByTagName("div")[1].getElementsByTagName("span")[0].innerHTML;
ShowImg('MIBACK', goMission, pic, boosttxt, '', '', 3, 13, 6, 'gangboost');
var counter = Number(td.getElementsByTagName("div")[i].getElementsByTagName("div")[1].getElementsByTagName("span")[1].innerHTML.split("counter(")[1].split(")")[0]);
if (counter < 0) {
var width = 40;
var text = "noch nicht aktiviert";
}
else {
var jetzt = new Date();
jetzt = Math.floor(jetzt.getTime()/1000);
var end_time = jetzt + Number(counter);
var width = Math.ceil(Number(counter) / maxBoostTime * 40);
var text = "noch " + FmtInfo(jetzt, end_time);
}
ShowImg ('MIBACK', goMission, get_icon("plunderb"), text, 40, 5, 1, 45, 2, 'missbg4');
if (width > 0)
ShowImg ('MIBACK', goMission, get_icon("clean"), text, width, 5, 1, 45, 4, 'missfg4');
if (counter >= 0) {
balkDisp('missbg4', end_time, "noch %s", counter, jetzt, maxBoostTime, 40, "");
}
}
GM_xmlhttpRequest({method: 'GET', url: MISSION_URL, onload: function(missresponseDetails) {
// Wenn die Missionsseite abgerufen werden konnte
if (missresponseDetails.status == 200 &&
missresponseDetails.responseText.indexOf('500 - Internal Server Error') == -1 &&
missresponseDetails.responseText.indexOf(KEYWORD_MYBUM[lang]) != -1) {
// Content der Bandenupgradeseite speichern
misscontent = missresponseDetails.responseText;
var doc = HTML2DOM(misscontent);
var table = doc.getElementsByTagName("table");
var anzMiss = table.length;
if (anzMiss <= 5)
var y = 46;
else
var y = (anzMiss * 8) + 6;
var wdhMiss = new Array();
var maxwdh = 0;
for (i = 0; i < anzMiss; i++) {
var td = table[i].getElementsByTagName("tr")[1].getElementsByTagName("td")[1];
var wdh = 0;
if (td.getElementsByClassName("mission_repeate").length > 0) {
wdh = td.getElementsByClassName("mission_repeate")[0].innerHTML.split(" ");
if (wdh.length <= 5)
wdh = 0;
else if (wdh[5].substr(0,3) == "Tag")
wdh = wdh[4] * 86400;
else if (wdh[5].substr(0, 6) == "Stunde")
wdh = wdh[4] * 3600;
else
wdh = 0;
}
if (wdh > maxwdh)
maxwdh = wdh;
wdhMiss[i] = wdh;
}
var MissBits = new Array (1,2,4,8,16,32,64);
var MissNew = 0;
var MissOld = PGu_getValue("MissionBits", 0);
for (i = 0; i < anzMiss; i++) {
var td = table[i].getElementsByTagName("tr")[1].getElementsByTagName("td")[1];
var desc = td.getElementsByClassName("mission_desc")[0].getElementsByTagName("h1")[0].innerHTML;
var stages = td.getElementsByClassName("stage_area");
var text0 = stages[0].innerHTML;
if (text0.indexOf("counter") == -1) {
var waitTime = 0; // keine Wartezeit
}
else {
var waitTime = text0.split("counter(")[1].split(")")[0];
}
var wdh = wdhMiss[i];
var balken = get_icon("plundera");
var text = stages[1].innerHTML;
var zeit = 0;
var zeitText = "";
var textsub = "";
var width = 0;
if (text.indexOf("mission_stage_done") != -1)
text = "beendet";
else if (text.indexOf("bare Zeit") != -1) {
zeit = text.split("bare Zeit: ")[1].split("<")[0].split(" ");
zeit = zeit[0] * 3600;
for (j = 0; j < missions.length; j++)
if (missions[j] == desc) {
break;
}
if (j == missions.length)
PG_setValue(desc + "dauer", zeit);
if (waitTime == 0 && text0.indexOf("mission_stage_done") == -1)
zeit = -1;
}
else if (waitTime == 0 && text0.indexOf("mission_stage_done") == -1)
zeit = -1;
else if (text.indexOf("bende Zeit") != -1) {
waitTime = text.split("counter(")[1].split(")")[0];
balken = get_icon("clean");
var proceed = stages[1].getElementsByClassName("job_progress_amount")[0].innerHTML;
for (j = 0; j < missions.length; j++)
if (missions[j] == desc) {
wdh = missDauer[j];
break;
}
if (wdh == 0)
wdh = PG_getValue(desc + "dauer", waitTime);
}
var width = 0;
if (zeit > 0 && waitTime == 0) {
text = "kann gestartet werden";
balken = get_icon("clean");
width = 40;
MissNew |= MissBits[i];
}
else if (zeit < 0) {
var fehl = text0.split("mission_item_notready");
if (fehl.length > 1) {
if (fehl[1].indexOf("sprite_icons") != -1)
text = "Geld" + (fehl.length > 2?" und Plunder":"")
else
text = "Plunder";
text += " fehlt";
}
}
else if (waitTime > 0) {
var jetzt = new Date();
jetzt = Math.floor(jetzt.getTime()/1000);
var end_time = jetzt + Number(waitTime);
var width = Math.ceil(waitTime / 86400 * 24);
zeitText = FmtInfo(jetzt, end_time);
if (waitTime >= 86400)
width = Math.ceil((waitTime - 86400) / (maxwdh - 86400) * 16) + 24;
if (balken == get_icon("plundera")) {
text = "noch %s";
textsub = " warten, Start am:";
}
else {
text = "läuft (" + proceed + "), noch %s";
}
}
text = desc + ": " + text;
var balkText = text.replace('%s', (textsub == ""?zeitText:zeitText.replace(', Ende:', textsub)));
ShowImg ('MIBACK', goMission, get_icon("plunderb"), balkText, 40, 5, 44, y, 2, 'missbg'+(i+5));
if (width > 0) {
ShowImg ('MIBACK', goMission, balken, balkText, width, 5, 44, y, 4, 'missfg'+(i+5));
balkDisp('missbg'+(i+5), end_time, text, waitTime, jetzt, maxwdh, 40, textsub);
}
y -= 8;
}
if (~MissOld & MissNew && MissionAlert == 1)
alert ("Es kann eine Mission gestartet werden.");
if (MissOld != MissNew)
PGu_setValue("MissionBits", MissNew);
}
}});
}
if (oldVersion) {
var WutActive = gangupgcontent.indexOf(TxtAbility1[lang]) != -1;
var attWut = 4;
}
else {
var table2 = doc.getElementsByTagName("table")[0];
var trs2 = table2.getElementsByTagName("tr");
var tds = trs2[2].getElementsByTagName("td");
var ATTtxt = gangupgcontent.split("ATT<br")[0].substr(-10);
var ATTpos = ATTtxt.indexOf('+');
var attWut = parseInt(ATTtxt.substr(ATTpos));
var WutActive = tds[0].innerHTML.indexOf("<strong>") != -1;
if (WutActive) {
var counter = tds[0].innerHTML.split("counter(")[1].split(")")[0];
var jetzt = Math.floor(now.getTime()/1000);
var WutEnde = FmtInfo(0, jetzt + Number(counter));
WutDatum = WutEnde.substr(WutEnde.indexOf(":") + 2);
}
}
glblVars[13] = 0;
glblVars[14] = "";
if (WutActive) {
glblVars[13] = 2;
// Korrigieren der ATT-Summe um 4 bzw. 5 ATT-Punkte
if (WiWut == 1) {
glblVars[13] = 1;
if (noGangAbl == -1)
attvalue = attvalue - attWut;
// **********************************************************************************
// Text auf Kampfseite einblenden, wenn Wut aktiv ist
// **********************************************************************************
// Wenn die aktuelle Seite die Kampfseite ist und kein Counter in der ersten Zeile
if (IsFightPage() && document.getElementById("content").getElementsByTagName("table")[0].getElementsByTagName("tr")[0].innerHTML.indexOf("counter") == -1) {
var table2 = doc.getElementsByTagName("table")[0];
var trs2 = table2.getElementsByTagName("tr");
var newtr = trs2[2].cloneNode(true);
if (newtr.getElementsByTagName("span").length > 0) {
var tds = newtr.getElementsByTagName("span");
tds[0].parentNode.removeChild(tds[0]);
tds = newtr.getElementsByTagName("div");
tds[2].parentNode.removeChild(tds[2]);
}
newtr.getElementsByTagName("td")[0].setAttribute('colspan', 2);
if (!oldVersion) {
var td = newtr.getElementsByTagName("script");
td[0].parentNode.removeChild(td[0]);
var jetzt = new Date();
jetzt = Math.floor(jetzt.getTime()/1000);
var end_time = jetzt + Number(counter);
newtr.getElementsByTagName("td")[0].innerHTML = newtr.getElementsByTagName("td")[0].innerHTML.replace("()", FmtInfo(0, end_time).substr(1));
}
table2 = document.getElementById("content").getElementsByTagName("table")[0];
trs2 = table2.getElementsByTagName("tr");
trs2[1].parentNode.insertBefore(newtr, trs2[1]);
}
}
if (oldVersion) {
wuttext = gangupgcontent.split(TxtAbility2[lang])[1];
WutDatum = wuttext.substr(8,2) + getLangTxt(DS) + wuttext.substr(5,2) + getLangTxt(DS) + wuttext.substr(0,4) + wuttext.substr(10,9);
}
glblVars[14] = WutDatum;
if (noGangAbl != -1) {
WutDatum += " (" + getLangTxt(TxtNoProfAbility) + ")";
// WiWu- bzw. Wutstatus speichern
PGu_setValue("WutActive", WUTSTATE_INACTIVE);
}
else
// WiWu- bzw. Wutstatus speichern
PGu_setValue("WutActive", WUTSTATE_ACTIVE);
ShowWutIcon(PGu_getValue("WutActive", WUTSTATE_ERROR));
// sonst: WiWu bzw. Wut ist nicht gestartet
} else {
// WiWu- bzw. Wutstatus speichern
PGu_setValue("WutActive", WUTSTATE_INACTIVE);
}
ShowWutIcon(PGu_getValue("WutActive", WUTSTATE_ERROR));
// Vergleich der aktuellen Stärke mit der Max-Stärke
ComparePower(attvalue, defvalue, promille);
GetAllValues(attvalue, defvalue);
// sonst: Bandenseite konnte nicht geladen werden
} else {
GM_log("NICHT IN BANDE");
// WiWu- bzw. Wutstatus speichern (keine Wut)
PGu_setValue("WutActive", WUTSTATE_INACTIVE);
glblVars[7] = 1.0;
glblVars[8] = 1.0;
// Anzeige des WiWu- bzw. Wut-Status
ShowWutIcon(PGu_getValue("WutActive", WUTSTATE_ERROR));
// Vergleich der aktuellen Stärke mit der Max-Stärke
ComparePower(attvalue, defvalue, promille);
GetAllValues(attvalue, defvalue);
}
} else {
// Powerwerte können nicht richtig berechnet werden
ShowFightStateIcon(FIGHTSTATE_ERROR, 0);
glblVars[7] = 1.0;
glblVars[8] = 1.0;
noUpdate = true;
// Anzeige des WiWu- bzw. Wut-Status
ShowWutIcon(WUTSTATE_ERROR);
}
}});
}
// **********************************************************************************
// **********************************************************************************
// lädt eine Seite neu
// **********************************************************************************
// **********************************************************************************
function refreshPage() {
var page = location.toString();
if (page.endsWith("activities/bottle/"))
page = page.substr(0, page.length-7);
else if (page.endsWith("/buy/"))
page = page.substr(0, page.length-4);
else if (page.endsWith("/speed/"))
page = page.substr(0, page.length-6);
else if (page.endsWith("/success/"))
page = page.substr(0, page.length-8);
else if (page.endsWith("/#"))
page = page.substr(0, page.length-1);
window.location.href = page;
}
// **********************************************************************************
// **********************************************************************************
// Funktion zeigt das Bandenkampf-Icon an
// **********************************************************************************
// **********************************************************************************
function ShowGangFightIcon(GangFightIcon, GangfightTitle) {
ShowImg('GFBACK', '/gang/fight/', get_icon("gangfight")[GangFightIcon], GangfightTitle, ICON_WIDTH, ICON_WIDTH, 10, 15, 6, 'gangfight');
}
// **********************************************************************************
// **********************************************************************************
// Funktion zeigt das Neu-Icon an
// **********************************************************************************
// **********************************************************************************
function ShowNewIcon() {
ShowImg('GFBACK', '/gang/fight/', get_icon("new"), '', '', '', 30, 12, 7, 'gangfightnew');
}
// **********************************************************************************
// **********************************************************************************
// Funktion zeigt das Kampf-Icon und die eintreffenden Kämpfe als Tooltip an
// **********************************************************************************
// **********************************************************************************
function ShowFightIcon(FightIcon, FightTitle) {
var FT = null;
var width = 400;
function updateFT(e) {
if (FT != null && FT.style.display == 'block') {
x = (e.pageX ? e.pageX : window.event.x) + FT.offsetParent.scrollLeft - FT.offsetParent.offsetLeft;
y = (e.pageY ? e.pageY : window.event.y) + FT.offsetParent.scrollTop - FT.offsetParent.offsetTop;
FT.style.left = x + (FB_X<width-30?0:20-width) + "px";
FT.style.top = (y + 20) + "px";
}
}
function showFT(id) {
FT = document.getElementById(id);
if (FT)
FT.style.display = "block";
}
function mouseOverShow() {
showFT("fightTT");
}
function hideFT () {
if (!FT)
return;
FT.style.display = "none";
FT = null;
}
var tooltip = new Array();
if (FightTitle != "") {
tooltip[0] = 'id="fightTT" style="width:'+width+'px;background-color: #505050; font-size:10px; position:absolute; display:none; z-index:'+(getZ("FBBACK")+5)+'"';
tooltip[1] = '<table><colgroup><col width="'+width/10*6+'" /><col width="'+width/40+'" /><col width="'+width/8*3+'" /></colgroup>' + FightTitle + '</table>';
}
ShowImg('FBBACK', '/fight/overview/#form1', get_icon("fight")[FightIcon], tooltip, ICON_WIDTH, ICON_WIDTH, 10, 15, 2, 'fight');
if (FightTitle != "") {
document.getElementById("fightlnk").addEventListener('mouseover', mouseOverShow, false);
document.getElementById("fightlnk").addEventListener('mouseout', hideFT, false);
document.addEventListener('mousemove', updateFT, false);
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion zeigt das Kampfstatus-Icon an
// **********************************************************************************
// **********************************************************************************
function ShowFightStateIcon(FightState, currentpower, maxpower) {
switch (FightState) {
case FIGHTSTATE_OK:
ShowFightImg(get_icon("fight_ok"), printf(getLangTxt(TOOLTIP_FIGHTOK), currentpower), '', '', 90, 22, 2);
break;
case FIGHTSTATE_WEAK:
ShowFightImg(get_icon("fight_weak"), printf(getLangTxt(TOOLTIP_FIGHTWEAK), currentpower, maxpower), '', '', 90, 22, 2);
break;
case FIGHTSTATE_DANG:
ShowFightImg(get_icon("fight_dang"), printf(getLangTxt(TOOLTIP_FIGHTDANG), currentpower, maxpower), 25, 25, 90, 22, 2);
break;
case FIGHTSTATE_ERROR:
ShowImg('PBBACK', '', get_icon("error"), getLangTxt(TOOLTIP_LOADERROR), '', '', 90, 22, 2, 'fightstateerror');
break;
default:
ShowImg('PBBACK', '/gang/upgrades/', get_icon("error"), 'Unbekannter Zustand!', '', '', 90, 22, 2, 'resetfight');
break;
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion zeigt Hintergrundgrafiken an
// **********************************************************************************
// **********************************************************************************
function ShowBackgrounds(version, gangid) {
if (gangid > 0) {
ShowImg('', '', get_icon("gangfightback")[version], '', '', '', GF_X, GF_Y, '', 'GFBACK');
if (lang == 0)
ShowImg('', '', get_icon("missionback")[version], '', '', '', MI_X, MI_Y, '', 'MIBACK');
}
else if (gangid < 0) {
ShowImg('', '', get_icon("fightback")[version], '', '', '', FB_X, FB_Y, '', 'FBBACK');
ShowImg('', '', get_icon("plunderdirectback")[version], '', '', '', PD_X, PD_Y, '', 'PDBACK');
if (!oldVersion)
ShowImg('', '', get_icon("plundershopback")[version], '', '', '', PS_X, PS_Y, '', 'PSBACK');
if (noWash)
ShowImg('', '', get_icon("promilleback2")[version], '', '', '', PW_X, PW_Y, '', 'PWBACK');
else
ShowImg('', '', get_icon("promilleback")[version], '', '', '', PW_X, PW_Y, '', 'PWBACK');
ShowImg('', '', get_icon("attdefwpnback")[version], '', '', '', AD_X, AD_Y, '', 'ADBACK');
ShowImg('', '', get_icon("sklcrdcrtback")[version], '', '', '', SC_X, SC_Y, '', 'SCBACK');
if (lockmove)
ShowImg ('PDBACK', '', get_icon("lock"), getLangTxt(TOOLTIP_LOCK), 10, 10, 240, 1, 1, 'lockmove');
var langSel = ShowImg('PDBACK', '', getLangTxt(get_icon("flags")), getLangTxt(TxtLang), 16, 11, 2, 1, 2, 'langSelect');
langSel.addEventListener("click", function(event) {
myLang++;
if (myLang == get_icon("flags").length)
myLang = 0;
this.src = getIconAddr(getLangTxt(get_icon("flags")));
this.title = getLangTxt(TxtLang);
PG_setValue("myLang", myLang); // Sprache speichern
}, false);
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion zeigt Power-Grafik mit Rücksetzmöglichkeit an
// **********************************************************************************
// **********************************************************************************
function ShowFightImg(imgsource, imgtitle, imgwidth, imgheight, imgleft, imgtop, imgzindex) {
var curElem = ShowImg ('PBBACK', "#", imgsource, imgtitle, imgwidth, imgheight, imgleft, imgtop, imgzindex, 'resetfight');
if (curElem == null)
return;
curElem.addEventListener("click", function(event)
{
// Kampfstärke auf 0 zurücksetzen
PGu_setValue("PowerMaxValue", "0");
alert(getLangTxt(ALERT_RESETPOWER))
}, false);
}
// **********************************************************************************
// **********************************************************************************
// Funktion zeigt Plunder an
// **********************************************************************************
// **********************************************************************************
function ShowCurrentPlunder(plunderimg, plundername, big) {
// Wenn derzeit kein Plunder angelegt ist
if (plunderimg == "none") {
plunderimg = get_icon("noplunderequip");
plundername = TxtNoJunk[lang];
}
var size = big?"":"16";
ShowImg('PBBACK', '/stock/plunder/', plunderimg, plundername, size, size, (oldVersion?7:2), (oldVersion?23:16), 10, 'actplunder');
}
// **********************************************************************************
// **********************************************************************************
// Funktion zeigt das Wut-Icon an
// **********************************************************************************
// **********************************************************************************
function ShowWutIcon(WutState) {
// Wenn das Icon noch nicht angezeigt wird
var wuttd = document.getElementById("wutstate");
var wuttext = "";
switch (WutState) {
case WUTSTATE_ACTIVE:
if (WiWut != 0 && WutDatum != "")
wuttext = getLangTxt(TxtWiWut[WiWut-1]) + getLangTxt(TOOLTIP_WIWUTAKTIV) + WutDatum;
if (wuttd == null)
wuttd = ShowImg('PBBACK', '/gang/upgrades/', get_icon("wutaktiv"), '', '', '', 49, 23, 11, 'wutstate');
break;
case WUTSTATE_INACTIVE:
if (WutDatum != "") {
wuttext = getLangTxt(TxtWiWut[WiWut-1]) + getLangTxt(TOOLTIP_WIWUTAKTIV) + WutDatum;
if (wuttd == null) {
wuttd = ShowImg('PBBACK', '', get_icon("wutaktiv"), "", '', '', 49, 23, 11, 'wutstate2');
ShowImg('PBBACK', '/gang/upgrades/', get_icon("wutinaktiv"), '', '', '', 49, 23, 11, 'wutstate');
}
}
else if (m_owngangid != 0) {
if (WiWut != 0) {
wuttext = getLangTxt(TxtWiWut[WiWut-1]) + getLangTxt(TOOLTIP_WIWUTINAKTIV);
if (wuttd == null)
wuttd = ShowImg('PBBACK', '/gang/upgrades/', get_icon("wutinaktiv"), '', '', '', 49, 23, 11, 'wutstate');
}
else {
if (wuttd == null)
wuttd = ShowImg('PBBACK', '/gang/', get_icon("wutaktiv"), '', '', '', 49, 23, 11, 'wutstate');
}
}
else {
if (wuttd == null)
wuttd = ShowImg('PBBACK', '/gang/', get_icon("wutinaktiv"), '', '', '', 49, 23, 11, 'wutstate');
wuttext = getLangTxt(KEYWORD_INGANG) + "!!";
}
break;
case WUTSTATE_ERROR:
ShowImg('PBBACK', '/gang/upgrades/', get_icon("error"), getLangTxt(TOOLTIP_LOADERROR), '', '', 49, 23, 11, 'wutstate');
break;
}
if (wuttext != "" && wuttd != null) {
wuttd.title = wuttext;
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt den Namen des aktuellen Plunders
// **********************************************************************************
// **********************************************************************************
function GetCurrentPlundername(plunderbox) {
var plundername = "";
if (oldVersion) {
// Wenn derzeit ein Plunder angelegt ist
if (plunderbox.innerHTML.indexOf('</h4>') != -1) {
// Namen des aktuellen Plunderstücks extrahieren
plundername = plunderbox.innerHTML.split('</h4>')[0];
plundername = plundername.split('alt=" "> ')[1];
}
} else {
var plunderimg = plunderbox.getElementsByTagName("img")[0].getAttribute('src').toString();
// Wenn derzeit ein Plunder angelegt ist
if (plunderimg.split('/').pop() != "empty.png") {
var plunderbx = plunderbox.getElementsByTagName("tr")[1].getElementsByTagName("td")[1].innerHTML;
// Namen des aktuellen Plunderstücks extrahieren
var plundername = plunderbx.split('</strong>')[0].split("<strong")[1].split(">")[1];
}
}
return plundername;
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt aktuellen Plunder, speichert Image und Name und stellt den
// aktuellen Plunder dar
// **********************************************************************************
// **********************************************************************************
function GetCurrentPlunder(content) {
// Aus dem Responsetext ein Document machen
var doc = HTML2DOM(content);
var plunderbox = doc.getElementsByClassName(oldVersion?"box special":"box")[0];
var plundername = GetCurrentPlundername(plunderbox);
// Wenn derzeit kein Plunder angelegt ist
if (plundername == "") {
plundername = "none";
var plunderimg = "none";
padd = "";
// sonst: Es ist derzeit ein Plunder angelegt
} else {
// URL des aktuellen Plunderstücks extrahieren
var plunderimg = plunderbox.getElementsByTagName("img")[0].getAttribute('src').toString();
padd = GetPlunderDescription(plunderbox.getElementsByTagName("tr")[1].getElementsByTagName("td")[1].innerHTML);
}
// Image-URL und Namen speichern
PGu_setValue("LastPlunderImg", plunderimg);
PGu_setValue("LastPlunderName", plundername);
if (plunderimg == "none") {
plunderimg = get_icon("noplunderequip");
plundername = TxtNoJunk[lang];
}
if (oldVersion)
// Angelegten Plunder anzeigen
ShowCurrentPlunder(plunderimg, plundername, 1);
else {
function mouseOver(e) {
var elem = e.target;
elem.style.left = (PB_X+2)+"px";
elem.style.top = (PB_Y+18)+"px";
elem.style.width = "32px";
elem.style.height = "32px";
if (elem.id != "actplunder")
document.getElementById("actplunder").style.zIndex=1;
if (elem.id != "actplunder2")
document.getElementById("actplunder2").style.zIndex=1;
if (elem.id != "actplunder3" && document.getElementById("actplunder3"))
document.getElementById("actplunder3").style.zIndex=1;
if (elem.id != "actplunder4" && document.getElementById("actplunder4"))
document.getElementById("actplunder4").style.zIndex=1;
}
function mouseOut(e) {
var elem=e.target;
var xpos = (elem.id == "actplunder" || elem.id == "actplunder3")?2:18;
var ypos = (elem.id == "actplunder" || elem.id == "actplunder2")?16:32;
elem.style.left=(PB_X+xpos)+"px";
elem.style.top=(PB_Y+ypos)+"px";
elem.style.width="16px";
elem.style.height="16px";
var zInd = getZ("PBBACK")+1;
document.getElementById("actplunder").style.zIndex=zInd;
document.getElementById("actplunder2").style.zIndex=zInd;
if (document.getElementById("actplunder3"))
document.getElementById("actplunder3").style.zIndex=zInd;
if (document.getElementById("actplunder4"))
document.getElementById("actplunder4").style.zIndex=zInd;
}
var korr = (plunderimg == get_icon("noplunderequip"))?1:0;
var nrOfPlnd = plunderbox.innerHTML.split('id="favorite"')[0].split('<img').length - 1;
for (var i = 0; i < nrOfPlnd; i++) {
if (i != 0) {
plunderimg = plunderbox.getElementsByTagName("img")[i].getAttribute('src').toString();
if (plunderimg.split('/').pop() != "empty.png") {
// Namen des aktuellen Plunderstücks extrahieren
plundername = plunderbox.getElementsByClassName("odd ztipfull trhover")[i-korr].getElementsByTagName("td")[1].innerHTML.split('</strong>')[0].split("<strong")[1].split(">")[1];
padd = GetPlunderDescription(plunderbox.getElementsByClassName("odd ztipfull trhover")[i-korr].getElementsByTagName("td")[1].innerHTML);
}
else {
korr++;
plunderimg = get_icon("noplunderequip");
plundername = TxtNoJunk[lang];
padd = "";
}
}
var tab = plunderbox.innerHTML.split("<strong>")[i+1].split("<")[0];
var actName = "actplunder"+(i==0?"":(i+1));
var curElem = ShowImg('PBBACK', '/stock/plunder/', plunderimg, tab + ": " + plundername + padd, 16, 16, 2+(i%2?16:0), 16+(i>1?16:0), 10, actName);
if (curElem != null) {
curElem.addEventListener("mouseover", mouseOver, false);
curElem.addEventListener("mouseout", mouseOut, false);
}
}
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion extrahiert die eigene UserID
// **********************************************************************************
// **********************************************************************************
function getOwnUserID() {
try {
// Eigene UserID ermitteln
var myprof = document.getElementById("my-profile-new");
if (!myprof)
myprof = document.getElementById("my-profile");
var ownuserid = myprof.innerHTML.split('href="/profil/id:')[1];
ownuserid = ownuserid.split('/"')[0];
// Letzte gültige UserID speichern (z.B. beim Zugriff auf Pennerzone)
GM_setValue("LastOwnUserID", ownuserid);
return ownuserid;
} catch(err) {
GM_log("Fehler beim Ermitteln der eigenen UserID: " + err);
// Letzte gültige UserID zurückgeben
return GM_getValue("LastOwnUserID");
}
}
// ********************************************************************************************************************
// ********************************************************************************************************************
// Funktion ermittelt die Beschreibung des Plunders
// ********************************************************************************************************************
// ********************************************************************************************************************
function GetPlunderDescription(pdesc) {
var padd = "";
var padv = pdesc.split('class="padv"');
if (padv.length > 1)
if (padv[1].indexOf("<li>") != -1) {
padv = padv[1].split("</div>")[0].split("</li>");
for (k = 0; k < padv.length - 1; k++)
padd += "; " + trimString(padv[k].split("<li>").pop());
}
var pinf = pdesc.split('class="pinfo_text');
for (k = 1; k < pinf.length; k++) {
padd1 = trimString(pinf[k].split("</p>")[0].split(">").pop());
if (padd1.substr(-1) == ".")
padd1 = padd1.substr(0, padd1.length-1);
if (padd1 != "")
padd += "; " + padd1;
}
if (padd.substr(0,1) == ";")
padd = padd.substr(2);
if (padd.substr(-1) == ".")
padd = padd.substr(0, padd.length-1);
if (padd != "")
padd = " (" + convertUni(padd) + ")";
return padd;
}
// ********************************************************************************************************************
// ********************************************************************************************************************
// Funktion ermittelt anhand des Plundernamens die zugehörige "Action-Nummer", die der JS-Funktion zum Anlegen
// übergeben werden muss. Diese wird vom Spiel vorgegeben, kann sich jederzeit ändern und muss deswegen frisch
// ausgelesen werden
// ********************************************************************************************************************
// ********************************************************************************************************************
function GetActionNumber(content, plunderimg, plundername) {
try {
var ActionNumber = content.split(KEYWORD_JUNK[lang])[1];
var plunderimg = plunderimg.split("~")[0];
if (content.indexOf("/"+plunderimg) == -1)
plunderimg = plunderimg.replace(/\....$/, '.png');
var psplit = content.split("/"+plunderimg);
if (psplit.length == 1) {
var pos = ActionNumber.search('> *' + plundername.replace("(", "\\(").replace(")", "\\)") + ' *<');
if (pos == -1)
return "";
pos = ActionNumber.substr(0, pos).lastIndexOf('change_stuff');
ActionNumber = ActionNumber.substr(pos);
}
else {
for (i = 1; i < psplit.length; i++)
if (psplit[i].search('> *' + plundername.replace("(", "\\(").replace(")", "\\)").replace("+", "\\+") + ' *<') != -1) {
ActionNumber = psplit[i];
break;
}
if (i >= psplit.length)
return "";
}
padd = GetPlunderDescription(ActionNumber.split("change_stuff")[1]);
ActionNumber = ActionNumber.split("change_stuff('")[1].split("'")[0];
return ActionNumber;
} catch(err) {
GM_log("Fehler beim Abrufen der Action-Nummer für " + plundername);
return "";
}
}
// ********************************************************************************************************************
// ********************************************************************************************************************
// Funktion ermittelt die noch im Inventar vorhandene Anzahl eines Plunders
// ********************************************************************************************************************
// ********************************************************************************************************************
function GetNumberOfPlunder(content, plundername) {
try {
var reg = new RegExp(">" + plundername.replace(/([\\\(\)\[\]\*\+\-\%\^\$\.])/g, '\\$1') + " *<");
var spl = content.split(reg);
if (spl.length <= 1)
return 0;
var NumberOfPlunder = spl[1];
if (NumberOfPlunder.indexOf('<td class="col3">') != -1) {
NumberOfPlunder = NumberOfPlunder.split('<td class="col3">')[1];
NumberOfPlunder = NumberOfPlunder.split(TxtPiece[lang])[0];
} else {
NumberOfPlunder = NumberOfPlunder.split('<span')[1].split('</span')[0];
NumberOfPlunder = trimString(NumberOfPlunder.split('">x')[1]);
}
return NumberOfPlunder;
} catch(err) {
GM_log("Fehler beim Abrufen der Plunderanzahl für " + plundername);
return "";
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion prüft, ob ein Plunder mehrfach hintereinander benutzt werden kann
// **********************************************************************************
// **********************************************************************************
function isMultiUsablePlunder(plunder) {
var MultiUsablePlunder = new Array ('flaschenlaster', 'geldbeutel', 'buch', 'seife', 'tageskarte', 'haustiertrick', 'gelbbeutel', 'boost_3000_pfandflaschen', 'hexenb', 'skiequ', 'schlitten2', 'plunder_zahn', 'schippchen', 'boost_zehn_euro', 'prov_kugel', 'prov_osterei', 'prov_wollhandschuhe');
plunder = plunder.split("/").pop().split('.')[0];
for (var i=0; i < MultiUsablePlunder.length; i++)
if (MultiUsablePlunder[i] == plunder)
return true;
return false;
}
// **********************************************************************************
// **********************************************************************************
// Funktion benutzt einen Plunder weitere Male oder beendet die Benutzung
// **********************************************************************************
// **********************************************************************************
function useMorePlunder(imgtitle, action, phref, mtimes, times, player, count, consume) {
if (mtimes == 1) {
GM_xmlhttpRequest({method:"GET", url: PLUNDER_URL + (oldVersion ? "" : "ajax/?"+ajaxcode+"=" + (nrOfTabs >= 6?4:(nrOfTabs==2?1:3))), onload:function(responseDetails) {
var content = responseDetails.responseText;
var anzPlunder = GetNumberOfPlunder(content, imgtitle);
if (anzPlunder === "")
alert("Fehler bei Ermittlung der Plunderanzahl!! Abbruch !!");
else {
var succ = count - anzPlunder;
if (succ == 0)
alert(printf(getLangTxt(TxtJunkNoSucc), imgtitle));
else if (succ == 1 && times == 1)
alert(printf(getLangTxt(TxtJunkUsed), imgtitle));
else if (succ == times)
alert(printf(getLangTxt(TxtJunkSucc), imgtitle, succ));
else {
usePlunder(imgtitle, action, phref, times - succ, times, player, count, consume);
return;
}
}
// Seite refreshen
refreshPage();
}
});
}
else
usePlunder(imgtitle, action, phref, mtimes - 1, times, player, count, consume);
}
// **********************************************************************************
// **********************************************************************************
// Funktion benutzt einen Plunder times mal
// **********************************************************************************
// **********************************************************************************
function usePlunder(imgtitle, action, phref, mtimes, times, player, count, consume) {
var params = "";
// URL für den Benutzungsrequest zusammenbauen
if (oldVersion)
var PLUNDERUSE_URL = PLUNDER_URL + 'use/' + action + '/';
else if (phref.indexOf("choose_target") != -1) {
var PLUNDERUSE_URL = PLUNDER_URL + "target_usage/";
params = "plunderid2="+action+"&plunderid2_fav=0&playername="+player;
}
else if (phref != "") {
var PLUNDERUSE_URL = TOWNBASE_URL + phref.substr(1);
params = "plunder="+action+"&plunder_count="+(Number(count)-(Number(times)-Number(mtimes)));
}
else {
alert("unknown plunder use");
return;
}
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abrufen der Plunderbenutzung (--> Plunder wird benutzt)
// **********************************************************************************
GM_log("Plunder wird benutzt: " + PLUNDERUSE_URL + params);
GM_xmlhttpRequest({method: 'POST', url: PLUNDERUSE_URL, headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI(params),
onload: function(responseDetails) {
var confShow = false;
if (!consume && responseDetails.responseText.indexOf(KEYWORD_MYBUM[lang]) != -1) {
alert(printf(getLangTxt(TxtJunkUsed), imgtitle));
refreshPage();
}
else if (!oldVersion && player == "") {
var href = phref.replace('execboost', 'postuse');
if (responseDetails.responseText.indexOf(href) != -1) {
//PGu_setValue("plunderchange"+imgtitle, "52:Jetpack");
//var pch = PGu_getValue("plunderchange"+imgtitle, "");
//if (pch != "") {
// var choice = pch.split(":")[0];
PLUNDERUSE_URL = TOWNBASE_URL + href.substr(1);
GM_xmlhttpRequest({method: 'POST', url: PLUNDERUSE_URL, headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI("pid="+action),
// data: encodeURI("pid="+action+"&choice="+choice),
onload: function(responseDetails2) {
useMorePlunder(imgtitle, action, phref, mtimes, times, player, count, consume);
}});
//}
//else {
// PLUNDERUSE_URL = TOWNBASE_URL + href.substr(1) + "?pid="+action;
// GM_xmlhttpRequest({method: 'GET', url: PLUNDERUSE_URL, onload: function(responseDetails) {
// useMorePlunder(imgtitle, action, phref, mtimes, times, player, count, consume);
// }
// });
//}
}
else
confShow = true;
}
else
confShow = true;
if (confShow) {
useMorePlunder(imgtitle, action, phref, mtimes, times, player, count, consume);
}
}
});
}
// **********************************************************************************
// **********************************************************************************
// Funktion fügt Plundericon in den Slot <slotnr> hinzu
// **********************************************************************************
// **********************************************************************************
function AddPlunderIcon(content, plunder, imgtitle, usemode, slotnr) {
// Maximale Anzahl von Slots
var row = Math.floor((slotnr - 1) / MAXNROFSLOTS);
var col = (slotnr - 1) % MAXNROFSLOTS;
row++;
if (slotnr > 1 && slotnr % MAXNROFSLOTS == 0 && !document.getElementById('PDBACK'+row)) {
ShowImg('PDBACK', '', get_icon("plunderdirectback")[bgrndInd], '', '', '', 0, row*41, -2*row, 'PDBACK'+row);
}
row--;
// Wenn noch nicht mehr Icons dargestellt werden, als maximal vorgesehen
if (slotnr > 0) {
var ActionNumber = GetActionNumber(content, plunder, imgtitle);
var actPlunder = PGu_getValue("LastPlunderName", "");
// **********************************************************************************
// Wenn der aktuelle Plunder ein anlegbarer Plunder ist mit Stückzahl 0
// **********************************************************************************
if (usemode == "A" && ActionNumber == "" && imgtitle != actPlunder) {
// Aktuellen Plunder aus der Liste entfernen
RemovePlunderFromList(plunder + "*" + imgtitle + "*A");
alert(printf(getLangTxt(TxtNoJunkLeft2), imgtitle));
return -1;
}
// **********************************************************************************
// Wenn der aktuelle Plunder ein benutzbarer Plunder ist mit Stückzahl 0
// **********************************************************************************
if (usemode == "B" && ActionNumber == "") {
// Aktuellen Plunder aus der Liste entfernen
RemovePlunderFromList(plunder + "*" + imgtitle + "*B");
alert(printf(getLangTxt(TxtNoJunkLeft), imgtitle));
return -1;
}
// **********************************************************************************
// sonst: Der aktuelle Plunder wird angelegt, oder es ist ein benutzbarer Plunder, der noch vorhanden ist
// **********************************************************************************
var imgtop = oldVersion?18:14 + row * 41;
var imgleft = 1 + col * 28;
if (imgtitle.indexOf(TxtTrikot[lang]) != -1)
PGu_setValue("TrikotanzeigeAus", 0);
// Wenn der Plunder angelegt werden soll
if (usemode == "A") {
var titletext = getLangTxt(TxtEquip) + ": " + imgtitle + padd;
var usemodeimg = get_icon("plundera");
var usemodetitletext = getLangTxt(TxtEquipThisJunk);
// sonst: Der Plunder soll benutzt werden
} else {
var anzPlunder = GetNumberOfPlunder(content, imgtitle);
var titletext = printf(getLangTxt(TxtUseJunk), getLangTxt(TxtUse), imgtitle, anzPlunder) + padd;
var usemodeimg = get_icon("plunderb");
var usemodetitletext = getLangTxt(TxtUseThisJunk);
var tdpm = content.indexOf('id="pm_'+ActionNumber+'"');
if (tdpm != -1) {
var href = content.substr(tdpm).split('<a href="')[3].split('"')[0];
if (href.substr(0,4) == "java") {
if (href.indexOf("choose_target") == -1) {
href = content.substr(tdpm).split('<form')[1].split('action="')[1].split('"')[0];
ActionNumber = content.substr(tdpm).split('<input')[1].split('value="')[1].split('"')[0];
}
else {
ActionNumber = href.split(')')[0].split('(').pop();
}
}
}
else
var href = "";
}
// Plundergrafik zusammenbauen
var newimg = ShowImg('PDBACK', '', getPicAddr(plunder), titletext, '', '', imgleft, imgtop, 1, 'directplunderpic' + slotnr);
if (newimg == null)
return 0;
newimg.style.cursor = 'pointer';
//newimg.setAttribute('name', usemode);
var modeimgtop = imgtop + (oldVersion?28:32);
ShowImg('PDBACK', '', getIconAddr(usemodeimg), usemodetitletext, '', '', imgleft, modeimgtop, 1, 'directplundermodepic' + slotnr);
// **********************************************************************************
// Click-Event hinzufügen
// **********************************************************************************
newimg.addEventListener("click", function(event)
{
var ownuserid = m_ownuserid;
// **********************************************************************************
// Wenn es sich um einen anlegbaren Plunder handelt
// **********************************************************************************
if (usemode == "A") {
PGu_setValue("LastPlunderImg", getPicAddr(plunder));
PGu_setValue("LastPlunderName", imgtitle);
// Cursor soll Wartesymbol zeigen
document.body.style.cursor = "wait";
this.style.cursor = "wait";
if (!oldVersion) {
document.getElementById("actplunder").style.zIndex=1;
document.getElementById("actplunder2").style.zIndex=1;
if (document.getElementById("actplunder3"))
document.getElementById("actplunder3").style.zIndex=1;
if (document.getElementById("actplunder4"))
document.getElementById("actplunder4").style.zIndex=1;
}
// Angelegten Plunder anzeigen
ShowCurrentPlunder(getPicAddr(plunder), imgtitle, 1);
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** POSTEN des Plunderwechsels
// **********************************************************************************
GM_xmlhttpRequest({method: 'POST', url: PLUNDERCHANGE_URL, headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('f_plunder=' + ActionNumber),
onload: function(responseDetails) {
// Seite refreshen
refreshPage();
}
});
// **********************************************************************************
// sonst: Es handelt sich um einen benutzbaren Plunder
// **********************************************************************************
} else {
// bei PG reloaded: testen, ob es ein Alkohol-Plunder ist (wird nicht verbraucht)
var confUse = true;
var consume = true;
var useTimes = 1;
if (!oldVersion) {
for (var i = 0; i < alcoplunder.length; i++)
if (alcoplunder[i] == imgtitle)
break;
if (i < alcoplunder.length)
consume = false; // Plunder wird nicht verbraucht
}
if (href.indexOf("choose_target") != -1) {
var player = prompt(getLangTxt(TxtPlayerName), "");
if (!player)
return;
}
else {
var player = "";
}
if (consume) {
if (parseInt(anzPlunder) > 1 &&
(isMultiUsablePlunder(plunder) || player != "")) {
var prmptTxt = getLangTxt(TxtMultiPlunder1);
while (true) {
useTimes = prompt(printf(prmptTxt, anzPlunder) + getLangTxt(TxtMultiPlunder), "1");
if (!useTimes)
return;
if (useTimes == null) {
useTimes = 0;
break;
}
if (isNaN(useTimes))
prmptTxt = getLangTxt(TxtMultiPlunder2);
else if (parseInt(useTimes) > parseInt(anzPlunder))
prmptTxt = getLangTxt(TxtMultiPlunder3);
else
break;
}
confUse = useTimes > 0;
}
else {
confUse = confirm(printf(getLangTxt(TxtReallyUseJunk), imgtitle, GetNumberOfPlunder(content, imgtitle)));
}
}
// Wenn die Sicherheitsabfrage durch Drücken des "OK"-Buttons positiv beantwortet wurde
if (confUse) {
usePlunder(imgtitle, ActionNumber, href, useTimes, useTimes, player, parseInt(anzPlunder), consume);
}
}
}, false);
return 0;
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion fügt Icon zum Zurücksetzen der Direktplunderliste hinzu
// **********************************************************************************
// **********************************************************************************
function AddResetIcon(plundertable) {
if (document.getElementById("plunderreset"))
return;
// Link zusammenbauen
var newlink = document.getElementById("content").appendChild(document.createElement('a'));
newlink.setAttribute('href', '');
// Grafik zusammenbauen
var newimg = newlink.appendChild(document.createElement('img'));
newimg.setAttribute('id', "plunderreset");
newimg.setAttribute('src', getIconAddr(get_icon("plunderreset")));
newimg.setAttribute('border', '0');
newimg.setAttribute('title', getLangTxt(TOOLTIP_PLUNDERRESET));
newimg.setAttribute('style', 'position:absolute; left:540px; top:50px; z-index:100');
// Click-Event hinzufügen
newimg.addEventListener("click", function(event)
{
// Plunderliste zurücksetzen
ResetPlunderList();
}, false);
}
// **********************************************************************************
// Funktion ermittelt die Adresse eines Bildes
// **********************************************************************************
function getPicAddr(image) {
var imgSplit = image.split("~");
var indx = 0;
if (nrOfTabs >= 6)
indx = 1;
if (imgSplit.length > 1) {
indx = imgSplit[1];
if (indx >= PLUNDERIMAGE_URL.length)
indx = 0;
}
if (imgSplit.length == 1)
PGu_setValue("PlunderDirectAccess", PGu_getValue("PlunderDirectAccess", "").replace(image, image+"~"+indx));
return window.location.protocol + PLUNDERIMAGE_URL[indx] + imgSplit[0];
}
// **********************************************************************************
// Funktion ermittelt aus einer Tabellenzeile den Dateinamen des Plunders
// **********************************************************************************
function GetPlunderPic(currenttr) {
try {
for (i = 0; i < PLUNDERIMAGE_URL.length; i++) {
var plunderpic = currenttr.getElementsByTagName("img")[0].getAttribute("src").split(PLUNDERIMAGE_URL[i]);
if (plunderpic.length > 1)
break;
}
return trimString(plunderpic[plunderpic.length - 1]) + "~" + i;
} catch(err) {
GM_log("Fehler beim Ermitteln des Plunder-Images: " + err);
}
}
// **********************************************************************************
// Funktion ermittelt aus einer Tabellenzeile den Namen des Plunders
// **********************************************************************************
function GetPlunderName(currenttr) {
try {
var pName = currenttr.getElementsByTagName("a")[0].innerHTML;
if (pName.indexOf('>') != -1)
pName = pName.split('>')[1].split('<')[0];
return trimString(pName);
} catch(err) {
GM_log("Fehler beim Ermitteln des Plundernamens: " + err);
}
}
// **********************************************************************************
// Funktion überprüft, ob sich ein Plunder in der Direktzugriffsliste befindet
// **********************************************************************************
function IsPlunderInList(plunderinfo) {
function umlrep(s) {
var r = "";
for (i = 0; i < s.length; i++) {
var c = s.charCodeAt(i);
if (c > 127)
r += "\\" + c;
else
r += String.fromCharCode(c);
}
return r;
}
var pInfo = plunderinfo;
var piSplit = pInfo.split("~");
if (piSplit.length == 1) {
var pos = pInfo.indexOf("*");
pInfo = pInfo.substr(0, pos) + "~" + (nrOfTabs >= 6)?1:0 + pInfo.substr(pos);
}
var plunderList = PGu_getValue("PlunderDirectAccess", "");
try {
// Wenn sich die gesuchte Plunderinfo in der Direktzugriffsliste befindet
// var found = true;
var pInd = 0;
var pList = plunderList.split(pInfo);
if (pList.length == 1)
pList = umlrep(plunderList).split(umlrep(plunderinfo));
if (pList.length == 1)
pList = umlrep(plunderList).split(umlrep(plunderinfo.split('*')[1]));
// if (pList.length == 1) {
// var reg = new RegExp(" *\\(\\d\\d\\d\\d\\)\\*", "g");
// if (plunderinfo.search(reg) == -1)
// pList = ("|" + plunderList).split("|"+pInfo.split("~")[0]);
// found = false;
// }
if (pList.length > 1) {
pInd = pList[0].split("|").length;
// if (pInfo != plunderinfo || !found) {
// var plinfo = plunderList.split("|");
// plinfo[pInd-1] = pInfo;
// plunderList = plinfo.join("|");
// PGu_setValue("PlunderDirectAccess", plunderList);
// }
}
return pInd;
} catch(err) {
GM_log("Fehler in IsPlunderInList: " + err);
}
}
// **********************************************************************************
// Funktion setzt die Direktzugriffsliste zurück auf leer
// **********************************************************************************
function ResetPlunderList() {
PGu_setValue("PlunderDirectAccess", "");
}
// **********************************************************************************
// Funktion ermittelt die Anzahl der Plunderstücke in der Direktzugriffsliste
// **********************************************************************************
function GetNrOfPlunderInList() {
try {
return PGu_getValue("PlunderDirectAccess", "").split("|").length - 1;
} catch(err) {
return 0;
}
}
// **********************************************************************************
// Funktion fügt ein Plunderstück in die Direktzugriffsliste hinzu
// **********************************************************************************
function AddPlunderToList(plunderinfo) {
PGu_setValue("PlunderDirectAccess", PGu_getValue("PlunderDirectAccess", "") + plunderinfo + "|");
if (plunderinfo.indexOf("chest_glow") != -1)
GM_setValue("noFirefly", 0);
}
// **********************************************************************************
// Funktion entfernt ein Plunderstück aus der Direktzugriffsliste
// **********************************************************************************
function RemovePlunderFromList(plunderinfo) {
if (plunderinfo.indexOf("chest_glow") != -1)
GM_setValue("noFirefly", 1);
var plunderNr = IsPlunderInList(plunderinfo) - 1;
if (plunderNr < 0)
return; // Plunder nicht in Liste
// Speichern der neuen Direktzugriffsliste
var pList = PGu_getValue("PlunderDirectAccess", "").split("|");
pList.splice(plunderNr, 1);
PGu_setValue("PlunderDirectAccess", pList.join("|"));
}
// **********************************************************************************
// Funktion ermittelt das n-te Plunderstück der Direktzugriffsliste
// **********************************************************************************
function GetNthPlunderinfoFromList(n) {
return PGu_getValue("PlunderDirectAccess", "").split("|")[n - 1];
}
// **********************************************************************************
// Funktion extrahiert den Dateinamen des Bildes aus der Plunderinfo
// **********************************************************************************
function GetPicFromPlunderInfo(plunderinfo) {
return plunderinfo.split("*")[0];
}
// **********************************************************************************
// Funktion extrahiert den Plundernamen aus der Plunderinfo
// **********************************************************************************
function GetNameFromPlunderInfo(plunderinfo) {
return plunderinfo.split("*")[1];
}
// **********************************************************************************
// Funktion extrahiert die Benutzungsart aus der Plunderinfo
// **********************************************************************************
function GetUsemodeFromPlunderInfo(plunderinfo) {
var usermode = plunderinfo.split("*")[2];
if (typeof usermode != 'undefined') {
return usermode;
} else {
return "A";
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion entfernt alle Plunderstücke aus der Anzeige
// **********************************************************************************
// **********************************************************************************
function HideAllPlunder() {
for (var i = 1; true; i++) {
var currentplunderpic = document.getElementById('directplunderpic' + i);
if (currentplunderpic != null) {
currentplunderpic.parentNode.removeChild(currentplunderpic);
}
else
break;
if (i % MAXNROFSLOTS == 0) {
var row = Math.floor((i-1)/MAXNROFSLOTS) + 1;
var currentbgpic = document.getElementById('PDBACK'+row);
if (currentbgpic != null)
currentbgpic.parentNode.removeChild(currentbgpic);
}
var currentplundermodepic = document.getElementById('directplundermodepic' + i);
if (currentplundermodepic != null) {
currentplundermodepic.parentNode.removeChild(currentplundermodepic);
}
}
var addicon = document.getElementById('AddPlunderIcon');
if (addicon != null) {
addicon.parentNode.removeChild(addicon);
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion zeigt alle Plunderstücke an
// **********************************************************************************
// **********************************************************************************
function ShowAllPlunder(content, NrOfPlunder, step, marker) {
if (m_ownuserid != getOwnUserID())
return;
var ajax = content.match(/ajax\/\?[^=]*=/g).pop();
// Wenn die Seite abgerufen werden konnte (kein Seitenladefehler)
if (content.indexOf(KEYWORD_MYBUM[lang]) != -1) {
if (step > 0 && collAllPlunder != marker)
return;
if (step > 0 && step <= nrOfTabs) {
GM_xmlhttpRequest({method:"GET", url: PLUNDER_URL+ajax+step, onload:function(responseDetails) {
if (PGu_getValue("callCount") != callCount)
return;
if (responseDetails.responseText.indexOf('plunder_menu') != -1)
ShowAllPlunder (content + responseDetails.responseText, NrOfPlunder, step + 1, marker);
else
ShowAllPlunder (content, NrOfPlunder, step, marker);
}});
return;
} else if (step <= 0) {
if (step < 0)
if (saveAllPlunder == "")
step = 0;
else
content = saveAllPlunder;
if (step == 0 && !oldVersion) {
collAllPlunder++;
ShowAllPlunder (ajax+":"+KEYWORD_MYBUM[lang] + KEYWORD_JUNK[lang], NrOfPlunder, step + 1, collAllPlunder);
return;
}
}
else if (step == nrOfTabs+1)
saveAllPlunder = content;
var slotcorrect = 0;
// Für alle Plunderstücke
for (var i = 1; i <= NrOfPlunder; i++) {
var plunderinfo = GetNthPlunderinfoFromList(i + slotcorrect);
slotcorrect = slotcorrect + AddPlunderIcon(content, GetPicFromPlunderInfo(plunderinfo), GetNameFromPlunderInfo(plunderinfo), GetUsemodeFromPlunderInfo(plunderinfo), i + slotcorrect);
}
// Zahl der Plunderstücke ggf. korrigieren, falls benutzbare Plunderstücke nicht mehr vorhanden sind
NrOfPlunder = NrOfPlunder + slotcorrect;
// Wenn weniger als 9 Plunder eingetragen sind
// +-Icon anzeigen
ShowImg('PDBACK', PLUNDER_URL, get_icon("plunderfree"), getLangTxt(TOOLTIP_PLUNDERAUSWAHL), '', '', 1 + (NrOfPlunder % MAXNROFSLOTS) * 28, Math.floor(NrOfPlunder/MAXNROFSLOTS)*41 + 18, 1, 'AddPlunderIcon');
}
else
ShowAllPlunder (content, NrOfPlunder, step, marker);
}
// **********************************************************************************
// **********************************************************************************
// Funktion liefert die aktuellen Punkte zurück
// **********************************************************************************
// **********************************************************************************
function GetPunkte(doc) {
var punkte = doc.getElementsByClassName("icon award")[0].getElementsByTagName("a")[0];
punkte = Number(trimString(punkte.innerHTML));
return punkte;
}
// **********************************************************************************
// **********************************************************************************
// Funktion liefert die aktuellen Promille zurück
// **********************************************************************************
// **********************************************************************************
function GetPromille(doc) {
var promille = doc.getElementsByClassName("icon beer")[0].getElementsByTagName("a")[0];
promille = promille.innerHTML.match(/\d+/g);
return Number(promille[0]) + Number(promille[1]) / 100;
}
// **********************************************************************************
// **********************************************************************************
// Funktion formatiert eine Zahl mit Tausendertrennzeichen
// **********************************************************************************
// **********************************************************************************
function money_format(zahl, tr) {
var new_string = [];
var nachkomma = Right$('0' + Math.round((zahl - parseInt(zahl)) * 100), 2);
var tmp = parseInt(zahl) + '';
while( tmp.length > 3)
{
new_string[new_string.length] = tmp.substr(tmp.length - 3 ) ;
tmp = tmp.substr(0, tmp.length - 3 )
}
if (tmp) new_string[new_string.length] = tmp;
if (currency1 == "")
return currency + tr + new_string.reverse().join(getLangTxt(TZ)) + getLangTxt(DZ) + nachkomma;
else
return new_string.reverse().join(getLangTxt(TZ)) + currency1 + parseInt(nachkomma) + currency2;
}
// **********************************************************************************
// **********************************************************************************
// Funktion blendet Werte in einen Text ein
// **********************************************************************************
// **********************************************************************************
function printf(text) {
var i = 1;
var prozPos = -1;
while (i < printf.arguments.length && (prozPos = text.indexOf('%', prozPos + 1)) >= 0) {
var format = text.substr(prozPos + 1, 1);
switch (format) {
case 'd':
case 's':
var neuText = printf.arguments[i++];
break;
case 'm':
var neuText = money_format(printf.arguments[i++], " ");
break;
default:
continue;
}
text = text.substr(0, prozPos) + neuText + text.substr(prozPos + 2);
prozPos = prozPos + neuText.length - 1;
}
return text;
}
// **********************************************************************************
// **********************************************************************************
// Funktion aktiviert Wartecursor in Abhängigkeit des waitflags
// **********************************************************************************
// **********************************************************************************
function CursorWait(currentelem, waitflag) {
if (waitflag) {
currentelem.style.cursor = 'progress';
document.body.style.cursor = 'progress';
} else {
currentelem.style.cursor = 'pointer';
document.body.style.cursor = 'auto';
}
}
// **********************************************************************************
// **********************************************************************************
// Funktion ermittelt zur Verfügung stehende Anzahl des Nahrungsmittels "food"
// **********************************************************************************
// **********************************************************************************
function GetNrOfFood(content, food) {
if (content.indexOf(' ' + food) == -1)
return "x";
var sfood = content.split(' ' + food);
var nr = sfood[sfood.length-2];
nr = nr.split('<span>')[nr.split('<span>').length - 1].split(' ')[0];
if (isNaN(nr)) {
var splitfood = food.split(' ');
splitfood[0] = splitfood[0].substr(0, splitfood[0].length - 1);
sfood = content.split(' ' + splitfood.join(' '));
if (sfood.length < 2)
return "x";
nr = sfood[sfood.length-2];
nr = nr.split('<span>')[nr.split('<span>').length - 1].split(' ')[0];
}
return nr;
}
// **********************************************************************************
// **********************************************************************************
// Funktion fügt den Handler zum Auto-Trinken ein
// **********************************************************************************
// **********************************************************************************
function PromilleUpHandler(currentelem) {
var wpromille = TAisDrink2?2:2.5;
currentelem.style.cursor = 'pointer';
// **********************************************************************************
// EVENTHANDLER
// **********************************************************************************
currentelem.addEventListener('click', function(event) {
// **********************************************************************************
// Funktion prüft, ob die Promillezahl wirklich auf über 2,5 bzw. 2,0 gestiegen ist
// **********************************************************************************
function CheckPromilleUpSuccess(content) {
// Seite refreshen
refreshPage();
var promille = GetPromille(HTML2DOM(content));
// Wenn der Alkoholpegel auf ein unkritisches Niveau gestiegen ist
if (promille >= wpromille) {
// User benachrichtigen
if (EatDrinkFeedBack)
alert(getLangTxt(TxtHiccup));
// sonst: Der Alkoholpegel ist NICHT auf ein unkritisches Niveau gestiegen
} else {
// User benachrichtigen
alert(printf(getLangTxt(TxtDrinkError), promille));
}
}
// **********************************************************************************
// Funktion sendet das POST zum Trinken
// **********************************************************************************
function DrinkIt(nrofbeer) {
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** POSTEN der Getränkenutzung
// **********************************************************************************
GM_xmlhttpRequest({method: 'POST', url: EAT_URL, headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('item=&promille=&id=' + ID_BEER + '&menge=' + nrofbeer),
onload: function(responseDetails) {
// Erfolg prüfen
CheckPromilleUpSuccess(responseDetails.responseText);
}
});
}
// **********************************************************************************
// Funktion prueft die Anzahl der Biere und trinkt sie bzw. gibt eine Meldung aus
// **********************************************************************************
function DrinkBeer(content, nrofbeers) {
// Verfügbare Anzahl Bier abrufen
var foods = content.split("/stock/foodstuffs/use/");
var nr = 0;
for (i = 1; i < foods.length; i++) {
var prom = foods[i].split('name="promille"')[1].split('value="')[1].split('"')[0];
if (prom != 35)
continue;
var drink = foods[i].split('name="item"')[1].split('value="')[1].split('"')[0];
nr = foods[i].split('id="lager_'+drink+'"')[1].split('value="')[1].split('"')[0];
if (isNaN(nr))
nr = 0;
else
nr = Number(nr);
break;
}
// ***********************************************************************************************
// Wenn genügend Trinken vorhanden ist
// ***********************************************************************************************
if (nr >= nrofbeers) {
// Trinken gehen
DrinkIt(nrofbeers);
// Keinen Wartecursor anzeigen
if (currentelem)
CursorWait(currentelem, false);
// ***********************************************************************************************
// sonst: Es ist nicht genügend Trinken vorhanden
// ***********************************************************************************************
} else {
drink = TxtBeer1[lang];
if (TxtBeer2[lang] != drink)
drink += "/" + TxtBeer2[lang];
// Keinen Wartecursor anzeigen
if (currentelem)
CursorWait(currentelem, false);
// Benutzer benachrichtigen
alert(printf(getLangTxt(TxtNotMuchToDrink), drink));
if (confirm(printf(getLangTxt(TxtNotMuchToDrink), drink)))
window.setTimeout("window.location.href = window.location.protocol + '//' + window.location.host + '/city/supermarket/'", 2000);
}
}
// **********************************************************************************
// Funktion sucht einen Plunder im doc
// **********************************************************************************
function suchePlunder(doc, plundername, type) {
// Referenz auf Plundertabelle speichern
var plundertable = doc.getElementsByTagName("table")[0];
// Referenz auf Zeilen der Plundertabelle speichern
var plundertrs = plundertable.getElementsByTagName("tr");
for (var i = oldVersion; i < plundertrs.length; i++) {
if (restPlunder != "")
if (restPlunder == GetPlunderName(plundertrs[i]))
restIndex = i - oldVersion + 1;
if (type == "")
if (plundername == GetPlunderName(plundertrs[i]))
return i - oldVersion + 1;
if (type != "") {
var td = plundertrs[i].getElementsByTagName("td")[5];
if (type == "B")
td = plundertrs[i].getElementsByTagName("td")[4];
// **********************************************************************************
// Wenn das Plunderstück anlegbar oder benutzbar und nicht plundername ist
// **********************************************************************************
if (td.getElementsByTagName("a").length > 0 && plundername != GetPlunderName(plundertrs[i]))
return i - oldVersion + 1;
}
}
if (type == "")
if (plundername == PGu_getValue("LastPlunderName", ""))
return 0;
return -1; // nichts gefunden
}
// **********************************************************************************
// Funktion legt Alkoholplunder an bzw. benutzt ihn (PG reloaded)
// **********************************************************************************
function alcoPlunderAnlegen(content1, promille, restore) {
function collectAlcoPlunder(tabNr) {
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abrufen der Plunder-Seite
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: PLUNDER_URL + (oldVersion ? "" : "ajax/?"+ajaxcode+"=" + tabNr), onload:function(responseDetails) {
var content = responseDetails.responseText;
if (tabNr != 4 && restore && restPlunder == "") {
// Aktuellen Plunder ermitteln und anzeigen
if (oldVersion)
GetCurrentPlunder(content);
restPlunderimg = PGu_getValue("LastPlunderImg", "");
restPlunder = PGu_getValue("LastPlunderName", "");
}
var doc = HTML2DOM(content);
if (oldVersion)
promille = GetPromille(doc);
if (promille >= 3.65)
return; // 4 Promille ist uebel
if (promille >= 2.5)
wpromille = 3.0;
if (doc.getElementsByTagName("table").length > 0) {
// Referenz auf Plundertabelle speichern
var plundertable = doc.getElementsByTagName("table")[0];
// Referenz auf Zeilen der Plundertabelle speichern
var plundertrs = plundertable.getElementsByTagName("tr");
for (var j = 0; j < alcoplunder.length; j++) {
if (exalcoplunder[j] >= 0)
continue;
var plundername = alcoplunder[j];
var pInd = suchePlunder(doc, plundername, "");
if (pInd < 0 || j == 0 && promille >= 2.5 || j == 1 && promille >= 3)
continue;
exalcoplunder[j] = pInd;
if (pInd >= 0) {
if (pInd == 0) {
alcoActionNr[j] = "";
alcoPlunderInfo[j] = PGu_getValue("LastPlunderImg", "") + "*" + plundername + "*A";
} else {
pInd = pInd + oldVersion - 1;
alcoActionNr[j] = GetActionNumber((oldVersion?"":KEYWORD_JUNK[lang])+content, GetPlunderPic(plundertrs[pInd]), plundername);
if (tabNr != 4)
alcoPlunderInfo[j] = GetPlunderPic(plundertrs[pInd]) + "*" + plundername + "*A";
else
alcoPlunderInfo[j] = GetPlunderPic(plundertrs[pInd]) + "*" + plundername + "*B";
}
var alcoInList = IsPlunderInList(alcoPlunderInfo[j]);
if (alcoInList > 0 && alcoInList < firstAlcoInList) {
firstAlcoInList = alcoInList;
alcpl = j;
}
alcocnt++;
}
}
if (tabNr == 3 && alcocnt < alcoplunder.length) {
collectAlcoPlunder(1);
return;
}
if (restIndex < 0)
restIndex = suchePlunder(doc, restPlunder, "");
if (restIndex > 0) {
restPlunderimg = GetPlunderPic(plundertrs[restIndex + oldVersion - 1]);
restActionNr = GetActionNumber((oldVersion?"":KEYWORD_JUNK[lang])+content, restPlunderimg, restPlunder);
}
}
var plInd = -1;
if (alcocnt > 0) { // es ist AlkoPlunder da
if (alcpl < 0)
for (alcpl = 0; alcpl < alcoplunder.length; alcpl++)
if (exalcoplunder[alcpl] >= 0)
break;
plInd = exalcoplunder[alcpl];
}
else if (tabNr == 4) {
collectAlcoPlunder(3);
return;
}
var anlegplunder = "";
var anlegActionNr = "";
if (tabNr == 4 && alcpl >= 0) {
var ActionNr = alcoActionNr[alcpl];
var tdpm = content.indexOf('id="pm_'+ActionNr+'"');
var href = content.substr(tdpm).split('<a href="')[3].split('"')[0];
if (href.substr(0,4) == "java") {
href = content.substr(tdpm).split('<form')[1].split('action="')[1].split('"')[0];
var inputs = content.substr(tdpm).split('/form')[0].split('<input');
var data = "";
for (ii = 1; ii < inputs.length; ii++) {
var name = inputs[ii].split('name="')[1].split('"')[0];
var val = inputs[ii].split('value="')[1].split('"')[0];
data += "&" + name + "=" + val;
}
var data = data.substr(1);
}
else
var data = "plunder="+ActionNr;
var PLUNDERUSE_URL = TOWNBASE_URL + href.substr(1);
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abrufen der Plunderbenutzung (--> Plunder wird benutzt)
// **********************************************************************************
GM_xmlhttpRequest({method: 'POST', url: PLUNDERUSE_URL, headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI(data),
onload: function(responseDetails) {
// Seite refreshen
refreshPage();
}});
return;
}
if (promille >= wpromille) {
DrinkBeer(content1, 1); // nur 1 Bier trinken
}
else if (plInd == 0) { // AlkoPlunder ist angelegt
var pInd = suchePlunder(doc, alcoplunder[alcpl], "A"); // suche anderen Plunder zum Anlegen
if (pInd > 0) { // gefunden
pInd = pInd + oldVersion - 1;
anlegplunder = GetPlunderName(plundertrs[pInd]);
anlegActionNr = GetActionNumber(content, GetPlunderPic(plundertrs[pInd]), anlegplunder);
PGu_setValue("LastPlunderImg", getPicAddr(GetPlunderPic(plundertrs[pInd])));
PGu_setValue("LastPlunderName", anlegplunder);
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** POSTEN des Plunderwechsels
// **********************************************************************************
GM_xmlhttpRequest({method: 'POST', url: PLUNDERCHANGE_URL, headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('f_plunder=' + anlegActionNr),
onload: function(responseDetails) {
// jetzt aber Alkoholplunder anlegen
alcoPlunderAnlegen(content, promille, restore);
}
});
}
} else if (plInd > 0) {
var plunderinfo = alcoPlunderInfo[alcpl];
PGu_setValue("LastPlunderImg", getPicAddr(GetPicFromPlunderInfo(plunderinfo)));
PGu_setValue("LastPlunderName", GetNameFromPlunderInfo(plunderinfo));
// Angelegten Plunder anzeigen
ShowCurrentPlunder(getPicAddr(GetPicFromPlunderInfo(plunderinfo)), GetNameFromPlunderInfo(plunderinfo), oldVersion);
var ActionNr = alcoActionNr[alcpl];
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** POSTEN des Plunderwechsels
// **********************************************************************************
GM_xmlhttpRequest({method: 'POST', url: PLUNDERCHANGE_URL, headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('f_plunder=' + ActionNr),
onload: function(responseDetails) {
if (restPlunder != "none" && restPlunder != "" && restPlunder != GetNameFromPlunderInfo(plunderinfo))
{
if (restActionNr == "" && oldVersion) {
var doc = HTML2DOM(responseDetails.responseText);
// Referenz auf Plundertabelle speichern
var plundertable = doc.getElementsByTagName("table")[0];
// Referenz auf Zeilen der Plundertabelle speichern
var plundertrs = plundertable.getElementsByTagName("tr");
restIndex = suchePlunder(doc, restPlunder, "");
if (restIndex > 0) {
restActionNr = GetActionNumber(responseDetails.responseText, restPlunderimg, restPlunder);
restPlunderimg = GetPlunderPic(plundertrs[restIndex + oldVersion - 1]);
}
}
if (restActionNr == "") // Plunder kann nicht wiederangelegt werden !!
refreshPage();
else {
PGu_setValue("LastPlunderImg", getPicAddr(restPlunderimg));
PGu_setValue("LastPlunderName", restPlunder);
// Angelegten Plunder anzeigen
ShowCurrentPlunder(getPicAddr(restPlunderimg), restPlunder, oldVersion);
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** POSTEN des Plunderwechsels für den ursprünglichen Plunder
// **********************************************************************************
GM_xmlhttpRequest({method: 'POST', url: PLUNDERCHANGE_URL, headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('f_plunder=' + restActionNr),
onload: function(responseDetails) {
// Seite refreshen
refreshPage();
}
});
}
} else {
// Seite refreshen
refreshPage();
}
}
});
}
else { // kein Alco-Plunder da, aber weniger als 2,5 Promille bzw. 2 Promille bei TA
// Zahl der benötigten Bierflaschen berechnen
var bottlesneeded = Math.ceil(Math.round((wpromille - promille)*100)/35);
DrinkBeer(content1, bottlesneeded);
}
}});
}
var alcocnt = 0;
var firstAlcoInList = 9999;
var alcpl = -1;
for (var i = 0; i < alcoplunder.length; i++)
exalcoplunder[i] = -1;
if (nrOfTabs >= 6)
collectAlcoPlunder(4);
else
collectAlcoPlunder(1);
}
if (event.shiftKey != 0) {
EatDrinkFeedBack = 1 - EatDrinkFeedBack;
PG_setValue("EatDrinkFB", EatDrinkFeedBack);
}
// Wartecursor anzeigen
CursorWait(currentelem, true);
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abrufen der Trinken-Seite
// **********************************************************************************
GM_xmlhttpRequest({method: 'GET', url: DRINK_STACK, onload: function(responseDetails) {
var nrofbeer = 0;
var content = responseDetails.responseText;
// Aktuelle Promille ermitteln
var promille = GetPromille(HTML2DOM(content));
// ***********************************************************************************************
// Es liegen mehr als 3,65 Promille an --> Lebensgefahr !!
// ***********************************************************************************************
if (promille >= 3.65) {
// Keinen Wartecursor anzeigen
CursorWait(currentelem, false);
// Benutzer benachrichtigen
alert(getLangTxt(TxtDrinkLifeRisk));
}
// ***********************************************************************************************
// Es liegen mehr als 2,5 Promille an
// ***********************************************************************************************
else if (promille >= 3.0) {
// Keinen Wartecursor anzeigen
//CursorWait(currentelem, false);
// Benutzer benachrichtigen
//alert(getLangTxt(TxtNoNeedToDrink));
DrinkBeer(content, 1); // nur 1 Bier trinken !!
// ***********************************************************************************************
// Sonst: Wenn weniger als 2,5 Promille anliegen: Promille rauf durch Plunder oder Trinken
// ***********************************************************************************************
} else {
restPlunder = "";
restActionNr = "";
alcoPlunderAnlegen(content, promille, true);
}
}
});
},false);
}
// **********************************************************************************
// **********************************************************************************
// Funktion fügt den Handler zum Auto-Essen ein
// **********************************************************************************
// **********************************************************************************
function PromilleDownHandler(currentelem) {
currentelem.style.cursor = 'pointer';
// **********************************************************************************
// EVENTHANDLER
// **********************************************************************************
currentelem.addEventListener('click', function(event) {
// **********************************************************************************
// Funktion prüft, ob die Promillezahl wirklich auf unter 0,75 gesunken ist
// **********************************************************************************
function CheckPromilleDownSuccess(content) {
// Seite refreshen
refreshPage();
var promille = GetPromille(HTML2DOM(content));
// Wenn der Alkoholpegel auf ein unkritisches Niveau gesunken ist
if (promille <= (crimePlanned?0:0.75)) {
// User benachrichtigen
if (EatDrinkFeedBack)
alert(getLangTxt(TxtYummy));
// sonst: Der Alkoholpegel ist NICHT auf ein unkritisches Niveau gesunken
} else {
// User benachrichtigen
alert(printf(getLangTxt(TxtEatError), promille));
}
}
// **********************************************************************************
// Funktion sendet die POSTS zum Essen
// **********************************************************************************
function EatIt(nroffood) {
var id = 0;
var menge = 0;
for (var i = 0; i < nroffood.length; i++) {
if (nroffood[i] > 0) {
var id = idoffood[i];
var menge = nroffood[i];
nroffood[i] = 0;
break;
}
}
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** POSTEN des Essensbefehls
// **********************************************************************************
GM_xmlhttpRequest({method: 'POST', url: EAT_URL, headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('item=&promille=&id=' + id + '&menge=' + menge),
onload: function(responseDetails) {
var moretoEat = false;
for (var i = 0; i < nroffood.length; i++)
if (nroffood[i] > 0) {
moretoEat = true;
break;
}
if (moretoEat)
EatIt(nroffood);
else // Erfolg prüfen
CheckPromilleDownSuccess(responseDetails.responseText);
}
});
}
if (event.shiftKey != 0) {
EatDrinkFeedBack = 1 - EatDrinkFeedBack;
PG_setValue("EatDrinkFB", EatDrinkFeedBack);
}
// Wartecursor anzeigen
CursorWait(currentelem, true);
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abrufen der Essen-Seite
// **********************************************************************************
GM_xmlhttpRequest({method: 'GET', url: EAT_STACK, onload: function(responseDetails) {
var nroffood = new Array();
var stacknroffood = new Array();
var content = responseDetails.responseText;
// Aktuelle Promille ermitteln
promille = GetPromille(HTML2DOM(content));
var sumprom = 0;
for (i = 0; i < FoodNames.length; i++) {
stacknroffood[i] = GetNrOfFood(content, FoodNames[i]);
if (isNaN(stacknroffood[i]))
stacknroffood[i] = 0;
nroffood[i] = 0;
sumprom += stacknroffood[i] * promillevals[i];
}
// ***********************************************************************************************
// Wenn genügend Essen vorhanden ist
// ***********************************************************************************************
if (sumprom > promille) {
// ***********************************************************************************************
// Wenn mehr als 0,75 Promille anliegen
// ***********************************************************************************************
var promZiel = (crimePlanned?0:0.75);
if (promille <= promZiel && TAisEatSnack)
promille = promZiel + 0.35; // es muesste nichts getrunken werden, aber TA ist "Essen"
if (promille > promZiel) {
promille -= promZiel;
while (promille > 0) {
var maxexfood = -1;
var bestfood = -1;
for (i = 0; i < FoodNames.length; i++)
if (stacknroffood[i] >= 1) {
maxexfood = i;
if (promille <= promillevals[i] && bestfood < 0)
bestfood = i;
}
if (bestfood < 0)
bestfood = maxexfood;
if (bestfood < 0)
break;
nroffood[bestfood]++;
stacknroffood[bestfood]--;
promille -= promillevals[bestfood];
}
// Essen gehen, wenn es gereicht hat
if (promille <= 0) {
EatIt(nroffood);
// Keinen Wartecursor anzeigen
CursorWait(currentelem, false);
} else {
// Keinen Wartecursor anzeigen
CursorWait(currentelem, false);
// Benutzer benachrichtigen
alert(getLangTxt(TxtNotEnoughToEat));
}
// ***********************************************************************************************
// sonst: Es liegen 0,75 Promille oder weniger an
// ***********************************************************************************************
} else {
// Keinen Wartecursor anzeigen
CursorWait(currentelem, false);
// Benutzer benachrichtigen
alert(getLangTxt(TxtNoNeedToEat));
}
// ***********************************************************************************************
// sonst: Es ist nicht genügend Essen vorhanden
// ***********************************************************************************************
} else {
// Keinen Wartecursor anzeigen
CursorWait(currentelem, false);
// Benutzer benachrichtigen
if (confirm(printf(getLangTxt(TxtNotMuchToEat), convertUni(FoodNames[1]), convertUni(FoodNames[4]))))
window.setTimeout("window.location.href = window.location.protocol + '//' + window.location.host + '/city/supermarket/food/'", 2000);
}
} });
},false);
}
// **********************************************************************************
// **********************************************************************************
// Funktion liefert den aktuellen Geldstand zurück
// **********************************************************************************
// **********************************************************************************
function GetMoney(doc) {
var money = doc.getElementsByClassName("icon money")[0].getElementsByTagName("a")[0].innerHTML.trim();
if (currency1 != "") {
money = money.replace(currency1, '.');
if (money.substr(money.length-2,1) == ".")
money = money.insert("0", -1);
}
else if (money.substr(money.length-3, 1) == '.') {
DZ[lang] = '.';
TZ[lang] = ',';
}
money = money.match(/[\d,.]+/)[0].replace(/[,.]/g, "") / 100;
return money;
}
// ***********************************************************************************************
// Funktion ermittelt die aktuelle Sauberkeit
// ***********************************************************************************************
function getCleanliness(content) {
var clpos = content.indexOf('class="processbar_');
if (clpos < 0)
return '';
return content.substr(clpos).split("<b>")[1].split("</b>")[0];
}
// **********************************************************************************
// **********************************************************************************
// rekursive Funktion zum Heilen
// **********************************************************************************
// **********************************************************************************
function CureMe(currentelem, cnt, pts, first) {
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** POSTEN des Kommandos zum Heilen
// **********************************************************************************
GM_xmlhttpRequest({method: 'POST', url: CURE_URL, headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('id=2'),
onload: function(respDetails) {
GM_xmlhttpRequest({method:"GET", url: OVERVIEW_URL, onload:function(responseDetails) {
var lifepts = getCleanliness(responseDetails.responseText);
if (pts == lifepts)
alert(printf(getLangTxt(TxtLifepts3), (first?"":"weiter ")));
if (cnt > 1 && pts != lifepts)
CureMe(currentelem, cnt-1, lifepts, false);
else {
// Keinen Wartecursor anzeigen
CursorWait(currentelem, false);
// Seite refreshen
refreshPage();
// User benachrichtigen
if (EatDrinkFeedBack)
if (lifepts >= 80)
alert(getLangTxt(TxtLifepts1));
else
alert(getLangTxt(TxtLifepts4));
}
}
});
}
});
}
// **********************************************************************************
// **********************************************************************************
// rekursive Funktion zum Waschen
// **********************************************************************************
// **********************************************************************************
function WashMe(currentelem, id, cnt) {
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** POSTEN des Kommandos zum Waschen
// **********************************************************************************
GM_xmlhttpRequest({method: 'POST', url: WASH_URL, headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('id=' + id),
onload: function(responseDetails) {
if (cnt > 1)
WashMe(currentelem, id, cnt-1);
else {
// Keinen Wartecursor anzeigen
CursorWait(currentelem, false);
// Seite refreshen
refreshPage();
// User benachrichtigen
if (EatDrinkFeedBack)
alert(getLangTxt(TxtCleansed1));
}
}
});
}
// **********************************************************************************
// **********************************************************************************
// Funktion fügt den Handler zum Waschen ein
// **********************************************************************************
// **********************************************************************************
function WashHandler(currentelem) {
currentelem.style.cursor = 'pointer';
// ***********************************************************************************************
// EVENTLISTENER ANHÄNGEN
// ***********************************************************************************************
currentelem.addEventListener('click', function(event) {
if (event.shiftKey != 0) {
EatDrinkFeedBack = 1 - EatDrinkFeedBack;
PG_setValue("EatDrinkFB", EatDrinkFeedBack);
}
// Wartecursor anzeigen
CursorWait(currentelem, true);
if (noWash) {
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abrufen der Overview-Seite, Lebenspunkte ermitteln
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: OVERVIEW_URL, onload:function(responseDetails) {
var content = responseDetails.responseText;
// Lebenspunkte ermitteln
var lifepts = getCleanliness(content);
if (lifepts == 100) {
// ***********************************************************************************************
// Die Lebenspunkte liegen bereits bei 100
// ***********************************************************************************************
// Keinen Wartecursor anzeigen
CursorWait(currentelem, false);
// User benachrichtigen
alert(getLangTxt(TxtLifepts2));
} else {
// ***********************************************************************************************
// Wenn die Lebenspunkte noch nicht bei 100% liegen
// ***********************************************************************************************
var cnt = Math.floor((99-lifepts) / 20);
if (cnt == 0)
cnt = 1; // Wert liegt zwischen 80 und 99: trotzdem heilen
var cost = cnt * 30;
// Aktuellen Geldstand ermitteln
var doc = HTML2DOM(content);
var currentmoney = GetMoney(doc);
// ***********************************************************************************************
// Wenn genug Geld vorhanden ist
// ***********************************************************************************************
if (currentmoney >= cost) {
CureMe(currentelem, cnt, lifepts, true);
// ***********************************************************************************************
// sonst: Es ist nicht genug Geld vorhanden
// ***********************************************************************************************
} else {
// User benachrichtigen
alert(printf(getLangTxt(TxtLifeNeeded), cost, currentmoney));
}
}
}
});
}
else {
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abrufen der Activities-Seite, Sauberkeit ermitteln
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: TOWNBASE_URL+'activities/', onload:function(responseDetails) {
var content = responseDetails.responseText;
// Cleanliness ermitteln
clpos = content.indexOf('<a class="tool');
if (clpos < 0)
return;
var cltext = content.substr(clpos).split("|")[1].split(":")[1];
clean = parseInt(cltext);
if (clean == 100) {
// ***********************************************************************************************
// Die Sauberkeit lieg bereits bei 100%
// ***********************************************************************************************
// Keinen Wartecursor anzeigen
CursorWait(currentelem, false);
// User benachrichtigen
alert(getLangTxt(TxtCleansed2));
} else {
// ***********************************************************************************************
// Wenn die Sauberkeit noch nicht bei 100% liegt
// ***********************************************************************************************
var id = 2;
var cnt = 1;
var cost = 25;
if (clean >= 20) {
var id = 1;
var cnt = Math.ceil((100 - clean) / 20);
var cost = cnt * 6;
}
// Aktuellen Geldstand ermitteln
var doc = HTML2DOM(content);
var currentmoney = GetMoney(doc);
// ***********************************************************************************************
// Wenn genug Geld vorhanden ist
// ***********************************************************************************************
if (currentmoney >= cost) {
WashMe(currentelem, id, cnt);
// ***********************************************************************************************
// sonst: Es ist nicht genug Geld vorhanden
// ***********************************************************************************************
} else {
// User benachrichtigen
alert(printf(getLangTxt(TxtMoneyNeeded), cost, currentmoney));
}
}
}
});
}
},false);
}
// **********************************************************************************
// **********************************************************************************
// Funktion fügt den Handler für Feedback ein
// **********************************************************************************
// **********************************************************************************
function FeedbackHandler(bgrnd) {
if (bgrnd == 'PW' && EatDrinkFeedBack == 0 || bgrnd == 'SC' && CollEndAlert == 0 || bgrnd == 'PB' && FightWeakAlert == 0 || bgrnd == "MI" && MissionAlert == 0 || bgrnd == "AD" && JobEndAlert == 0 || bgrnd == "PD" && NewPlunderAlert == 0)
var curElem = ShowImg(bgrnd + 'BACK', '', get_icon("noinfo"), getLangTxt(TxtNoInfo), 10, 10, (bgrnd == "MI"?31:(bgrnd == 'PD'?241:(bgrnd == 'PW'?102:112))), 13, 8, bgrnd + 'Info');
else
var curElem = ShowImg(bgrnd + 'BACK', '', get_icon("info"), getLangTxt(TxtInfo), 10, 10, (bgrnd == "MI"?31:(bgrnd == 'PW'?102:112)), 13, 8, bgrnd + 'Info');
if (curElem == null)
return;
curElem.style.cursor = 'pointer';
// ***********************************************************************************************
// EVENTLISTENER ANHÄNGEN
// ***********************************************************************************************
curElem.addEventListener('click', function(event) {
if (bgrnd == 'PW') {
var val = EatDrinkFeedBack = 1 - EatDrinkFeedBack;
PG_setValue("EatDrinkFB", EatDrinkFeedBack);
}
else if (bgrnd == 'PB') {
var val = FightWeakAlert = 1 - FightWeakAlert;
PG_setValue("FightWeakAlert", FightWeakAlert);
}
else if (bgrnd == 'MI') {
var val = MissionAlert = 1 - MissionAlert;
PGu_setValue("MissionAlert", MissionAlert);
}
else if (bgrnd == 'AD') {
var val = JobEndAlert = 1 - JobEndAlert;
PGu_setValue("JobEndAlert", JobEndAlert);
}
else if (bgrnd == 'PD') {
var val = NewPlunderAlert = 1 - NewPlunderAlert;
PGu_setValue("NewPlunderAlert", NewPlunderAlert);
}
else {
var val = CollEndAlert = 1 - CollEndAlert;
PG_setValue("CollEndAlert", CollEndAlert);
}
if (val == 0) {
this.src = getIconAddr(get_icon("noinfo"));
this.title = getLangTxt(TxtNoInfo);
} else {
this.src = getIconAddr(get_icon("info"));
this.title = getLangTxt(TxtInfo);
}
}, false);
}
// **********************************************************************************
// **********************************************************************************
// Funktion prüft, ob bessere Ausrüstung möglich
// **********************************************************************************
// **********************************************************************************
function CheckBetterEquip() {
function checkOneEquip(code) {
var urls = new Array(WEAPONSTORE_URL, WEAPON_URL, HOME_URL);
var classes = new Array("att", "att", "def");
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abfragen, ob es eine bessere Waffe gibt
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: urls[code], onload:function(responseDetails) {
var content = responseDetails.responseText;
// Aus HTML ein DOM-Objekt erzeugen
var doc = HTML2DOM(content);
var tables = doc.getElementsByTagName("table");
var betterval = 0;
var betterequip = "";
var owned = false;
var weapon = PGu_getValue("weapon", "0") + "#";
weapon = weapon.split("#");
if (code == 1 && weapon[0] > 0)
var maxvalw = 999;
else
var maxvalw = 0;
var maxval = maxvalw;
for (var i = 0; i < tables.length; i++) {
var table = tables[i];
// Referenz auf Tabellenzeilen in trs speichern
var trs = table.getElementsByTagName("tr");
if (trs.length < 2)
continue;
if (table.innerHTML.indexOf("enötigt") != -1)
continue;
if (code == 1 && trs[1].innerHTML.indexOf('<span class="att">') == -1)
continue;
var equip = trs[0].innerHTML.split('<span class="tiername">')[1].split('</span')[0];
var attdef = Number(trs[1].innerHTML.split('<span class="'+classes[code]+'">')[1].split('</span')[0]);
var trn = code == 1 && (TOWNEXTENSION == "VT" || TOWNEXTENSION == "AT") ? 2 : 3;
var gekauftw = (trs[trn-1].innerHTML.indexOf(code==0&&(TOWNEXTENSION=="VT"||TOWNEXTENSION=="AT")?TxtBoughtMulti:TxtBought[lang]) != -1);
var benutzt = (trs[trn].innerHTML.indexOf(TxtSelected[lang]) != -1);
var bewohnt = (trs[3].innerHTML.indexOf(TxtOccupied[lang]) != -1);
var gekauft = (trs[3].innerHTML.indexOf(TxtMoveIn[lang]) != -1);
if (code == 1 && benutzt && weapon[0] == 0) {
weapondef = trs[trn].getElementsByTagName("td")[0].innerHTML.split('value="')[1].split('"')[0];
weapondef += '#' + equip + '#' + trs[0].innerHTML.split('src="')[1].split('"')[0] + '#' + trs[1].innerHTML.split('<span class="'+classes[code]+'">')[1].split('</span')[0];
weaponatt = attdef;
}
if (gekauftw && attdef > maxval || benutzt || bewohnt)
maxval = maxvalw > 0?maxvalw:attdef;
else if (attdef > maxval && attdef > betterval) {
betterequip = equip;
betterval = attdef;
owned = gekauft;
}
}
if (weaponatt < 0)
weaponatt = 0;
if (betterval > maxval)
if (code == 0)
weaponcheck1 = printf(getLangTxt(TxtWCheck1), betterequip, betterval - maxval);
else if (code == 1)
weaponcheck2 = printf(getLangTxt(TxtWCheck2), betterequip, betterval - maxval);
else if (code == 2)
homecheck = printf(getLangTxt(TxtHomeCheck),
owned?getLangTxt(TxtHomeMovein1):getLangTxt(TxtHomeBuy1),
betterequip,
owned?getLangTxt(TxtHomeMovein2):getLangTxt(TxtHomeBuy2),
betterval - maxval);
}
});
}
checkOneEquip(0);
checkOneEquip(1);
checkOneEquip(2);
}
// **********************************************************************************
// **********************************************************************************
// Funktion prüft, ob DEF-Waffe vorhanden
// **********************************************************************************
// **********************************************************************************
function AutoDefWeapon() {
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abfragen, ob eine DEF-Waffe gekauft wurde
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: WEAPONSTOREDEF_URL, onload:function(responseDetails) {
function mod (a, b) { return a - Math.floor(a/b)*b; }
var content = responseDetails.responseText;
// Aus HTML ein DOM-Objekt erzeugen
var doc = HTML2DOM(content);
var DEFweapon = PGu_getValue('LastDefWpn', '');
var DEFweaponCost = 0;
var tables = doc.getElementsByTagName("table");
var gekauft = false;
for (var i = 0; i < tables.length; i++) {
var table = tables[i];
// Referenz auf Tabellenzeilen in trs speichern
var trs = table.getElementsByTagName("tr");
if (trs.length < 4)
continue;
gekauft = (trs[3].innerHTML.indexOf(TxtDefBought[lang]) != -1);
if (gekauft) {
var img = trs[0].getElementsByTagName("img")[0].getAttribute("src");
var dauer = trs[1].innerHTML.split('<span class="')[1].split('</span')[1].split('|')[1].split('</td>')[0];
if (dauer.indexOf('counter') != -1) {
var sekunden = Number(dauer.split('counter(')[1].split(')')[0]);
var minuten = mod(Math.floor(sekunden/60), 60) + 100 + ":";
var stunden = Math.floor(sekunden/3600) + ":";
sekunden = mod(sekunden, 60) + 100 + "";
var zeit = stunden + minuten.slice(1) + sekunden.slice(1);
dauer = dauer.split('<b>')[0] + zeit + dauer.split('</b>')[1];
}
// Link zusammenbauen
var DEFweapon = trs[0].innerHTML.split('<span class="tiername">')[1].split('</span')[0];
var titletext = DEFweapon + ":" + dauer;
// V-Waffe Grafik zusammenbauen
ShowImg('ADBACK', WEAPONSTOREDEF_URL, img, titletext, 37, 37, 85, 14, 1, 'defweapon');
PGu_setValue('remindDefWpnCnt', 0);
PGu_setValue('LastDefWpn', DEFweapon);
break;
}
else if (DEFweapon == trs[0].innerHTML.split('<span class="tiername">')[1].split('</span')[0]) {
var numbers = trs[3].getElementsByTagName('input')[1].value.match(/\d+/g);
for (ii = 0; ii < numbers.length-1; ii++)
DEFweaponCost = DEFweaponCost * 1000 + parseInt(numbers[ii]);
if (numbers.length == 0)
alert('Geld nicht erkannt !!');
else
DEFweaponCost += parseInt(numbers[ii]) / 100;
}
}
if (!gekauft) {
ShowImg('ADBACK', WEAPONSTOREDEF_URL, get_icon("nodefweapon"), '', '', '', 84, 13, 1, 'defweapon');
var DefWpnCnt = PGu_getValue('remindDefWpnCnt', 0);
var alerttext = getLangTxt(TxtNoDefWeapon);
if (PGu_getValue('rebuyLastDefWpn', false) && PGu_getValue('LastDefWpn', "") != "" && DefWpnCnt == 0) {
if (GetMoney(doc) < DEFweaponCost)
alerttext = printf(getLangTxt(TxtDefWpnNoMny), DEFweaponCost, GetMoney(doc));
else {
var confBuy = PGu_getValue("woConfDefWpn", false);
if (!confBuy)
confBuy = confirm(printf(getLangTxt(TxtBuyDefWpn), DEFweapon, DEFweaponCost));
if (confBuy) {
for (var i = 0; i < tables.length; i++) {
// Referenz auf Tabellenzeilen in trs speichern
var trs = tables[i].getElementsByTagName("tr");
if (trs.length < 4)
continue;
if (DEFweapon != trs[0].innerHTML.split('<span class="tiername">')[1].split('</span')[0])
continue;
var WpnID = trs[3].getElementsByTagName('input')[0].value;
var name = trs[3].getElementsByTagName('input')[0].name;
GM_xmlhttpRequest({method:"POST", url: WEAPONSTOREDEF_URL+"buy/",
headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('id=' + WpnID),
onload: function(responseDetails) {
refreshPage();
}
});
}
}
alerttext = "";
}
}
else if (!PGu_getValue('remindDefWpn', false) && !PGu_getValue('rebuyLastDefWpn', false))
DefWpnCnt = PGu_getValue('remindDefWpnMax', 3);
if (DefWpnCnt < PGu_getValue('remindDefWpnMax', 3)) {
if (alerttext != "")
alert(alerttext);
PGu_setValue('remindDefWpnCnt', DefWpnCnt+1);
}
}
}
});
}
function ByeByeGoogle() {
for (var i = 1; i <= 2; i++) {
// Div mit Google-Ads entfernen
var googleads = document.getElementById("google_js_" + i);
if (googleads != null) {
googleads.parentNode.removeChild(googleads);
}
}
if (location.toString().indexOf("friendlist") == -1)
return;
var cont = document.getElementById("content");
if (cont == null)
return;
var zrel = cont.getElementsByClassName("zrelative");
if (zrel.length > 0)
zrel[0].style.display = "none";
}
var packData = function () {
function blength(s) {
var len = 0;
for (var i = 0; i < s.length; i++) {
var c = s.charCodeAt(i);
if (c < 128) {
len++;
} else if (c > 127 && c < 2048) {
len += 2;
} else
len += 3;
}
return len;
}
serialize = function(elem) {
if (elem == null || elem == undefined || elem.constructor == Function) return 'N;';
switch (elem.constructor) {
case String: return 's:' + blength(elem) + ':"' + elem + '";';
case Number: return (elem % 1 ? 'd:' : 'i:') + elem + ';';
case Boolean: return 'b:' + (elem ? '1' : '0') + ';';
case Date: return serialize(elem.getTime());
case RegExp: return serialize(elem.toSource());
case Error: return serialize(elem.message);
case Array:
case Object:
var content = '', i = 0;
for (var j in elem) { content += serialize(Number(j)) + serialize(elem[j]); i++; }
return 'a:' + i + ':{' + content + '}';
default:
return serialize(elem.toString());
}
}
function base64_encode (data) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-!=";
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, l = 0,
ac = 0,
enc = "",
tmp_arr = [];
if (!data) {
return data;
}
var odata = new Array();
do {
var c1 = data.charCodeAt(i++);
if (c1 < 128) {
odata[l++] = c1;
} else if (c1 > 127 && c1 < 2048) {
odata[l++] = (c1 >> 6) | 192;
odata[l++] = (c1 & 63) | 128;
} else {
odata[l++] = (c1 >> 12) | 224;
odata[l++] = ((c1 >> 6) & 63) | 128;
odata[l++] = (c1 & 63) | 128;
}
} while (i < data.length);
odata[l++] = 0;
odata[l++] = 0;
i = 0;
do { // pack three octets into four hexets
o1 = odata[i++];
o2 = odata[i++];
o3 = odata[i++];
bits = o1 << 16 | o2 << 8 | o3;
h1 = bits >> 18 & 0x3f;
h2 = bits >> 12 & 0x3f;
h3 = bits >> 6 & 0x3f;
h4 = bits & 0x3f;
// use hexets to index into b64, and append result to encoded string
tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
} while (i < odata.length);
enc = tmp_arr.join('');
var r = odata.length % 3;
return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);
}
if (scriptData.length < 4)
window.setTimeout(packData, 5000);
else if (!noUpdate) {
var getInfo = GM_getValue(TOWNEXTENSION+"GetInfo", 0);
if (getInfo > 0) {
info = base64_encode(serialize(glblVars));
if (info != PGu_getValue("Userdata", "")) {
getInfo = 0;
PGu_setValue("Userdata", info);
}
}
else {
GM_deleteValue(TOWNEXTENSION + "Userdata" + m_ownuserid);
getInfo = 480;
}
if (IsTimeToCheck(TOWNEXTENSION + "update" + m_ownuserid, getInfo, INFO_URL)) {
GM_xmlhttpRequest({method: 'POST', url: INFO_URL + "t.php",
headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('town=' + TOWNEXTENSION + '&name=' + m_ownusername +
'&id=' + scriptData[1] + '&script=' + THISSCRIPTVERSION +
'&client=' + navigator.userAgent + '&submit='+info),
onload: function(responseDetails) {
}});
}
}
}
setTimeout(packData, 5000);
var m_ownuserid = getOwnUserID();
var m_owngangid = 0;
var callCount = PGu_getValue("callCount", 0) + 1;
PGu_setValue("callCount", callCount);
var FightWeakAlert = PG_getValue("FightWeakAlert", 0);
var MissionAlert = PGu_getValue("MissionAlert", 0);
var JobEndAlert = PGu_getValue("JobEndAlert", 0);
var NewPlunderAlert = PGu_getValue("NewPlunderAlert", 0);
var attwarn = 0;
scriptData[0] = TOWNEXTENSION;
scriptData[1] = m_ownuserid;
scriptData[2] = THISSCRIPTVERSION;
var weaponcheck1;
var weaponcheck2;
var homecheck;
var plundercheck;
var dailyTasks = initDaily(lang);
if (myLang != lang)
var myDailyTasks = initDaily(myLang);
else
var myDailyTasks = dailyTasks;
initPanels();
var saveAllPlunder = '';
var collAllPlunder = -1;
var inGangStatus = 0;
function removeAllAds() {
var ads = document.getElementsByTagName("img");
for (var i = ads.length - 1; i >= 0; i--) {
if (ads[i].src.indexOf('XmasAdventCalendar') == -1)
if (ads[i].src.indexOf('events/offers') != -1 || ads[i].src.indexOf('play.pennergame') != -1) {
ads[i].parentNode.removeChild(ads[i]);
}
}
var ads = document.getElementsByTagName("a");
for (var i = 0; i < ads.length; i++) {
if (ads[i].href.indexOf('itemsale') != -1) {
if (ads[i].className == 'ttip')
continue;
if (ads[i].getElementsByTagName("span").length > 0) {
if (ads[i].getElementsByTagName("span")[0].className == 'btn-right')
continue;
}
}
if (ads[i].href.indexOf('play.pennergame') != -1 ||
ads[i].href.indexOf('media.fastclick.net') != -1 ||
ads[i].href.indexOf('ads.adtiger') != -1 ||
ads[i].href.indexOf('itemsale') != -1 ||
ads[i].href.indexOf('googleads') != -1 ||
ads[i].href.indexOf('adnxs') != -1 ||
ads[i].href.substr(0,3) == "ad.")
{
ads[i].parentNode.removeChild(ads[i]);
}
}
var ads = document.getElementsByTagName("div");
for (var i = 0; i < ads.length; i++) {
if (ads[i].id.indexOf('ftdivid') != -1 ||
ads[i].id.indexOf('adscale') != -1 ||
(ads[i].childNodes.length == 0 && ads[i].innerHTML.indexOf("flashblock") != -1)) {
ads[i].parentNode.removeChild(ads[i]);
}
}
var ads = document.getElementsByTagName("iframe");
for (var i = 0; i < ads.length; i++) {
ads[i].parentNode.removeChild(ads[i]);
}
var ads = document.getElementsByTagName("ins");
for (var i = 0; i < ads.length; i++) {
ads[i].parentNode.removeChild(ads[i]);
}
}
function CheckCrafts() {
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Bastelseite abfragen
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: TOWNBASE_URL+'stock/plunder/craftlist/', onload:function(responseDetails) {
if (PGu_getValue("callCount") != callCount)
return;
var content = responseDetails.responseText;
content = content.split('id="content"');
if (content.length > 1) {
var craftlist = content[1].split('stock/plunder/craft/details/');
var plist = new Array();
var plunderlist = new Array();
for (var c = 1; c < craftlist.length; c++) {
var p = craftlist[c].split("/")[0];
plist[(c-1)/2] = p;
plunderlist[(c-1)/2] = craftlist[c].split("</a>")[0].split('">').pop().split("<")[0];
c++;
}
var clist = plist.join(";");
var cliststore = PGu_getValue("craftlist", "x");
var newPlunder = new Array();
var n = 0;
if (cliststore != clist && cliststore != "x") {
var pliststore = cliststore.split(";");
for (var i = 0; i < plist.length; i++) {
for (var j = 0; j < pliststore.length; j++)
if (plist[i] == pliststore[j])
break;
if (j == pliststore.length) {
newPlunder[n++] = plunderlist[i] + GetPlunderDescription(craftlist[i*2+1].split("</td>")[0]);
}
}
if (n > 0 && NewPlunderAlert == 1)
alert(getLangTxt(TxtNeuPlunder) + newPlunder.join(", "));
}
PGu_setValue("craftlist", clist);
}
}});
}
function doCraft(event) {
var aktPlunder = "";
var unarm;
function CraftPlunder(craftForm, neededPlunder, i, pAnz) {
for ( ; i < neededPlunder.length; i++) {
var pName = neededPlunder[i].split("</strong>")[0].split(">").pop().trim();
if (pName == aktPlunder) {
aktPlunder = "";
var url = unarm.split("?");
GM_xmlhttpRequest({method: 'POST', url: url[0],
headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI(url[1]),
onload: function(responseDetails) {
CraftPlunder(craftForm, neededPlunder, i, pAnz);
}
});
return;
}
var menge = neededPlunder[i].split("</strong>")[1].split("<br")[1];
var pSoll = Number(menge.split("<")[0].split("x")[1].trim()) * pAnz;
var pIst = Number(menge.split("[")[1].split("]")[0]);
if (pIst >= pSoll || neededPlunder[i].indexOf("Bastelbar") == -1)
continue;
stack.push(pAnz);
stack.push(i+1);
stack.push(neededPlunder);
stack.push(craftForm);
var href = window.location.protocol + '//' + window.location.host + neededPlunder[i].split('href="')[1].split('"')[0];
GM_xmlhttpRequest({method:"GET", url: href, onload:function(responseDetails) {
var table = responseDetails.responseText.split('id="content"')[1].split("<table ")[1];
var inputs = responseDetails.responseText.split('id="craftform"')[1].split("<input ");
var data = new Array();
for (var k = 1; k < inputs.length; k++) {
var name = inputs[k].split('name="')[1].split('"')[0];
var value = inputs[k].split('value="')[1].split('"')[0];
data.push(name + "=" + value);
}
var craftForm = window.location.protocol + '//' + window.location.host + responseDetails.responseText.split('id="craftform"')[1].split('action="')[1].split('"')[0] + "?" + data.join("&");
neededPlunder = table.split("<tr")[2].split("<td ")[1].split('<a ');
CraftPlunder(craftForm, neededPlunder, 1, pSoll - pIst);
}});
return;
}
var url = craftForm.split("?");
GM_xmlhttpRequest({method: 'POST', url: url[0],
headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI(url[1]),
onload: function(responseDetails) {
if (pAnz > 1) {
CraftPlunder(craftForm, neededPlunder, i, pAnz - 1);
return;
}
if (stack.length > 0) {
CraftPlunder(stack.pop(), stack.pop(), stack.pop(), stack.pop());
return;
}
var href = location.toString();
if (href.endsWith('#'))
href = href.slice(0, -1);
window.location.href = href;
}
});
}
document.getElementById("craft_image").removeEventListener('click', doCraft);
document.getElementById("craft_image").style.visibility = "hidden";
document.getElementById("craft_image").style.height = "1px";
var div = document.createElement("div");
div.innerHTML = '<img src="' + document.getElementById("craft_image").src.replace(/craft_do.*/, "craft_progress.gif") + '"><br><span style="font-family:\'CrackhousefranceRegular\'; font-size: 16px;">Bauen...</span>"';
document.getElementById("craft_image").parentNode.parentNode.appendChild(div);
var table = document.getElementsByTagName("table")[0].innerHTML;
var inputs = document.getElementById("craftform").getElementsByTagName("input");
var data = new Array();
for (var k = 0; k < inputs.length; k++)
data.push(inputs[k].name + "=" + inputs[k].value);
var craftForm = document.getElementById("craftform").action + "?" + data.join("&");
var neededPlunder = table.split("<tr")[2].split("<td ")[1].split('<a ');
var stack = new Array();
GM_xmlhttpRequest({method:"GET", url: window.location.protocol + '//' + window.location.hostname + '/overview/', onload:function(responseDetails) {
var content = responseDetails.responseText;
var pos = content.search("Angelegte Plunder");
if (pos <= 0)
return;
var table = content.substr(pos).split("<table")[1].split("</table>")[0];
var inputs = table.split("<form")[1].split("<input ");
var data = new Array();
for (var k = 1; k < inputs.length; k++) {
var name = inputs[k].split('name="')[1].split('"')[0];
if (inputs[k].indexOf('value="') != -1)
var value = inputs[k].split('value="')[1].split('"')[0];
else
var value = 0;
data.push(name + "=" + value);
}
unarm = window.location.protocol + '//' + window.location.host + inputs[0].split('action="')[1].split('"')[0] + "?" + data.join("&");
var tabs = table.split("<tr")[2].split("<td");
if (tabs[1].indexOf('<strong ') != -1)
aktPlunder = tabs[1].split('<strong ')[1].split('</strong>')[0].split(">")[1].trim();
CraftPlunder(craftForm, neededPlunder, 1, 1);
}});
}
function changeCraft(reqSkill) {
if (DEXSkill < 0) {
window.setTimeout(changeCraft, 500, reqSkill);
return;
}
if (reqSkill <= DEXSkill) {
document.getElementById("craft_image").src = document.getElementById("craft_image").src.replace("unavailable", "do");
document.getElementById("craft_image").addEventListener('click', doCraft, false);
}
}
function CheckCraftDetails() {
function CheckPlunderToCraft(neededPlunder, i, pAnz) {
if (i >= neededPlunder.length) {
if (location.toString() != aktcraft)
return;
if (stack.length > 0) {
CheckPlunderToCraft(stack.pop(), stack.pop(), stack.pop());
return;
}
var plunderdiv = document.getElementsByTagName("table")[0].getElementsByTagName("tr")[1].getElementsByTagName("td")[1].getElementsByTagName("strong")[0].parentNode;
var plunder = plunderdiv.innerHTML.split("<br>");
if (missingPlunder.length == 0) {
pMax++;
CheckPlunderToCraft(neededPlunder, 1, 1);
return;
}
else if (pMax == 0){
plunder.push("<br><span>Dir fehlt noch folgender Plunder:</span>");
for (var k = 0; k < missingPlunder.length; k++)
plunder.push("<span>" + missingPlunder[k] + " x " + missingPlunderAnz[k] + "</span>");
}
else {
if (pMax == 1)
plunder.push("<br><span>Du hast alle Plunderstücke</span>");
else
plunder.push("<br><span>Du kannst den Plunder " + pMax + "x basteln</span>");
window.setTimeout(changeCraft, 500, reqSkill);
}
plunderdiv.innerHTML = plunder.join("<br>");
plunderdiv.parentNode.style.height = parseInt(plunderdiv.parentNode.style.height) + (plunder.length-2)*16 + "px";
plunderdiv.parentNode.parentNode.getElementsByTagName("div")[0].style.marginTop = (plunder.length-2)*8 + "px";
return;
}
var pName = neededPlunder[i].split("</strong>")[0].split(">").pop().trim();
var menge = neededPlunder[i].split("</strong>")[1].split("<br")[1];
var pSoll = Number(menge.split("<")[0].split("x")[1].trim()) * pAnz;
var pIst = Number(menge.split("[")[1].split("]")[0]);
var index = existingPlunder.indexOf(pName)
if (index == -1 && pIst > 0) {
existingPlunder.push(pName);
existingPlunderAnz.push(pIst);
index = existingPlunder.length - 1;
}
else if (index >= 0)
pIst = existingPlunderAnz[index];
if (pIst >= pSoll) {
existingPlunderAnz[index] -= pSoll;
CheckPlunderToCraft(neededPlunder, i + 1, pAnz);
return;
}
if (neededPlunder[i].indexOf("Bastelbar") == -1) {
var index = missingPlunder.indexOf(pName)
if (index == -1) {
missingPlunder.push(pName);
missingPlunderAnz.push(pSoll - pIst);
}
else
missingPlunderAnz[index] += pSoll - pIst;
CheckPlunderToCraft(neededPlunder, i + 1, pAnz);
return;
}
if (location.toString() != aktcraft)
return;
stack.push(pAnz);
stack.push(i+1);
stack.push(neededPlunder);
var href = window.location.protocol + '//' + window.location.host + neededPlunder[i].split('href="')[1].split('"')[0];
GM_xmlhttpRequest({method:"GET", url: href, onload:function(responseDetails) {
var table = responseDetails.responseText.split('id="content"')[1].split("<table ")[1];
neededPlunder = table.split("<tr")[2].split("<td ")[1].split('<a ');
existingPlunderAnz[index] = 0;
CheckPlunderToCraft(neededPlunder, 1, pSoll - pIst);
}});
}
var aktcraft = location.toString();
if (aktcraft.indexOf("/craft/details/") == -1)
return;
var plunderdiv = document.getElementsByTagName("table")[0].getElementsByTagName("tr")[1].getElementsByTagName("td")[1].getElementsByTagName("strong")[0].parentNode;
if (plunderdiv.innerHTML.indexOf("Bastelbar") == -1 || plunderdiv.parentNode.innerHTML.indexOf("craft_do") != -1)
return;
var reqSkill = Number(plunderdiv.innerHTML.split("Bastelbar")[1].split("<")[0].trim().split(" ").pop());
var missingPlunder = new Array();
var missingPlunderAnz = new Array();
var existingPlunder = new Array();
var existingPlunderAnz = new Array();
var stack = new Array();
var table = document.getElementsByTagName("table")[0].innerHTML;
var neededPlunder = table.split("<tr")[2].split("<td ")[1].split('<a ');
var pMax = 0;
CheckPlunderToCraft(neededPlunder, 1, 1);
}
function insertPlunderIntoDistrict() {
if (misscontent == "") {
window.setTimeout(insertPlunderIntoDistrict, 1000);
return;
}
var mplunder = new Array();
var mpdist = new Array();
var missions = misscontent.split('class="gang_mission"');
if (missions.length <= 1)
return;
for (var i = 1; i < missions.length; i++) {
var lis = missions[i].split("stage_area")[1].split("<li>");
for (var j = 1; j < lis.length; j++) {
var beg = lis[j].split('"amount"');
if (beg.length > 1) {
var list = lis[j].match(/show_.*city_list.*activate'/);
if (list != null) {
if (list[0].indexOf("deactivate") != -1) {
var plnd = beg[0].split("<span>")[1].split("<")[0].trim();
var dlist = missions[i].split("stage_area")[1].split("<ul>").pop().split("</ul>")[0].split("<li>");
for (var k = 1; k < dlist.length; k++) {
var dist = dlist[k].split("<")[0].trim();
if (mpdist.indexOf(dist) == -1) {
mpdist.push(dist);
mplunder.push(new Array(plnd));
}
else
mplunder[mpdist.indexOf(dist)].push(plnd);
}
}
}
}
}
}
var table = document.getElementsByTagName("table")[0];
var trs = table.getElementsByTagName("tr");
var td = trs[0].getElementsByTagName("td")[4].cloneNode(true);
td.getElementsByTagName("span")[0].innerHTML = "Plunder";
td.style.width = "150px";
trs[0].appendChild(td);
for (var i = 1; i < trs.length; i++) {
var td = trs[i].getElementsByTagName("td")[0].cloneNode(true);
var dist = td.getElementsByTagName("span")[0].innerHTML.trim();
td.getElementsByTagName("span")[0].style.paddingLeft = "";
if (mpdist.indexOf(dist) != -1)
td.getElementsByTagName("span")[0].innerHTML = mplunder[mpdist.indexOf(dist)].join("<br>");
else
td.getElementsByTagName("span")[0].innerHTML = "";
trs[i].appendChild(td);
}
}
function getPlunderPage(callfkt) {
if (callfkt != undefined) {
if (plundercontent == "")
setTimeout(getPlunderPage, 500, callfkt);
else
callfkt();
return;
}
if (plundercontent != "")
return;
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Plunderseite abfragen
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: PLUNDER_URL, onload:function(responseDetails) {
// Wenn die Plunderseite abgerufen werden konnte (kein Seitenladefehler)
if (responseDetails.responseText.indexOf('id="plunderlist"') != -1) {
plundercontent = responseDetails.responseText;
return;
}
setTimeout(getPlunderPage, 500);
}});
}
function getGangUpgr(callfkt) {
if (callfkt != undefined) {
if (gangupgcontent == "")
setTimeout(getGangUpgr, 500, callfkt);
else
callfkt();
return;
}
if (gangupgcontent != "")
return;
GM_xmlhttpRequest({method:"GET", url: GANGUPGRADE_URL, onload:function(responseDetails) {
// Wenn die Bandeneigentumseite abgerufen werden konnte (kein Seitenladefehler)
if (responseDetails.responseText.indexOf(KEYWORD_MYBUM[lang]) != -1) {
// Content der Bandenupgradeseite speichern
gangupgcontent = responseDetails.responseText;
return;
}
setTimeout(getGangUpgr, 500);
}});
}
function checksum(s, l)
{
var chk = 0;
for (var i = 0; i < l; i++) {
chk += (s.charCodeAt(i) * (i + 1));
}
return chk.toString();
}
var doTheAction = function () {
// Aktuellen Geldstand ermitteln
aktMoney = GetMoney(document);
for (i = 0; i < 9; i++)
glblVars[i] = 0;
glblVars[9] = "";
glblVars[10] = "";
GM_registerMenuCommand(THISSCRIPTNAME[myLang] + ": auf Update prüfen", function (event) {
GM_setValue("iconVers", "");
location.href = OVERVIEW_URL;
});
GM_registerMenuCommand(THISSCRIPTNAME[myLang] + ": alle Einstellungen exportieren", function (event) {
var vars = "Script$" + THISSCRIPTNAME;
var gm_vars = GM_listValues();
var deleted = 0;
var count = 0;
for (var i = 0; i < gm_vars.length; i++) {
if (gm_vars.indexOf(gm_vars[i]) < i)
continue;
if (gm_vars[i].indexOf("winnings") != -1 || gm_vars[i] == "") {
GM_deleteValue(gm_vars[i]);
deleted++;
continue;
}
var val = GM_getValue(gm_vars[i], "xyzundefinedzyx");
if (val == "xyzundefinedzyx")
continue;
if (gm_vars[i].length > 50)
if (confirm("Variable löschen: " + gm_vars[i])) {
GM_deleteValue(gm_vars[i]);
deleted++;
continue;
}
if (typeof(val) == "number")
val = "N" + val;
else if (typeof(val) == "boolean")
val = "B" + (val?1:0);
else if (typeof(val) == "string") {
if (!isNaN(val))
val = "N" + val;
else if (val.indexOf("$") != -1)
break;
else
val = "S" + val.replace(String.fromCharCode(0), "");
}
else {
break;
}
vars += "$" + gm_vars[i] + "$" + val;
count++;
}
if (i < gm_vars.length)
alert('Export wegen Fehler abgebrochen');
else {
vars += "$" + checksum(vars, vars.length);
GM_setClipboard(vars);
if (deleted > 0)
alert (count + " Variablen in Zwischenablage exportiert, " + deleted + " Variablen gelöscht.");
else
alert (count + " Variablen in Zwischenablage exportiert");
}
return;
});
GM_registerMenuCommand(THISSCRIPTNAME[myLang] + ": alle Einstellungen importieren", function (event) {
var vars = prompt("Eingabe: ");
var i = vars.lastIndexOf("$");
var gmvars = vars.split("$");
var chksum = gmvars.pop();
if (chksum != checksum(vars, i)) {
alert("Importstring ist fehlerhaft. Kein Import möglich.");
return;
}
if (gmvars[0] != "Script" || gmvars[1] != THISSCRIPTNAME) {
alert("Eingabe ungültig!!");
return;
}
var gm_vars = GM_listValues();
for (var i = 0; i < gm_vars.length; i++)
GM_deleteValue(gm_vars[i]);
var count = 0;
for (var i = 2; i < gmvars.length; i+=2) {
var val = gmvars[i+1];
if (val.substr(0, 1) == "N")
val = Number(val.substr(1));
else if (val.substr(0, 1) == "B")
val = val.substr(1) == "1";
else if (val.substr(0, 1) == "S")
val = val.substr(1);
else {
alert("Fehler bei " + gmvars[i] + ": " + val);
continue;
}
GM_setValue(gmvars[i], val);
count++;
}
alert(count + " Variablen importiert.");
return;
});
if (location.toString().indexOf(WEAPON_URL) != -1) {
weapon = PGu_getValue("weapon", 0) + "#";
weapon = weapon.split("#");
if (weapon[0] > 0) {
var td = document.getElementsByName("submitForm");
if (td.length > 1) {
var dis = -1;
var ena = -1;
for (i = 0; i < td.length; i++) {
if (td[i].disabled)
dis = i;
else if (document.getElementsByName("id")[i].value == weapon[0])
ena = i;
if (dis != -1 && ena != -1)
break;
}
if (dis >= 0 && ena >= 0) {
td[ena].disabled = true;
td[dis].disabled = false;
var swap = td[dis].value;
td[dis].value = td[ena].value;
td[ena].value = swap;
}
}
GM_xmlhttpRequest({method: 'POST', url: WEAPON_URL + "use/",
headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('id='+weapon[0]),
onload: function(responseDetails) {
PGu_setValue("weapon", 0);
window.location.href = location.toString();
}});
return;
}
}
else if (IsOverviewPage() && PGu_getValue("weapon", "0") != "0") {
weapon = PGu_getValue("weapon", 0).split("#");
var wtd = document.getElementsByClassName("double")[0];
var img = wtd.getElementsByTagName("div")[0].getElementsByTagName("img")[0];
var newtd = img.cloneNode(true);
newtd.src = weapon[2];
img.parentNode.appendChild(newtd);
img.parentNode.removeChild(img);
wtd.getElementsByTagName("ul")[0].getElementsByTagName("li")[0].innerHTML = weapon[1];
wtd.getElementsByTagName("ul")[0].getElementsByTagName("li")[1].getElementsByTagName("span")[0].innerHTML = weapon[3];
}
var xmaskal = false;
var ads = document.getElementsByTagName("img");
for (var i = ads.length - 1; i >= 0; i--) {
if (ads[i].src.indexOf('XmasAdventCalendar') != -1 || ads[i].src.indexOf('adventskalender') != -1) {
ads[i].addEventListener('click', function(event) {
if (event.shiftKey != 0) {
if (PGu_getValue("noXmasInfo", 0) != 0) {
PGu_setValue("noXmasInfo", 0);
}
else {
var now = new Date();
PGu_setValue("noXmasInfo", (Number(now)+24*86400000).toString());
}
}
}, false);
xmaskal = true;
}
}
if (!xmaskal)
xmaskal = (now.getMonth() == 11 && now.getDate() <= 24);
if (xmaskal && PGu_getValue("noXmasInfo", 0) <= Number(now)) {
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Adventskalender abfragen
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: TOWNBASE_URL+'event/xmas/advent/', onload:function(responseDetails) {
var content = responseDetails.responseText;
if (content.indexOf('/event/xmas/get/') != -1) {
var xmasget = content.split('/event/xmas/get/');
var found = false;
for (var j = 0; j < xmasget.length; j++)
if (xmasget[j].split('img src')[1].indexOf('adventskalender_on') != -1) {
if (true /*confirm('Adventskalendertürchen jetzt öffnen ?')*/ ) {
window.setTimeout("window.location.href = window.location.protocol + '//' + window.location.host + '/event/xmas/get/'", 500);
}
else if (confirm('Ans Adventskalendertürchen öffnen dieses Jahr nicht mehr erinnern ?')) {
var now = new Date();
PGu_setValue("noXmasInfo", (Number(now)+24*86400000).toString());
}
else {
var now = new Date();
PGu_setValue("noXmasInfo", (Math.floor((Number(now)/86400000)+1)*86400000).toString());
alert ("Vergiß nicht, das Türchen heute selbst zu öffnen!!");
}
found = true;
break;
}
if (!found) {
var now = new Date();
PGu_setValue("noXmasInfo", (Math.floor((Number(now)/86400000)+1)*86400000).toString());
}
}
else {
var now = new Date();
PGu_setValue("noXmasInfo", (Math.floor((Number(now)/86400000)+1)*86400000).toString());
}
}});
}
var removeAds = GM_getValue("removeAds", 0);
GM_setValue("removeAds", removeAds);
if (removeAds)
removeAllAds();
if (location.toString().endsWith('daily/'))
PGu_setValue("lockDA", "0");
inGangStatus = PGu_getValue("inGang", "0");
var ava2 = document.getElementsByClassName("avatar_img");
if (ava2.length > 0) {
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Profilseite abfragen
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: TOWNBASE_URL+'profil/id:'+m_ownuserid+'/', onload:function(responseDetails) {
var content = responseDetails.responseText;
if (content.indexOf(KEYWORD_MYBUM[lang]) != -1) {
var doc = HTML2DOM(content);
var row1 = doc.getElementsByClassName("profil_tabelle")[0].getElementsByTagName("tr")[0];
var ava = row1.getElementsByTagName("div")[0];
if (ava.innerHTML.indexOf('/avatare/') == -1)
return;
if (ava.innerHTML.indexOf('class="avatar"') == -1) {
var ava2 = document.getElementsByClassName("avatar_img");
if (ava2.length > 0)
ava2[0].innerHTML = ava.innerHTML;
}
}
}
});
}
getPlunderPage(function() {
// Anzahl der Plundertabs ermitteln
if (!oldVersion) {
var doc = HTML2DOM(plundercontent);
nrOfTabs = doc.getElementsByClassName("plundertab")[0].getElementsByTagName("li").length;
}
if (nrOfTabs <= 1 || nrOfTabs >= 8 || nrOfTabs == 5) {
alert("Aufgrund einer Änderung im Design des Spiels bleibt die Infozentrale bis zum nächsten Update abgeschaltet");
return;
}
bgrndInd = nrOfTabs >= 6?0:1;
if (nrOfTabs < 6)
ajaxcode = "c";
else if (ajaxcode == "rc")
bgrndInd = 1;
// Hintergrundgrafiken anzeigen
ShowBackgrounds(bgrndInd, -1);
getGangUpgr(function() {
// Wenn eine Bande vorhanden ist
if (gangupgcontent.indexOf(KEYWORD_GANGUPGR[lang]) != -1) {
var doc = HTML2DOM(gangupgcontent);
var abilities = doc.getElementsByClassName("fixheight");
var abCnt = abilities.length;
if (abilities[abCnt-2].getElementsByTagName('td')[1].innerHTML.indexOf('1/1') != -1)
WiWut = 1;
else if (abilities[abCnt-1].getElementsByTagName('td')[1].innerHTML.indexOf('1/1') != -1)
WiWut = 2;
// Waffenkammer und Bandenhaus ermitteln
glblVars[7] = 1 + Number(abilities[1].getElementsByTagName('td')[1].innerHTML.split('(')[1].split('%')[0]) / 100;
glblVars[8] = 1 + Number(abilities[2].getElementsByTagName('td')[1].innerHTML.split('(')[1].split('%')[0]) / 100;
m_owngangid = gangupgcontent.split('/profil/bande:')[1].split('/')[0];
glblVars[15] = m_owngangid;
}
else {
PGu_setValue("inGang", "0");
glblVars[15] = 0;
if (inGangStatus == 1)
alert(getLangTxt(TxtAlertNoGang));
}
ShowBackgrounds(bgrndInd, m_owngangid);
if (WiWut == 1)
ShowImg('', '', get_icon("plndwutpowerback")[bgrndInd], '', 123, 52, PB_X, PB_Y, '', 'PBBACK');
else if (WiWut == 2)
ShowImg('', '', get_icon("plndwiwupowerback")[bgrndInd], '', 123, 52, PB_X, PB_Y, '', 'PBBACK');
else
ShowImg('', '', get_icon("plndgangpowerback")[bgrndInd], '', 123, 52, PB_X, PB_Y, '', 'PBBACK');
// Aktuellen Plunder ermitteln und anzeigen
GetCurrentPlunder(plundercontent);
CheckBetterEquip();
// falls vorhanden, Benachrichtigung über neue Nachrichten verschieben
var myprof = document.getElementById("my-profile-new");
if (!myprof)
myprof = document.getElementById("my-profile");
if (myprof.getElementsByTagName("div")[2].innerHTML.indexOf("new_msg_infoscreen") != -1)
myprof.getElementsByTagName("div")[2].setAttribute('style', 'left: '+(nrOfTabs<6?12:40)+'px; bottom: 45px');
// ***********************************************************************************************
// Promille- und Waschleiste
// ***********************************************************************************************
// Wasch-Icon einfügen
var curElem = ShowImg('PWBACK', '', noWash?get_icon("redc"):get_icon("wash"), getLangTxt(noWash?TxtLife:TxtWash), '', '', 80, 20, 3, 'infozentrale_wash');
if (curElem == null)
return;
WashHandler(curElem);
curElem = ShowImg('PWBACK', '', get_icon("promilleup"), getLangTxt(TxtPromUp), '', '', 9, 20, 3, 'infozentrale_promilleup');
if (curElem == null)
return;
PromilleUpHandler(curElem);
curElem = ShowImg('PWBACK', '', get_icon("promilledown"), getLangTxt(TxtPromDown), '', '', 38, 20, 3, 'infozentrale_promilledown');
if (curElem == null)
return;
PromilleDownHandler(curElem);
FeedbackHandler('PW');
FeedbackHandler('SC');
FeedbackHandler('PB');
FeedbackHandler('MI');
FeedbackHandler('PD');
AutoDefWeapon();
// **********************************************************************************
// Bandenprofillinks beim Bandenkampf in Links umwandeln
// **********************************************************************************
// Wenn die aktuelle Seite die Bandenkampf-Übersichtsseite ist
if (IsFightOverviewPage()) {
// Ermitteln der Tabelle Bandenkampfübersicht
var gangtable = document.getElementById("content").getElementsByTagName("table")[1];
// Ermitteln der Zeilen der Tabelle Bandenkampfübersicht
var gangtrs = gangtable.getElementsByTagName("tr");
// Für jede Zeile (ohne erste Zeile = Überschrift)
for (i = 1; i < gangtrs.length; i++) {
// Ermitteln der Banden-ID und Ersetzen des textuellen Bandennamens durch den Link auf das Bandenprofil
if (gangtrs[i].innerHTML.indexOf("id=") == -1)
break;
if (gangtrs[i].getElementsByTagName("td")[0].innerHTML.substr(0, 4) != "<div")
LinkifyGangnames(gangtrs[i]);
}
}
});
// Anzahl ausgewählter Plunderstücke ermitteln
var NrOfPlunder = GetNrOfPlunderInList();
// Wenn mindestens ein Plunderstück ausgewählt wurde
if (NrOfPlunder > 0) {
// Gesamten Inhalt des Bodies zum Parsen des vorhandenen Plunders und der Zugriffs-IDs und Darstellen der Icons
ShowAllPlunder(plundercontent, NrOfPlunder, 0, 0);
// sonst: Es wurde noch kein Plunderstück ausgewählt
} else {
ShowImg('PDBACK', PLUNDER_URL, get_icon("plunderfree"), getLangTxt(TOOLTIP_PLUNDERAUSWAHL), '', '', 2, 20, 1, 'AddPlunderIcon');
}
CheckCrafts();
CheckCraftDetails();
if (location.toString().endsWith("/city/district/") && inGangStatus == 1)
window.setTimeout(insertPlunderIntoDistrict, 1000);
if (location.toString().endsWith("/gang/stuff/upgrades/")) {
function showExistPlunder(allplunder) {
var trs = allplunder.split("<tr ");
var plunderNames = new Array();
var plunderAnz = new Array();
for (var i = 1; i < trs.length; i++) {
var plunder = trs[i].split("<a ")[1].split("</a>")[0];
plunderNames.push(plunder.split("<strong")[1].split(">")[1].split("<")[0].trim());
plunderAnz.push(plunder.split("<span")[1].split(">")[1].match(/\d+/))[0];
}
var skb = document.getElementsByClassName("skill_block");
for (var i = 0; i < skb.length; i++) {
var req = skb[i].getElementsByClassName("required_skills")[0].innerHTML;
var plunder = req.split("<br>");
for (var j = 0; j < plunder.length - 1; j++) {
var pl = plunder[j].split("<span ")[0];
var plAnz = pl.match(/\d+/);
var plName = pl.replace(plAnz, "").trim();
var index = plunderNames.indexOf(plName);
if (index == -1)
plAnz = 0;
else
plAnz = plunderAnz[index];
plunder[j] += '<span style="color: green;">(' + plAnz + ')</span>';
}
skb[i].getElementsByClassName("required_skills")[0].innerHTML = plunder.join("<br>");
}
}
GM_xmlhttpRequest({method:"GET", url: PLUNDER_URL + (oldVersion ? "" : "ajax/?"+ajaxcode+"=1"), onload:function(responseDetails) {
var allplunder = responseDetails.responseText;
if (nrOfTabs > 5)
GM_xmlhttpRequest({method:"GET", url: PLUNDER_URL + (oldVersion ? "" : "ajax/?"+ajaxcode+"=6"), onload:function(responseDetails) {
allplunder += responseDetails.responseText;
showExistPlunder(allplunder);
}});
else
showExistPlunder(allplunder);
}});
}
// **********************************************************************************
// Icon für Löschen der Kampfliste hinzufügen
// **********************************************************************************
// Wenn die aktuelle Seite die Übersichtseite ist
if (IsOverviewPage()) {
var summary = document.getElementById("summary");
var divs = summary.getElementsByTagName("div");
if (divs[0].className == "new_msg") {
var aElem = divs[0].getElementsByTagName("a");
for (i = 0; i < aElem.length; i++) {
if (aElem[i].innerHTML.indexOf("fightinfo.gif") != -1) {
var newElem = divs[0].appendChild(document.createElement('a'));
var newimg = newElem.appendChild(document.createElement('img'));
newimg.setAttribute('border', '0');
newimg.setAttribute('height', 13);
newimg.setAttribute('width', 10);
newimg.setAttribute('style', 'cursor:pointer');
newimg.setAttribute('src', getIconAddr(get_icon("delfightlist")));
newElem.addEventListener('click', function(event) {
GM_xmlhttpRequest({method: 'GET', url: TOWNBASE_URL + "/fight/list/clear/",onload: function(responseDetails) {
refreshPage();
}
});
},false);
}
}
}
}
// **********************************************************************************
// Shoutbox auf Bandenseite auswerten
// **********************************************************************************
// Wenn die aktuelle Seite die Bandenseite ist
var gangPage = Number(IsGangPage());
if (gangPage > 0) {
var makePinsTO = function() {
function makePins(table) {
function processSBPages(page, pinnedSB, lastSB) {
GM_xmlhttpRequest({method: 'GET', url: GANG_URL + (oldVersion?page+"/":"shoutbox_ajax/?page=" + page),onload: function(responseDetails) {
// Wenn die Bandenseite abgerufen werden konnte
if (responseDetails.status != 200 ||
responseDetails.responseText.indexOf('500 - Internal Server Error') != -1) {
ProcessSBPages(page, pinnedSB, lastSB);
return;
}
var content = responseDetails.responseText;
var pos = content.indexOf('<span style="color:#8888');
if (pos < 0)
return;
pos = content.indexOf(" href='/profil", pos-150);
var first = true;
while (pos != -1) {
var name = trimString(content.substr(pos).split("</a>")[0].split('>').pop());
var id = content.substr(pos).split(" href='/profil/id:")[1].split('/')[0];
pos = content.indexOf('<span style="color:#8888', pos);
var post = content.substr(pos).split(">")[1].split('<')[0];
var ppos = post.indexOf(":");
var datetime = post.substr(ppos-6,2) + post.substr(ppos-9,2) + post.substr(ppos-2,2) + post.substr(ppos+1,2);
var sb = id + "_" + datetime;
var pinThis = (sb == pinnedSB);
if (!pinThis && datetime < pinnedSB.split("_")[1] && lastSB.split("_")[1] >= pinnedSB.split("_")[1]) {
if (first) page--;
if (document.getElementsByName(lastSB).length > 0)
document.getElementsByName(lastSB)[0].src = getIconAddr(get_icon("pin2"));
pinThis = true;
}
if (pinThis && document.getElementById("gotoSB")) {
document.getElementById("gotoSB").addEventListener("click", function(event) {
if (oldVersion)
window.location.href = "/gang/" + page + "/";
PGu_setValue("pinnedSBGo", "1");
}, false);
if (document.getElementById("gotoSB3"))
document.getElementById("gotoSB3").href = "javascript:shoutbox_ajax.loadajaxpage('/gang/shoutbox_ajax/?page="+page+"')";
document.getElementById("gotoSB").width = "10";
document.getElementById("gotoSB").title = printf(getLangTxt(TxtNoteOnPage), page);
return;
}
lastSB = sb;
if (oldVersion)
pos = content.indexOf('</table', pos);
else {
pos = content.indexOf('</div', pos);
pos = content.indexOf('</div', pos+5);
}
pos = content.indexOf(" href='/profil", pos);
first = false;
}
processSBPages(page+1, pinnedSB, lastSB);
}
});
}
var trs = table.getElementsByTagName("tr");
var obj = document.getElementById("tabcontainer");
if (PG_getValue("SetSBwidth", 0) == 1 && obj != null)
obj.style.width = PG_getValue("MySBwidth", "800") + 'px';
if (oldVersion) {
for (var i = 0; i < trs.length; i++) {
obj = trs[i];
if (obj.innerHTML.indexOf('<span style="color: rgb(136') != -1 || obj.innerHTML.indexOf('<span style="color:#88') != -1)
break;
}
var pagetr = trs[i];
var pos = pagetr.innerHTML.indexOf('<a href="/gang/1/');
var insText = "";
var insText2 = " ";
} else {
var pagetr = trs[trs.length-2];
var pagetr = trs[trs.length-2].getElementsByClassName("pagebar")[0];
if (pagetr.innerHTML.indexOf("gotoSB3") > 0)
return;
var pos = pagetr.innerHTML.indexOf('<a href="javascript:shoutbox_ajax');
var insText = '<div id="gotoSB2" class="pagebutton"><a id="gotoSB3" rel="shoutboxtab" href="javascript:shoutbox_ajax.loadajaxpage(\'/gang/shoutbox_ajax/?page=1\')">';
var insText2 = "</div>";
}
if (pos > 0)
pagetr.innerHTML = pagetr.innerHTML.substr(0, pos) + insText +
'<img id="gotoSB" width="0" height="15" style="cursor:pointer" src="' + getIconAddr(get_icon("pin2")) + '"></img>' +
insText2 + pagetr.innerHTML.substr(pos);
if (obj.innerHTML.indexOf('<span style="color: rgb(136') != -1 || obj.innerHTML.indexOf('<span style="color:#88') != -1) {
var text = obj.innerHTML;
var pos = text.indexOf(' href="/profil');
var sbnr = 0;
var pinnedSB = PGu_getValue("pinnedSB", "");
var pinnedOnPage = false;
var lastSB = "";
var oldPos = -1;
var searchEnd = '</table';
if (document.getElementById("tabcontainer") != null)
searchEnd = '</div';
var first = true;
while (pos != -1) {
var name = trimString(text.substr(pos).split("</a>")[0].split('>').pop());
var id = text.substr(pos).split(' href="/profil/id:')[1].split('/')[0];
var pos2 = text.indexOf('<span style="color: rgb(136', pos);
if (pos2 < 0) {
pos2 = text.indexOf('<span style="color:#88', pos);
if (pos2 < 0)
break;
}
pos = pos2;
var post = text.substr(pos).split(">")[1].split('<')[0];
sbnr++;
var ppos = post.indexOf(":");
var datetime = post.substr(ppos-6,2) + post.substr(ppos-9,2) + post.substr(ppos-2,2) + post.substr(ppos+1,2);
var sb = id + "_" + datetime;
var pinThis = (sb == pinnedSB);
var oldLen = text.length;
if (pinThis)
pinnedOnPage = true;
else if (!pinnedOnPage && datetime < pinnedSB.split("_")[1] && lastSB.split("_")[1] >= pinnedSB.split("_")[1]) {
pinnedOnPage = true;
text = text.substr(0,oldPos) + text.substr(oldPos).replace(getIconAddr(get_icon("pin")), getIconAddr(get_icon("pin2")));
}
lastSB = sb;
oldPos = text.indexOf("<", pos+1);
text = text.substr(0,oldPos) + '<input type="hidden" id="' + sb + '" value=""><img id="pin' + sbnr + '" width="10" height="10" src="' + getIconAddr(pinThis&&first?get_icon("pin2"):get_icon("pin")) + '" style="cursor:pointer" name="' + sb +'"></img> ' + text.substr(oldPos);
if (pinThis)
first = false;
pos += text.length - oldLen;
pos = text.indexOf(searchEnd, pos);
if (!oldVersion)
pos = text.indexOf(searchEnd, pos+5);
pos = text.indexOf(' href="/profil', pos);
}
obj.innerHTML = text;
if (pinnedOnPage) {
if (PGu_getValue("pinnedSBGo", "0") == "1") {
PGu_setValue("pinnedSBGo", "0");
document.getElementById(pinnedSB).type="button";
document.getElementById(pinnedSB).focus();
document.getElementById(pinnedSB).type="hidden";
window.scrollBy(0,200);
}
} else if (pinnedSB != "") {
var gangPage = Number(IsGangPage());
if (gangPage == 1)
var page = 2;
else if (lastSB.split("_")[1] < pinnedSB.split("_")[1]) {
lastSB = "";
var page = 1;
}
else
var page = gangPage + 1;
processSBPages(page, pinnedSB, lastSB);
}
for (var j=1; true; j++) {
var img = document.getElementById("pin" + j);
if (img == null)
break;
img.addEventListener("click", function(event) {
if (this.src == getIconAddr(get_icon("pin"))) {
var pinnedSB = PGu_getValue("pinnedSB", "");
PGu_setValue("pinnedSB", this.name);
if (pinnedSB != "") {
if (document.getElementsByName(pinnedSB).length > 0)
document.getElementsByName(pinnedSB)[0].src = getIconAddr(get_icon("pin"));
var gotoSB = document.getElementById("gotoSB");
if (gotoSB)
gotoSB.parentNode.removeChild(gotoSB);
if (!oldVersion) {
var gotoSB2 = document.getElementById("gotoSB2");
if (gotoSB2)
gotoSB2.parentNode.removeChild(gotoSB2);
var gotoSB3 = document.getElementById("gotoSB3");
if (gotoSB3)
gotoSB3.parentNode.removeChild(gotoSB3);
}
}
this.src = getIconAddr(get_icon("pin2"));
} else {
this.src = getIconAddr(get_icon("pin"));
PGu_setValue("pinnedSB", "");
}
}, false);
}
}
}
if (t > 0)
window.setTimeout(makePinsTO, t);
if (Number(IsGangPage()) < 1)
return;
if (PG_getValue("SetSBwidth", 0) == 0)
var table = document.getElementById("content").getElementsByTagName("table")[0];
else
var table = document.getElementById("MotD");
var tdtest = document.getElementById("shoutboxtab");
var selectd = true;
if (tdtest.getElementsByTagName("li").length > 1)
selectd = tdtest.getElementsByTagName("a")[0].className == "selected";
if (selectd)
if ((table.innerHTML.indexOf('<span style="color:#88') != -1 || table.innerHTML.indexOf('<span style="color: rgb(136') != -1) && table.innerHTML.indexOf(getIconAddr(get_icon("pin"))) == -1 && table.innerHTML.indexOf(getIconAddr(get_icon("pin2"))) == -1) {
makePins(table);
}
}
if (PG_getValue("SetSBwidth", 0) == 1) {
var sbwidth = PG_getValue("MySBwidth", "800");
var table = document.getElementsByTagName("table")[0];
table.parentNode.insertBefore(table.cloneNode(false), table);
for (i = 0; i < table.getElementsByTagName("tr").length; i++) {
var tr = table.getElementsByTagName("tr")[0];
if (tr.innerHTML.indexOf("MotD") != -1)
break;
tr = tr.parentNode.removeChild(tr);
document.getElementsByTagName("table")[0].appendChild(tr);
}
table.style.width = sbwidth + 'px';
table.id = 'MotD';
for (i = 0; i < table.getElementsByTagName("div").length; i++) {
var width = parseInt(table.getElementsByTagName("div")[i].style.width);
if (width == 490 ||
table.getElementsByTagName("div")[i].id == "tabcontainer" ||
table.getElementsByTagName("div")[i].className == "pagebar" ||
table.getElementsByTagName("div")[i].id == "tabinputcontainer")
table.getElementsByTagName("div")[i].style.width = (width - 510 + sbwidth) + 'px';
}
}
else {
PG_setValue("SetSBwidth", 0);
if (PG_getValue("MySBwidth", 0) == 0)
PG_setValue("MySBwidth", 800);
}
var t = (oldVersion?0:2000);
makePinsTO();
}
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abfragen, ob es einen eingehenden KAMPF gibt
// **********************************************************************************
GM_xmlhttpRequest({method: 'GET', url: FIGHT_URL, onload: function(responseDetails) {
// ***********************************************************************************************
// ***********************************************************************************************
// Array nach Zeit sortieren
// ***********************************************************************************************
// ***********************************************************************************************
function sortByTime(a, b) {
// ***********************************************************************************************
// Funktion addiert auf Stunden des Folgetags 24 Stunden, damit die Sortierreihenfolge passt
// ***********************************************************************************************
function ReformatHours(nowtime, a) {
// Wenn die Jetztzeit kleiner (früher) ist als die übergebene Zeit ist
if (nowtime <= a) {
return a;
// sonst: Die Jetztzeit ist größer (später) als die übergebene Zeit --> Datumsgrenze
} else {
// 24 Stunden addieren, damit das Datum nach hinten sortiert wird (Folgetag)
return (Number(a.substr(0, 2)) + 24).toString() + a.substr(2, 6);
}
}
if (a.length == 0 || b.length == 0)
return (a.length != 0)?-1:(b.length != 0)?1:0;
var jetzt = new Date();
var nowtime = Right$(jetzt.toLocaleString(), 8);
var x = ReformatHours(nowtime, a[0]);
var y = ReformatHours(nowtime, b[0]);
return ((x < y) ? (-1) : ((x > y) ? 1 : 0));
}
var ckw = function() {
if (weaponatt > 1) {
weaponatt = 0;
PGu_setValue("weapon", weapondef);
GM_xmlhttpRequest({method: 'POST', url: WEAPONSTORE_URL + "buy/",
headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('id=1'),
onload: function(responseDetails) {
}});
}
else if (weaponatt = -1)
setTimeout(ckw, 1000);
}
var content = responseDetails.responseText;
getGangUpgr(function() {
// Wenn die Kampfseite abgerufen werden konnte (kein Seitenladefehler)
if (content.indexOf(KEYWORD_MYBUM[lang]) != -1) {
if (content.indexOf(TxtRunAttack[lang]) != -1) {
attname = trimString(content.split(TxtRunAttack[lang])[1].split('</a>')[0].split('>').pop());
attid = content.split(TxtRunAttack[lang])[1].split('profil/id:')[1].split('/')[0];
if (bl("fi"))
if (weaponatt > 1)
ckw();
else if (weaponatt == -1)
setTimeout(ckw, 5000);
// ***********************************************************************************************
// Abrufen des XML-Datensatzes für den angegriffenen User
// ***********************************************************************************************
GM_xmlhttpRequest({method: 'GET', url: API_URL + attid + ".xml", onload: function(responseDetails) {
// Wenn die Seite erfolgreich abgerufen werden konnte
if (responseDetails.status == 200) {
var parser = new DOMParser();
var dom = parser.parseFromString(responseDetails.responseText, "application/xml");
gangname = dom.getElementsByTagName('name')[1].textContent;
if (gangname.toLowerCase() != 'false') {
attname += "/" + dom.getElementsByTagName('name')[1].textContent;
var gangid = dom.getElementsByTagName('id')[1].textContent;
if (m_owngangid == gangid)
attwarn = 1;
else if (m_owngangid != 0)
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Bandenbündnisse laden
// **********************************************************************************
GM_xmlhttpRequest({method: 'GET', url: GANGPACT_URL, onload: function(responseDetails) {
var profcontent = responseDetails.responseText;
// Wenn die Kampfseite abgerufen werden konnte (kein Seitenladefehler)
if (profcontent.indexOf(KEYWORD_MYBUM[lang]) != -1) {
var allies = profcontent.split('#222222')[2];
var allypos = allies.indexOf('<td>'+gangname+'</td>');
if (allypos != -1) {
var divPos = allies.substr(allypos).indexOf('</div>');
if (allies.substr(allypos, divPos).indexOf("bstyle0") != -1)
attwarn = 2;
}
}
}});
}
}
}});
}
else {
weapon = PGu_getValue("weapon", 0) + "#";
weapon = weapon.split("#");
if (weapon[0] > 0) {
GM_xmlhttpRequest({method: 'POST', url: WEAPON_URL + "use/",
headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI('id='+weapon[0]),
onload: function(responseDetails) {
PGu_setValue("weapon", 0);
}});
}
}
// Überprüfe aktuelle Kampfwerte auf maximale Kampfstärke
CheckFightValues(content);
// Daten eingehender Kämpfe ermitteln
var IncomingFights = GetIncomingFights(content);
// Wenn es eingehende Kämpfe gibt
var NrOfFights = IncomingFights.length;
if (NrOfFights != 0) {
IncomingFights.sort(sortByTime);
var FightIcon = Math.min(NrOfFights, 6);
// Wenn mehr als ein Kampf eingeht
if (NrOfFights > 1) {
var FightTitle = printf(getLangTxt(TxtIncomingFights2), NrOfFights);
showMsg('Information', "Es laufen " + NrOfFights + " Angriffe auf Dich !! Der erste Angriff erfolgt von " + IncomingFights[0][1] + " um " + IncomingFights[0][0], 'fight_incoming');
// sonst: Es gibt nur einen eingehenden Kampf
} else {
var FightTitle = getLangTxt(TxtIncomingFights1);
showMsg('Information', "Du wirst um " + IncomingFights[0][0] + " von " + IncomingFights[0][1] + " angegriffen !!", 'fight_incoming');
}
FightTitle = '<tr><td style="font-size:12px"><b>' + FightTitle + "</b></td></tr>";
for (var i = 0; i < NrOfFights; i++) {
var splitted = IncomingFights[i];
var ausweich = printf(getLangTxt(TxtAusweichen), (splitted[2] == 'N'?getLangTxt(TxtAusweichN):splitted[2] == 'V'?getLangTxt(TxtAusweichV):''));
if (splitted[2][0] == "A")
ausweich += " (-" + splitted[2].split(':')[1] + ")";
FightTitle += '<tr><td>' + splitted[0] + " " + splitted[1] + '</td><td> </td><td>' + ausweich + '</td></tr>';
}
// Kampf-Icon anzeigen
ShowFightIcon(FightIcon, FightTitle);
}
else
ShowImg('FBBACK', '/fight/', get_icon("fight")[0], '', '', '', 0, 14, 1, 'fight');
// sonst: Die Kampfseite konnte nicht abgerufen werden
} else {
// Fehler in Wut-Anzeige darstellen
ShowWutIcon(WUTSTATE_ERROR);
// Fehler in Power-Anzeige darstellen
ShowFightStateIcon(FIGHTSTATE_ERROR, 0, 0);
noUpdate = true;
}
});
}
});
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Abfragen, ob es einen BANDENKAMPF gibt
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: GANGFIGHT_URL, onload:function(responseDetails) {
var content = responseDetails.responseText;
// Anzahl Bandenkämpfe ermitteln
var NrOfGangFights = GetNumberOfGangFights(content);
// Wenn es laufende Bandenkämpfe gibt
if(NrOfGangFights > 0) {
// Bandenkampfinfo abfragen
var GangFightInfo = GetGangFightInfo(content);
// Wenn es mehr als einen Bandenkampf gibt
if (NrOfGangFights > 1) {
var GangFightTitle = printf(getLangTxt(TxtGangFight2), NrOfGangFights, GangFightInfo);
// sonst: Es gibt nur einen eingehenden Kampf
} else {
var GangFightTitle = printf(getLangTxt(TxtGangFight1), GangFightInfo);
}
// Wenn es weniger als 6 Bandenkämpfe gibt
if (NrOfGangFights < 6) {
var GangFightIcon = NrOfGangFights;
// sonst: Es gibt 6 oder mehr Bandenkämpfe
} else {
var GangFightIcon = 6;
}
// Bandenkampf-Icon anzeigen
ShowGangFightIcon(GangFightIcon, GangFightTitle);
// Wenn die aktuelle Seite die Bandenkampfseite ist
if (IsFightOverviewPage()) {
// Setze den Neuigkeitenanzeiger zurück
ResetNewsFromGangFight(GangFightInfo);
// sonst: Die aktuelle ist nicht die Bandenkampfseite
} else {
// Überprüfe, ob sich bei den Bandenkämpfen Neuigkeiten ergeben haben
CheckNewsFromGangFight(GangFightInfo);
}
// Wenn es Neuigkeiten beim Bandenkampf gibt
if (PGu_getValue("GangFightInfoFlag", true)) {
ShowNewIcon();
}
}
else
ShowImg('GFBACK', '/gang/fight/', get_icon("gangfight")[0], '', '', '', 0, 14, 1, 'gangfight');
}
});
});
// **********************************************************************************
// Wenn die aktuelle Seite die Haustierseite ist
// **********************************************************************************
if (location.toString().substr(-5) == "/pet/" || location.toString().indexOf("/pet/?") != -1) {
function calcMin(level, ist, boost, boost2) {
var zeit = Math.floor((level*(300+level*20) - ist - 1) / ((level + 4) * 3 * ((boost + boost2)/100 + 1.2))) + 1;
return (zeit<0?0:zeit) + " Minute" + (zeit != 1?"n":"");
}
function calcTime(level, ist, istB, boost, boost2) {
var zeit = calcMin(level, ist, 0, boost2);
if (boost == 0)
return zeit;
return zeit + " (mit Boost " + calcMin(level, istB, boost, boost2) + ")";
}
function calcMin2(level, ist, boost, boost2, maxdauer) {
var rest = (level-1)*(300+(level-1)*20) - ist;
var zeit = calcMin(level, (rest>0?0:-rest), boost, boost2);
if (rest < 0)
return zeit;
var routen = document.getElementsByName("route_length");
if (routen.length > 0) {
routen = routen[0].innerHTML.split('value="');
var zeiten = new Array();
for (var k = 1; k < routen.length; k++)
zeiten[k-1] = Number(routen[k].split('"')[0]);
}
else
var zeiten = new Array(10, 30, 60, 90, 120, 180);
for (var k = 0; k < zeiten.length; k++) {
if (maxdauer < zeiten[k])
break;
var pkt = ((level + 3) * 3 * ((boost + boost2)/100 + 1.2)) * zeiten[k];
if (pkt <= rest)
continue;
var minuten = calcMin(level, pkt - rest, boost, boost2);
zeit += "; bei " + zeiten[k] + " Minuten: " + minuten;
if (minuten.substr(0, 1) == "0")
break;
}
return zeit;
}
function calcTime2(level, ist, istB, boost, boost2, maxdauer) {
var zeit = calcMin2(level, ist, 0, boost2, maxdauer);
if (boost == 0)
return zeit;
return zeit + " (mit Boost " + calcMin2(level, istB, boost, boost2, maxdauer) + ")";
}
function timeTitles(doc) {
var petafs = doc.getElementsByClassName("pet_action_finished_shell");
if (petafs.length > 0) {
var hs = petafs[0].getElementsByClassName("hs_shell");
var trs = hs[0].getElementsByTagName("tr");
var xp1 = Number(trs[1].getElementsByTagName("td")[0].innerHTML.split(" ").pop());
var xp2 = Number(trs[3].getElementsByTagName("td")[0].innerHTML.split(" ").pop());
var tds = hs[0].getElementsByTagName("td");
for (var k = 0; k < tds.length; k++)
if (tds[k].id && tds[k].id == "roam_value_xp") {
var xpg = Number(tds[k].innerHTML.split(" ").pop());
break;
}
}
var petas = document.getElementsByClassName("petactionshell");
for (j = 0; j < petas.length; j++) {
var div = petas[j].getElementsByClassName("petbar");
var level = Number(div[0].getElementsByTagName("div")[0].innerHTML);
if (level >= 50)
continue;
var bdiv = petas[j].parentNode.getElementsByClassName("plunder_boost");
var erfboost = 0;
if (bdiv.length > 0) {
var erf = bdiv[0].getElementsByTagName("div")[0].innerHTML.split("<br>")[0];
if (erf.indexOf("Erfahrung") != -1)
erfboost = parseInt(trimString(erf.split("%")[0]));
}
var ediv = petas[j].parentNode.getElementsByClassName("plunder_equipped");
var erfboost2 = 0;
if (ediv.length > 0) {
var erf = ediv[0].innerHTML.match(/<li .*>.*Erfahrung *<\/li>/);
if (erf)
erfboost2 = parseInt(erf[0].split("%")[0].split(">")[1].replace(/ /g, ""));
}
var bar = div[0].innerHTML;
var mouseover = bar.split("mouseover")[1].split("this.innerHTML='")[1];
var expTxt = mouseover.split("'")[0];
var expist1 = Number(expTxt.split(" ")[0]);
var expist2 = expist1;
var fertig = false;
if (div[3].innerHTML.indexOf(">Fertig<") != -1) {
expist1 += xp1 + xp2;
expist2 += xpg;
fertig = true;
}
bar = div[1].getElementsByTagName("div")[0].innerHTML;
var maxdauer = Number(bar.split("/")[1]);
if (level < 49)
var zeit2txt = "; nächstes Level: " + calcTime2(level + 1, expist1, expist2, erfboost, erfboost2, maxdauer);
else
var zeit2txt = "";
div[0].innerHTML = div[0].innerHTML.replace(expTxt, expTxt + "'; this.title='" + (fertig?"Dein Haustier ist zurück: ":"")+"dieses Level noch " + calcTime(level, expist1, expist2, erfboost, erfboost2) + zeit2txt);
}
}
function sortValues (elements, q) {
var last = elements.length - 1;
if (elements[last].className.indexOf("slot_disabled") != -1)
last--;
for (var i = 0; i < last; i++) {
var k = (q == -1 ? last : i);
if (k < last)
var stamina = Number(elements[i].getElementsByClassName("statcontainer")[q].innerText);
for (var j = k+1; j <= last; j++) {
var stam = Number(elements[j].getElementsByClassName("statcontainer")[q].innerText);
if (stam > stamina) {
k = j;
stamina = stam;
}
}
if (k != i) {
var nextSibling = elements[i].parentNode.removeChild(elements[k]);
elements[i].parentNode.insertBefore(nextSibling, elements[i]);
}
}
}
var sortind = [];
function ModifySortBox(box) {
var sortBox = document.getElementsByName("sorting");
if (sortBox.length == 0) {
window.setTimeout(ModifySortBox, 1000, 0);
return;
}
if (sortBox.length == 1)
document.getElementById("meadow_click").addEventListener('click', function(event) {
window.setTimeout(ModifySortBox, 500, 1);
return;
}, false);
var quals = ["Ausdauer", "Kampfkraft", "Spürnase", "Wachsamkeit", "umgekehrt"];
if (sortBox[box].innerHTML.indexOf(quals[quals.length-1]) != -1)
return;
var option = "<option" + sortBox[box].innerHTML.split("<option").pop();
for (var i = 0; i < quals.length; i++)
sortBox[box].innerHTML = sortBox[box].innerHTML + option.replace(/>.*</, ">" + quals[i] +"<");
sortind[box] = sortBox[box].selectedIndex;
sortBox[box].addEventListener("change", function(event) {
var i = quals.indexOf(this.value);
if (i >= 0) {
sortValues(document.getElementsByClassName("inactive_shell")[box].getElementsByClassName('petshell'), (i == quals.length-1?-1:i));
}
if (i == quals.length - 1)
this.selectedIndex = sortind[box];
else
sortind[box] = this.selectedIndex;
}, false);
}
var kader = document.getElementById("pet_kader");
if (kader) {
if (document.getElementsByClassName("pet_action_finished_shell").length > 0)
timeTitles(document);
else {
GM_xmlhttpRequest({method:"GET", url: PET_URL + "tab/action/", onload:function(responseDetails) {
var content = responseDetails.responseText;
var doc = HTML2DOM(content);
timeTitles(doc);
}});
}
}
window.setTimeout(ModifySortBox, 1000, 0);
document.getElementById("plundertab").getElementsByTagName("a")[1].addEventListener('click', function(event) {
window.setTimeout(ModifySortBox, 500, 0);
return;
}, false);
}
// **********************************************************************************
// Wenn die aktuelle Seite die Plunderseite ist
// **********************************************************************************
if (IsPlunderPage() && document.getElementsByClassName("grunge zleft").length > 0) {
var fnPlunderChB = function () {
function insPlunderChb (plundertrs) {
var selectedTab = -1;
if (!oldVersion) {
var plundertab = document.getElementById("plundertab").getElementsByTagName("li");
for (var ii = 0; ii < plundertab.length; ii++)
if (plundertab[ii].getElementsByClassName("selected").length > 0) {
selectedTab = ii;
break;
}
}
else {
// "Verkaufen"-Spalte schmaler machen
GM_addStyle('#content .grunge #plunder table th.col4 div { width: 70px; }');
GM_addStyle('#content .grunge #plunder table th.col4 { width: 70px; }');
}
// Icon zum Leeren des Plunder-Direktzugriffs hinzufügen
AddResetIcon(plundertable);
if (selectedTab == 5)
return;
// Für alle Zeilen mit Plunderstücken
for (var i = oldVersion; i < plundertrs.length; i++) {
// **********************************************************************************
// Funktion fügt Ausführungscode zur aktuellen Checkbox hinzu
// **********************************************************************************
function PrepareCheckbox(i, usemode, plunderinfo) {
// Checkbox checken/unchecken in Abhängigkeit davon, ob das Plunderstück in der Direktzugriffsliste ist
document.getElementById("Checkbox" + usemode + "_" + i).checked = (IsPlunderInList(plunderinfo + "*" + usemode) > 0);
document.getElementById("Checkbox" + usemode + "_" + i).title = usemode=="A"?getLangTxt(TxtEquip):getLangTxt(TxtUse);
// Eventhandler hinzufügen für Click-Ereignis
document.getElementById("Checkbox" + usemode + "_" + i).addEventListener("click", function(event)
{
// Wenn die Checkbox gecheckt ist
if (this.checked) {
// Wenn noch nicht mehr als 9 Plunder in der Direktzugriffsliste stehen
// Plunderstück in die Direktzugriffsliste hinzufügen
AddPlunderToList(this.getAttribute("name").split("*")[0] + "*" + this.getAttribute("name").split("*")[1] + "*" + usemode);
// sonst: Die Checkbox ist nicht gecheckt
} else {
// Plunderstück aus der Direktzugriffsliste entfernen
RemovePlunderFromList(this.getAttribute("name").split("*")[0] + "*" + this.getAttribute("name").split("*")[1] + "*" + usemode);
}
// Eventuell bereits schon angezeigten Direktplunder entfernen
HideAllPlunder();
// Aktuellen Direktplunder anzeigen
ShowAllPlunder(document.getElementsByTagName("html")[0].innerHTML, GetNrOfPlunderInList(), -1, 0);
}, false);
}
function insElem(newtd, box, plundertrs, i, usemode, plunderinfo, td) {
if (box) {
// Checkbox zusammenstellen
newtd.innerHTML = "<form name='PlunderCheckbox' action=''>" +
"<input name='" + plunderinfo + "*"+usemode+"' id='Checkbox"+usemode+"_"+i + "' type='checkbox'></form>";
// Zelle anhängen
plundertrs[i].insertBefore(newtd, oldVersion?td:td.nextSibling);
PrepareCheckbox(i, usemode, plunderinfo);
// sonst: Das Plunderstück kann nicht angelegt/benutzt werden
} else {
// Leere Zelle
newtd.innerHTML = " ";
// Zelle anhängen
plundertrs[i].insertBefore(newtd, oldVersion?td:td.nextSibling);
}
}
// Spalte mit benutzbarem Plunder speichern
var benutztd = plundertrs[i].getElementsByTagName("td")[oldVersion?4:5];
if (oldVersion)
benutztd.setAttribute('style', 'padding-left: 3px; padding-right: 7px; padding-top: 11px');
else
benutztd.setAttribute('style', 'padding-left: 5px; padding-right: 4px');
// Spalte mit anlegbarem Plunder speichern
var anlegtd = plundertrs[i].getElementsByTagName("td")[5];
if (oldVersion)
anlegtd.setAttribute('style', 'padding-left: 5px; padding-right: 4px; padding-top: 11px');
else
anlegtd.setAttribute('style', 'padding-left: 5px; padding-right: 4px');
// Zwei neue Spalten anlegen und formatieren
var newtd1 = document.createElement("td");
if (oldVersion)
newtd1.setAttribute('style', 'padding-left: 0px; padding-right: 4px; padding-top: 13px; width: 10px;');
else
newtd1.setAttribute('style', 'padding-left: 0px; padding-right: 11px; padding-top: 13px; width: 10px;');
var newtd2 = document.createElement("td");
newtd2.setAttribute('style', 'padding-left: 0px; padding-right: 11px; padding-top: 13px; width: 10px;');
// Plunderinfo zusammenstellen aus Dateiname des Icons und Plundername, separiert durch "*"
var plunderinfo = GetPlunderPic(plundertrs[i]) + "*" + GetPlunderName(plundertrs[i]);
// **********************************************************************************
// Wenn das Plunderstück benutzbar ist
// **********************************************************************************
var benutzbar = (selectedTab == (nrOfTabs>=6?3:2)) || (oldVersion && benutztd.getElementsByTagName("a").length > 0);
if (!benutzbar && nrOfTabs < 6) {
var td = benutztd.getElementsByTagName("ul");
for (var ii = 0; ii < td.length; ii++) {
if ((td[ii].innerHTML.indexOf('execboost') != -1 || td[ii].innerHTML.indexOf('choose_target') != -1) && td[ii].innerHTML.indexOf("use_stuff(") != -1) {
benutzbar = true;
break;
}
}
}
insElem(newtd1, benutzbar, plundertrs, i, "B", plunderinfo, anlegtd);
// **********************************************************************************
// Wenn das Plunderstück anlegbar ist
// **********************************************************************************
var anlegbar = (nrOfTabs>=6?(selectedTab >= 0 && selectedTab != 3):false) || (oldVersion && anlegtd.getElementsByTagName("a").length > 0);
if (!anlegbar && nrOfTabs < 6) {
var td = anlegtd.getElementsByTagName("ul");
for (var ii = 0; ii < td.length; ii++)
if (td[ii].innerHTML.indexOf('change_stuff') != -1) {
anlegbar = true;
break;
}
}
insElem(newtd2, anlegbar, plundertrs, i, "A", plunderinfo, anlegtd);
}
}
// Referenz auf Plundertabelle speichern
var plundertable = document.getElementById("plunderlist").getElementsByTagName("table");
if (plundertable.length > 0) {
plundertable = plundertable[0];
// Referenz auf Zeilen der Plundertabelle speichern
var plundertrs = plundertable.getElementsByTagName("tr");
if (plundertrs.length > 0)
insPlunderChb(plundertrs);
}
if (!oldVersion) {
var PlunderChbTO = function() {
var plundertable = document.getElementById("plunderlist").getElementsByTagName("table");
if (plundertable.length > 0) {
plundertable = plundertable[0];
// Referenz auf Zeilen der Plundertabelle speichern
var plundertrs = plundertable.getElementsByTagName("tr");
if (plundertrs.length > 0 && document.getElementsByName("PlunderCheckbox").length == 0)
insPlunderChb(plundertrs);
}
window.setTimeout(PlunderChbTO, 2000);
}
window.setTimeout(PlunderChbTO, 2000);
}
}
fnPlunderChB();
}
// **********************************************************************************
// Wenn die aktuelle Seite die Bastelseite ist
// **********************************************************************************
if (IsCraftPage()) {
var tables = document.getElementsByTagName("table");
// **********************************************************************************
// *** GM_XMLHTTPREQUEST *** Plunderseite abfragen
// **********************************************************************************
GM_xmlhttpRequest({method:"GET", url: PLUNDER_URL, onload:function(responseDetails) {
var content = responseDetails.responseText;
var aktPlunder = trimString(PGu_getValue("LastPlunderName", ""));
for (var i = 0; i < tables.length; i++) {
var tname = tables[i].id;
if (tname.substr(0,12) != "messageslist")
continue;
tabnr = tname.substr(12);
if (tabnr < 3)
continue;
var td = tables[i].getElementsByTagName("tr")[1].getElementsByTagName("td")[2];
var prefix = td.innerHTML.split(">")[0] + ">";
var text = td.innerHTML.substr(prefix.length).split("</p>")[0];
var text2 = text;
var plunderlist = text.split("<br>");
for (j = 0; j < plunderlist.length; j++) {
var plunder = plunderlist[j];
var p = plunder.indexOf("x ");
var pname = trimString(plunder.substr(p+2));
var pInd = content.search('"> *' + pname + ' *<');
var pAnz = 0;
if (pInd != -1)
pAnz = content.substr(pInd).split('"col3">')[1].split(" ")[0];
if (aktPlunder == pname)
pAnz++;
text2 = text2.replace(pname, pname + " (" + pAnz + ")");
}
td.innerHTML = td.innerHTML.replace(text, text2);
}
}});
}
// **********************************************************************************
// Wenn die aktuelle Seite die Loseseite ist
// **********************************************************************************
if (IsGamePage()) {
function Losekaufen(menge, maxMenge, gewinne)
{
if (menge <= 0) {
document.getElementsByName('submitForm')[0].disabled = false;
var Stat = "";
var gesamt = 0;
var einsatz = 0;
var price = Number(document.getElementById("preis_cent1").value)/100;
var aktcurr = " " + (currency1 != ""?currency1:currency);
for (i = 0; i < gewinne.length; i++) {
var win = gewinne[i][0];
if (isNaN(win)) {
if (win == "auszeichnung")
win = getLangTxt(TxtAuszeichnung);
}
else if (win == 0)
win = getLangTxt(TxtNiete);
else {
gesamt += win * gewinne[i][1];
win += aktcurr;
}
Stat += gewinne[i][1] + " x " + win + ", ";
einsatz += gewinne[i][1] * price;
}
alert(Stat + printf(getLangTxt(TxtTotalWon), gesamt, einsatz, gesamt - einsatz));
//alert(PGu_getValue("winnings", ""));
refreshPage();
return;
}
document.getElementById('NochLose').innerHTML = printf(getLangTxt(TxtBuyTickets), menge);
var bmenge = menge;
if (bmenge > maxMenge)
bmenge = maxMenge;
document.getElementById('menge1').value = bmenge;
unsafeWindow.generatePreis(1,10);
var data = "";
var input = document.getElementById('content').getElementsByClassName('listshop')[0].getElementsByTagName('td')[4].getElementsByTagName("input");
for (i = 0; i < input.length; i++)
if (input[i].name != "max")
data += input[i].name + "=" + (input[i].name == "menge"?bmenge:input[i].value) + "&";
GM_xmlhttpRequest({method: 'POST',
url: window.location.protocol + '//' + window.location.hostname + '/city/games/buy/',
headers: {'Content-type': 'application/x-www-form-urlencoded'},
data: encodeURI(data.substr(0,data.length-1)),
onload: function(responseDetails) {
var content = responseDetails.responseText;
var money = document.getElementsByClassName("icon money");
if (content.indexOf("new_cash") != -1) {
var money2 = money_format(Number(content.split('"new_cash":')[1].split(",")[0].trim())/100, "");
var spl = money[0].innerHTML.split("</a>")[0].split(">");
money[0].innerHTML = spl[0]+">"+money2+"</a>";
menge = menge - bmenge;
var gew = content.split('"winnings":')[1].split(",")[0].trim();
//PGu_setValue("winnings", PGu_getValue("winnings", "") + content);
if (!isNaN(gew) && gew != "0")
gew = gew.substr(0, gew.length-2);
for (j = 0; j < gewinne.length; j++)
if (!isNaN(gew) && gewinne[j][0] > gew) {
gewinne.splice(j, 0, new Array(gew, 1));
break;
}
else if (gewinne[j][0] == gew) {
gewinne[j][1]++;
break;
}
if (j == gewinne.length)
gewinne[j] = new Array(gew, 1);
}
else {
var spl = content.split('icon money">');
if (spl.length > 1) {
money2 = spl[1].split("</a>")[0].split(">");
money[0].innerHTML = money2[0]+">"+money2[1]+"</a>";
menge = menge - bmenge;
}
spl = content.split('swf?gewinn=');
for (i = 1; i < spl.length; i++) {
if (i % 2 == 0)
continue;
var gew = spl[i].split("&")[0];
if (!isNaN(gew))
gew = Number(gew);
for (j = 0; j < gewinne.length; j++)
if (!isNaN(gew) && gewinne[j][0] > gew) {
gewinne.splice(j, 0, new Array(gew, 1));
break;
}
else if (gewinne[j][0] == gew) {
gewinne[j][1]++;
break;
}
if (j == gewinne.length)
gewinne[j] = new Array(gew, 1);
}
}
Losekaufen(menge, maxMenge, gewinne);
}
});
}
function getAnzLose() {
var tds = document.getElementsByTagName('table')[0].getElementsByTagName('tr')[1].getElementsByTagName('td');
var pos = tds[0].innerHTML.indexOf('id="lose_remaining"');
if (pos >= 0)
return Number(tds[0].innerHTML.substr(pos).split("<")[0].split(">")[1].trim());
var texts = tds[0].innerHTML.split(' ');
var NochLose = -1;
for (i = texts.length-1; i > 0; i--)
if (texts[i] != "" && !isNaN(texts[i])) {
NochLose = Number(texts[i]);
break;
}
return NochLose;
}
var tdlose = document.getElementById('content').getElementsByClassName('listshop')[0].getElementsByTagName('td');
tdlose[3].id = "NochLose";
var NochLose = getAnzLose();
if (NochLose < 0)
NochLose = 500;
if (NochLose != 0) {
var input = document.createElement('input');
input.type = 'button';
input.value = getLangTxt(Txtmax);
input.id = 'max';
input.name = 'max';
tdlose[4].appendChild(input, tdlose[4].firstChild);
document.getElementById('submitForm1').disabled = (NochLose == 0);
document.getElementsByName('menge')[0].parentNode.innerHTML = document.getElementsByName('menge')[0].parentNode.innerHTML.replace("1,1","1,10");
document.getElementsByName('menge')[0].addEventListener('keyup', function onkeyup() {
var testmenge = document.getElementsByName('menge')[0].value;
var NochLose = getAnzLose();
if (NochLose != -1 && Number(testmenge) > NochLose) {
document.getElementById('menge1').value = NochLose;
if (NochLose > 0) {
unsafeWindow.generatePreis(1,10);
}
};
},false);
document.getElementsByName('max')[0].addEventListener('click', function start() {
var NochLose = getAnzLose();
if (NochLose < 0)
NochLose = 500;
document.getElementById('menge1').value = NochLose;
if (NochLose > 0) {
unsafeWindow.generatePreis(1,10);
}
else
document.getElementById('submitForm1').disabled = true;
},false);
}
if (NochLose != 0) {
document.getElementById('submitForm1').onclick = function(event) {
var menge = Number(document.getElementById('menge1').value);
document.getElementsByName('submitForm')[0].disabled = true;
Losekaufen(menge, 1, new Array());
return false;
}
}
}
// **********************************************************************************
// Wenn die aktuelle Seite die V-Waffenseite ist
// **********************************************************************************
if (IsDefWeaponPage()) {
var tdkopf = document.getElementById('content').getElementsByClassName('listshop')[0].getElementsByTagName('td');
tdkopf[0].innerHTML += "<br>";
var newspan = document.createElement('span');
newspan.innerHTML = "<span> "+getLangTxt(TxtBuyLastDefWpn)+"</span>";
var input = document.createElement('input');
input.type = 'checkbox';
input.checked = PGu_getValue("rebuyLastDefWpn", false);
input.id = 'rebuy';
input.name = 'rebuy';
newspan.insertBefore(input, newspan.firstChild);
tdkopf[0].appendChild(newspan);
var newtd = document.createElement('td');
newtd.innerHTML = "<td> "+getLangTxt(TxtRmdDefWpn)+": </td>";
var input = document.createElement('input');
input.type = 'checkbox';
input.id = 'remind';
input.name = 'remind';
newtd.insertBefore(input, newtd.firstChild);
input = document.createElement('input');
input.type = 'text';
input.size = 3;
input.id = 'remindcnt';
input.name = 'remindcnt';
newtd.appendChild(input);
newtd.innerHTML += " ";
input = document.createElement('input');
input.type = 'checkbox';
input.id = 'woconf';
input.name = 'woconf';
newtd.appendChild(input);
newtd.innerHTML += " " + getLangTxt(TxtNoConfirm);
tdkopf[0].appendChild(newtd);
document.getElementById("remind").checked = PGu_getValue("remindDefWpn", false);
document.getElementById("remindcnt").value = PGu_getValue("remindDefWpnMax", 3);
document.getElementById("woconf").checked = PGu_getValue("woConfDefWpn", false);
document.getElementById('rebuy').addEventListener('click', function onClick() {
var checkVal = document.getElementById('rebuy').checked;
PGu_setValue("rebuyLastDefWpn", checkVal);
PGu_setValue("remindDefWpnCnt", 0);
},false);
document.getElementById('remind').addEventListener('click', function onClick() {
var checkVal = document.getElementById('remind').checked;
PGu_setValue("remindDefWpn", checkVal);
if (checkVal) {
var cnt = document.getElementById('remindcnt').value;
PGu_setValue("remindDefWpnMax", cnt);
PGu_setValue("remindDefWpnCnt", 0);
}
},false);
document.getElementById('remindcnt').addEventListener('change', function onChange() {
var cnt = document.getElementById('remindcnt').value;
PGu_setValue("remindDefWpnMax", cnt);
},false);
document.getElementById('woconf').addEventListener('click', function onClick() {
var checkVal = document.getElementById('woconf').checked;
PGu_setValue("woConfDefWpn", checkVal);
},false);
}
// **********************************************************************************
// Wenn die aktuelle Seite die Nachrichtenseite ist
// **********************************************************************************
if (IsMessagesPage() && lang == 0) {
var tdkopf = document.getElementById('messageslist').getElementsByTagName("tr");
var newtr = document.createElement('tr');
var newtd = document.createElement('td');
newtd.innerHTML = '<td> '+getLangTxt(TxtDeactKKMsg)+'</td>';
var input = document.createElement('input');
input.type = 'checkbox';
input.id = 'deactKK';
input.name = 'deactKK';
newtd.setAttribute('colspan', 3);
newtd.insertBefore(input, newtd.firstChild);
newtr.appendChild(newtd);
tdkopf[0].parentNode.insertBefore(newtr, tdkopf[0]);
document.getElementById("deactKK").checked = PGu_getValue("deactKKMsgs", false);
document.getElementById('deactKK').addEventListener('click', function onClick() {
var checkVal = document.getElementById('deactKK').checked;
PGu_setValue("deactKKMsgs", checkVal);
},false);
var input2 = document.createElement('input');
input2.type = 'button';
input2.id = 'setmsgread';
input2.name = 'setmsgread';
input2.value = "Ausgewählte Nachrichten als gelesen markieren";
var form = document.getElementById("delete_all");
form.appendChild(input2);
document.getElementById('setmsgread').addEventListener('click', function onClick() {
var table = document.getElementById("messageslist");
var delmsg = document.getElementsByName("del_msg");
var trs = table.getElementsByClassName("msglist");
for (var i = 0; i < trs.length; i++)
if (delmsg[i].checked) {
GM_xmlhttpRequest({method: 'GET', url: trs[i].getElementsByTagName("a")[0].href, onload: function(responseDetails) { }});
delmsg[i].checked = false ;
}
window.setTimeout("document.location.reload()", 2000);
},false);
}
// **********************************************************************************
// Kronkorken-Nachrichten deaktivieren und entfernen
// **********************************************************************************
if (PGu_getValue("deactKKMsgs", false)) {
function deactAndRemove(content) {
var pos = content.search(/\d+\sKronkorken/);
if (pos == -1)
return;
pos = content.substr(pos-200).indexOf('<a href=') + pos - 200;
var href = content.substr(pos).split('"')[1];
GM_xmlhttpRequest({method: 'GET', url: TOWNBASE_URL + href + "?mail_block=true", onload: function(responseDetails) {
GM_xmlhttpRequest({method: 'GET', url: TOWNBASE_URL + href.replace('read', 'delete'), onload: function(responseDetails) {
}});
}});
}
if (IsMessagesPage()) {
deactAndRemove(document.getElementById("messageslist").innerHTML);
}
else {
GM_xmlhttpRequest({method: 'GET', url: MESSAGE_URL, onload: function(responseDetails) {
deactAndRemove(responseDetails.responseText);
}});
}
}
}
// ********************************************************************************************************************
// ********************************************************************************************************************
// ********************************************************************************************************************
// START PROGRAMM * START PROGRAMM * START PROGRAMM * START PROGRAMM * START PROGRAMM *START PROGRAMM *START PROGRAMM *
// ********************************************************************************************************************
// ********************************************************************************************************************
// ********************************************************************************************************************
var waitAndStart = function(first) {
if (first) {
if (allIcons == "") {
setTimeout(waitAndStart, 500, true);
return;
}
imgPrefix = imgPrefix.split("§");
for (var k = 0; k < imgPrefix.length; k++)
imgPrefix[k] += TOWNEXTENSION + "/";
var imgPrefixSub = imagehoster.split("§");
imagehoster = imagehoster[0];
for (var k = 1; k < imgPrefixSub.length; k++)
if (imgPrefixSub[k].indexOf(TOWNEXTENSION + ":") != -1) {
var prefs = imgPrefixSub[k].split(":").pop();
for (var j = 0; j < prefs.length; j++)
imgPrefix[prefs[j]] += TOWNEXTENSION + "/";
}
iconNames = iconNames.split("§");
allIcons = allIcons.split("§");
for (var i = 0; i < allIcons.length; i++)
if (allIcons[i].indexOf("/") != -1)
allIcons[i] = allIcons[i].split("/");
getPlunderPage();
getGangUpgr();
}
if (wrap == null) {
wrap = document.getElementById("wrap");
if (wrap == null) {
setTimeout(waitAndStart, 500, false);
return;
}
}
ByeByeGoogle();
if (!bl())
doTheAction();
}
imagehoster = GM_getValue("imagehoster", "")+"";
imgPrefix = GM_getValue("imgPrefix", "");
iconNames = GM_getValue("iconNames", "");
allIcons = GM_getValue("allIcons", "");
if (imagehoster == "" || imgPrefix == "" || iconNames == "" || allIcons == "")
iconVers = "";
else
iconVers = GM_getValue("iconVers", "");
// ***********************************************************************************************
// Auf eine neue Version des Skriptes prüfen
// ***********************************************************************************************
CheckForUpdate(GM_getValue("GetUpdate", 0));
// ***********************************************************************************************
// Auf neue Infos prüfen
// ***********************************************************************************************
CheckForInfos(GM_getValue(TOWNEXTENSION+"GetInfo", 0));
var mobBut = document.getElementById("mobile_button");
if (mobBut)
if (mobBut.innerHTML == "Logout") {
var node = mobBut.cloneNode();
mobBut.parentNode.appendChild(node);
mobBut.innerHTML = "Mobile Version einschalten";
mobBut.href = '?enable_mobile=true';
}
if (document.getElementsByClassName('zleft profile-data')[0].innerHTML.indexOf('Sittingmodus') == -1)
waitAndStart(true);