Auto Minting Coin (Pc + Mobile)

Minting automatically at the academy at random intervals

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Auto Minting Coin (Pc + Mobile)
// @version      1.6
// @description  Minting automatically at the academy at random intervals
// @include      https://*/game.php*screen=snob*
// @namespace    https://greasyfork.org/users/1388863
// ==/UserScript==

(function() {
    'use strict';

    function getVillageId() {
        const match = window.location.href.match(/village=(\d+)/);
        return match ? match[1] : null;
    }

    const villageId = getVillageId();
    if (!villageId) {
        console.error('Village ID not found in URL.');
        return; // Stop execution if no villageId is found
    }

    let countdownInterval;
    let isMinting = JSON.parse(localStorage.getItem(`isMinting${villageId}`)) ?? false;
    let countdownTime;
    let minInterval = parseInt(localStorage.getItem('minInterval')) || 300; // Default 5 minutes
    let maxInterval = parseInt(localStorage.getItem('maxInterval')) || 720; // Default 12 minutes

    function saveState() {
        localStorage.setItem(`isMinting${villageId}`, JSON.stringify(isMinting));
    }

    function saveIntervals() {
        localStorage.setItem('minInterval', minInterval);
        localStorage.setItem('maxInterval', maxInterval);
    }

    function initializeUI() {
        const container = document.createElement('div');
        container.style.position = 'fixed';
        container.style.bottom = '20px';
        container.style.right = '20px';
        container.style.backgroundColor = '#333';
        container.style.color = '#fff';
        container.style.padding = '10px';
        container.style.borderRadius = '5px';
        container.style.zIndex = 10000;

        const countdownElement = document.createElement('div');
        countdownElement.id = 'countdown-timer';
        countdownElement.style.marginBottom = '10px';
        container.appendChild(countdownElement);

        const toggleButton = document.createElement('button');
        toggleButton.textContent = isMinting ? 'Stop Minting' : 'Start Minting';
        toggleButton.style.padding = '5px 10px';
        toggleButton.style.marginRight = '5px';
        toggleButton.style.border = 'none';
        toggleButton.style.borderRadius = '3px';
        toggleButton.style.cursor = 'pointer';
        toggleButton.style.backgroundColor = isMinting ? '#FF0000' : '#4CAF50';
        toggleButton.style.color = '#fff';

        toggleButton.addEventListener('click', () => {
            isMinting = !isMinting;
            toggleButton.textContent = isMinting ? 'Stop Minting' : 'Start Minting';
            toggleButton.style.backgroundColor = isMinting ? '#FF0000' : '#4CAF50';
            saveState();

            if (isMinting) {
                mintCoins();
                startCountdown();
            } else {
                stopCountdown();
            }
        });

        container.appendChild(toggleButton);

        const settingsButton = document.createElement('button');
        settingsButton.textContent = 'Settings';
        settingsButton.style.padding = '5px 10px';
        settingsButton.style.border = 'none';
        settingsButton.style.borderRadius = '3px';
        settingsButton.style.cursor = 'pointer';
        settingsButton.style.backgroundColor = '#28a745';
        settingsButton.style.color = '#fff';

        settingsButton.addEventListener('click', () => {
            const newMin = parseInt(prompt('Set minimum interval (seconds):', minInterval));
            const newMax = parseInt(prompt('Set maximum interval (seconds):', maxInterval));

            if (!isNaN(newMin) && !isNaN(newMax) && newMin > 0 && newMax > newMin) {
                minInterval = newMin;
                maxInterval = newMax;
                saveIntervals();
                alert(`Intervals updated! Min: ${minInterval}s, Max: ${maxInterval}s`);
            } else {
                alert('Invalid input. Please enter valid intervals.');
            }
        });

        container.appendChild(settingsButton);

        document.body.appendChild(container);
    }

    function mintCoins() {
        const maxCoinElement = document.getElementById('coin_mint_fill_max');
        const maxCoinValue = maxCoinElement ? parseInt(maxCoinElement.textContent.match(/\((\d+)\)/)?.[1], 10) : null;

        if (maxCoinValue !== null) {
            document.getElementById('coin_mint_count').value = maxCoinValue;

            const mintButton = document.querySelector("input[type='submit'][value='Mint']");
            if (mintButton) {
                mintButton.click();
                console.log('Tombol "Mint" diklik dengan nilai:', maxCoinValue);
            } else {
                console.log('Tombol "Mint" tidak ditemukan.');
            }
        } else {
            console.log('Tidak dapat menemukan nilai maksimum.');
        }
    }

    function startCountdown() {
        const countdownElement = document.getElementById('countdown-timer');
        countdownTime = Math.floor(Math.random() * (maxInterval - minInterval + 1)) + minInterval;

        countdownInterval = setInterval(() => {
            countdownTime--;
            const minutes = Math.floor(countdownTime / 60);
            const seconds = countdownTime % 60;
            countdownElement.textContent = `Next mint in: ${minutes}m ${seconds}s`;

            if (countdownTime <= 0) {
                clearInterval(countdownInterval);
                location.reload();
            }
        }, 1000);
    }

    function stopCountdown() {
        clearInterval(countdownInterval);
        const countdownElement = document.getElementById('countdown-timer');
        if (countdownElement) countdownElement.textContent = '';
    }

    initializeUI();

    if (isMinting) {
        const initialDelay = Math.floor(Math.random() * (5000 - 3000 + 1)) + 3000;
        setTimeout(() => {
            mintCoins();
            startCountdown();
        }, initialDelay);
    }
})();