// ==UserScript== // @name Moomoo.io - Hat Macro & Guide Menu // @author Seryo // @description Toggle Macros with "P". Won't work while chatting or creating an alliance tribe. // Shortcuts: // - No Hat: Shift // - Bull Helmet: R // - Tank Gear: Z // - Soldier Helmet: G // - Booster Hat: B // - Flipper Hat: Y // - Winter Cap: N // - EMP Helmet: J // - Fluff Head: I // - Turret Gear: T // - Spike Gear: H // - Samurai Armor: U // - Bearbarian Armor: M // Feel free to mix and match. // @version Beta // @match *://*.moomoo.io/* // @namespace https://greasyfork.org/users/1190411 // @icon https://cdn.glitch.com/82ae8945-dcc6-4276-98a9-665381b4cd2b/cursor12.png // @license MIT // @grant none // @run-at document-end // @downloadURL none // ==/UserScript== (function () { var macrosToggle = 1; var macroEventListener = null; var menuVisible = false; var isDragging = false; var initialX; var initialY; var menuElement = null; function isChatOpen() { return document.activeElement.id.toLowerCase() === 'chatbox'; } function isAllianceInputActive() { return document.activeElement.id.toLowerCase() === 'allianceinput'; } function shouldHandleHotkeys() { return !isChatOpen() && !isAllianceInputActive(); } function toggleMacros() { macrosToggle = (macrosToggle + 1) % 2; document.title = macrosToggle === 1 ? "нaтѕ-on" : "нaтѕ-oғғ"; var macroStateElement = document.getElementById("macroState"); macroStateElement.textContent = macrosToggle === 1 ? "On" : "Off"; if (macrosToggle === 1) { macroEventListener = function (e) { if (shouldHandleHotkeys()) { switch (e.keyCode) { case 16: storeEquip(0); break; case 82: storeEquip(7); break; case 90: storeEquip(40); break; case 71: storeEquip(6); break; case 66: storeEquip(12); break; case 89: storeEquip(31); break; case 78: storeEquip(15); break; case 74: storeEquip(22); break; case 73: storeEquip(30); break; case 84: storeEquip(53); break; case 77: storeEquip(26); break; case 85: storeEquip(20); break; case 72: storeEquip(11); break; } } }; document.addEventListener('keydown', macroEventListener); } else { document.removeEventListener('keydown', macroEventListener); macroEventListener = null; } } function toggleMenu() { var menuElement = document.getElementById('hatMacroMenu'); if (menuVisible) { menuElement.style.display = 'none'; menuVisible = false; } else { menuElement.style.display = 'block'; menuVisible = true; } } function dragStart(e) { isDragging = true; initialX = e.clientX - menuElement.getBoundingClientRect().left; initialY = e.clientY - menuElement.getBoundingClientRect().top; } function dragEnd() { isDragging = false; } function drag(e) { if (!isDragging) return; menuElement.style.left = (e.clientX - initialX) + 'px'; menuElement.style.top = (e.clientY - initialY) + 'px'; } function createMenu() { menuElement = document.createElement('div'); menuElement.id = 'hatMacroMenu'; menuElement.style.display = 'none'; menuElement.style.background = 'rgba(0, 0, 0, 0.8)'; menuElement.style.fontFamily = 'Hammersmith One, sans-serif'; menuElement.style.position = 'absolute'; menuElement.style.width = '200px'; menuElement.style.height = '225px'; menuElement.style.border = '1.5px solid #000'; menuElement.style.borderRadius = '8px'; menuElement.style.boxShadow = '0px 0px 10px rgba(0, 0, 0, 0.8)'; menuElement.style.top = '20px'; menuElement.style.right = '20px'; menuElement.style.zIndex = '9999'; menuElement.style.overflowY = 'auto'; menuElement.style.color = '#fff'; menuElement.style.fontSize = '17px !important'; menuElement.style.boxShadow = '5px 5px 10px rgba(0, 0, 0, 0.4)'; menuElement.style.padding = '18px'; document.body.appendChild(menuElement); var tableHTML = `

Hat Shortcuts

Off

No Hat     Shift
Bull Helmet     R
Tank Gear     Z
Soldier Helmet     G
Booster Hat     B
Flipper Hat     Y
Winter Cap     N
EMP Helmet     J
Fluff Head     I
Turret Gear     T
Spike Gear     H
Samurai Armor     U
Bearbarian Armor    M
`; menuElement.innerHTML = tableHTML; menuElement.querySelectorAll('span, td, p').forEach(element => { element.style.fontSize = '17px'; element.style.color = '#fff'; }); menuElement.addEventListener('mousedown', dragStart); menuElement.addEventListener('mouseup', dragEnd); menuElement.addEventListener('mousemove', drag); } createMenu(); document.addEventListener('keydown', function (e) { if (e.keyCode === 80 && !isChatOpen() && !isAllianceInputActive()) { toggleMacros(); } else if (e.keyCode === 27 && document.activeElement.id.toLowerCase() !== 'chatbox' && allianceMenu.style.display !== 'block' && storeMenu.style.display !== 'block') { toggleMenu(); } }); var headerText = document.querySelector('h1').textContent; var macrosEnabled = headerText.includes('Macros On'); if (macrosEnabled) { toggleMacros(); } })();