Better Minimap, Hat & Accessory Toolbar, Auto Heal, Double Hit, Easy Bow, Rainbow Hat, Hotkeys
// ==UserScript== // @name MOOMOO.IO Insane Mod! *Discontinued since Jan 2018* // @namespace MOOMOO.IO Insane Mod! *Discontinued since Jan 2018* // @version 1 // @description Better Minimap, Hat & Accessory Toolbar, Auto Heal, Double Hit, Easy Bow, Rainbow Hat, Hotkeys // @author TigerYT // @license Just don't copy my script, without crediting me in the description. // @match http://moomoo.io/* // @match http://45.77.0.81/* // @require http://code.jquery.com/jquery-1.12.4.min.js // @grant none // @connect moomoo.io // @icon http://moomoo.io/img/icons/skull.png // ==/UserScript== (function () { var ITEM_TYPE = { WEAPON: 0, STONE: 1, FOOD: 2, PITTRAP: 3, WINDMAIL: 4, TWO_WEAPON: 5, SPIKES: 6, TURRET: 7, MINE: 8, EXTRAS: 9 }; var ITEMS = [{ id: 0, type: ITEM_TYPE.WEAPON, name: "Tool hammer" }, { id: 1, sid: 1, type: ITEM_TYPE.WEAPON, name: "Hand axe" }, { id: 2, sid: 2, type: ITEM_TYPE.WEAPON, name: "Great axe" }, { id: 3, type: ITEM_TYPE.WEAPON, sid: 3, name: "Short Sword" }, { id: 4, sid: 4, type: ITEM_TYPE.WEAPON, name: "Katana" }, { id: 5, sid: 5, type: ITEM_TYPE.WEAPON, name: "PoleArm" }, { id: 6, sid: 6, type: ITEM_TYPE.TWO_WEAPON, name: "Hunting bow" }, { id: 7, sid: 7, type: ITEM_TYPE.TWO_WEAPON, name: "Great hammer" }, { id: 8, sid: 8, type: ITEM_TYPE.TWO_WEAPON, name: "Wooden shield" }, { id: 9, sid: 9, type: ITEM_TYPE.TWO_WEAPON, name: "Crossbow" }, { id: 10, sid: 10, type: ITEM_TYPE.TWO_WEAPON, name: "Musket" }, { id: 0, sid: 11, type: ITEM_TYPE.FOOD, name: "Apple" }, { id: 1, sid: 12, type: ITEM_TYPE.FOOD, name: "Cookie" }, { id: 2, sid: 13, type: ITEM_TYPE.WALL, name: "Wood Wall" }, { id: 3, sid: 14, type: ITEM_TYPE.WALL, name: "Stone Wall" }, { id: 4, sid: 15, type: ITEM_TYPE.WALL, name: "Castle Wall" }, { id: 5, sid: 16, type: ITEM_TYPE.SPIKES, name: "Spikes" }, { id: 6, type: ITEM_TYPE.SPIKES, sid: 17, name: "Greater spikes" }, { id: 7, type: ITEM_TYPE.SPIKES, sid: 18, name: "Poison spikes" }, { id: 8, type: ITEM_TYPE.SPIKES, sid: 19, name: "Spinning spikes" }, { id: 9, sid: 20, type: ITEM_TYPE.WINDMAIL, name: "Windmill" }, { id: 10, type: ITEM_TYPE.WINDMAIL, sid: 21, name: "Faster windmill" }, { id: 11, type: ITEM_TYPE.MINE, sid: 22, name: "Mine" }, { id: 12, type: ITEM_TYPE.PITTRAP, sid: 23, name: "Pit trap" }, { id: 13, type: ITEM_TYPE.PITTRAP, sid: 24, name: "Boost pad " }, { id: 14, type: ITEM_TYPE.EXTRAS, sid: 25, name: "Turret" }, { id: 15, type: ITEM_TYPE.EXTRAS, sid: 26, name: "Platform" }, { id: 16, type: ITEM_TYPE.EXTRAS, sid: 27, name: "Healing Pad" }, { id: 17, type: ITEM_TYPE.EXTRAS, sid: 28, name: "Spawn Pad" }]; function getItemById(id, type) { if (type !== undefined && !Array.isArray(type)) { type = [type]; } return ITEMS.find(function (item) { return type === undefined ? item.id == id && ![ITEM_TYPE.WEAPON, ITEM_TYPE.TWO_WEAPON].includes(item.type) : item.id == id && type.includes(item.type); }); } function getItemBySid(sid) { return ITEMS.find(function (item) { return item.sid !== undefined && sid !== undefined && item.sid == sid; }); } var ws; var player; var BOT_SETTINGS_TEMPLATE = '<style>.bot-settings{padding: 10px; background-color: rgba(0, 0, 0, 0.2); border-radius: 3px; position: absolute; left: 0px; top: 0px; min-width: 200px; max-width: 300px;aw}.equip-btn{display:inline-block; width: 25px; height: 25px; border: 1px solid grey; background-size: contain; cursor: pointer; background-color: lightgray;}.equip-btn.selected{background-color: lightgreen;}</style><div class="bot-settings"> <div> <div> <input type="checkbox" id="botAutoHealOn"/> <label for="botAutoHealOn">AutoHeal</label> </div></div><hr/> <div id="bot-equips-0"> </div><hr/><div id="bot-equips-1"> </div></div>'; var autoHealStarted = true; var btnEnterGame = document.getElementById('enterGame'); function Player() { this.id = 0; this.resources = { food: 0, gold: 0, wood: 0, stone: 0 }; this.hp = 100; this.hat = 0; this.accessory = 0; this.items = {}; this.items[ITEM_TYPE.WEAPON] = getItemById(0, ITEM_TYPE.WEAPON); this.items[ITEM_TYPE.SPIKES] = getItemById(5); this.items[ITEM_TYPE.WALL] = getItemById(2); this.items[ITEM_TYPE.FOOD] = getItemById(0); this.items[ITEM_TYPE.WINDMAIL] = getItemById(9); this.items[ITEM_TYPE.EXTRAS] = getItemById(14); this.itemInHand = this.items[ITEM_TYPE.WEAPON]; } btnEnterGame.onmousedown = function () { StartBot(); btnEnterGame.onmousedown = null; }; $('#adCard').remove(); document.addEventListener('keydown', function (e) { if (ws) { switch (e.keyCode) { // T case 84: if (player.items[ITEM_TYPE.WINDMAIL]) ws.send("42[\"5\"," + player.items[ITEM_TYPE.WINDMAIL].id + ",null]"); break; // G case 71: e.stopPropagation(); if (player.items[ITEM_TYPE.SPIKES]) ws.send("42[\"5\"," + player.items[ITEM_TYPE.SPIKES].id + ",null]"); break; // Z case 90: e.stopPropagation(); if (player.items[ITEM_TYPE.EXTRAS]) ws.send("42[\"5\"," + player.items[ITEM_TYPE.TURRET].id + ",null]"); break; // F case 70: e.stopPropagation(); if (player.items[ITEM_TYPE.PITTRAP]) ws.send("42[\"5\"," + player.items[ITEM_TYPE.PITTRAP].id + ",null]"); break; // ] case 221: if (player.items[ITEM_TYPE.WINDMAIL]) ws.send("42[\"5\"," + player.items[ITEM_TYPE.WINDMAIL].id + ",null]"); break; // ; case 186: e.stopPropagation(); if (player.items[ITEM_TYPE.SPIKES]) ws.send("42[\"5\"," + player.items[ITEM_TYPE.SPIKES].id + ",null]"); break; // ' case 222: e.stopPropagation(); if (player.items[ITEM_TYPE.EXTRAS]) ws.send("42[\"5\"," + player.items[ITEM_TYPE.TURRET].id + ",null]"); break; // # case 70: e.stopPropagation(); if (player.items[ITEM_TYPE.PITTRAP]) ws.send("42[\"5\"," + player.items[ITEM_TYPE.PITTRAP].id + ",null]"); break; // / case 191: e.stopPropagation(); if (player.items[ITEM_TYPE.WEAPON]) ws.send("42[\"5\"," + player.items[ITEM_TYPE.WEAPON].id + ",null]"); break; // . case 190: e.stopPropagation(); if (player.items[ITEM_TYPE.TWO_WEAPON]) ws.send("42[\"5\"," + player.items[ITEM_TYPE.TWO_WEAPON].id + ",null]"); break; // P case 80: e.stopPropagation(); $('.bot-settings').toggle(); break; } } }, true); document.addEventListener('mousedown', function (e) { if (ws && e.button == 2) { e.stopPropagation(); ws.send("42[\"4\",1,null]"); setTimeout(function () { ws.send("42[\"5\"," + player.items[ITEM_TYPE.TWO_WEAPON].id + ",true]"); }, 100); setTimeout(function () { ws.send("42[\"4\",0,null]"); }, 100); setTimeout(function () { ws.send("42[\"5\"," + player.items[ITEM_TYPE.WEAPON].id + ",true]"); }, 700); } }, true); function Log(text) { return; } function init() { $('body').append(BOT_SETTINGS_TEMPLATE); $('#botAutoHealOn').prop("checked", autoHealStarted); $('#botAutoHealOn').change(function (e) { autoHealStarted = e.currentTarget.checked; }); addEquip(0, 28); addEquip(0, 29); addEquip(0, 30); addEquip(0, 36); addEquip(0, 37); addEquip(0, 38); addEquip(0, 44); addEquip(0, 35); addEquip(0, 42); addEquip(0, 43); addEquip(0, 49); } function dead() { player = new Player(); } function botLaunched() { return $('#botAutoHealOn').prop('checked'); } function equipId(type, id) { return "bot-eq-" + type + id; } function equipIsSelect(type, id) { return $("#" + equipId(type, id)).hasClass("selected"); } function equipSelect(type, id) { $("#" + equipId(type, id)).addClass("selected"); } function equipCancleSelect(type, id) { if (id == "all") { $("#bot-equips-" + type + ">.equip-btn").removeClass("selected"); } else $("#" + equipId(type, id)).removeClass("selected"); } function equipExist(type, id) { return $("#bot-equips-" + type + ">#" + equipId(type, id)).length > 0; } function addEquip(type, id) { if (equipExist(type, id)) { return; } var url = "http://moomoo.io/img"; if (type == 1) { url += "/accessories/access_" + id + ".png"; } else { url += "/hats/hat_" + id + ".png"; } $("<div/>", { id: equipId(type, id), "class": "equip-btn", css: { "background-image": "url(" + url + ")" }, click: function click() { if (!equipIsSelect(type, id)) ws.send("42[\"13\",0," + id + ", " + type + "]");else ws.send("42[\"13\",0,0," + type + "]"); } }).appendTo("#bot-equips-" + type); } function StartBot() { player = new Player(); init(); Log("AutoHeal loaded"); WebSocket.prototype.oldSend = WebSocket.prototype.send; WebSocket.prototype.send = function (m) { if (!ws) { ws = this; socketFound(this); } var parsed = parseWSMsg(m); if (parsed[0] == "5") { var id = parsed[1]; var isWeapon = parsed[2] || false; if (!isWeapon) { if (id == 0 || id == 1) { player.itemInHand = player.items[ITEM_TYPE.FOOD]; } } } if (parsed[0] == "6") { var item = getItemBySid(parsed[1]); if (item) { player.items[item.type] = item; if (item.type == player.itemInHand.type) { player.itemInHand = item; } } } this.oldSend(m); }; function socketFound(socket) { window.gameSocket = socket; socket.addEventListener("message", function (e) { var m = e.data; var parsed = parseWSMsg(m); switch (parsed[0]) { case "1": player.id = parsed[1]; break; case "us": var itemId = parsed[2]; var pacType = parsed[1]; var itemType = parsed[3]; switch (pacType) { case 0: addEquip(itemType, itemId); break; case 1: if (itemType == 1) player.accessory = itemId;else if (itemType === 0) player.hat = itemId; equipCancleSelect(itemType, "all"); equipSelect(itemType, itemId); break; } break; case "9": player.resources[parsed[1]] = parsed[2]; break; case "10": if (parsed[1] == player.id) { player.hp = parsed[2]; if (player.hp <= 0) { dead(); } } break; } }); } var healTimer = setInterval(function () { if (autoHealStarted) heal(); }, 0); function parseWSMsg(s) { if (s.indexOf("42") === -1) return -1; var o = s.substring(s.indexOf("[")); return JSON.parse(o); } function heal() { if (player.hp >= 100) return; if (hasApple()) { if (player.itemInHand.type == ITEM_TYPE.FOOD) { ws.send("42[\"4\",1,null]"); player.itemInHand = player.items[ITEM_TYPE.WEAPON]; } else { ws.send("42[\"5\"," + player.items[ITEM_TYPE.FOOD].id + ",null]"); heal(); } } } function hasApple() { if (player.items[ITEM_TYPE.FOOD].id === 0) return player.resources.food >= 10;else return player.resources.food >= 15; } } })(); $('#mapDisplay').css({ 'background': 'url("https://cdn.discordapp.com/attachments/374333551858155530/376303720540930048/moomooio-background.png")' }); (function() { var můjVar; var můjVar2; var můjVar3; var můjVar4; var můjVar5; var můjVar6; var můjVar7; var můjVar8; var můjVar9; var můjVar10; var můjVar11; var změna = true; var ID_FAZE = 45; var ID_Moo_Head = 28; var ID_Pig_Head = 29; var ID_Fluff_Head = 30; var ID_Pandou_Head = 36; var ID_Bear_Head = 37; var ID_Monkey_Head = 38; var ID_Polar_Head = 44; var ID_Fez_Hat = 35; var ID_Enigma_Hat = 42; var ID_Blitz_Hat = 43; var ID_Bob_XIII_Hat = 49; document.addEventListener('keydown', function (e) { if (e.keyCode == 48) { e.preventDefault(); if (změna) { storeEquip(ID_Moo_Head); můjVar = setTimeout(function(){ h1(); }, 180); } else { clearTimeout(můjVar); clearTimeout(můjVar2); clearTimeout(můjVar3); clearTimeout(můjVar4); clearTimeout(můjVar5); clearTimeout(můjVar6); clearTimeout(můjVar7); clearTimeout(můjVar8); clearTimeout(můjVar9); clearTimeout(můjVar10); clearTimeout(můjVar11); storeEquip(ID_FAZE); } změna = !změna; } }); function h1() { storeEquip(ID_Moo_Head); clearTimeout(můjVar); můjVar2 = setTimeout(function(){ h2(); }, 180); } function h2() { storeEquip(ID_Pig_Head); clearTimeout(můjVar2); můjVar3 = setTimeout(function(){ h3(); }, 180); } function h3() { storeEquip(ID_Fluff_Head); clearTimeout(můjVar3); můjVar4 = setTimeout(function(){ h4(); }, 180); } function h4() { storeEquip(ID_Pandou_Head); clearTimeout(můjVar4); můjVar5 = setTimeout(function(){ h5(); }, 180); } function h5() { storeEquip(ID_Bear_Head); clearTimeout(můjVar5); můjVar6 = setTimeout(function(){ h6(); }, 180); } function h6() { storeEquip(ID_Monkey_Head); clearTimeout(můjVar6); můjVar7 = setTimeout(function(){ h7(); }, 180); } function h7() { storeEquip(ID_Polar_Head); clearTimeout(můjVar7); můjVar8 = setTimeout(function(){ h8(); }, 180); } function h8() { storeEquip(ID_Fez_Hat); clearTimeout(můjVar8); můjVar9 = setTimeout(function(){ h9(); }, 180); } function h9() { storeEquip(ID_Enigma_Hat); clearTimeout(můjVar9); můjVar10 = setTimeout(function(){ h10(); }, 180); } function h10() { storeEquip(ID_Blitz_Hat); clearTimeout(můjVar10); můjVar11 = setTimeout(function(){ h11(); }, 180); } function h11() { storeEquip(ID_Bob_XIII_Hat); clearTimeout(můjVar11); můjVar = setTimeout(function(){ h1(); }, 180); } })();