// ==UserScript==
// @name MOOMOO.IO Insane Mod! *BETA* (Working After Patch)
// @namespace MOOMOO.IO Insane Mod! *BETA* (Working After Patch)
// @version 1
// @description Better Minimap, Hat & Accessory Toolbar, Auto Heal, Double Hit, Knockback, Easy Bow, Rainbow Hat
// @author TigerYT
// @match http://moomoo.io/*
// @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==
$("#youtuberOf").remove();
$("#followText").remove();
$("#twitterFollow").remove();
$("#youtubeFollow").remove();
$("#adCard").remove();
$("#mobileInstructions").remove();
$("#promoImgHolder").remove();
$("#downloadButtonContainer").remove();
$("#mobileDownloadButtonContainer").remove();
$(".downloadBadge").remove();
$("#rightCardHolder").append("<div class='menuCard' id='guideCard'><div class='menuHeader'>How to use Mod <br></div><div class='menuText'> U = Windmill <br> <br> I = Spikes <br> <br> O = Pittrap/Booster Pad <br> <br> J = Turret <br> <br> Home = Rainbow Hat <br> <br> Right Click = Easy Bow <br> (Any Weapon + Bow/Crossbow)<br> <br> Right Click = Double Hit <br> (Any Weapon + Hammer) <br> <br> Right Click = Knockback <br> (Any Weapon + Musket) <br> <br> F = Toggle Hat & Accessory Toolbar Off/On <br> <br> Click Auto Heal Checkbox = Toggle Autoheal Off/On </div></div>");
$('#mapDisplay').css({'background': 'url("https://i.imgur.com/fz0h1Vh.png")'});
(function() { var conf = {'map': {'w': '260','h': '260',},};
$('#mapDisplay').css({'width': conf.map.w + 'px','height': conf.map.h + 'px'});
$('#scoreDisplay').css({'bottom': '290px'});})();
var moomooVer = $('#linksContainer2 .menuLink').html(),
removeSelectors = ['#mobileDownloadButtonContainer',
'#followText',
'#smallLinks',
'#linksContainer1',
'#twitterFollow',
'#youtubeFollow',
'#cdm-zone-02',
'#youtuberOf',
'#downloadButtonContainer',
'#promoImg',
'.menuHeader',
'.menuLink',
'.menuHeader:nth-child(5)',
'.menuHeader:nth-child(6)',
'.menuText',],
css = '#rightCardHolder {display: block!important}',
head = document.head || document.getElementsByTagName('head')[0],
style = document.createElement('style');
style.type = 'text/css';
if (style.styleSheet){
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}
for ( let i = 0; i < removeSelectors.length; i++ ) {
$(removeSelectors[i]).remove();
}
head.appendChild(style);
$('#linksContainer2').html('<a href="./docs/versions.txt" target="_blank" class="menuLink">' + moomooVer + '</a>');
document.getElementById('promoImgHolder').innerHTML = '</iframe><iframe width="420px" height="236.25px" src="https://www.youtube-nocookie.com/embed/T5UsrAxid74" frameborder="0" allowfullscreen></iframe>';
document.getElementById('adCard').innerHTML = '<iframe width="420px" height="236.25px" src="https://www.youtube-nocookie.com/embed/EQ9VUuGwick" frameborder="0" allowfullscreen></iframe>';
// document.getElementById('downloadButtonContainer').innerHTML = '</iframe><iframe width="420px" height="236.25px" src="http://icecast3.play.cz/evropa2-128.mp3"></iframe>';
// document.getElementById("mainMenu").style.backgroundImage = "url('https://cdn.wallpapersafari.com/41/51/Ydlqcz.jpg')";
document.getElementById('enterGame').innerHTML = '? ZABÍJET ?';
document.getElementById('loadingText').innerHTML = 'NAČÍTÁNÍ...';
document.getElementById("nameInput").placeholder = "ZADEJTE SVÉ JMÉNO";
document.getElementById("chatBox").placeholder = "PIŠTE ZPRÁVU";
document.getElementById('diedText').innerHTML = '? BYL JSI ZABIT ?';
document.getElementById('gameName').innerHTML = '?FENRIR?';
$('.menuCard').css({'white-space': 'unset','text-align': 'center',
'background-color': 'rgba(0, 0, 0, 0.74)',
'-moz-box-shadow': '0px 0px rgba(255, 255, 255, 0)',
'-webkit-box-shadow': '0px 0px rgba(255, 255, 255, 0)',
'box-shadow': '0px 0px rgba(255, 255, 255, 0)',
'-webkit-border-radius': '0px',
'-moz-border-radius': '0px','border-radius': '0px'});
$('#guideCard').css({'overflow-y': 'hidden'});
$('#serverSelect').css({'margin-bottom': '30.75px'});
$('#skinColorHolder').css({'margin-bottom': '30.75px'});
$('.settingRadio').css({'margin-bottom': '30.75px'});
$('#partyButton').css({'left': '20px',
'right': 'auto'});
$('#joinPartyButton').css({'top': '20px'});
$('#linksContainer2').css({'-webkit-border-radius': '0px 0 0 0',
'-moz-border-radius': '0px 0 0 0',
'border-radius': '0px 0 0 0',
'right': '44%','left': '44%',
'background-color': 'rgba(0, 0, 0, 0.74)',
'text-align': 'center','bottom': '3.5px'});
$('#gameName').css({'color': '#FF0000',
'text-shadow': '0 1px 0 rgba(255, 255, 255, 0), 0 2px 0 rgba(255, 255, 255, 0), 0 3px 0 rgba(255, 255, 255, 0), 0 4px 0 rgba(255, 255, 255, 0), 0 5px 0 rgba(255, 255, 255, 0), 0 6px 0 rgba(255, 255, 255, 0), 0 7px 0 rgba(255, 255, 255, 0), 0 8px 0 rgba(255, 255, 255, 0), 0 9px 0 rgba(255, 255, 255, 0)',
'margin-bottom': '-10px'});
$('#loadingText').css({'color': '#808080',
'background-color': 'rgba(0, 0, 0, 0.74)',
'padding': '8px',
'bottom': '-60px',
'right': '35%',
'left': '35%'});
$('.ytLink').css({'color': '#144db4','padding': '8px',
'background-color': 'rgba(0, 0, 0, 0.74)'});
$('.menuLink').css({'color': '#144db4'});
$('#nameInput').css({'border-radius': '0px',
'-moz-border-radius': '0px',
'-webkit-border-radius': '0px',
'border': 'hidden'});
$('#serverSelect').css({'cursor': 'pointer',
'color': '#FF0000',
'background-color': '#808080',
'border': 'hidden',
'font-size': '20px'});
$('.menuButton').css({'border-radius': '0px',
'-moz-border-radius': '0px',
'-webkit-border-radius': '0px'});
$('#promoImgHolder').css({'position': 'absolute',
'bottom': '-7%',
'left': '20px',
'width': '420px',
'height': '236.25px',
'padding-bottom': '18px',
'margin-top': '0px'});
$('#adCard').css({'position': 'absolute',
'bottom': '-7%',
'right': '20px',
'width': '420px',
'height': '236.25px',
'padding-bottom': '18px'});
$('#mapDisplay').css({'-webkit-border-radius': '0px',
'-moz-border-radius': '0px',
'border-radius': '0px'});
$('.menuHeader').css({'color': 'rgba(255, 255, 255, 1)',});
$('#killCounter').css({'color': '#ededed'});
$('#diedText').css({'background-color': 'rgba(0, 0, 0, 0.74)'});
$('#gameCanvas').css({'background-color': '#f4f4f4'});
$('#allianceButton').css({'color': 'rgba(0, 0, 0, 1)'});
$('#storeButton').css({'color': 'rgba(0, 0, 0, 1)'});
$('#chatButton').css({'color': 'rgba(0, 0, 0, 1)'});
$('.gameButton').css({'-webkit-border-radius': '0px 0 0 0',
'-moz-border-radius': '0px 0 0 0',
'border-radius': '0px 0 0 0',
'background-color': 'rgba(0, 0, 0, 0.4)'});
$('.uiElement, .resourceDisplay').css({'-webkit-border-radius': '0px',
'-moz-border-radius': '0px',
'border-radius': '0px',
'background-color': 'rgba(0, 0, 0, 0.4)'});
$('#chatBox').css({'-webkit-border-radius': '0px',
'-moz-border-radius': '0px',
'border-radius': '0px',
'background-color': 'rgba(0, 0, 0, 0.4)',
'text-align': 'center'});
$('#foodDisplay').css({'color': '#ae4d54'});
$('#woodDisplay').css({'color': '#758f58'});
$('#stoneDisplay').css({'color': '#818198'});
$('#scoreDisplay').css({'color': '#c2b17a'});
$('#leaderboard').css({'-webkit-border-radius': '0px',
'-moz-border-radius': '0px',
'border-radius': '0px',
'background-color': 'rgba(0, 0, 0, 0.4)'});
$('.leaderboardItem').css({'': ''});
$('#ageText').css({'color': '#000'});
$('#ageBar').css({'-webkit-border-radius': '0px',
'-moz-border-radius': '0px',
'border-radius': '0px',
'background-color': 'rgba(0, 0, 0, 0.4)'});
$('#ageBarBody').css({'-webkit-border-radius': '0px',
'-moz-border-radius': '0px',
'border-radius': '0px',
'background-color': '#FF0000'});
$('.storeTab').css({'-webkit-border-radius': '0px',
'-moz-border-radius': '0px',
'border-radius': '0px',
'background-color': 'rgba(0, 0, 0, 0.4)'});
$('#storeHolder').css({'-webkit-border-radius': '0px',
'-moz-border-radius': '0px',
'border-radius': '0px',
'background-color': 'rgba(0, 0, 0, 0.4)'});
$('#allianceHolder').css({'-webkit-border-radius': '0px',
'-moz-border-radius': '0px',
'border-radius': '0px',
'background-color': 'rgba(0, 0, 0, 0.4)'});
$('.actionBarItem').css({'-webkit-border-radius': '0px',
'border-radius': '0px',
'background-color': 'rgba(0, 0, 0, 0.4)'});
var myElement = document.querySelector("#nameInput");
myElement.style.backgroundColor = "#808080";
myElement.style.color = "#FF0000";
var myElement = document.querySelector("#enterGame");
myElement.style.backgroundColor = "#FF0000";
myElement.style.color = "#808080";
$('#leaderboard').append('╳╳FENRIR╳╳');
(function () {
var ITEM_TYPE = {
WEAPON: 0,
STONE: 1,
FOOD: 2,
PITTRAP: 3,
WINDMAIL: 4,
TWO_WEAPON: 5,
SPIKES: 6,
TURRET: 7,
MINE: 8
};
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.TWO_WEAPON,
name: "Hunting bow"
}, {
id: 6,
sid: 6,
type: ITEM_TYPE.TWO_WEAPON,
name: "Great hammer"
}, {
id: 7,
sid: 7,
type: ITEM_TYPE.TWO_WEAPON,
name: "Wooden shield"
}, {
id: 8,
sid: 8,
type: ITEM_TYPE.TWO_WEAPON,
name: "Crossbow"
}, {
id: 9,
sid: 9,
type: ITEM_TYPE.TWO_WEAPON,
name: "Musket"
}, {
id: 2,
type: ITEM_TYPE.STONE,
name: "Wood wall"
}, {
id: 3,
type: ITEM_TYPE.STONE,
name: "Stone wall",
sid: 13
}, {
id: 4,
sid: 14,
type: ITEM_TYPE.STONE,
name: "Castle wall"
}, {
id: 0,
type: ITEM_TYPE.FOOD,
name: "Apple"
}, {
id: 1,
sid: 12,
type: ITEM_TYPE.FOOD,
name: "Cookie"
}, {
id: 11,
type: ITEM_TYPE.PITTRAP,
sid: 21,
name: "Pit trap"
}, {
id: 12,
type: ITEM_TYPE.PITTRAP,
sid: 22,
name: "Boost pad "
}, {
id: 8,
type: ITEM_TYPE.WINDMAIL,
name: "Windmill"
}, {
id: 9,
type: ITEM_TYPE.WINDMAIL,
sid: 19,
name: "Faster windmill"
}, {
id: 5,
type: ITEM_TYPE.SPIKES,
name: "Spikes"
}, {
id: 6,
type: ITEM_TYPE.SPIKES,
sid: 16,
name: "Greater spikes"
}, {
id: 7,
type: ITEM_TYPE.SPIKES,
sid: 17,
name: "Poison spikes"
}, {
id: 13,
type: ITEM_TYPE.TURRET,
sid: 23,
name: "Turret"
}];
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.STONE] = getItemById(2);
this.items[ITEM_TYPE.FOOD] = getItemById(0);
this.items[ITEM_TYPE.WINDMAIL] = getItemById(8);
this.items[ITEM_TYPE.TURRET] = getItemById(13);
this.itemInHand = this.items[ITEM_TYPE.WEAPON];
}
btnEnterGame.onmousedown = function () {
StartBot();
btnEnterGame.onmousedown = null;
};
$('#adCard').remove();
document.addEventListener('keydown', function (e) {
if (ws && e.button == 1) {
switch (e.keyCode) {
// M
case 77:
if (player.items[ITEM_TYPE.WINDMAIL]) ws.send("42[\"5\"," + player.items[ITEM_TYPE.WINDMAIL].id + ",null]");
break;
// N
case 78:
e.stopPropagation();
if (player.items[ITEM_TYPE.TURRET]) ws.send("42[\"5\"," + player.items[ITEM_TYPE.TURRET].id + ",null]");
break;
// B
case 66:
e.stopPropagation();
if (player.items[ITEM_TYPE.SPIKES]) ws.send("42[\"5\"," + player.items[ITEM_TYPE.SPIKES].id + ",null]");
break;
// V
case 86:
e.stopPropagation();
if (player.items[ITEM_TYPE.PITTRAP]) ws.send("42[\"5\"," + player.items[ITEM_TYPE.PITTRAP].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();
}, 200);
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 == 36) {
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);
}
})();