Sun vs Moon Auto Click (Switchable)

Automatically clicks either the Sun or Moon Button on pressing "S" and Stops Clicking on pressing "M" on https://neal.fun/sun-vs-moon/

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name         Sun vs Moon Auto Click (Switchable)
// @namespace    http://tampermonkey.net/
// @version      3.3.2Beta
// @description  Automatically clicks either the Sun or Moon Button on pressing "S" and Stops Clicking on pressing "M" on https://neal.fun/sun-vs-moon/
// @author       Lav1nRulez
// @match        https://neal.fun/sun-vs-moon/
// @grant        none
// @icon         https://i.ibb.co/QXR89nv/2024-11-03-0z1-Kleki.png
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    let clickInterval; // Variable to store the interval ID
    let targetButtonId = "sun-btn"; // Default to "Sun" button

    // Function to display on-screen messages with color customization
    function showMessage(text, color) {
        let messageDiv = document.getElementById("autoclicker-message");
        if (!messageDiv) {
            messageDiv = document.createElement("div");
            messageDiv.id = "autoclicker-message";
            messageDiv.style.position = "fixed";
            messageDiv.style.bottom = "20px";
            messageDiv.style.right = "20px";
            messageDiv.style.padding = "10px 20px";
            messageDiv.style.color = "white";
            messageDiv.style.fontSize = "16px";
            messageDiv.style.borderRadius = "5px";
            messageDiv.style.zIndex = "1000";
            document.body.appendChild(messageDiv);
        }

        // Set the text, background color, and display the message
        messageDiv.textContent = text;
        messageDiv.style.backgroundColor = color;
        messageDiv.style.display = "block";

        // Hide the message after 2 seconds
        setTimeout(() => {
            messageDiv.style.display = "none";
        }, 2000);
    }

    // Function to toggle the target button between "sun-btn" and "moon-btn"
    function toggleTargetButton() {
        targetButtonId = targetButtonId === "sun-btn" ? "moon-btn" : "sun-btn";
        toggleButton.textContent = `Switch to ${targetButtonId === "sun-btn" ? "Moon Clicker" : "Sun Clicker"}`;

        // Show message with orange for Sun and blue for Moon
        const targetColor = targetButtonId === "sun-btn" ? "orange" : "blue";
        showMessage(`Now targeting ${targetButtonId === "sun-btn" ? "Sun" : "Moon"}`, targetColor);
    }

    // Add a toggle button at the top-right corner
    let toggleButton = document.createElement("button");
    toggleButton.id = "toggle-button";
    toggleButton.textContent = "Switch to Moon Clicker";
    toggleButton.style.position = "fixed";
    toggleButton.style.top = "10px";
    toggleButton.style.right = "10px";
    toggleButton.style.padding = "10px 15px";
    toggleButton.style.backgroundColor = "#333";
    toggleButton.style.color = "white";
    toggleButton.style.fontSize = "14px";
    toggleButton.style.border = "none";
    toggleButton.style.borderRadius = "5px";
    toggleButton.style.cursor = "pointer";
    toggleButton.style.zIndex = "1000";
    toggleButton.addEventListener("click", toggleTargetButton);
    document.body.appendChild(toggleButton);

    // Add a persistent label at the bottom-left corner with author name
    function addAuthorLabel() {
        let authorLabel = document.getElementById("author-label");
        if (!authorLabel) {
            authorLabel = document.createElement("div");
            authorLabel.id = "author-label";
            authorLabel.textContent = "Made by Lav1nRulez";
            authorLabel.style.position = "fixed";
            authorLabel.style.bottom = "10px";
            authorLabel.style.left = "10px";
            authorLabel.style.padding = "5px 10px";
            authorLabel.style.backgroundColor = "rgba(0, 0, 0, 0.7)";
            authorLabel.style.color = "white";
            authorLabel.style.fontSize = "12px";
            authorLabel.style.borderRadius = "5px"; // Rounded box shape
            authorLabel.style.zIndex = "1000";
            document.body.appendChild(authorLabel);
        }
    }

    // Add the question mark button next to the author label
    function addQuestionMarkButton() {
        let questionButton = document.createElement("button");
        questionButton.id = "question-mark-button";
        questionButton.textContent = "?";
        questionButton.style.position = "fixed";
        questionButton.style.bottom = "10px";
        questionButton.style.left = "140px"; // Position it beside the author label
        questionButton.style.padding = "5px 10px"; // Adjust padding to be smaller
        questionButton.style.backgroundColor = "#333";
        questionButton.style.color = "white";
        questionButton.style.fontSize = "14px"; // Reduced font size
        questionButton.style.border = "none";
        questionButton.style.borderRadius = "10px"; // Rounded corners (same as modal box)
        questionButton.style.cursor = "pointer";
        questionButton.style.zIndex = "1000";
        questionButton.addEventListener("click", showRulesModal);
        document.body.appendChild(questionButton);
    }

    // Modal to display rules
    function showRulesModal() {
        // Check if the modal already exists, if not, create it
        let modal = document.getElementById("rules-modal");
        if (!modal) {
            modal = document.createElement("div");
            modal.id = "rules-modal";
            modal.style.position = "fixed";
            modal.style.top = "50%";
            modal.style.left = "50%";
            modal.style.transform = "translate(-50%, -50%)";
            modal.style.backgroundColor = "rgba(0, 0, 0, 0.8)";
            modal.style.color = "white";
            modal.style.padding = "20px";
            modal.style.borderRadius = "10px"; // Rounded corners
            modal.style.zIndex = "1001";
            modal.style.maxWidth = "400px";
            modal.style.width = "80%";
            modal.style.textAlign = "center";

            // Modal content
            modal.innerHTML = `
                <h2>Rules</h2>
                <ul style="list-style-type: none; padding: 0; margin: 0;">
                    <li style="margin-bottom: 10px;">Do not click "S" too many times, your website may crash.</li>
                    <li style="margin-bottom: 10px;">Press "S" to start the autoclicker and "M" to stop it.</li>
                </ul>
                <button id="close-modal" style="background-color: red; color: white; border: none; padding: 5px 10px; border-radius: 50%; position: absolute; top: 10px; right: 10px; cursor: pointer;">X</button>
            `;

            // Add close button functionality
            modal.querySelector("#close-modal").addEventListener("click", function() {
                document.body.removeChild(modal);
            });

            // Append modal to the body
            document.body.appendChild(modal);
        }
    }

    // Run the author label function to display it immediately
    addAuthorLabel();
    addQuestionMarkButton();

    // Add event listener for keydown events
    document.addEventListener('keydown', function(event) {
        if (event.key === 'S' || event.key === 's') {
            if (!clickInterval) {
                clickInterval = setInterval(() => {
                    const targetButton = document.getElementById(targetButtonId);
                    if (targetButton) {
                        targetButton.click();
                    }
                }, 1); // 1 millisecond interval
                showMessage("Autoclicker Started", "green"); // Green for start
            }
        } else if (event.key === 'M' || event.key === 'm') {
            if (clickInterval) {
                clearInterval(clickInterval);
                clickInterval = null;
                showMessage("Autoclicker Stopped", "red"); // Red for stop
            }
        }
    });
})();