Greasy Fork

Greasy Fork is available in English.

MooMoo.io Bow Insta Helper

Helps you to bow insta faster

目前为 2023-03-16 提交的版本,查看 最新版本

// ==UserScript==
// @name         MooMoo.io Bow Insta Helper
// @description  Helps you to bow insta faster
// @author       WEIRD
// @match        *://*.moomoo.io/*
// @require      https://cdnjs.cloudflare.com/ajax/libs/msgpack-lite/0.1.26/msgpack.min.js
// @run-at       document-start
// @grant        unsafeWindow
// @license      MIT
// @version      0.3
// @namespace    http://greasyfork.icu/users/999838
// ==/UserScript==

/*
Press "Z" to toggle the helper
*/

(async () => {
    var inGame = false
    await new Promise(async resolve => {
        let { send } = WebSocket.prototype

        WebSocket.prototype.send = function (...x) {
            send.apply(this, x)
            this.addEventListener("message", e => {
                const [packet, data] = msgpack.decode(new Uint8Array(e.data))
                switch (packet) {
                    case "1":
                        inGame = true
                        break
                    case "11":
                        inGame = false
                        let storeHolder = unsafeWindow.customStore ? document.getElementById("customStoreHolder") : document.getElementById("storeHolder")
                        let storeButton = unsafeWindow.customStore ? document.getElementById("customStoreButton") : document.getElementById("storeButton")
                        let gameUI = document.getElementById("gameUI")
                        let upgradeHolder = document.getElementById("upgradeHolder")
                        let storeMenu = document.getElementById("storeMenu")
                        let chatHolder = document.getElementById("chatHolder")
                        if (toggle) {
                            toggle = false
                            gameUI.style.visibility = null
                            storeButton.style.visibility = null
                            upgradeHolder.style.visibility = null
                            storeMenu.style.visibility = null
                            chatHolder.style.visibility = null

                            storeHolder.style.position = null
                            storeHolder.style.left = null
                            storeHolder.style.top = null

                            upgradeHolder.style.left = null
                            upgradeHolder.style.top = null
                        }
                        break
                }
            })
            resolve(this)
        }
    })

    function waitForElm(selector) {
        return new Promise(resolve => {
            if (document.querySelector(selector)) {
                return resolve(document.querySelector(selector));
            }

            const observer = new MutationObserver(mutations => {
                if (document.querySelector(selector)) {
                    resolve(document.querySelector(selector));
                    observer.disconnect();
                }
            });

            observer.observe(document.body, {
                childList: true,
                subtree: true
            });
        });
    }

    const mouse = {
        x: null,
        y: null
    }
    let toggle = false

    document.addEventListener("keydown", event => {
        if (inGame && event.code == "KeyZ"
            && document.getElementById("allianceMenu").style.display != "block"
            && document.getElementById("chatHolder").style.display != "block") {
            let storeHolder = unsafeWindow.customStore ? document.getElementById("customStoreHolder") : document.getElementById("storeHolder")
            let storeButton = unsafeWindow.customStore ? document.getElementById("customStoreButton") : document.getElementById("storeButton")
            let gameUI = document.getElementById("gameUI")
            let upgradeHolder = document.getElementById("upgradeHolder")
            let storeMenu = document.getElementById("storeMenu")
            let chatHolder = document.getElementById("chatHolder")
            if (toggle) {
                toggle = false
                gameUI.style.visibility = null
                storeButton.style.visibility = null
                upgradeHolder.style.visibility = null
                storeMenu.style.visibility = null
                chatHolder.style.visibility = null

                storeHolder.style.position = null
                storeHolder.style.left = null
                storeHolder.style.top = null

                upgradeHolder.style.left = null
                upgradeHolder.style.top = null
            } else {
                toggle = true
                gameUI.style.visibility = "hidden"
                storeButton.style.visibility = "visible"
                upgradeHolder.style.visibility = "visible"
                storeMenu.style.visibility = "visible"
                chatHolder.style.visibility = "visible"

                storeHolder.style.position = "absolute"
                storeHolder.style.left = mouse.x - 370 + "px"
                storeHolder.style.top = mouse.y - (window.innerHeight / 2) + "px"

                upgradeHolder.style.left = mouse.x - (window.innerWidth / 1600 * 815) + "px"
                upgradeHolder.style.top = mouse.y - 33 + "px"
            }
        }
    })

    waitForElm("#gameCanvas").then(gameCanvas => {
        gameCanvas.addEventListener("mousemove", event => {
            mouse.x = event.clientX
            mouse.y = event.clientY
        })
    })
})()