Moonwalker

Join us! - https://discord.gg/3xDbJ8QD8f

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey, Greasemonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

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

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

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

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्क्रिप्ट व्यवस्थापक एक्स्टेंशन इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्क्रिप्ट व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्टाईल व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

// ==UserScript==
// @name          Moonwalker
// @namespace     http://tampermonkey.net/
// @version       1.2.1
// @description   Join us! - https://discord.gg/3xDbJ8QD8f
// @author        GoBattle Hacks Official
// @match         *://gobattle.io/*
// @match         *://*.gobattle.io/*
// @grant         none
// @license       MIT
// ==/UserScript==

(function() {
    'use strict';

    const RIGHT_ARROW_TRIGGER_KEY = "=";
    const LEFT_ARROW_TRIGGER_KEY = "-";
    const PRESS_FREQUENCY = 20;

    const RIGHT_ARROW_TARGET_KEY = "ArrowRight";
    const LEFT_ARROW_TARGET_KEY = "ArrowLeft";

    let textfield = null;
    let activeIntervalId = null;
    let activeDirection = null;

    window.addEventListener('load', () => {
        textfield = document.getElementById("shinobit-textfield");
    });

    function stopActivePress() {
        if (activeIntervalId) {
            clearInterval(activeIntervalId);
            activeIntervalId = null;
        }
        activeDirection = null;
    }

    function startPressingKey(targetKey, direction) {
        stopActivePress();

        pressKey(targetKey);
        activeIntervalId = setInterval(() => pressKey(targetKey), PRESS_FREQUENCY);
        activeDirection = direction;
    }

    document.addEventListener("keydown", event => {
        const isTypingInChat = textfield ? textfield === document.activeElement : false;

        if (isTypingInChat) {
            return;
        }

        if (event.key === RIGHT_ARROW_TRIGGER_KEY) {
            event.preventDefault();
            if (activeDirection === 'right') {
                stopActivePress();
            } else {
                startPressingKey(RIGHT_ARROW_TARGET_KEY, 'right');
            }
        } else if (event.key === LEFT_ARROW_TRIGGER_KEY) {
            event.preventDefault();
            if (activeDirection === 'left') {
                stopActivePress();
            } else {
                startPressingKey(LEFT_ARROW_TARGET_KEY, 'left');
            }
        }
    });

    function pressKey(key) {
        let keyCode, which, code;

        switch (key) {
            case "ArrowRight":
                keyCode = 39;
                which = 39;
                code = "ArrowRight";
                break;
            case "ArrowLeft":
                keyCode = 37;
                which = 37;
                code = "ArrowLeft";
                break;
            default:
                console.warn(`Unsupported key: ${key}`);
                return;
        }

        const event_props = {
            "key": key,
            "keyCode": keyCode,
            "which": which,
            "code": code,
            "location": 0,
            "altKey": false,
            "ctrlKey": false,
            "metaKey": false,
            "shiftKey": false,
            "repeat": false
        };

        document.dispatchEvent(new KeyboardEvent("keydown", event_props));
        document.dispatchEvent(new KeyboardEvent("keyup", event_props));
    }
})();