Autofarm2

Farmgod and send attack automatically at Loot Assistant at random intervals

目前為 2024-11-13 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Autofarm2
// @version      3
// @include      https://*/game.php*screen=am_farm*
// @namespace https://gf.qytechs.cn/users/1388863
// @description Farmgod and send attack automatically at Loot Assistant at random intervals
// ==/UserScript==

(function () {
    'use strict';

    // Create toggle button
    let button = document.createElement("button");
    button.innerText = "Stop";
    button.style.position = "fixed";
    button.style.bottom = "40px";
    button.style.left = "20px";
    button.style.padding = "8px 15px";
    button.style.fontSize = "14px";
    button.style.zIndex = "1000";
    button.style.backgroundColor = "#4CAF50";
    button.style.color = "white";
    button.style.border = "none";
    button.style.borderRadius = "5px";
    button.style.cursor = "pointer";
    document.body.appendChild(button);

    // Create countdown box
    let countdownPopup = document.createElement("div");
    countdownPopup.style.position = "fixed";
    countdownPopup.style.bottom = "75px";
    countdownPopup.style.left = "20px";
    countdownPopup.style.padding = "8px 15px";
    countdownPopup.style.fontSize = "14px";
    countdownPopup.style.zIndex = "1000";
    countdownPopup.style.backgroundColor = "#333";
    countdownPopup.style.color = "white";
    countdownPopup.style.borderRadius = "5px";
    countdownPopup.style.display = "none"; // Initially hidden
    document.body.appendChild(countdownPopup);

    // Settings button
    const settingsBtn = document.createElement('button');
    settingsBtn.innerText = 'Settings';
    settingsBtn.style.position = 'fixed';
    settingsBtn.style.bottom = '110px';
    settingsBtn.style.left = '20px';
    settingsBtn.style.zIndex = '1000';
    settingsBtn.style.backgroundColor = '#555';
    settingsBtn.style.color = 'white';
    settingsBtn.style.border = 'none';
    settingsBtn.style.borderRadius = '5px';
    settingsBtn.style.cursor = 'pointer';
    document.body.appendChild(settingsBtn);

    // Settings popup
    const settingsPopup = document.createElement('div');
    settingsPopup.style.display = 'none';
    settingsPopup.style.position = 'fixed';
    settingsPopup.style.bottom = '150px';
    settingsPopup.style.left = '20px';
    settingsPopup.style.backgroundColor = '#f9f9f9';
    settingsPopup.style.padding = '20px';
    settingsPopup.style.border = '1px solid #ddd';
    settingsPopup.style.zIndex = '1000';
    settingsPopup.innerHTML = `
        <label>Chat ID: <input type="text" id="chatIdInput" value="${localStorage.getItem('telegramChatId') || '1817608753'}"></label><br><br>
        <button id="saveSettingsBtn">Save Settings</button><br><br>
    `;
    document.body.appendChild(settingsPopup);

    // Toggle settings popup
    settingsBtn.addEventListener('click', () => {
        settingsPopup.style.display = settingsPopup.style.display === 'none' ? 'block' : 'none';
    });

    // Save settings
    document.getElementById('saveSettingsBtn').addEventListener('click', () => {
        const chatId = document.getElementById('chatIdInput').value;
        localStorage.setItem('telegramChatId', chatId);
        settingsPopup.style.display = 'none';
        alert("Settings saved successfully!");
    });

    let isRunning = true;
    let intervalId;
    let countdownInterval;
    let lastCaptchaTime = 0;
    let captchaDetected = false;

    // Telegram bot API token and function
    const botToken = "YOUR_BOT_TOKEN";
    function sendToTelegram(message) {
        const chatId = localStorage.getItem('telegramChatId') || '1817608753';
        const url = `https://api.telegram.org/bot${botToken}/sendMessage?chat_id=${chatId}&text=${encodeURIComponent(message)}`;
        fetch(url)
            .then(response => {
                if (!response.ok) {
                    console.error("Failed to send message to Telegram:", response.statusText);
                } else {
                    console.log("Message sent to Telegram:", message);
                }
            })
            .catch(error => console.error("Telegram API error:", error));
    }

    // Functions
    function randomDelay(min, max) {
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }

    function pressEnterRandomly() {
        const delay = randomDelay(200, 250);
        document.dispatchEvent(new KeyboardEvent('keydown', {
            key: 'Enter',
            code: 'Enter',
            which: 13,
            keyCode: 13,
            bubbles: true
        }));
        intervalId = setTimeout(pressEnterRandomly, delay);
    }

    function loadFarmGodScript() {
        $.getScript('https://higamy.github.io/TW/Scripts/Approved/FarmGodCopy.js')
            .done(function (script, textStatus) {
                console.log('Script loaded successfully:', textStatus);
            })
            .fail(function (jqxhr, settings, exception) {
                console.error('Error loading script:', exception);
            });
    }

    function clickOptionButton(retries = 3) {
        let button = document.querySelector('input.btn.optionButton[value="Plan farms"]');
        if (button) {
            button.click();
            console.log("Button 'Plan farms' clicked");
        } else {
            console.log("Button 'Plan farms' not found");
            if (retries > 0) {
                console.log("Retrying...");
                setTimeout(function () {
                    clickOptionButton(retries - 1);
                }, randomDelay(2000, 4000));
            }
        }
    }

    function startProcess() {
        setTimeout(() => { // Delay before loading FarmGod script
            loadFarmGodScript();
            setTimeout(() => {
                clickOptionButton();
                setTimeout(() => {
                    pressEnterRandomly();
                    startCountdown(); // Start countdown after initial process setup
                }, randomDelay(1000, 5000)); // Step 3 to 4 delay
            }, randomDelay(1000, 5000)); // Step 2 to 3 delay
        }, randomDelay(1000, 5000)); // Initial delay before loading script
    }

    function stopProcess() {
        clearTimeout(intervalId);
        clearInterval(countdownInterval);
        button.innerText = "Start";
        countdownPopup.style.display = "none"; // Hide countdown popup
        isRunning = false;
    }

    function toggleProcess() {
        if (isRunning) {
            stopProcess();
        } else if (!captchaDetected) { // Only start if CAPTCHA not detected
            startProcess();
            button.innerText = "Stop";
            isRunning = true;
        }
    }

    function startCountdown() {
        let timeLeft = randomDelay(300, 600); // 10 to 15 minutes in seconds
        countdownPopup.style.display = "block"; // Show countdown popup
        countdownInterval = setInterval(() => {
            if (timeLeft <= 0) {
                clearInterval(countdownInterval);
                countdownPopup.style.display = "none"; // Hide countdown popup before reload
                location.reload(); // Only reload after the countdown completes
            } else {
                countdownPopup.innerText = `Next loop in: ${Math.floor(timeLeft / 60)}m ${timeLeft % 60}s`;
                timeLeft--;
            }
        }, 1000);
    }

    // CAPTCHA detection
    function checkCaptcha() {
        const captchaIframe = document.querySelector('iframe[src*="hcaptcha"]');
        const currentTime = Date.now();

        if (captchaIframe && !captchaDetected) {
            console.log("CAPTCHA detected");
            captchaDetected = true;
            stopProcess(); // Stop all other processes
            sendToTelegram("CAPTCHA detected. All processes have been stopped.");
        } else if (!captchaIframe && captchaDetected) {
            // If CAPTCHA is resolved
            captchaDetected = false;
            console.log("CAPTCHA resolved");
            sendToTelegram("CAPTCHA resolved. You can start the process again.");
        }
    }

    // Initial Process Start
    startProcess();

    // Toggle Button Event
    button.addEventListener("click", toggleProcess);

    // Check CAPTCHA every second
    setInterval(checkCaptcha, 1000);

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址