Gartic.io Anonim Menu

press F2 to open and close the menu

目前为 2023-12-21 提交的版本。查看 最新版本

// ==UserScript==
// @name         Gartic.io Anonim Menu
// @namespace    https://gf.qytechs.cn/
// @version      2023-12-21
// @description  press F2 to open and close the menu
// @author       anonimbiri
// @match        https://gartic.io/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=gartic.io
// @require      https://update.gf.qytechs.cn/scripts/482771/1299581/Malayala%20Kit.js
// @grant        none
// ==/UserScript==

const AnonimbiriAPI = { ws: null, isGame: false, playerId: null, unlimitedKick: false, autoSkip: false, antiAfk: false, noCooldown:false, debug: false };

var kit = new MalayalaKit.CreateMenu({
    title: "Anonim Menu",
    icon: "",
    size: { width: 500, height: 400 },
    position: { top: 50, left: 50 },
    hotkey: { keyCode: 113, ctrlKey: false, altKey: false, shiftKey: false }
});

var general = new MalayalaKit.Tab("General");
general.addSwitch({ label: "Unlimited Kick", value: false, onchange: function (value) {
    AnonimbiriAPI.unlimitedKick = value;
}});
general.addSwitch({ label: "Auto Skip", value: false, onchange: function (value) {
    AnonimbiriAPI.autoSkip = value;
}});
general.addSwitch({ label: "Anti Afk", value: false, onchange: function (value) {
    AnonimbiriAPI.antiAfk = value;
}});
general.addSwitch({ label: "No Cooldown For Room Change", value: false, onchange: function (value) {
    AnonimbiriAPI.noCooldown = value;
}});
kit.addTab(general);

var fakeWinText = "anonimbiri";
var local = new MalayalaKit.Tab("Local");
local.addInput({ label: "Fake Win text", placeholder: "Enter Fake Win text", type: "text", value: fakeWinText, onchange: function (value) {
    fakeWinText = value;
}});
local.addButton({ label: "Send Fake Win", buttonLabel: "Send Fake Win", onclick: function () {
    const event = new MessageEvent('message', { data: `42["26","${fakeWinText}",10,11,10000]` });
    AnonimbiriAPI.ws.dispatchEvent(event);
}});
kit.addTab(local);

var intervalId = null;
var spamText = "anonimbiri";
var spam = new MalayalaKit.Tab("Spam");
spam.addSwitch({ label: "Spam", value: false, onchange: function (value) {
    if(value){
        intervalId = setInterval(() => {
            var randomIndex = Math.floor(Math.random() * (spamText.length + 1));
            var newText = spamText.replace(/(‎{${randomIndex}})/, '$1.');
            AnonimbiriAPI.ws.send(`42[11,${AnonimbiriAPI.playerId},"${newText}"]`);
        }, 800);
    }else{
        clearInterval(intervalId);
    }
}});
spam.addInput({ label: "Spam text", placeholder: "Enter Spam text", type: "text", value: spamText, onchange: function (value) {
    spamText = value;
}});
kit.addTab(spam);

window.WebSocket = class extends WebSocket {
    constructor(...args) {
        super(...args);
        AnonimbiriAPI.ws = this;
        this.addEventListener('message', (e) => {
            AnonimbiriAPI.debug && console.log("%c<--- Received data:", "color: pink", e.data);
            const messageData = JSON.parse(e.data.slice(2));
            if (messageData[0] === "45" && AnonimbiriAPI.unlimitedKick) {
                const OriginalDate = window.Date;
                window.Date = class extends Date {
                    static now() {
                        return super.now() * 2123;
                    }
                };
                setTimeout(() => { window.Date = OriginalDate; }, 2000);
                return;
            }else if (messageData[0] === "5") {
                AnonimbiriAPI.isGame = true;
                AnonimbiriAPI.playerId = messageData[2];
            }else if(messageData[0] === "16" && AnonimbiriAPI.autoSkip){
                AnonimbiriAPI.ws.send(`42[25,${AnonimbiriAPI.playerId}]`);
            }else if(messageData[0] === "34"){
                AnonimbiriAPI.ws.send(`42[30,${AnonimbiriAPI.playerId}]`);
                AnonimbiriAPI.ws.send(`42[30,${AnonimbiriAPI.playerId}]`);
                AnonimbiriAPI.ws.send(`42[30,${AnonimbiriAPI.playerId}]`);
            }else if (messageData[0] === "19" && AnonimbiriAPI.antiAfk){
                window.Date = class extends Date {
                    static now() {
                        return super.now() / 2123;
                    }
                }
            }else if(messageData[0] === "23"){
                !AnonimbiriAPI.debug && console.clear();
                var nickElements = document.querySelectorAll('.nick');
                nickElements.forEach(function (nickElement) {
                    var nickName = nickElement.innerText;
                    if (nickName.startsWith('‎') && !nickElement.parentElement.querySelector('.cheater') && !nickElement.parentElement.parentElement.classList.contains('you')) {
                        var newElement = document.createElement('span');
                        newElement.classList.add('cheater');
                        newElement.style = 'color:pink; font-weight: bold; font-family: "Lucida Console", "Courier New", monospace;';
                        newElement.innerText = `🎮 Cheater`;
                        nickElement.parentElement.appendChild(newElement);
                    }
                });
            }
        });
    }

    send(data) {
        AnonimbiriAPI.debug && console.log("%c---> Sent data:", "color: pink", data);
        const newData = JSON.parse(data.slice(2));
        if (newData[1] && newData[1].nick) {
            newData[1].nick = `‎${newData[1].nick}`;
            data = data.slice(0, 2) + JSON.stringify(newData);
            super.send(data);
        }else if(newData[0] === "46"){

        }else{
            super.send(data);
        }
        //super.send(data);
    }
}

const observer = new MutationObserver(() => {
    document.querySelector('input[name="chat"]')?.replaceWith(Object.assign(document.createElement('input'), {type: 'text', name: 'chat', className: 'mousetrap', placeholder: '🔓 Chat Unlocked', autocomplete: 'off', autocorrect: 'off', autocapitalize: 'off', maxLength: 100, value: ''}));
    if(document.querySelector('#popUp') && AnonimbiriAPI.noCooldown){
        const OriginalDate = window.Date;
        window.Date = class extends Date {
            static now() {
                return super.now() * 2123;
            }
        };
        setTimeout(() => {
            window.Date = class extends Date {
                static now() {
                    return super.now() / 2123;
                }
            };
        }, 500);
        document.querySelector('.ic-playHome').click();
    }
});
observer.observe(document.body, { childList: true, subtree: false });

const keyupEvent = function (e) {
    if (e.keyCode === 13){
        var chatInput = document.querySelector('input[name="chat"]');
        AnonimbiriAPI.ws.send(`42[11,${AnonimbiriAPI.playerId},"${chatInput.value}"]`);
        chatInput.value = '';
    }
};

window.addEventListener('keyup', keyupEvent);
window.AnonimbiriAPI = AnonimbiriAPI;
kit.render();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址