- // ==UserScript==
- // @name Spendenbutton - PG4.0 - All Games
- // @namespace Script by MR. X and MR. Y
- // @description Zeigt einen Spenden Button direkt auf der Uebersichtsseite von Pennergame an. Fuer die Seite http://www.menelgame.com.pl/
- // @include *spenden.hitfaker.net*
- // @include http://www.pennergame.de/overview/
- // @include http://*berlin.pennergame.de/overview/
- // @include http://*muenchen.pennergame.de/overview/
- // @include http://*koeln.pennergame.de/overview/
- // @include http://*reloaded.pennergame.de/overview/
- // @include http://*pennersturm.pennergame.de/overview/
- // @include http://*dossergame.co.uk/overview/
- // @include http://*bumrise.com/overview/
- // @include http://*clodogame.fr/overview/
- // @include http://*faveladogame.com.br/overview/
- // @include http://*mendigogame.es/overview/
- // @include http://*menelgame.pl/overview/
- // @include http://*halloween.pennergame.de/overview/
- // @include http://*mendigogame.com/overview/
- // @include http://*bomzhuj.ru/overview/
- // @grant GM_getValue
- // @grant GM_setValue
- // @grant GM_xmlhttpRequest
- // @grant GM_deleteValue
- // @version 1.1.8 collect donations via spenden.hitfaker.net
- // ==/UserScript==
-
- // ***********************************************************************************************
- // ***********************************************************************************************
- //--------Update Funktion by Sageo - natuerlich mit ihrer Erlaubniss--------------
- // ***********************************************************************************************
- // ***********************************************************************************************
- // Daten über das aktuelle Skript für den Update-Mechanismus
- var THISSCRIPTNAME = "Spendenbutton - PG4.0 - All Games";
- var THISSCRIPTVERSION = GM_info.script.version.split(" ")[0];
- var THISSCRIPTINSTALL_URL = 'https://greasyfork.org/de/scripts/2967-spendenbutton-pg4-0-all-games';
- // @version 1.1.7 update function corrected
- // @version 1.1.6 grants added
- // @version 1.1.5 correction
- // @version 1.1.4 update info because of change on greasyfork.org
- // @version 1.1.3 script did not work any more
- // @version 1.1.2 script did not work any more
- // @version 1.1.1 script did not work any more
- // @version 1.0.18 change links for donation pages
- // @version 1.0.17 Version for FF 17
- // @version 1.0.16 Operation Pennersturm added
- // @version 1.0.15 PG changed the donationsides because SHIFT sucks by MR X
- // @version 1.0.14 PG reloaded Hamburg added
- // @version 1.0.13 alternative site did not work any longer
- // @version 1.0.12 donations did not work because of www at the beginning of URL
- // @version 1.0.11 use alternative site with Shift+Click in case of problems with the original site
- // @version 1.0.10 now also runs in Köln
- // @version 1.0.9 now also runs in London
- // @version 1.0.8 now also runs in Russia
- // @version 1.0.7 now also runs in Buenos Aires
- // @version 1.0.6 now also runs on Halloween
- // @version 1.0.5 now also runs on Mallorca
- // @version 1.0.4 some more english texts
- // @version 1.0.3 update the progress bar of the money while receiving donations; english text for all foreign versions
- // @version 1.0.2 URL of donation page changed; countdown of donations
- // @version 1.0.1 some small modifications by Mr. Y
- // @version 1.0.0 Brand new Shit
- // $Id: spendenbutton_-_pg40_-_a.user.js 122 2015-09-02 12:12:41Z Mr. X $
-
-
- // ***********************************************************************************************
- // ***********************************************************************************************
- // Formatiert ein Datum um in das Format "YYYY-MM-DD"
- // ***********************************************************************************************
- // ***********************************************************************************************
- function FormatDate(DateToFormat) {
- var year = DateToFormat.getFullYear();
- var month = DateToFormat.getMonth() + 101 + "";
- var day = DateToFormat.getDate() + 100 + "";
-
- return year + "-" + month.slice(1) + "-" + day.slice(1);
- }
-
-
- // ***********************************************************************************************
- // ***********************************************************************************************
- // Entfernt Leerraum aus einen String (Anfang und Ende)
- // ***********************************************************************************************
- // ***********************************************************************************************
- function trimString(s) {
- return s.replace(/^\s+|\s+$/g,'');
- }
-
- // ***********************************************************************************************
- // ***********************************************************************************************
- // Funktion ueberprueft, ob es neue Skript-Versionen gibt (einmal pro Tag) und zeigt im positiven
- // Fall eine Meldung an.
- // ***********************************************************************************************
- // ***********************************************************************************************
- function CheckForUpdate(german) {
- // Aktuelles Tagesdatum erzeugen und formatieren
- var today = new Date();
- var tagesdatum = FormatDate(today);
-
- if (GM_getValue("LastScriptUpdateCheckGF","") != tagesdatum) {
- // **********************************************************************************
- // *** GM_XMLHTTPREQUEST *** Abrufen der Skriptseite von greasyfork.org
- // **********************************************************************************
- GM_xmlhttpRequest({method: 'GET',
- url: THISSCRIPTINSTALL_URL,
- headers:{ "Accept":"text/javascript; charset=UTF-8" },
- overrideMimeType:"application/javascript; charset=UTF-8",
- onload:function(responseDetails) {
- // Wenn die Seite erfolgreich abgerufen werden konnte
- if (responseDetails.status == 200) {
- var content = responseDetails.responseText;
-
- // 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
- if (scriptversion != THISSCRIPTVERSION) {
- // Hinweistext zusammenbauen
- if (german)
- 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."
- else
- var alerttext = "There is a new version of the script '" + THISSCRIPTNAME + "':\n\n" + scriptfullversion + "\n\nThe new version can contain bugfixes and/or new features.\nHere you will find more information about the new version:\n\n" + THISSCRIPTINSTALL_URL + "\n\nAn update is recommended and can be done directly afterwards.\n\nNote: The check for new versions is only done once a day."
-
- // Hinweistext ausgeben
- alert(alerttext);
- // Seite mit dem neuen Skript laden, um eine Installation zu ermöglichen
- window.location.href = THISSCRIPTINSTALL_URL+'/code/Spendenbutton%20-%20PG40%20-%20All%20Games.user.js';
- }
- }
- }
- });
- // Setze den Parameter auf das aktuelle Datum (Updatesuche wurde ausgeführt)
- GM_setValue("LastScriptUpdateCheckGF", tagesdatum)
- }
- }
-
- // ***********************************************************************************************
- // ***********************************************************************************************
- // Funktion erzeugt einen Fortschrittsbalken und liefert ihn als Tabelle zurück
- // ***********************************************************************************************
- // ***********************************************************************************************
- function CreateProgressTable(columnr) {
- var newtable = document.createElement("table");
- newtable.style.width = "500px";
- newtable.style.border = "#000000 1px solid";
- var newtr = document.createElement("tr");
-
- newtable.appendChild(newtr);
-
- for (var i = 1; i <= columnr; i++) {
- var newtd = document.createElement("td");
- newtd.innerHTML = ' ';
- newtr.appendChild(newtd);
- }
-
- return newtable;
- }
-
- // ***********************************************************************************************
- // ***********************************************************************************************
- // Funktion füllt den Fortschrittsbalken bis zur Spalte columnnr
- // ***********************************************************************************************
- // ***********************************************************************************************
- function FillProgressTable(currenttable, columnnr) {
- for (var i = 0; i < columnnr; i++) {
- var currenttd = currenttable.getElementsByTagName("td")[i];
- currenttd.style.backgroundColor = "#33cc00 ";
- }
- }
-
- // **********************************************************************************
- // **********************************************************************************
- // Funktion wandelt einen HTML-Content in ein DOM um
- // **********************************************************************************
- // **********************************************************************************
- function HTML2DOM(content) {
-
- var host = document.location.host;
- var dummyDiv = document.createElement('div');
- dummyDiv.innerHTML = content;
-
- return dummyDiv;
- }
-
- //---------------------------------------------------------------------------------------------------
- // Ermitteln der PG Seite
- //---------------------------------------------------------------------------------------------------
-
- var urls = new Array();
- urls[0] = 'http://www.menelegame.pl/';
- urls[1] = 'http://pennerga.me/';
- urls[2] = 'http://spenden.hitfaker.net/';
- var links = new Array();
- links[0] = 'http://www.menelegame.pl/';
- links[1] = 'http://pennerga.me/donate.php';
- links[2] = 'http://spenden.hitfaker.net/';
- var data = new Array();
- data[0] = 'url=%s&Submit=Donate';
- data[1] = 'url=%s&Submit=Donate';
- data[2] = 'url=%s';
- var pg = new Array();
- pg[0] = 'POST';
- pg[1] = 'POST';
- pg[2] = 'click';
-
- if(window.location.hostname == "spenden.hitfaker.net"){
- var don = GM_getValue("hitfakerlink", "");
- if (don != "") {
- function checklink(link, start) {
- if (document.getElementById(link).value == "")
- window.setTimeout(checklink, 1000, link, start);
- else {
- document.getElementById(link).value = don;
- window.setTimeout('document.getElementById("' + start + '").click()', 1000);
- window.setTimeout(checkrun, 1000);
- }
- }
- function checkrun() {
- if (document.getElementById("status"))
- if (document.getElementById("status").innerHTML.indexOf("<strong>") != -1) {
- GM_deleteValue("hitfakerlink");
- window.close();
- return;
- }
- window.setTimeout(checkrun, 1000);
- }
- window.setTimeout(checklink, 1000, "url", "start");
- }
- }
- else {
- var url = document.location.href;
- var link = url.split('/overview')[0];
- var german = (link.substr(link.length-2,2) == "de");
- var indx = GM_getValue("donationindex", 0);
- if (indx >= urls.length)
- indx = 0;
-
- CheckForUpdate(german);
- }
-
- // ***********************************************************************************************
- // ***********************************************************************************************
- //----Ende----Auto Update Funktion---Ende---------------------------------------------------
- // ***********************************************************************************************
- // ***********************************************************************************************
-
-
- //---------------------------------------------------------------------------------------------------
- // Spendenlink auslesen
- //---------------------------------------------------------------------------------------------------
- var donationlink = document.getElementsByTagName('html')[0].innerHTML.split('name="reflink" value="')[1];
- var donationlink2 = donationlink.split('"')[0];
-
-
- //---------------------------------------------------------------------------------------------------
- // Ausgabe auf der Overviewseite
- //---------------------------------------------------------------------------------------------------
-
- var div_tieritemA2 = document.getElementsByClassName('tieritemA');
- for (var i = 0; i < div_tieritemA2.length; i++)
- if (div_tieritemA2[i].innerHTML.indexOf('change_please') != -1) {
- var donPos = i;
- break;
- }
- var lis = div_tieritemA2[donPos].getElementsByTagName('li');
- var donText = lis[3].innerHTML.replace(/[,.]/g, '').split(' ');
- var j = 0;
- for (var i = 0; i < donText.length; i++) {
- if (!isNaN(donText[i]))
- if (j++)
- var remDon = Number(donText[i]); // remaining donations
- else
- var recDon = Number(donText[i]); // received donations
- }
-
- var new2div = document.createElement('div');
- new2div.setAttribute('class', 'tieritemA');
- new2div.style.width = "500px";
- if (german)
- new2div.innerHTML = '<h4><div style="padding-top:9px;">Spenden holen via: <a id="donlink" href="' + urls[indx] + '" title="Link zu ' + urls[indx] + '" target="_blank">' + urls[indx] + '</a></div><div style="text-align: right; margin-top:-20px;">Spenden übrig:<span style="font-size:1.6em"> '+remDon+'</span></div></h4><table Border="0" Width="100%"><tr><td><div style="text-align: left;"><span style="font-size:1.4em"><u><b>Info:</b></u></span><br>Hier kannst du mit einem Klick deine Spenden <br>innerhalb von ca. 60 Sek. abholen!<br><br>1. Wasche deinen Penner.<br>2. Lege einen Spendenplunder an.<br>3. Klicke den <b>"Spenden holen"</b> Button.<br> Warte auf die Bestätigung... FERTIG!!!<br><br></div></td><td><div style="text-align: right; padding-top:40px; padding-right:10px;"><form name="Formular" action=""><input type="button" value="Spenden holen" title="Klicke hier um deine Spenden für heute abzuholen!!!" id="holespenden"></form></div></td></tr></table>';
- else
- new2div.innerHTML = '<h4><div style="padding-top:9px;">Receive donations via: <a id="donlink" href="' + urls[indx] + '" title="Link to ' + urls[indx] + '" target="_blank">' + urls[indx] + '</a></div><div style="text-align: right; margin-top:-20px;">Donations left:<span style="font-size:1.6em"> '+remDon+'</span></div></h4><table Border="0" Width="100%"><tr><td><div style="text-align: left;"><span style="font-size:1.4em"><u><b>Info:</b></u></span><br>Here you can receive your donations with one click<br>within about 60sec.!<br><br>1. Wash your bum.<br>2. Put on some junk for higher donations.<br>3. Clicke the <b>"receive donations"</b> button.<br> Wait for the confirmation... READY!!!<br><br></div></td><td><div style="text-align: right; padding-top:40px; padding-right:10px;"><form name="Formular" action=""><input type="button" value="receive donations" title="Click here to receive your donations for today!!!" id="holespenden"></form></div></td></tr></table>';
- div_tieritemA2[donPos].parentNode.insertBefore(new2div, div_tieritemA2[donPos]);
-
- // ***********************************************************************************************
- // Fortschrittsbalken einfügen
- // ***********************************************************************************************
- var newtd = document.createElement("td");
- newtd.setAttribute("colspan", "2");
- if (german)
- newtd.innerHTML = 'Spendenanzahl:';
- else
- newtd.innerHTML = 'Number of donations:';
- new2div.appendChild(newtd);
-
- var ProgressTable = CreateProgressTable(recDon+remDon);
- newtd.appendChild(ProgressTable);
- FillProgressTable(ProgressTable, recDon);
-
- if (GM_getValue("hitfakerlink", donationlink2) != donationlink2)
- document.getElementById("holespenden").disabled = true;
-
- if (remDon == 0) {
- // Button disablen
- document.getElementById("holespenden").disabled = true;
- GM_deleteValue("hitfakerlink");
- }
-
- document.getElementById("holespenden").addEventListener("click", function(event) {
- function updateDonCount(newdiv, link, lis, recDonOld, lstCnt) {
- GM_xmlhttpRequest({
- method: 'GET',
- url: ''+link+'/overview/',
- onload: function(responseDetails) {
- if (responseDetails.status == 200) {
- var content = responseDetails.responseText;
- if (content.indexOf('change_please') != -1) {
- var doc = HTML2DOM(content);
-
- var div_tieritemA2 = doc.getElementsByClassName('tieritemA');
- for (var i = 0; i < div_tieritemA2.length; i++)
- if (div_tieritemA2[i].innerHTML.indexOf('change_please') != -1) {
- var donPos = i;
- break;
- }
- var lis2 = div_tieritemA2[donPos].getElementsByTagName('li');
-
- lis[0].innerHTML = lis2[0].innerHTML;
- lis[1].innerHTML = lis2[1].innerHTML;
- lis[2].innerHTML = lis2[2].innerHTML;
- lis[3].innerHTML = lis2[3].innerHTML;
- var money = document.getElementsByClassName("icon money");
- var money2 = doc.getElementsByClassName("icon money");
- money[0].innerHTML = money2[0].innerHTML;
- var donText = lis2[3].innerHTML.replace(/[,.]/g, '').split(' ');
- var j = 0;
- for (var i = 0; i < donText.length; i++) {
- if (!isNaN(donText[i]))
- if (j++)
- var remDon = Number(donText[i]); // remaining donations
- else
- var recDon = Number(donText[i]); // received donations
- }
- var donrem = newdiv.getElementsByTagName('div')[1];
- donrem.innerHTML = donrem.innerHTML.replace(/> [0-9]*</, '> '+remDon+'<');
- var ProgressTable = newdiv.getElementsByTagName('table')[1];
- FillProgressTable(ProgressTable, recDon);
- if (recDon == recDonOld) {
- if (lstCnt < 50)
- updateDonCount(newdiv, link, lis, recDon, lstCnt+1);
- else {
- if (german)
- alert ("Es kommen keine weiteren Spenden !!");
- else
- alert ("You do not receive any more donations !!");
- document.location.reload();
- }
- return;
- }
- if (remDon > 0)
- updateDonCount(newdiv, link, lis, recDon, 0);
- else {
- document.location.reload();
- if (german)
- alert ("Es wurden alle Spenden geholt !!");
- else
- alert ("All donations have been fetched !!");
- GM_deleteValue(donationlink2);
- }
- return;
- }
- }
- updateDonCount(newdiv, link, lis, recDon, lstCnt);
- }
- });
- }
-
- document.getElementById("holespenden").disabled = true;
- if (event.shiftKey != 0) {
- indx++;
- if (indx >= urls.length)
- indx = 0;
- GM_setValue("donationindex", indx);
- var ele = document.getElementById("donlink");
- donlink.href = urls[indx];
- donlink.title = "Link " + (german?"zu ":"to ") + urls[indx];
- donlink.innerHTML = urls[indx];
- }
- var url = links[indx];
- var dat = data[indx].replace("%s", donationlink2);
- if (pg[indx] == "click") {
- GM_setValue("hitfakerlink", donationlink2);
- document.getElementById("donlink").click();
- }
- else {
- if (pg[indx] == "POST")
- dat = encodeURI(dat);
- else {
- url = url + "?" + dat;
- dat = "";
- }
- GM_setValue(donationlink2, true);
-
- GM_xmlhttpRequest({
- method: pg[indx],
- url: url,
- headers: {'Content-type': 'application/x-www-form-urlencoded'},
- data: dat,
- onload: function(responseDetails) {
- if (GM_getValue(donationlink2, false)) {
- GM_deleteValue(donationlink2);
- var page = location.toString();
- window.location.href = page;
- if (german)
- alert ("Es wurden alle Spenden geholt !!");
- else
- alert ("All donations have been fetched !!");
- }
- }
-
- });
- }
- updateDonCount(new2div, link, lis, recDon, 0);
- }, false);