Autofarm2

Farmgod and send attack automatically at Loot Assistant at random intervals

当前为 2024-11-13 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Autofarm2
// @version      3
// @include      https://*/game.php*screen=am_farm*
// @namespace https://greasyfork.org/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);

})();