您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Zeigt einen Spenden Button direkt auf der Uebersichtsseite von Pennergame an. Fuer die Seite http://www.menelgame.com.pl/
// ==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);