sageos Direktlinks Pennergame 4 HH, B + M

By sageo Last update Mar 19, 2010 — Installed 10,620 times.

There are 7 previous versions of this script.

// ==UserScript==
// @name         Direktlinks
// @namespace    http://www.pennergame.de
// @author       sageo[http://berlin.pennergame.de/profil/id:1146285/]
// @description  Fügt häufig gebrauchte Links als Buttons im Menü "Mein Penner" sowie Direktlinks auf wichtige Plunder im Plundermenü hinzu (HH, B und M)
// @include      http://*.pennergame.de/overview/
// @include      http://*.pennergame.de/skills/*
// @include      http://*.pennergame.de/activities/*
// @include      http://*.pennergame.de/stock/*
// @include      http://*.pennergame.de/profil/id:*
// @include      http://*.pennergame.de/settings/*
// @include      http://*.pennergame.de/awards/
// @include      http://*.pennergame.de/financial/
// @include      http://*.pennergame.de/change_please/statistics/
// @include      http://*.pennergame.de/fight/pet/*
// @include      http://*.pennergame.de/fight/*
// @exclude      http://*.pennergame.de/fight/viewfight/*
// @version      1.0.6 Anpassung für Pennergame München
// @version      1.0.5 Anpassung nach Änderung des Seitenaufbaus von Farbflut; + Dr. Penner
// @version      1.0.4 Rote Schleife, iWin blendet andere Kampfplunder aus, besserer Update-Mechanismus
// @version      1.0.3 Neuer Plunder
// ==/UserScript==

var THISSCRIPTVERSION = "1.0.6";
var THISSCRIPTNAME = "Direktlinks";
var THISSCRIPTINSTALL_URL = 'http://userscripts.org/scripts/show/62920';          // URL für Hauptseite bei userscripts.org
var THISSCRIPTSOURCE_URL = 'http://userscripts.org/scripts/source/62920.user.js'; // Skript-URL bei userscripts.org

// URL für Anwenden des Plunders
var PLUNDER_URL1 = "javascript:void(0)\" onclick=\"change_stuff('";
var PLUNDER_URL2 = "')";
// Basis-URL für Icon-Grafiken
var ICON_URL = "<img src=\"http://static.pennergame.de/img/pv4/plunder/";

// Plunder-Icons
var ICON_FEINERANZUG = "feineranzug.gif";
var ICON_RAMPONIERTERANZUG = "ranzug.gif";
var ICON_GOLDENESBIER = "goldenes_bier.gif";
var ICON_NIKOLAUSPLUNDER = "nikolaus.png";
var ICON_KAPUTTEBRILLE = "kaputte_brille.gif";
var ICON_ZAUBERSTAB = "zauberstab.gif";
var ICON_LEXIKON = "lexikon.png";
var ICON_REGENMANTEL = "regenmantel.png";
var ICON_TAGESKARTE = "fahrkarte.png";
var ICON_SKATEBOARD = "skateboard.gif";
var ICON_VERMODERTERHOLZROLLER = "roller.gif";
var ICON_VERBOGENESFAHRRAD = "fahrrad.gif";
var ICON_MOFAMAOTOR = "mofamotor.png";
var ICON_DIRUNBEKANNTESARTEFAKT = "Tutankhamun.gif";
var ICON_IWIN = "iwin3.png";
var ICON_ALTEHOCKEYTORWARTAUSRÜSTUNG = "hockey.png";
var ICON_HUSSMANNSSPEZIALWAFFE = "hussmannswaffe.png";
var ICON_SCHILFROHRBOGEN = "bogen.png";
var ICON_GOLDENESKLEEBLATT = "kleeblatt2.png";
var ICON_KLEEBLATT = "kleeblatt.gif";
var ICON_ROSTIGERANGELHAKEN = "angelhaken.png";
var ICON_BOXHANDSCHUHE = "boxglov.png";
var ICON_MALFARBEN = "farbeimer.png";
var ICON_KAPUTTERREGENSCHIRM = "schirm4.gif";
var ICON_REGENSCHIRM = "schirm.gif";
var ICON_ROTESCHLEIFE = "redribbon.png";
var ICON_DOSEDRPENNER = "dose.png";

// Wenn in Berlin gespielt wird
if (location.toString().indexOf("berlin") != -1) {
	var TOWNEXTENSION = 'B';
// Wenn in Hamburg gespielt wird
} else if (location.toString().indexOf("www.pennergame.de") != -1) {
	var TOWNEXTENSION = 'HH';
// Wenn in München gespielt wird
} else if (location.toString().indexOf("muenchen") != -1) {
	var TOWNEXTENSION = 'MU';
}

// ***********************************************************************************************
// ***********************************************************************************************
// Formatiert ein Datum um in das Format "YYYY-MM-DD"
// ***********************************************************************************************
// ***********************************************************************************************
function FormatDate(DateToFormat) {
	var year = "";
	var month = "";
	var day = "";

	year = DateToFormat.getFullYear();
	month = DateToFormat.getMonth() + 1;
	month = "0" + month;
	if (month.length == 3) { 
		month = month.substr(1,2);
	}
	day = "0" + DateToFormat.getDate();
	if (day.length == 3) {
		day = day.substr(1,2);
	}

	return year + "-" + month + "-" + day;
}

// ***********************************************************************************************
// ***********************************************************************************************
// Entfernt Leerraum aus einen String (Anfang und Ende)
// ***********************************************************************************************
// ***********************************************************************************************
function trimString(s) {
	return s.replace(/^\s+|\s+$/g,'');
}

// ***********************************************************************************************
// ***********************************************************************************************
// Funktion überprüft, ob es neue Skript-Versionen gibt (einmal pro Tag) und zeigt im positiven
// Fall eine Meldung an.
// ***********************************************************************************************
// ***********************************************************************************************
function CheckForUpdate() {
	// Aktuelles Tagesdatum erzeugen und formatieren
	var today = new Date();
	var tagesdatum = FormatDate(today);

	// Wenn heute noch nicht nach einem Skript-Update gesucht wurde	
	if (GM_getValue("LastScriptUpdateCheck","") != tagesdatum) {
		// Abrufen der Skriptseite von userscripts.org
		GM_xmlhttpRequest({
			method: 'GET', 
			url: THISSCRIPTINSTALL_URL, 
			onload: function(responseDetails) {
				var content = responseDetails.responseText;
								
				// Ermitteln der Skriptversion
				var scriptversion = content.split("<b>Version:</b>")[1];
				var scriptfullversion = trimString(scriptversion .split("<br")[0]);
				scriptversion = trimString(scriptversion .split("<br")[0]).substr(0, 5);
				
				// Wenn dort eine neue Skriptversion vorliegt
				if (scriptversion != THISSCRIPTVERSION) {
					// Hinweistext zusammenbauen
					var alerttext = "Es gibt eine neue Version des Skriptes '" + THISSCRIPTNAME + "':\n\n" + scriptfullversion + "\n\nDie neue Version kann Fehlerbehebungen und/oder neue Funktionen beinhalten.\nHier gibt es weitere Infos über die neue Version:\n\n" + THISSCRIPTINSTALL_URL + "\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."

					// Hinweistext ausgeben
					alert(alerttext);
					// Seite mit dem neuen Skript laden, um eine Installation zu ermöglichen
					window.location.href = THISSCRIPTSOURCE_URL;
				}
			}
		});

		// Setze den Parameter auf das aktuelle Datum (Updatesuche wurde ausgeführt)
		GM_setValue("LastScriptUpdateCheck", tagesdatum)
	}
}

// ********************************************************************************************************************
// 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, plundername) {
	try {
		var ActionNumber = content.split(plundername)[1];
		ActionNumber = ActionNumber.split("change_stuff('")[1];
		ActionNumber = ActionNumber.split("'")[0];
	
		return ActionNumber;
	} catch(err) {
		GM_log("Fehler beim Abrufen der Action-Nummer für " + plundername);
	}
}

// ********************************************************************************************************************
// Funktion fügt zum Register "newRegister" einen neuen Button mit der Beschriftung "newText" hinzu, der auf die Seite
// "newLink" verlinkt
// ********************************************************************************************************************
function AddNewButton(newRegister, newLink, newText) {
	var newButtonNode = document.createElement("li");
	newButtonNode.innerHTML = '<a href="' + newLink + '"><span class="btn-right"><span class="btn-left">' + newText + '</span></span></a>'
	newRegister.appendChild(newButtonNode);
}

// ********************************************************************************************************************
// Funktion fügt zum Register "newRegister" einen neuen Button mit der Beschriftung "newText" hinzu, der auf die Seite
// "newLink" verlinkt
// ********************************************************************************************************************
function AddNewIcon(content, newRegister, IconName, IconText) {
	var newButtonNode = document.createElement("li");
	newButtonNode.innerHTML = '<a href="' + PLUNDER_URL1 + GetActionNumber(content, IconName) + PLUNDER_URL2 + '"><span class="btn-right"><span class="btn-left">' + ICON_URL + IconName + "\" title=\"" + IconText + "\" alt=\" \">" + '</span></span></a>'
	newRegister.appendChild(newButtonNode);
}

// ********************************************************************************************************************
// ********************************************************************************************************************
// START PROGRAMM * START PROGRAMM * START PROGRAMM * START PROGRAMM * START PROGRAMM *START PROGRAMM *START PROGRAMM * 
// ********************************************************************************************************************
// ********************************************************************************************************************

	// ***********************************************************************************************
	// Auf eine neue Version des Skriptes prüfen
	// ***********************************************************************************************
	CheckForUpdate();

	// Gesamten Inhalt des Bodies in content speichern zum Parsen des vorhandenen Plunders und der Zugriffs-IDs
	var content = document.getElementsByTagName("body")[0].innerHTML;

	// Referenz auf das alte Register speichern
	var oldRegister = document.getElementsByTagName("ul")[3];
	// altes Register zum "oberen Register" machen
	oldRegister.setAttribute("id", "nav-1");

	// Referenz auf Register-Div speichern
	var currentdiv = document.getElementById("tabnav");

	// Neues Register anlegen und zum "unteren Register" machen
	var newRegister = document.createElement("ul");
	newRegister.setAttribute("id", "nav-2");
	newRegister.setAttribute("class", "hmenu zabsolute");
	
	// Neues Register ins Dokument hängen
	currentdiv.appendChild(newRegister);

	// ********************************************************************************************************************
	// Wenn die aktuelle Seite die Plunderseite ist
	// ********************************************************************************************************************
	if (location.toString().indexOf(".pennergame.de/stock/plunder/") != -1) {
		// FEINER ANZUG / RAMPONIERTER ANZUG
		if (content.indexOf(ICON_FEINERANZUG) != -1) {
			AddNewIcon(content, newRegister, ICON_FEINERANZUG, "Feiner Anzug");
		} else if (content.indexOf(ICON_RAMPONIERTERANZUG) != -1) {
			AddNewIcon(content, newRegister, ICON_RAMPONIERTERANZUG, "Ramponierter Anzug");
		}
	
		// Wenn das Skript in Hamburg läuft
		if (TOWNEXTENSION == "HH") {
			// GOLDENES BIER
			if (content.indexOf(ICON_GOLDENESBIER) != -1) {
				AddNewIcon(content, newRegister, ICON_GOLDENESBIER, "Goldenes Bier");
			// NIKOLAUS-PLUNDER
			} else if (content.indexOf(ICON_NIKOLAUSPLUNDER) != -1) {
				AddNewIcon(content, newRegister, ICON_NIKOLAUSPLUNDER, "Nikolaus-Plunder");
			}
		// sonst: Das Skript läuft in Berlin
		} else {
			// NIKOLAUS-PLUNDER
			if (content.indexOf(ICON_NIKOLAUSPLUNDER) != -1) {
				AddNewIcon(content, newRegister, ICON_NIKOLAUSPLUNDER, "Nikolaus-Plunder");
			}
		}

		// KAPUTTE BRILLE / ZAUBERSTAB
		if (content.indexOf(ICON_KAPUTTEBRILLE) != -1) {
			AddNewIcon(content, newRegister, ICON_KAPUTTEBRILLE, "Kaputte Brille");
		} else if (content.indexOf(ICON_ZAUBERSTAB) != -1) {
			AddNewIcon(content, newRegister, ICON_ZAUBERSTAB, "Verdreckter Zauberstab");
		}
		// Wenn iWin noch NICHT vorhanden ist (Geschi ist kleiner gleich 125)
		if (content.indexOf(ICON_IWIN) == -1) {
			// LEXIKON
			if (content.indexOf(ICON_LEXIKON) != -1) {
				AddNewIcon(content, newRegister, ICON_LEXIKON, "Lexikon");
			}
		}
		
		// REGENMANTEL
		if (content.indexOf(ICON_REGENMANTEL) != -1) {
			AddNewIcon(content, newRegister, ICON_REGENMANTEL, "Regenmantel");
		}
		// TAGESKARTE / SKATEBOARD / HOLZROLLER / FAHRRAD
		if (content.indexOf(ICON_TAGESKARTE) != -1) {
			AddNewIcon(content, newRegister, ICON_TAGESKARTE, "Tageskarte");
		} else if (content.indexOf(ICON_SKATEBOARD) != -1) {
			AddNewIcon(content, newRegister, ICON_SKATEBOARD, "Skateboard");
		} else if (content.indexOf(ICON_VERMODERTERHOLZROLLER) != -1) {
			AddNewIcon(content, newRegister, ICON_VERMODERTERHOLZROLLER, "Vermoderter Holzroller");
		} else if (content.indexOf(ICON_VERBOGENESFAHRRAD) != -1) {
			AddNewIcon(content, newRegister, ICON_VERBOGENESFAHRRAD, "Verbogenes Fahrrad");
		}

		// IWIN 
		if (content.indexOf(ICON_IWIN) != -1) {
			AddNewIcon(content, newRegister, ICON_IWIN, "iWin");
		} else {
			// UNBEKANNTES ARTEFAKT
			if (content.indexOf(ICON_DIRUNBEKANNTESARTEFAKT) != -1) {
				AddNewIcon(content, newRegister, ICON_DIRUNBEKANNTESARTEFAKT, "Dir-unbekanntes Artefakt");
			}
			// HOCKEY-TORWARTAUSRÜSTUNG
			if (content.indexOf(ICON_ALTEHOCKEYTORWARTAUSRÜSTUNG) != -1) {
				AddNewIcon(content, newRegister, ICON_ALTEHOCKEYTORWARTAUSRÜSTUNG, "Alte Hockey Torwartausrüstung");
			} 
			// HUSSMANNS SPEZIALWAFFE
			if (content.indexOf(ICON_HUSSMANNSSPEZIALWAFFE) != -1) {
				AddNewIcon(content, newRegister, ICON_HUSSMANNSSPEZIALWAFFE, "Hussmanns Spezialwaffe");
			} 
			// SCHILFROHRBOGEN
			if (content.indexOf(ICON_SCHILFROHRBOGEN) != -1) {
				AddNewIcon(content, newRegister, ICON_SCHILFROHRBOGEN, "Schilfrohrbogen");
			}
		}
		
		// ROSTIGER ANGELHAKEN
		if (content.indexOf(ICON_ROSTIGERANGELHAKEN) != -1) {
			AddNewIcon(content, newRegister, ICON_ROSTIGERANGELHAKEN, "Rostiger Angelhaken");
		}

		// MALFARBEN
		if (content.indexOf(ICON_MALFARBEN) != -1) {
			AddNewIcon(content, newRegister, ICON_MALFARBEN, "Malfarben");
		}
		// MOFAMOTOR
		if (content.indexOf(ICON_MOFAMAOTOR) != -1) {
			AddNewIcon(content, newRegister, ICON_MOFAMAOTOR, "Alter Mofamotor");
		}
		// GOLDENES KLEEBLATT / KLEEBLATT
		if (content.indexOf(ICON_GOLDENESKLEEBLATT) != -1) {
			AddNewIcon(content, newRegister, ICON_GOLDENESKLEEBLATT, "Goldenes Kleeblatt");
		} else if (content.indexOf(ICON_KLEEBLATT) != -1) {
			AddNewIcon(content, newRegister, ICON_KLEEBLATT, "Kleeblatt");
		}
		// REGENSCHIRM / KAPUTTER REGENSCHIRM
		if (content.indexOf(ICON_REGENSCHIRM) != -1) {
			AddNewIcon(content, newRegister, ICON_REGENSCHIRM, "Regenschirm");
		} else if (content.indexOf(ICON_KAPUTTERREGENSCHIRM) != -1) {
			AddNewIcon(content, newRegister, ICON_KAPUTTERREGENSCHIRM, "Kaputter Regenschirm");
		}
		// ROTESCHLEIFE
		if (content.indexOf(ICON_ROTESCHLEIFE) != -1) {
			AddNewIcon(content, newRegister, ICON_ROTESCHLEIFE, "Rote Schleife");
		}
		// DOSE DR PENNER
		if (content.indexOf(ICON_DOSEDRPENNER) != -1) {
			AddNewIcon(content, newRegister, ICON_DOSEDRPENNER, 'Dose "Dr. Penner"');
		}
	// ********************************************************************************************************************
	// sonst: Die aktuelle Seite ist NICHT die Plunderseite
	// ********************************************************************************************************************
	} else {
		// Neue Buttons hinzufügen
		AddNewButton(newRegister, "/stock/plunder/", "Plunder");
		AddNewButton(newRegister, "/stock/foodstuffs/food/", "Essen");
		AddNewButton(newRegister, "/city/washhouse/", "Waschen");
		AddNewButton(newRegister, "/stock/armoury/", "Waffen");
		AddNewButton(newRegister, "/fight/pet/", "HTK");
		AddNewButton(newRegister, "/gang/credit/", "Kasse");
		AddNewButton(newRegister, "/gang/fight/", "Bandenkampf");
		AddNewButton(newRegister, "/city/supermarket/", "Supermarkt");
	}