Greasy Fork

Greasy Fork is available in English.

Auto Reload Claimer

Automatically claims Stake.com reloads, handles errors without getting stuck, and displays a countdown timer on screen.

当前为 2025-09-11 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Auto Reload Claimer
// @version      1.9
// @description  Automatically claims Stake.com reloads, handles errors without getting stuck, and displays a countdown timer on screen.
// @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-end
// @namespace http://greasyfork.icu/users/1514052
// ==/UserScript==

(function() {
    'use strict';

    const TARGET_URL = 'https://' + window.location.hostname + '/?tab=rewards&modal=claimReload';
    const CLAIM_WAIT_TIME = 10 * 60;
    const ERROR_RETRY_WAIT_TIME = 10 * 1000;
    const REDIRECT_WAIT_TIME = 30 * 1000;

    let hasClicked = false;
    let countdownInterval;

    function createTimerDisplay() {
        const timerDiv = document.createElement('div');
        timerDiv.id = 'auto-reload-claimer-timer';
        timerDiv.style.position = 'fixed';
        timerDiv.style.bottom = '20px';
        timerDiv.style.right = '20px';
        timerDiv.style.backgroundColor = 'rgba(0, 0, 0, 0.6)';
        timerDiv.style.color = '#fff';
        timerDiv.style.padding = '10px 15px';
        timerDiv.style.borderRadius = '5px';
        timerDiv.style.zIndex = '9999';
        timerDiv.style.fontSize = '1.2rem';
        timerDiv.style.display = 'none';
        document.body.appendChild(timerDiv);
    }

    function startCountdown() {
        let timeLeft = CLAIM_WAIT_TIME;

        const timerDisplay = document.getElementById('auto-reload-claimer-timer');
        if (!timerDisplay) return;

        timerDisplay.style.display = 'block';

        countdownInterval = setInterval(() => {
            const minutes = Math.floor(timeLeft / 60);
            const seconds = timeLeft % 60;
            const displayMinutes = String(minutes).padStart(2, '0');
            const displaySeconds = String(seconds).padStart(2, '0');
            timerDisplay.textContent = ` ${displayMinutes}:${displaySeconds}`;

            if (timeLeft <= 0) {
                clearInterval(countdownInterval);
                reloadPage();
            }
            timeLeft--;
        }, 1000);
    }

    function init() {
        createTimerDisplay();

        if (window.location.href !== TARGET_URL) {
            setTimeout(() => {
                window.location.href = TARGET_URL;
            }, REDIRECT_WAIT_TIME);
        } else {
            findAndClickButton();
        }
    }

    function findAndClickButton() {
        if (hasClicked) {
            return;
        }

        const claimButton = document.querySelector('button[data-testid="claim-reload"]');
        if (claimButton) {
            hasClicked = true;
            claimButton.click();
            waitForCompletionButton();
        } else {
            checkForErrorModal();
        }
    }

    function checkForErrorModal() {
        const modalTitle = Array.from(document.querySelectorAll('h2')).find(el => el.textContent.includes('Reload Unavailable'));

        if (modalTitle) {
             setTimeout(reloadPage, ERROR_RETRY_WAIT_TIME);
        } else {
            setTimeout(findAndClickButton, 1000);
        }
    }

    function waitForCompletionButton() {
        const completionButton = document.querySelector('button[data-testid="claim-reward-done"]');
        if (completionButton) {
            startCountdown();
        } else {
            setTimeout(waitForCompletionButton, 1000);
        }
    }

    function reloadPage() {
        window.location.reload();
    }

    window.addEventListener('load', init);
})();