Z-AE

Made for the Auto-E server

// ==UserScript==
// @name         Z-AE
// @namespace    http://tampermonkey.net/
// @version      1
// @description  Made for the Auto-E server
// @author       zeta
// @match        *://dynast.io/*
// @match        *://nightly.dynast.cloud/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=dynast.io
// @grant        none
// @run-at       document-start
// @license      MIT
// ==/UserScript==

(function() {
    window.autoEKey = "q";
    window.useRightClick = true;
    window.MaxEPerSecond = 0;

    let intervalId = null;
    let scriptEnabled = false;
    let body = document.body;
    let wasmModule = null;
    let wasmInstance = null;

    // Функция для эмуляции нажатия клавиши
    function pressKey(key) {
        const eventProps = { key: key, keyCode: key.charCodeAt(0), code: `Key${key.toUpperCase()}` };
        let keyIsDown = new KeyboardEvent('keydown', eventProps);
        let keyIsUp = new KeyboardEvent('keyup', eventProps);
        window.dispatchEvent(keyIsDown);
        window.dispatchEvent(keyIsUp);
    }

    // Загрузка и инициализация WebAssembly модуля
    async function loadWasmModule() {
        try {
            const response = await fetch('URL_TO_YOUR_MODULE.wasm'); // Замените на URL вашего .wasm файла
            const buffer = await response.arrayBuffer();
            const module = await WebAssembly.compile(buffer);
            wasmModule = module;
            wasmInstance = await WebAssembly.instantiate(module);
            console.log('WASM module loaded and instantiated');
        } catch (e) {
            console.error('Failed to load WASM module:', e);
        }
    }

    // Пример функции для взаимодействия с WASM
    function wasmExampleFunction() {
        if (wasmInstance && wasmInstance.exports) {
            const result = wasmInstance.exports.exampleFunction(); // Предположим, у вас есть функция `exampleFunction` в WASM
            console.log('WASM function result:', result);
        }
    }

    // Обработка правой кнопки мыши
    function handleRightClickHold() {
        document.addEventListener('mousedown', function(event) {
            if (event.button === 2 && scriptEnabled) {
                event.preventDefault();
                if (!intervalId) {
                    pressKey('e');
                    intervalId = setInterval(() => pressKey('e'), window.MaxEPerSecond);
                }
            }
        });

        document.addEventListener('mouseup', function(event) {
            if (event.button === 2) {
                clearInterval(intervalId);
                intervalId = null;
            }
        });
    }

    // Обработка нажатия клавиши
    function handleAutoEKey() {
        let autoEKey = window.autoEKey;
        document.addEventListener('keydown', function(event) {
            if (event.key === autoEKey && !intervalId && scriptEnabled) {
                pressKey('e');
                intervalId = setInterval(() => pressKey('e'), window.MaxEPerSecond);
            }
        });

        document.addEventListener('keyup', function(event) {
            if (event.key === autoEKey) {
                clearInterval(intervalId);
                intervalId = null;
            }
        });
    }

    // Перезагрузка скрипта
    function handleReloadKey() {
        document.addEventListener('keydown', function(event) {
            if (event.key === 'r' || event.key === 'R') {
                loadScript();
            }
        });
    }

    // Динамическая загрузка скрипта
    function loadScript() {
        if (window.currentScript) {
            body.removeChild(window.currentScript);
        }

        let script = document.createElement('script');
        script.src = 'URL_TO_YOUR_SCRIPT.js'; // Замените на URL вашего скрипта
        script.onload = function() {
            console.log('Script reloaded');
        };

        window.currentScript = script;

        body.appendChild(script);
    }

    // Создание мини-консоли
    function createConsole() {
        let consoleDiv = document.createElement('div');
        consoleDiv.style = `
            position: fixed; bottom: 10px; right: 10px; padding: 15px 20px;
            background-color: rgba(0, 0, 0, 0.85); color: white; z-index: 1000;
            border-radius: 10px; font-size: 16px; font-weight: bold;
            box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.5); cursor: move;
            text-align: center; border: 2px solid #00FF00;
            text-shadow: 0 0 5px #00FF00, 0 0 10px #00FF00, 0 0 20px #00FF00;
        `;

        let toggleButton = document.createElement('button');
        toggleButton.innerText = 'Enable Script';
        toggleButton.style = `
            margin-bottom: 10px; padding: 10px; background-color: #00FF00;
            color: black; border: none; border-radius: 5px; cursor: pointer;
            font-weight: bold; box-shadow: 0 0 10px #00FF00;
        `;

        toggleButton.addEventListener('click', function() {
            scriptEnabled = !scriptEnabled;
            toggleButton.innerText = scriptEnabled ? 'Disable Script' : 'Enable Script';
            toggleButton.style.boxShadow = scriptEnabled ? 'none' : '0 0 10px #00FF00';
            toggleButton.style.backgroundColor = scriptEnabled ? '#00FF00' : '#222';
            toggleButton.style.color = scriptEnabled ? 'black' : '#00FF00';
        });

        consoleDiv.appendChild(toggleButton);
        body.appendChild(consoleDiv);

        let isDragging = false;
        let offsetX, offsetY;

        consoleDiv.addEventListener('mousedown', function(event) {
            if (event.target === toggleButton) return;
            isDragging = true;
            offsetX = event.clientX - consoleDiv.getBoundingClientRect().left;
            offsetY = event.clientY - consoleDiv.getBoundingClientRect().top;
            consoleDiv.style.cursor = 'grabbing';
        });

        document.addEventListener('mousemove', function(event) {
            if (isDragging) {
                consoleDiv.style.left = (event.clientX - offsetX) + 'px';
                consoleDiv.style.top = (event.clientY - offsetY) + 'px';
                consoleDiv.style.bottom = 'auto';
                consoleDiv.style.right = 'auto';
            }
        });

        document.addEventListener('mouseup', function() {
            if (isDragging) {
                isDragging = false;
                consoleDiv.style.cursor = 'move';
            }
        });
    }

    // Периодическое нажатие клавиши 'r'
    function pressRPeriodically() {
        setInterval(() => pressKey('r'), 100);
    }

    // Запуск функций
    createConsole();
    loadWasmModule();

    if (window.useRightClick) {
        handleRightClickHold();
    } else {
        handleAutoEKey();
    }

    handleReloadKey();
    pressRPeriodically();
})();