// ==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 https://greasyfork.org/users/999838 // @downloadURL none // ==/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 }) }) })()