Greasy Fork is available in English.
Helps you to bow insta faster
当前为
// ==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.2
// @namespace http://greasyfork.icu/users/999838
// ==/UserScript==
/*
Press "\" 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.key == "\\"
&& 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
})
})
})()