Fake bot

auto send fake

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

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

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name         Fake bot
// @version      1.7
// @include      https://*/game.php*screen=place*
// @namespace https://greasyfork.org/users/1388863
// @description auto send fake
// ==/UserScript==

(function() {
    'use strict';

    // Create Start/Stop button
    const startStopButton = document.createElement('button');
    startStopButton.textContent = 'Start';
    startStopButton.style.position = 'fixed';
    startStopButton.style.bottom = '20px';
    startStopButton.style.right = '20px';
    startStopButton.style.padding = '10px 20px';
    startStopButton.style.fontSize = '16px';
    startStopButton.style.backgroundColor = '#4CAF50';
    startStopButton.style.color = 'white';
    startStopButton.style.border = 'none';
    startStopButton.style.borderRadius = '5px';
    startStopButton.style.cursor = 'pointer';
    startStopButton.style.zIndex = '9999';
    document.body.appendChild(startStopButton);

    // Create Loop Count button (for setting the number of loops)
    const loopButton = document.createElement('button');
    loopButton.textContent = 'Set Loops';
    loopButton.style.position = 'fixed';
    loopButton.style.bottom = '20px';
    loopButton.style.right = '120px'; // Adjusted position for spacing
    loopButton.style.padding = '10px 20px';
    loopButton.style.fontSize = '16px';
    loopButton.style.backgroundColor = '#FF9800';
    loopButton.style.color = 'white';
    loopButton.style.border = 'none';
    loopButton.style.borderRadius = '5px';
    loopButton.style.cursor = 'pointer';
    loopButton.style.zIndex = '9999';
    document.body.appendChild(loopButton);

    // Create remaining loop counter display
    const loopCounterDisplay = document.createElement('div');
    loopCounterDisplay.style.position = 'fixed';
    loopCounterDisplay.style.bottom = '70px';
    loopCounterDisplay.style.right = '20px';
    loopCounterDisplay.style.fontSize = '18px';
    loopCounterDisplay.style.color = 'white';
    loopCounterDisplay.style.zIndex = '9999';
    loopCounterDisplay.textContent = 'Remaining Loops: 0';
    document.body.appendChild(loopCounterDisplay);

    // Retrieve the last state from localStorage (Start or Stop)
    let isRunning = localStorage.getItem('botState') === 'running';
    let remainingLoops = parseFloat(localStorage.getItem('remainingLoops'), 10) || 0;
    let loops = parseInt(localStorage.getItem('loops'), 10) || 0;

    // Set initial button and loop counter state based on localStorage
    startStopButton.textContent = isRunning ? 'Stop' : 'Start';
    loopCounterDisplay.textContent = `Remaining Loops: ${remainingLoops}`;

    // If bot is running, start it automatically when the page loads
    if (isRunning) {
        startBot();
    }

    // Function to toggle the script on/off
    startStopButton.addEventListener('click', () => {
        if (isRunning) {
            stopBot();
        } else {
            startBot();
        }
    });

    // Loop button click event to set the number of loops
    loopButton.addEventListener('click', () => {
        const loopsInput = parseInt(prompt("Enter the number of loops to run:", remainingLoops), 10);
        if (!isNaN(loopsInput) && loopsInput > 0) {
            remainingLoops = loopsInput; // Double the entered loops * 2
            // loops = loopsInput;
            localStorage.setItem('remainingLoops', remainingLoops);
            // localStorage.setItem('loops', loops);
            loopCounterDisplay.textContent = `Remaining Loops: ${remainingLoops}`;
            console.log(`Set loops to: ${remainingLoops}`);
        }
    });

    function startBot() {
        // Set the bot as running in localStorage
        isRunning = true;
        localStorage.setItem('botState', 'running');
        startStopButton.textContent = 'Stop';
        console.log("Bot started");

        // Start the loop process
        loopCounterDisplay.textContent = `Remaining Loops: ${remainingLoops}`;
        runBotLoop();
    }

    function stopBot() {
        // Set the bot as stopped in localStorage
        isRunning = false;
        localStorage.setItem('botState', 'stopped');
        startStopButton.textContent = 'Start';
        console.log("Bot stopped");
    }

    function runBotLoop() {
        if (remainingLoops > 0) {
            // Dispatch '0' key event unless URL contains &screen=place&try=confirm
            if (!window.location.href.includes("&screen=place&try=confirm")) {
                setTimeout(() => {
                    // Simulate pressing the '0' key
                    document.dispatchEvent(new KeyboardEvent('keydown', {
                        key: '0', code: 'Digit0', keyCode: 48, which: 48, bubbles: true
                    }));
                    console.log("Key '0' pressed.");

                    // Wait 500ms - 1 second, then click the 'target_attack' element
                    setTimeout(() => {
                        const attackButton = document.getElementById("target_attack");
                        if (attackButton) {
                            attackButton.click();
                            console.log("Clicked target_attack button.");
                        } else {
                            console.log("Button with ID 'target_attack' not found.");
                        }
                    }, 2000 + Math.random() * 1000); // Random delay between 500-1000ms
                }, 500 + Math.random() * 1000); // Random delay between 100-250ms
            }

            // Handle URL-specific actions
            setTimeout(() => {
                const url = window.location.href;
                if (url.includes("&screen=place&try=confirm")) {
                    console.log("Detected &screen=place&try=confirm");
                    setTimeout(() => clickButton('#troop_confirm_submit', Math.random() * 300 + 500), 100);
                    remainingLoops -= 1;
                    loops -= 1;
                    localStorage.setItem('remainingLoops', remainingLoops);
                    localStorage.setItem('loops', loops);
                    loopCounterDisplay.textContent = `Remaining Loops: ${remainingLoops.toFixed(1)}`;
                    console.log("Sent confirmation");
                } else {
                    console.log("No matching URL condition");
                    checkTroopCount(() => {
                        console.log("Troop count sufficient. Proceeding...");
                        clickButton('#target_attack', Math.random() * 500 + 800);
                    });
                }

                // Continue the loop if there are remaining loops
                if (remainingLoops > 0) {
                    runBotLoop();
                } else {
                    stopBot(); // Stop the bot if no loops are left
                }
            }, 1000 + Math.random() * 1000);
        }
    }

    // Function to check troop count
    function checkTroopCount(callback) {
        setTimeout(() => {
            const RAM = document.getElementById('unit_input_ram');
            if (RAM && parseInt(RAM.value, 10) > 0) {
                callback();
            } else {
                setTimeout(() => checkTroopCount(callback), 200);
            }
        }, 100 + Math.random() * 100);
    }

    // Function to click a button after a delay
    function clickButton(selector, delay) {
        const button = document.querySelector(selector);
        if (button) {
            setTimeout(() => button.click(), delay);
            console.log(`Button clicked after ${delay}ms`);
        } else {
            console.log("Button not found!");
        }
    }

})();