// ==UserScript== // @name 摸鱼派:进化-Evolve // @namespace http://evolve.taozhiyu.tk/ // @version 0.1.2-beta.1 // @description 进化,锁死最大值!双击无最大值数据项=>增加10K,按住Ctrl+双击=>增加100K,按住Shift+双击=>增加500K // @author 涛之雨 // @match https://fishpi.cn/games/evolve/ // @icon https://pwl.stackoverflow.wiki/evolve/evolved.ico // @require https://greasyfork.org/scripts/455943-ajaxhooker/code/ajaxHooker.js // @grant GM_setValue // @grant GM_getValue // @grant GM_info // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @run-at document-start // ==/UserScript== /* global ajaxHooker $*/ (function () { "use strict"; let item = "",keyStatus={ shift:false, ctrl:false },dataList={}; const conf = GM_getValue("conf", {isOpen:true}); if (!conf.ver) { if (conf.ver === false) return console.error("你自己玩吧,编辑器里自己删除配置去"); conf.ver = GM_info.script.version; let t = Date.now(), times = 0; while ((Date.now() - t) / 1000 < 5) { times++; if (times > 5) { conf.ver = false; console.error("不看,那我走?"); GM_setValue("conf", conf); throw "不看?那我走?"; } t = Date.now(); alert( (times === 1 ? "" : "不是,你至少看个5秒钟吧,挺重要的!\n\n") + "为了确保游戏排名公平,将⚠️⚠️禁止数据自动同步⚠️⚠️,请悉知\n(建议在设置中登录PlayFab,开启后会自动上传数据)。\n如需同步数据到摸鱼派社区,请关闭本脚本,并且恢复使用脚本之前的数据。\n\n点击确定或者关闭本弹窗意味着您已知晓并同意该协议。" ); } GM_setValue("conf", conf); } if (conf.ver !== GM_info.script.version) { alert("脚本已更新!"); conf.ver = GM_info.script.version; GM_setValue("conf", conf); } GM_registerMenuCommand(`【已${conf.isOpen?"启":"停"}用】脚本${conf.isOpen?"✅推荐":"❌不推荐"}`,a=>{ if(!confirm(`${conf.isOpen?"启":"停"}用脚本需要刷新页面,是否继续操作`))return conf.isOpen=!conf.isOpen; GM_setValue("conf",conf); location.reload(); }); // this.settings.keyMap window.addEventListener('keydown',a=>{ keyStatus.shift=a.shiftKey; keyStatus.ctrl=a.ctrlKey; }); window.addEventListener('keyup',a=>{ keyStatus.shift=a.shiftKey; keyStatus.ctrl=a.ctrlKey; }); const k = Object.prototype.hasOwnProperty; function deepProxy(obj) { if (typeof obj === "object" && obj !== null) { for (let key in obj) obj[key] = deepProxy(obj[key]); return new Proxy(obj, { get(target, key, receiver) { if (['amount',item].includes(key)) { let val = 0; if (item === key) { item = ""; if(target[key].time)target[key].time/=2; else if(target[key].progress)target[key].progress=99; else if(target[key].count)target[key].count+=1e3; else if(target[key].amount){ if(target[key].max===-1){ target[key].amount+=1e4; if(keyStatus.ctrl)target[key].amount+=9e4; else if(keyStatus.shift)target[key].amount+=49e4; }else{ target[key].amount=target[key].max; } } val=Reflect.get(target, key, receiver); }else if (target.max>0){ val=target.max; }else { val = target.amount; if (item === target.name) { item = ""; val += 1e4; } } return val; } return Reflect.get(target, key, receiver); }, set(target, key, value, receiver) { return Reflect.set(target, key, value, receiver); }, }); } else { return obj; } } Object.prototype.hasOwnProperty = function (...a) { if (this && this.seed && this.resource) { Object.prototype.hasOwnProperty = k; //恢复拦截 dataList=this; return k.apply(deepProxy(this), a); } return k.apply(this, a); }; (() => { const doneList = [0, 0, 0, 0]; const i = setInterval(() => { if (typeof $ === "undefined") return; if (!doneList[0] && $(".promoBar>span.left>h1>span")?.text()) { doneList[0] = 1; $(".promoBar>span.left>h1>span") .html( `EVOLVE涛之雨助手已暂停[@${ $("#currentUserName").text()}]数据同步` ) .removeClass("has-text-success") .addClass("has-text-info") .css("margin-left", "-8px"); $(".external-links li a").map((_, a) => { ["Reddit", "Discord", "GitHub", "Patreon", "Donate"].includes( a.innerText ) && ((a.title = a.innerText), (a.innerText = a.innerText[0])); }); } if (!doneList[1] && $("#login-tip")?.text()?.includes("已登录")) { doneList[1] = 1; setInterval(() => { $("#login-tip button").map( (_, a) => a.innerText.includes("立即备份") && a.click() ); }, 6e5); } if (!doneList[2] && $("#resources div").length) { // doneList[2] = 1; $("#resources div").map((_, a) => { a.ondblclick = function (a) { item=this.id.slice(3); }; }); } if (!doneList[3] && $("progress").length) { // doneList[3] = 1; $('progress').map((_,a)=>{ a.ondblclick=function(){ if(this.parentElement.id)item=this.parentElement.id.replace(/[A-Z]/g,a=>"++"+a.toLowerCase()).split('++')[1]; else item=this.parentElement.parentElement.id; }; }); } // if (undefined===doneList.find((a) => !a)) clearInterval(i); }, 500); })(); ajaxHooker.hook( (request) => request.url.endsWith("/cloud/sync") && (request.abort = true) ); })();