// ==UserScript== // @name 挖矿增量页-终极核弹加速器(双管齐下版) // @namespace http://tampermonkey.net/ // @version 4.1 // @description 同时接管 Date.now 和 performance.now,加入平滑拉回防崩机制 // @author ZMM // @match https://angrystar6k.github.io/The-Mining-Incremental-Table/* // @grant GM_registerMenuCommand // @grant GM_setValue // @grant GM_getValue // @run-at document-start // ==/UserScript== (function () { 'use strict'; let currentMultiplier = GM_getValue('tc_multiplier', 2); let isEnabled = false; // 1. 保存原始函数(必须在一开始保存) const OrigPerfNow = performance.now.bind(performance); const OrigDateNow = Date.now; // 2. 初始化虚拟时钟 let fakePerf = OrigPerfNow(); let fakeDate = OrigDateNow(); let lastRealPerf = fakePerf; let lastRealDate = fakeDate; // 3. 替换 performance.now performance.now = function hookedPerf() { const real = OrigPerfNow(); const dt = real - lastRealPerf; lastRealPerf = real; if (dt > 0 && dt < 10000) { if (isEnabled) { fakePerf += dt * currentMultiplier; } else { // 【平滑拉回机制】:如果关闭了加速,但假时间跑到了未来,强制以2倍速追赶真实时间 if (fakePerf > real) { fakePerf += dt * 2; if (fakePerf < real) fakePerf = real; // 防止越过 } else { fakePerf = real; } } } else { fakePerf = real; // 防止切后台跳跃 } return fakePerf; }; // 4. 替换 Date.now(关键:这是增量游戏的核心) Date.now = function hookedDate() { const real = OrigDateNow(); const dt = real - lastRealDate; lastRealDate = real; if (dt > 0 && dt < 10000) { if (isEnabled) { fakeDate += dt * currentMultiplier; } else { // 【平滑拉回机制】:同上 if (fakeDate > real) { fakeDate += dt * 2; if (fakeDate < real) fakeDate = real; } else { fakeDate = real; } } } else { fakeDate = real; } return Math.floor(fakeDate); // Date.now 必须返回整数 }; // 5. 控制逻辑 function startCheat(multi) { currentMultiplier = multi; isEnabled = true; GM_setValue('tc_multiplier', multi); console.log(`[加速器] 已开启:${multi} 倍速 (双管齐下)`); } function stopCheat() { isEnabled = false; console.log(`[加速器] 已关闭,正在平滑拉回时间...`); } // 6. 注册菜单 GM_registerMenuCommand(`✨ 1倍速 (正常)`, () => startCheat(1)); GM_registerMenuCommand(`✨ 2倍速`, () => startCheat(2)); GM_registerMenuCommand(`✨ 5倍速`, () => startCheat(5)); GM_registerMenuCommand(`✨ 10倍速`, () => startCheat(10)); GM_registerMenuCommand(`✨ 50倍速`, () => startCheat(50)); GM_registerMenuCommand(`⚙️ 自定义任意倍率`, () => { const input = prompt(`请输入加速倍率 (推荐 1~100):`, currentMultiplier); if (input !== null && input !== "") { const val = parseFloat(input); if (!isNaN(val) && val > 0) { startCheat(val); } else { alert("输入无效!"); } } }); GM_registerMenuCommand(`🛑 彻底关闭加速`, () => stopCheat()); console.log("[加速器] 4.1 双管齐下版已加载。"); })();