// ==UserScript==
// @name MooMoo.io Show Keys & Mouse
// @description Display your keyboard keys, mouse, and CPS
// @author KOOKY WARRIOR
// @match *://*.moomoo.io/*
// @icon https://moomoo.io/img/favicon.png?v=1
// @run-at document-start
// @grant unsafeWindow
// @license MIT
// @version 0.5.2
// @namespace https://greasyfork.org/users/999838
// @downloadURL https://update.greasyfork.icu/scripts/463400/MooMooio%20Show%20Keys%20%20Mouse.user.js
// @updateURL https://update.greasyfork.icu/scripts/463400/MooMooio%20Show%20Keys%20%20Mouse.meta.js
// ==/UserScript==
// Press "\" to open menu
// This script was originally made by GG Gamer Br
// https://greasyfork.org/en/scripts/424547-moomoo-io-keys
;(() => {
unsafeWindow.showKeys = true
let storage = JSON.parse(localStorage.getItem("showKeys&Mouse"))
if (storage == null) {
storage = {
keys: ["Q", "F", "V", "1", "2", "3"],
cps: true,
maxCps: true,
mouse: 100,
space: 7,
container: 270
}
localStorage.setItem("showKeys&Mouse", JSON.stringify(storage))
}
unsafeWindow.addEventListener("DOMContentLoaded", () => {
const DIV = `
`
const container = document.createElement("div")
container.innerHTML = DIV
document.getElementById("gameUI").appendChild(container)
storage.keys.forEach((key) => {
const element = document.createElement("div")
element.id = `key_${key}`
element.className = "keys"
element.textContent = key
document.getElementById("keys").appendChild(element)
})
document.getElementById("keys").style.display = storage.container <= 0 || storage.keys.length == 0 ? "none" : "flex"
unsafeWindow.changeShowKeyMouseProperty = (id, value) => {
storage[id] = value
localStorage.setItem("showKeys&Mouse", JSON.stringify(storage))
document.getElementById("mouseContainer").style.width = `${65 * (storage.mouse / 100)}px`
document.getElementById("mouseContainer").style.height = `${94 * (storage.mouse / 100)}px`
document.getElementById("mouseContainer").style.display = storage.mouse > 0 ? "block" : "none"
document.getElementById("key_Space").style.marginLeft = `${storage.mouse > 0 ? 10 : 0}px`
document.getElementById("mouse").style.transform = `scale(${storage.mouse}%)`
document.getElementById("key_Space").textContent = "_".repeat(storage.space)
document.getElementById("key_Space").style.display = storage.space > 0 ? "block" : "none"
document.getElementById("cpsDisplay").style.display = storage.cps ? "block" : "none"
document.getElementById("maxCpsDisplay").style.display = storage.maxCps ? "block" : "none"
document.getElementById("keys").style.display = storage.container <= 0 || storage.keys.length == 0 ? "none" : "flex"
document.getElementById("keys").style.width = `${storage.container}px`
}
unsafeWindow.addKey_ShowKeyMouse = () => {
const key = document.getElementById("enter_key").value.toUpperCase()
let element = document.getElementById(`key_${key}`)
if (element == null) {
element = document.createElement("div")
element.id = `key_${key}`
element.className = "keys"
element.textContent = key
document.getElementById("keys").appendChild(element)
storage.keys.push(key)
localStorage.setItem("showKeys&Mouse", JSON.stringify(storage))
}
}
unsafeWindow.removeKey_ShowKeyMouse = async () => {
const key = document.getElementById("enter_key").value.toUpperCase()
const element = document.getElementById(`key_${key}`)
if (element != null) {
element.remove()
const index = storage.keys.indexOf(key)
if (index > -1) {
await storage.keys.splice(index, 1)
localStorage.setItem("showKeys&Mouse", JSON.stringify(storage))
}
document.getElementById("keys").style.display = storage.container <= 0 || storage.keys.length == 0 ? "none" : "flex"
}
}
var currentCps = 0
var maxCps = 0
var spaceDown = false
function addCPS() {
currentCps++
document.getElementById("cpsDisplay").innerText = `CPS: ${currentCps}`
if (currentCps > maxCps) {
maxCps = currentCps
document.getElementById("maxCpsDisplay").innerText = `MAX CPS: ${maxCps}`
}
setTimeout(() => {
currentCps--
document.getElementById("cpsDisplay").innerText = `CPS: ${currentCps}`
}, 1000)
}
function keysActive() {
let returnValue
returnValue = document.getElementById("allianceMenu").style.display != "block" && document.getElementById("chatHolder").style.display != "block"
return returnValue
}
unsafeWindow.addEventListener("keydown", (event) => {
if (keysActive()) {
if (event.code == "Backslash") {
document.getElementById("show_key_menu").style.display = document.getElementById("show_key_menu").style.display == "block" ? "none" : "block"
} else if (event.code == "Space") {
if (!spaceDown) {
spaceDown = true
const keyDiv = document.getElementById(`key_Space`)
if (keyDiv && !keyDiv.classList.contains("active")) {
keyDiv.classList.add("active")
}
addCPS()
}
} else {
const keyDiv = document.getElementById(`key_${event.key.toUpperCase()}`)
if (keyDiv && !keyDiv.classList.contains("active")) {
keyDiv.classList.add("active")
}
}
}
})
unsafeWindow.addEventListener("keyup", (event) => {
if (event.code == "Space") {
spaceDown = false
const keyDiv = document.getElementById(`key_Space`)
if (keyDiv && keyDiv.classList.contains("active")) {
keyDiv.classList.remove("active")
}
} else {
const keyDiv = document.getElementById(`key_${event.key.toUpperCase()}`)
if (keyDiv && keyDiv.classList.contains("active")) {
keyDiv.classList.remove("active")
}
}
})
document.getElementById("touch-controls-fullscreen").addEventListener("mousedown", (event) => {
if ([0, 1, 2].includes(event.button)) {
addCPS()
}
let mouseDiv = document.getElementById(`mouse_${event.button}`)
if (mouseDiv && !mouseDiv.classList.contains("active2")) {
mouseDiv.classList.add("active2")
}
})
document.getElementById("touch-controls-fullscreen").addEventListener("mouseup", (event) => {
let mouseDiv = document.getElementById(`mouse_${event.button}`)
if (mouseDiv && mouseDiv.classList.contains("active2")) {
mouseDiv.classList.remove("active2")
}
})
})
})()