您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Makes slots stop instantly. Works for every spin except first.
// ==UserScript== // @name Torn Fast Slots // @namespace https://github.com/SOLiNARY // @version 0.3 // @description Makes slots stop instantly. Works for every spin except first. // @author Ramin Quluzade, Silmaril [2665762] // @license MIT // @match https://www.torn.com/loader.php?sid=slots // @match https://www.torn.com/page.php?sid=slots // @icon https://www.google.com/s2/favicons?sz=64&domain=torn.com // @run-at document-idle // ==/UserScript== (function() { 'use strict'; const originalAjax = $.ajax; $.ajax = function (options) { if (options.data != null && options.data.sid == 'slotsData' && options.data.step == 'play') { const originalSuccess = options.success; options.success = function (data, textStatus, jqXHR) { if (data.error) delete data.error; if (data.errorMsg) delete data.errorMsg; data.barrelsAnimationSpeed = 0; if (originalSuccess) { originalSuccess(data, textStatus, jqXHR); } }; } return originalAjax(options); } function enableBetButtons() { document.querySelectorAll(".slots-btn-list .betbtn").forEach(btn => { btn.classList.remove("disabled"); }); } function disableBetButtons() { document.querySelectorAll(".slots-btn-list .betbtn").forEach(btn => { btn.classList.add("disabled"); }); } function watchBarrelsSpinAndStop(delay = 60) { const barrels = document.querySelectorAll("#barrel0, #barrel1, #barrel2"); let timers = new Map(); let stopped = new Map(); barrels.forEach(barrel => stopped.set(barrel, true)); barrels.forEach(barrel => { const observer = new MutationObserver(() => { disableBetButtons(); stopped.set(barrel, false); clearTimeout(timers.get(barrel)); timers.set(barrel, setTimeout(() => { stopped.set(barrel, true); if ([...stopped.values()].every(Boolean)) { enableBetButtons(); } }, delay)); }); observer.observe(barrel, { attributes: true, attributeFilter: ["style"] }); }); } var o = setInterval(() => { if($('#barrels').length == 1){ clearInterval(o) watchBarrelsSpinAndStop(); } }, 100); })();