Zombs's Mod Updated! AUTO HEAL, QUAD SPIKE, MESSAGE HOTKEY, FAST PLACE AND MORE! (NEW DISCORD SERVER)
// ==UserScript== // @name Moomoo.io Zombs Mod // @namespace https://greasyfork.org/en/scripts/435707-moomoo-io-zombs-mod // @version 2.2.1 // @description Zombs's Mod Updated! AUTO HEAL, QUAD SPIKE, MESSAGE HOTKEY, FAST PLACE AND MORE! (NEW DISCORD SERVER) // @author Zombs // @match *://moomoo.io/* // @match *://sandbox.moomoo.io/* // @match *://dev.moomoo.io/* // @grant none // @require https://greasyfork.org/scripts/423602-msgpack/code/msgpack.js // @require http://code.jquery.com/jquery-3.3.1.min.js // @require https://code.jquery.com/ui/1.12.0/jquery-ui.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.js // ==/UserScript== /* Style */ document.getElementById('gameName').innerHTML = '<span style="color:orange">Zombs Mod</span>'; document.getElementById("mapDisplay").style.background = "orange"; document.querySelector("#pre-content-container").remove(); document.getElementById("promoImgHolder").remove(); document.getElementById('youtuberOf').innerHTML = '<a href="https://discord.gg/Bm29xS4qHM" style="color:red">Join disord server</a>'; // document.getElementById('featuredYoutuber').remove(); document.querySelector('#linksContainer2').remove(); document.getElementById('partyButton').remove(); document.getElementById('joinPartyButton').remove(); document.getElementById('diedText').innerHTML = 'Time for revenge!'; $("#consentBlock").css({display: "none"}); $("#adCard").css({display: "none"}); /* End Style */ let customMsg = "Zombs Mod"; // Default (You can change it) let autoMill = false; let millInt; let antiClowHeal = false; document.getElementById("moomooio_728x90_home").style.display = "none"; $("#moomooio_728x90_home").parent().css({ display: "none" }); const canvas = document.getElementById("gameCanvas"); const ctx = canvas.getContext("2d"); window.onbeforeunload = null; let mouseX; let mouseY; let enemyX; let enemyY; let euse = true; let width; let height; let killcount; let autopit = false; function normal() { hat(normalHat); acc(normalAcc); } function aim(x, y) { var cvs = document.getElementById("gameCanvas"); cvs.dispatchEvent(new MouseEvent("mousemove", { clientX: x, clientY: y })); } let coreURL = new URL(window.location.href); window.sessionStorage.force = coreURL.searchParams.get("fc"); var nearestEnemy; var nearestEnemyAngle; var isEnemyNear; var instaMessage; var instaSpeed = 230; var instaSpeedd = 5; var primary; var secondary; var foodType; var wallType; var spikeType; var millType; var mineType; var boostType; var turretType; var spawnpadType; var autoaim = false; var tick = 1; var oldHat; var oldAcc; var enemiesNear; var normalHat; var normalAcc; var ws; var msgpack5 = msgpack; var boostDir; var woodLeft; var stoneLeft; var foodLeft; var kills; var gold; var myStatus; let myPlayer = { id: null, x: null, y: null, dir: null, object: null, weapon: null, clan: null, isLeader: null, hat: null, accessory: null, isSkull: null }; let healSpeed = 150000; var healSpeedd = 100000000; var messageToggle = 1; var clanToggle = 0; let healToggle = 1; let hatToggle = 1; let hitToggle = 0; let hitTToggle = 0; const players = {}; let currentID = null; document.msgpack = msgpack; function n() { this.buffer = new Uint8Array([0]); this.buffer.__proto__ = new Uint8Array; this.type = 0; } WebSocket.prototype.oldSend = WebSocket.prototype.send; WebSocket.prototype.send = function(m) { if (!ws) { document.ws = this; ws = this; socketFound(this); } this.oldSend(m); }; function socketFound(socket) { socket.addEventListener('message', function(message) { handleMessage(message); }); } function handleMessage(m) { let temp = msgpack5.decode(new Uint8Array(m.data)); let data; if (temp.length > 1) { data = [temp[0], ...temp[1]]; if (data[1] instanceof Array) { data = data; } } else { data = temp; } let item = data[0]; if (!data) { return }; if (item === "io-init") { let cvs = document.getElementById("gameCanvas"); width = cvs.clientWidth; height = cvs.clientHeight; $(window).resize(function() { width = cvs.clientWidth; height = cvs.clientHeight; }); cvs.addEventListener("mousemove", e => { mouseX = e.clientX; mouseY = e.clientY; }); } if (item == "1" && myPlayer.id == null) { myPlayer.id = data[1]; } if (item == "33") { enemiesNear = []; for (let i = 0; i < data[1].length / 13; i++) { let playerInfo = data[1].slice(13 * i, 13 * i + 13); if (playerInfo[0] == myPlayer.id) { myPlayer.x = playerInfo[1]; myPlayer.y = playerInfo[2]; myPlayer.dir = playerInfo[3]; myPlayer.object = playerInfo[4]; myPlayer.weapon = playerInfo[5]; myPlayer.clan = playerInfo[7]; myPlayer.isLeader = playerInfo[8]; myPlayer.hat = playerInfo[9]; myPlayer.accessory = playerInfo[10]; myPlayer.isSkull = playerInfo[11]; } else if (playerInfo[7] != myPlayer.clan || playerInfo[7] === null) { enemiesNear.push(playerInfo); enemyX = playerInfo[1]; enemyY = playerInfo[2]; } } } isEnemyNear = false; if (enemiesNear) { nearestEnemy = enemiesNear.sort((a, b) => dist(a, myPlayer) - dist(b, myPlayer))[0]; } if (nearestEnemy) { nearestEnemyAngle = Math.atan2(nearestEnemy[2] - myPlayer.y, nearestEnemy[1] - myPlayer.x); if (Math.sqrt(Math.pow((myPlayer.y - nearestEnemy[2]), 2) + Math.pow((myPlayer.x - nearestEnemy[1]), 2)) < 300) { isEnemyNear = true; if (autoaim == false && myPlayer.hat != 7 && myPlayer.hat != 53) { if (autopit == true) { for (let i = 0; i < 4; i++) { let angle = myPlayer.dir + toRad(i * 90); place(boostType, angle) }; autopit = false setTimeout(function() { autopit = true }, 3000); } normalHat = 6; if (primary != 8) { normalAcc = 19 } }; } } if (isEnemyNear == false && autoaim == false) { normalAcc = 11; if (myPlayer.y < 2400) { normalHat = 15; } else if (myPlayer.y > 6850 && myPlayer.y < 7550) { normalHat = 31; } else { normalHat = 12; } } if (!nearestEnemy) { nearestEnemyAngle = myPlayer.dir; } if (item == "ch" && data[1] !== myPlayer.id && triggers.includes(data[2])) { var response = responses[triggers.indexOf(data[2])] doNewSend(["ch", [response]]); } if (item == "h" && data[1] == myPlayer.id) { if (data[2] < 100 && data[2] > 0 && healToggle == 1) { if (data[2] < 31) { setTimeout(function() { place(foodType) place(foodType) }, 30); } if (data[2] < 100) { setTimeout(function() { place(foodType) }, 85); } } } if(item == "h" && data[1] == myPlayer.id) { if(data[2] <= 30 && antiClowHeal === true) { place(foodType); place(foodType); place(foodType); place(foodType); } } update(); } var triggers = []; var responses = []; var gotoenemy = 1 if (gotoenemy % 2 == 0) { var nearestenemy = nearestEnemyAngle } function doNewSend(sender) { ws.send(new Uint8Array(Array.from(msgpack5.encode(sender)))); } function acc(id) { doNewSend(["13c", [0, 0, 1]]); doNewSend(["13c", [0, id, 1]]); } function hat(id) { doNewSend(["13c", [0, id, 0]]); } function place(id, angle = Math.atan2(mouseY - height / 2, mouseX - width / 2)) { doNewSend(["5", [id, null]]); doNewSend(["c", [1, angle]]); doNewSend(["c", [0, angle]]); doNewSend(["5", [myPlayer.weapon, true]]); } var repeater = function(key, action, interval) { let _isKeyDown = false; let _intervalId = undefined; return { start(keycode) { if (keycode == key && document.activeElement.id.toLowerCase() !== 'chatbox') { _isKeyDown = true; if (_intervalId === undefined) { _intervalId = setInterval(() => { action(); if (!_isKeyDown) { clearInterval(_intervalId); _intervalId = undefined; console.log("cleared"); } }, interval); } } }, stop(keycode) { if (keycode == key && document.activeElement.id.toLowerCase() !== 'chatbox') { _isKeyDown = false; } } }; } const spike = repeater(86, () => {place(spikeType)}, 0); const boostSpike = repeater(71, () => { if (boostDir == null) { boostDir = nearestEnemyAngle; } place(spikeType, boostDir + toRad(90)); place(spikeType, boostDir - toRad(90)); place(boostType, boostDir); doNewSend(["33", [boostDir]]); }, 0); document.addEventListener('keydown', (e) => { if (document.activeElement.id.toLocaleLowerCase() !== 'chatbox' && document.activeElement.id.toLocaleLowerCase() !== 'mainMenu') { spike.start(e.keyCode); boostSpike.start(e.keyCode); switch (e.key) { case 'm': doNewSend(["ch", [`Pos: ${myPlayer.x}, ${myPlayer.y}`]]); case 't': if (healToggle === true) { healToggle = false; doNewSend(["ch", ["~[AutoHeal {Off}]~"]]); } else { healToggle = true; doNewSend(["ch", ["~[AutoHeal {On}]~"]]); } break; case 'n': place(foodType); place(foodType); place(foodType); place(foodType); doNewSend(["ch", ["~[Quad healed]~"]]); break; case 'b': place(spikeType, toRad(0)); place(spikeType, toRad(90)); place(spikeType, toRad(180)); place(spikeType, toRad(270)); doNewSend(["ch", ["~[Spikes 360 no scope]~"]]); break; case 'Shift': storeEquip(0); break; case 'l': place() break; case 'p': doNewSend(["ch", [customMsg]]); break; case 'o': customMsg = prompt("Choose a new custom message"); break; case 'i': place(millType, toRad(0)); place(millType, toRad(90)); place(millType, toRad(180)); place(millType, toRad(270)); doNewSend(["ch", ["~[Mills 360 no scope]~"]]); break; case 'u': place(boostType, toRad(0)); place(boostType, toRad(90)); place(boostType, toRad(180)); place(boostType, toRad(270)); break; case 'y': if (autoMill === true) { autoMill = false; doNewSend(["ch", ["~[AutoMill {Off}]~"]]); clearInterval(millInt); } else { autoMill = true; doNewSend(["ch", ["~[AutoMill {On}]~"]]); millInt = setInterval(() => { place(millType) }, 50); } break; case 'r': let oldHat = myPlayer.hat; let oldWeapon = myPlayer.weapon; acc(0); // Unequip monkey tail hat(7); // Bull helmet doNewSend(["5", [secondary, true]]); doNewSend(["c", [1]]); setTimeout(() => { doNewSend(["5", [primary, true]]); doNewSend(["c", [1]]); doNewSend(["5", [oldWeapon, true]]); hat(53); // Turret gear setTimeout(() => { hat(oldHat); }, 500); }, 100); break; } } }); document.addEventListener('keyup', (e) => { spike.stop(e.keyCode); boostSpike.stop(e.keyCode); }); function isElementVisible(e) { return (e.offsetParent !== null); } function toRad(angle) { return angle * 0.01745329251; } function dist(a, b) { return Math.sqrt(Math.pow((b.y - a[2]), 2) + Math.pow((b.x - a[1]), 2)); } document.title = "Zombs Mod"; try { document.getElementById("moomooio_728x90_home").style.display = "none"; $("moomooio728x90_home").parent().css({ display: "none" }); } catch (e) { console.log("There was an error removing the ads."); } function update() { for (let i = 0; i < 9; i++) { if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) { primary = i; } } for (let i = 9; i < 16; i++) { if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) { secondary = i; } } for (let i = 16; i < 19; i++) { if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) { foodType = i - 16; } } for (let i = 19; i < 22; i++) { if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) { wallType = i - 16; } } for (let i = 22; i < 26; i++) { if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) { spikeType = i - 16; } } for (let i = 26; i < 29; i++) { if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) { millType = i - 16; } } for (let i = 29; i < 31; i++) { if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) { mineType = i - 16; } } for (let i = 31; i < 33; i++) { if (isElementVisible(document.getElementById("actionBarItem" + i.toString()))) { boostType = i - 16; } } for (let i = 33; i < 39; i++) { if (isElementVisible(document.getElementById("actionBarItem" + i.toString())) && i != 36) { turretType = i - 16; } } spawnpadType = 36; } window.dns = function(sender) { ws.send(new Uint8Array(Array.from(msgpack5.encode(sender)))); } // Old code /* //OP Hat Macro v1.3 var DiscLink = `<span id="DIS"><span>Press F4 to join</span><br><span>discord Server</span><br><span>/(You will leave the game)/</span>`; var int; var isSpecToggled = false; function BuyAll(){ int = 0; var val = setInterval(function(){ int++; Hat(int); if(int === 100){ clearInterval(val); } }, 10); } document.getElementById("promoImg").remove(); document.querySelectorAll('#pre-content-container').forEach(function(a) { a.remove(); }); function Hat(id){ storeBuy(id); storeEquip(id); } window.addEventListener('keydown', function(e) { switch(e.keyCode){ case 82: Hat(6); break; case 84: Hat(7); break; case 89: Hat(40); break; case 85: Hat(12); break; case 71: Hat(53); break; case 16: Hat(0); break; case 77: BuyAll(); break; case 119: spec(); break; case 115: location.href='https://discord.gg/877QrZUXCM'; break; } }); setInterval(() => window.follmoo && follmoo(), 10); function spec() { if(isSpecToggled == false) { $("#gameUI").hide(); $("#menuContainer").hide(); isSpecToggled = !isSpecToggled; } else if(isSpecToggled == true){ $("#gameUI").show(); $("#menuContainer").show(); isSpecToggled = !isSpecToggled; } } $("#topInfoHolder").append(DiscLink); document.getElementById("enterGame").style.color = "#F0F8FF"; */