NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name HaremHeroes Salary // @namespace 3jameo3 // @version 0.1 // @description This will no longer be updated. // @author 3jameo3 // @match http*://nutaku.haremheroes.com/* // @updateURL https://openuserjs.org/meta/3jameo3/HaremHeroes_Salary.meta.js // @require https://cdn.jsdelivr.net/js-cookie/2.2.0/js.cookie.js // @grant GM_addStyle // @license MIT // ==/UserScript== GM_addStyle('/* The switch - the box around the slider */ .switch { position: relative; display: inline-block; width: 60px; height: 34px; } /* Hide default HTML checkbox */ .switch input {display:none;} /* The slider */ .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; -webkit-transition: .4s; transition: .4s; } .slider:before { position: absolute; content: ""; height: 26px; width: 26px; left: 4px; bottom: 4px; background-color: white; -webkit-transition: .4s; transition: .4s; } input:checked + .slider { background-color: #2196F3; } input:focus + .slider { box-shadow: 0 0 1px #2196F3; } input:checked + .slider:before { -webkit-transform: translateX(26px); -ms-transform: translateX(26px); transform: translateX(26px); } /* Rounded sliders */ .slider.round { border-radius: 34px; } .slider.round:before { border-radius: 50%; }'); function sleep(milliseconds) { var start = new Date().getTime(); for (var i = 0; i < 1e7; i++) { if ((new Date().getTime() - start) > milliseconds) { break; } } } var getSalary = function () { try { if ($("#breadcrumbs span").last().text() === "Harem") { console.log("Detected Harem Screen. Fetching Salary"); $("#harem_whole #harem_left .salary:not('.loads') button").each(function (index) { $(this).click(); sleep(1000); }); document.cookie = "nextSalaryTime=;"; } else { // Not at Harem screen then goto the Harem screen. console.log("Navigating to Harem window."); sessionStorage.autoLoop = "false"; window.location = window.location.origin + $("nav div[rel='content'] a:has(.harem)").attr("href"); sleep(1000); return; } } catch (ex) { console.log("Could not collect salary... " + ex); } }; var updateData = function () { //console.log("updating UI"); sessionStorage.autoSalary = document.getElementById("autoSalaryCheckbox").checked; }; var autoLoop = function () { updateData(); var busy = false; var page = window.location.href; if (sessionStorage.autoSalary === "true" && busy === false) { if (Cookies.get("nextSalaryTime") === undefined) { console.log("Time to fetch salary."); getSalary(); busy = true; } else if (Cookies.get("nextSalaryTime") === "") { console.log("Salary fetched. Getting next fetch time"); if ($("nav div[rel='content'] a:has(.home)").attr("href") !== window.location.pathname) { console.log("Moving to home."); sessionStorage.autoLoop = "false"; // Goto Home page. window.location = window.location.origin + $("nav div[rel='content'] a:has(.home)").attr("href"); busy = true; return; } var CAB = $("#collect_all_bar .in").text(); var closestTime; //console.log(CAB); if (CAB.includes('h') && CAB.includes('m')) { CAB = $("#collect_all_bar .in").text().replace('h', '').replace('m', '').replace(' ', ''); //console.log('"'+CAB+'"'); if (CAB.length == 1) { closestTime = Number((CAB[0]) * 3600); } if (CAB.length == 2) { closestTime = Number((CAB[0]) * 3600) + (Number(CAB[1]) * 60); } if (CAB.length == 3) { closestTime = Number((CAB[0]) * 3600) + (Number(CAB[1] + CAB[2]) * 60); } if (CAB.length == 4) { closestTime = Number((CAB[0] + CAB[1]) * 3600) + (Number(CAB[2] + CAB[3]) * 60); } //console.log('"'+closestTime+'"'); } if (CAB.includes('m')) { CAB.replace('m', ''); //console.log('"'+CAB+'"'); closestTime = Number(CAB.replace('m', '')) * 60; //console.log('"'+closestTime+'"'); } if (CAB.includes('s')) { CAB.replace('s', ''); //console.log('"'+CAB+'"'); closestTime = Number(CAB.replace('s', '')); //console.log('"'+closestTime+'"'); } document.cookie = "nextSalaryTime=present;max-age=" + (closestTime < 0 ? 0 : closestTime); console.log("New fetch time stored in nextSalaryTime cookie.(+" + closestTime + " sec.)"); busy = false; } // Just in case something goes wrong area var collect = ($('#collect_all').text().replace(/\s/g, "")); if (collect.length >= 18 && (Cookies.get("nextSalaryTime") === undefined ||Cookies.get("nextSalaryTime") === 0 || Cookies.get("nextSalaryTime") === "")) { document.cookie = "nextSalaryTime=;"; console.log("New fetch time stored in nextSalaryTime cookie.(+" + closestTime + " sec.)"); console.log("Time to fetch salary."); getSalary(); busy = true; } else { busy = false; } } if (busy === true && sessionStorage.userLink === "none") { sessionStorage.userLink = page; } else if (sessionStorage.userLink !== "none" && busy === false) { console.log("Restoring page " + sessionStorage.userLink); window.location = sessionStorage.userLink; sessionStorage.userLink = "none"; } if (isNaN(sessionStorage.autoLoopTimeMili)) { console.log("AutoLoopTimeMili is not a number."); setDefaults(); } else { if (sessionStorage.autoLoop === "true") setTimeout(autoLoop, Number(sessionStorage.autoLoopTimeMili)); else console.log("autoLoop Disabled"); } }; var setDefaults = function () { console.log("Setting Defaults."); var busy = "false"; var nextSalaryTime = "0"; var closestTime = "0"; sessionStorage.autoSalary = "false"; sessionStorage.autoLoop = "true"; sessionStorage.userLink = "none"; sessionStorage.autoLoopTimeMili = "500"; sessionStorage.freshStart = "no"; }; var start = function () { //console.log("script started"); // Add UI buttons. var UIcontainer = $("#contains_all nav div[rel='content']"); UIcontainer.html('<div style="position: absolute;right: -16.475%; padding: 10px;width: inherit;text-align: center;display:flex;flex-direction:column;">' + '<span>AutoSal.</span><div><label class=\"switch\"><input id=\"autoSalaryCheckbox\" type=\"checkbox\"><span class=\"slider round\"></span></label></div>' + '</div>' + UIcontainer.html()); document.getElementById("autoSalaryCheckbox").checked = sessionStorage.autoSalary === "true"; sessionStorage.autoLoop = "true"; if (typeof sessionStorage.freshStart == "undefined" || isNaN(Number(sessionStorage.autoLoopTimeMili))) { setDefaults(); } autoLoop(); }; $("document").ready(start);