Greasy Fork is available in English.
dont share
// ==UserScript== // @name ws sender // @namespace - // @version 1.0 // @description dont share // @author iXeL // @match *://moomoo.io/* // @match http://dev.moomoo.io/* // @match *sandbox.moomoo.io/* // @match *abc.moomoo.io/* // @grant none // @require https://greasyfork.org/scripts/368273-msgpack/code/msgpack.js?version=598723 // @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== $("#consentBlock").css({display: "none"}); //$("#youtuberOf").css({display: "none"}); document.getElementById("moomooio_728x90_home").style.display = "none"; $("#moomooio_728x90_home").parent().css({display: "none"}); window.onbeforeunload = null; let mouseX; let mouseY; let width; let height; setInterval(() => { if(clanToggle == 1) { doNewSend(["9", [null]]); doNewSend(["8", [animate(false, 5)]]) } doNewSend(["testing", [6]]); }, 200); setInterval(() => { if(messageToggle == 1) { doNewSend(["ch", [animate(true, 5)]]) } }, 200); setInterval(() => { if(autoaim == true) { doNewSend(["2", [nearestEnemyAngle]]); } }, 0); setInterval(() => { if(hatToggle == 1) { if(oldHat != normalHat) { hat(normalHat); console.log("Tried. - Hat") } if(oldAcc != normalAcc) { acc(normalAcc); console.log("Tried. - Acc") } oldHat = normalHat; oldAcc = normalAcc } }, 25); 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 canvas = document.getElementById("gameCanvas"); var nearestEnemy; var nearestEnemyAngle; var isEnemyNear; var instaSpeed = 240; var InstaSpeed = 300; var gameCanvas; 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; 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 = 25; var messageToggle = 0; var clanToggle = 0; let healToggle = 1; let hatToggle = 1; 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); } } } 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) { normalHat = 6; if(primary != 8) { normalAcc = 19 } }; } } if(isEnemyNear == false && autoaim == false) { if (myPlayer.y < 2400){ normalHat = 15; } else if (myPlayer.y > 6850 && myPlayer.y < 7550){ normalHat = 31; } } if (!nearestEnemy) { nearestEnemyAngle = myPlayer.dir; } if(item == "h" && data[1] == myPlayer.id) { if(data[2] < 100 && data[2] > 0 && healToggle == 1) { setTimeout( () => { place(foodType, null); }, healSpeed); } } update(); } 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]]); } document.addEventListener('keydown', (e)=>{ if(e.keyCode == 78 && document.activeElement.id.toLowerCase() !== 'chatbox') { doNewSend(["6", [4]]) } if(e.keyCode == 77 && document.activeElement.id.toLowerCase() !== 'chatbox') { doNewSend(["6", [15]]) } });