This script can be toggled on/off with the 'P' key. Macros won't work while chatting or creating an alliance tribe. To open the menu, just hit 'Esc' (the menu is draggable).
当前为
// ==UserScript==
// @name Moomoo.io - Hat Macro & Guide Menu
// @author Seryo
// @version Beta
// @description This script can be toggled on/off with the 'P' key. Macros won't work while chatting or creating an alliance tribe. To open the menu, just hit 'Esc' (the menu is draggable).
// @ 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.
// @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
// ==/UserScript==
(function () {
var macrosToggle = 1;
var macroEventListener = null;
var menuVisible = false;
var isDragging = false;
var initialX;
var initialY;
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';
}
var menuElement = null;
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 = `
<h1 style="font-size: 28px; margin-top: 15px; text-align: center;">Hat Shortcuts</h1>
<p style="text-align: center;"<span id="macroState">Off</span></p>
<table style="margin: 0 auto; text-align: center;">
<td>No Hat</td>
<td> </td>
<td>Shift</td>
</tr>
<tr>
<td>Bull Helmet</td>
<td> </td>
<td>R</td>
</tr>
<tr>
<td>Tank Gear</td>
<td> </td>
<td>Z</td>
</tr>
<tr>
<td>Soldier Helmet</td>
<td> </td>
<td>G</td>
</tr>
<tr>
<td>Booster Hat</td>
<td> </td>
<td>B</td>
</tr>
<tr>
<td>Flipper Hat</td>
<td> </td>
<td>Y</td>
</tr>
<tr>
<td>Winter Cap</td>
<td> </td>
<td>N</td>
</tr>
<tr>
<td>EMP Helmet</td>
<td> </td>
<td>J</td>
</tr>
<tr>
<td>Fluff Head</td>
<td> </td>
<td>I</td>
</tr>
<tr>
<td>Turret Gear</td>
<td> </td>
<td>T</td>
</tr>
<tr>
<td>Spike Gear</td>
<td> </td>
<td>H</td>
</tr>
<tr>
<td>Samurai Armor</td>
<td> </td>
<td>U</td>
</tr>
<tr>
<td>Bearbarian Armor</td>
<td> </td>
<td>M</td>
</tr>
</table>
`;
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();
}
})();