您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Stake reload auto claimer (never stuck: guaranteed claim detection + error retry + full panel with reset + last claim date & time)
// ==UserScript== // @name Auto Reload Claimer + Full Panel // @version 3.4 // @description Stake reload auto claimer (never stuck: guaranteed claim detection + error retry + full panel with reset + last claim date & time) // @author natah3 // @match https://stake.com/* // @match https://stake.games/* // @match https://stake.bet/* // @match https://stake.link/* // @match https://stake1069.com/* // @run-at document-idle // @namespace https://greasyfork.org/users/1514052 // ==/UserScript== (function() { 'use strict'; const TARGET_URL = 'https://' + window.location.hostname + '/?tab=rewards&modal=claimReload'; const CLAIM_WAIT_TIME = 610; // 10 min + 10s buffer const ERROR_RETRY_WAIT_TIME = 10 * 1000; // 10 seconds const BUTTON_RETRY_INTERVAL = 5000; // retry every 5 seconds let claimCounter = parseInt(localStorage.getItem("claimCounter") || "0", 10); let lastClaimTime = localStorage.getItem("lastClaimTime") || "None"; let countdownInterval; let buttonRetryInterval; // Format date as DD/MM/YYYY HH:mm:ss function formatDate(d) { const day = String(d.getDate()).padStart(2, "0"); const month = String(d.getMonth() + 1).padStart(2, "0"); const year = d.getFullYear(); const hours = String(d.getHours()).padStart(2, "0"); const minutes = String(d.getMinutes()).padStart(2, "0"); const seconds = String(d.getSeconds()).padStart(2, "0"); return `${day}/${month}/${year} ${hours}:${minutes}:${seconds}`; } // Create panel function createPanel() { const panel = document.createElement("div"); panel.id = "auto-reload-claimer-panel"; panel.style.position = "fixed"; panel.style.bottom = "20px"; panel.style.right = "20px"; panel.style.backgroundColor = "rgba(0,0,0,0.75)"; panel.style.color = "#fff"; panel.style.padding = "12px 15px"; panel.style.borderRadius = "10px"; panel.style.zIndex = "9999"; panel.style.fontSize = "14px"; panel.style.fontFamily = "monospace"; panel.innerHTML = ` <div style="margin-bottom:6px"><b>Auto Reload Claimer</b></div> <div>Claims: <span id="arc-counter">${claimCounter}</span></div> <div>Last Claim: <span id="arc-last">${lastClaimTime}</span></div> <div>Next Reload in: <span id="arc-timer">--:--</span></div> <button id="arc-reset" style="margin-top:8px;padding:2px 6px;font-size:12px;background:#c33;color:#fff;border:none;border-radius:4px;cursor:pointer;">Reset</button> `; document.body.appendChild(panel); document.getElementById("arc-reset").addEventListener("click", resetStats); } // Update panel values function updatePanel() { document.getElementById("arc-counter").textContent = claimCounter; document.getElementById("arc-last").textContent = lastClaimTime; } // Start countdown function startCountdown() { let timeLeft = CLAIM_WAIT_TIME; const timerDisplay = document.getElementById("arc-timer"); clearInterval(countdownInterval); countdownInterval = setInterval(() => { const minutes = Math.floor(timeLeft / 60); const seconds = timeLeft % 60; timerDisplay.textContent = `${String(minutes).padStart(2,"0")}:${String(seconds).padStart(2,"0")}`; if (timeLeft <= 0) { clearInterval(countdownInterval); reloadPage(); } timeLeft--; }, 1000); } // Init function init() { createPanel(); if (window.location.href !== TARGET_URL) { window.location.href = TARGET_URL; } else { tryClaim(); } } // Retry until claim button clicked function tryClaim() { clearInterval(buttonRetryInterval); buttonRetryInterval = setInterval(() => { const claimButton = document.querySelector('button[data-testid="claim-reload"]'); const errorModal = Array.from(document.querySelectorAll("h2")) .find(el => el.textContent.includes("Reload Unavailable")); if (claimButton) { claimButton.click(); clearInterval(buttonRetryInterval); onClaimSuccess(); } else if (errorModal) { clearInterval(buttonRetryInterval); setTimeout(reloadPage, ERROR_RETRY_WAIT_TIME); } // else → keep retrying }, BUTTON_RETRY_INTERVAL); } // After successful claim function onClaimSuccess() { claimCounter++; lastClaimTime = formatDate(new Date()); localStorage.setItem("claimCounter", claimCounter); localStorage.setItem("lastClaimTime", lastClaimTime); updatePanel(); startCountdown(); } // Reload page function reloadPage() { window.location.reload(); } // Reset stats function resetStats() { claimCounter = 0; lastClaimTime = "None"; localStorage.setItem("claimCounter", claimCounter); localStorage.setItem("lastClaimTime", lastClaimTime); updatePanel(); } window.addEventListener("load", init); })();