Autofarm2

Farmgod and send attack automatically at Loot Assistant at random intervals

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

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 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);

})();