Action Macro (SpeedilyBuildItem/ChangeWepon&Hat/...)
// ==UserScript== // @name ★moomoo.io ActionMacro // @version 1.3 // @description Action Macro (SpeedilyBuildItem/ChangeWepon&Hat/...) // @author nekosan // @match *://moomoo.io/* // @grant none // @namespace https://greasyfork.org/en/scripts/29157-moomoo-io-actionmacro // ==/UserScript== (function() { 'use strict'; // Hat var hat = 0; var ID_BummleHat = 8; var ID_StrawHat = 2; var ID_WinterCap = 15; var ID_CowboyHat = 5; var ID_RangerHat = 4; var ID_ExplorerHat = 18; var ID_MarksmanCap = 1; var ID_SoldierHelmet = 6; var ID_HoneycrispHat = 13; var ID_MinersHelmet = 9; var ID_BoosterHat = 12; var ID_BushGear = 10; var ID_SpikeGear = 11; var ID_BushidoArmor = 16; var ID_SamuraiArmor = 20; // Wepon var subitemmode = 0; // (0:BoostPad 1:PitTrap) var flag_subweapon = false; // Item var food = 1; // 0:apple 1:cokkie var wall = 2; // 2:woodwall 3:stonewall var spike = 5; // 4:spikes 5:greater spikes var mill = 6; // 6:windmill 7:faster windmill var mine = 8; // 9:mine var trap = 9; // 9:pit trap var boost = 10; // 10:boost pad var dir; document.getElementById('gameCanvas').addEventListener('mousemove', function (e) { dir = Math.atan2(e.pageY - window.innerHeight / 2, e.pageX - window.innerWidth / 2); }); function send(n, v) { io.managers[Object.keys(io.managers) [0]].nsps['/'].emit(n, v); } function p(a, itemid) { if (a !== 0) { send('2', dir + a); } send('5', itemid); send('4', 1); } document.addEventListener('keydown', function (e) { if (document.activeElement.id == 'chatBox') return; switch (e.keyCode) { // [CapsLock] case 240: if (hat == ID_BoosterHat) { hat = ID_SamuraiArmor; } else { hat = ID_BoosterHat; } storeEquip(hat); break; // [Space] case 32: e.preventDefault(); p(0, boost); setTimeout(function () { p(0, boost); setTimeout(function () { p(1.5, spike); p(-1.5, spike); setTimeout(function () { p(1.5, spike); p(-1.5, spike); setTimeout(function () { p(0, spike); }, 80); }, 80); }, 50); }, 200); break; // [0] case 48: subitemmode = (subitemmode === 0) ? 1 : 0; break; // [B] case 66: p(0, subitemmode === 0 ? boost : trap); break; // [C] case 67: if (subitemmode === 0) { p(0, boost); setTimeout(function () { p(2, spike); p(-2, spike); }, 300); } else { p(0, trap); } break; // [F] case 70: p(0, spike); break; // [G] case 71: p(0.7, spike); p(-0.7, spike); break; // [H] case 72: p(0, spike); p(1.4, spike); p(-1.4, spike); break; // [I] case 73: p(2.5, mill); p(-2.5, mill); p(1, mill); p(-1, mill); break; // [J] case 74: p( Math.PI / 3, spike); p(-Math.PI / 3, spike); p(Math.PI, spike); break; // [N] case 78: p(2.5, mill); p(-2.5, mill); break; // [Q] case 81: p(0, food); break; // [R] case 82: p(Math.PI, spike); break; // [T] case 84: p(Math.PI,trap); break; // [V] case 86: p(2.3, spike); p(-2.3, spike); break; // [X] case 88: p( Math.PI / 3, wall); p(-Math.PI / 3, wall); p(Math.PI, wall); break; // [Z] case 90: p(0.7, wall); p(-0.7, wall); break; } if (e.shiftKey) { flag_subweapon = !flag_subweapon; // Sub Weapon if (flag_subweapon) { // hunting bow if ($('#actionBarItem3').css('display') != 'none') { $('#actionBarItem3').click(); if (hat != ID_MarksmanCap) { hat = ID_MarksmanCap; } storeEquip(hat); // wooden shield } else if ($('#actionBarItem5').css('display') != 'none') { $('#actionBarItem5').click(); } // Main Weapon } else { // great axe if ($('#actionBarItem1').css('display') != 'none') { $('#actionBarItem1').click(); // short sword } else if ($('#actionBarItem2').css('display') != 'none') { $('#actionBarItem2').click(); } if (hat == ID_MarksmanCap) { hat = ID_BoosterHat; storeEquip(hat); } } } }); document.addEventListener('contextmenu', function (e) { if (document.activeElement.id == 'chatBox') return false; p(0, subitemmode === 0 ? boost : trap); }, false); })();