🏠 Home 

Moomoo.io Zombs Mod

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";
*/