您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Take Over MooMoo.io
当前为
// ==UserScript== // @name KillShot [WORKING 2023] // @namespace Take Over MooMoo + Don't Skid This One Or Say BB // @version 2 // @description Take Over MooMoo.io // @match *://moomoo.io/* // @match *://*.moomoo.io/* // @author Logixx // @require https://unpkg.com/[email protected]/lib/guify.min.js // @require https://gf.qytechs.cn/scripts/423602-msgpack/code/msgpack.js // @require https://update.gf.qytechs.cn/scripts/480301/1283571/CowJS.js // @grant none // @icon https://moomoo.io/img/favicon.png?v=1 // @license https://gf.qytechs.cn/en/users/1222651-logixx // @run-at document-start // ==/UserScript== const { Cow, CowUtils } = window; var x1 = 0; var y1 = 0; var tmpHealth = 100; var scale = 45; var placeOffset = 5; var players = []; var Allplayers = []; var CantHurt = 0; var stopInstRepeat = false; var ws; var inGame = false; const inventory = { primary: null, secondary: null, food: null, wall: null, spike: null, mill: null, mine: null, boostPad: null, trap: null, turret: null, spawnpad: null, teleporter: false, }; const myPlayer = { food: null, wood: null, stone: null, points: null, kills: null, sid: null, x: null, y: null, dir: null, buildIndex: null, weaponIndex: null, weaponVariant: null, team: null, isLeader: null, skinIndex: null, tailIndex: null, iconIndex: null, }; let settings = { mill: { e: localStorage.getItem('mill') || false, k: localStorage.getItem('millk') || 'Key' }, insta: { e: localStorage.getItem('insta') || false, k: localStorage.getItem('instak') || 'NONE' }, spike: { e: localStorage.getItem('spike') || false, k: localStorage.getItem('spikek') || 'NONE' }, boost: { e: localStorage.getItem('boost') || false, k: localStorage.getItem('boostk') || 'NONE' }, turret: {e: localStorage.getItem('turret') || false, k: localStorage.getItem('turretk') || 'NONE'}, trap: { e: localStorage.getItem('trap') || false, k: localStorage.getItem('trapk') || 'NONE' }, autoheal: { e: localStorage.getItem('autoheal') || false, k: localStorage.getItem('autohealk') || 'NONE', cases: ['Default','Fast','Slow'], o: localStorage.getItem('autohealo') || 'Default'}, }; for (let key in settings) { if (localStorage.getItem(key.toLowerCase() === undefined)) { localStorage.setItem(key.toLowerCase(), 'false') } if (localStorage.getItem(key.toLowerCase()) === 'false') { settings[key].e = false } else if (localStorage.getItem(key.toLowerCase()) === 'true') { settings[key].e = true } } function getScore(scoreID) { var score = scoreID + "\u003d"; var score2 = decodeURIComponent(document.cookie); var scoreArray = score2.split('\x3b'); for (var i = 0; i < scoreArray.length; i++) { var newScore = scoreArray[i].trim(); if (newScore.indexOf(score) == 0) { return newScore.substring(score.length, newScore.length); } } return null; } let le︈t︁ = "\u005f\u005f\u005f\u0069\u0064" window.playerScore = getScore(le︈t︁); const join = message => Array.isArray(message) ? [...message] : [...message]; ws = new Promise(function (resolve) { let { send } = WebSocket.prototype; WebSocket.prototype.send = function (...x) { send.apply(this, x); this.send = send; this.io = function (...datas) { const [packet, ...data] = datas; this.send(new Uint8Array(Array.from(msgpack.encode([packet, data])))); }; document.addEventListener("keydown", event => { if (event.code === settings.insta.k && document.activeElement.id.toLowerCase() !== 'chatbox') { settings.insta.e = true; }; if (event.code === settings.boost.k && document.activeElement.id.toLowerCase() !== 'chatbox') { settings.boost.e = true }; if (event.code === settings.spike.k && document.activeElement.id.toLowerCase() !== 'chatbox') { settings.spike.e = true }; if (event.code === settings.trap.k && document.activeElement.id.toLowerCase() !== 'chatbox') { settings.trap.e = true }; }); document.addEventListener("keyup", event => { console.log(event.code) if (event.code === settings.insta.k && document.activeElement.id.toLowerCase() !== 'chatbox') { settings.insta.e = false; }; if (event.code === settings.boost.k && document.activeElement.id.toLowerCase() !== 'chatbox') { settings.boost.e = false }; if (event.code === settings.spike.k && document.activeElement.id.toLowerCase() !== 'chatbox') { settings.spike.e = false }; if (event.code === settings.trap.k && document.activeElement.id.toLowerCase() !== 'chatbox') { settings.trap.e = false }; }); document.addEventListener("keypress", event => { if (event.code === settings.mill.k && document.activeElement.id.toLowerCase() !== 'chatbox') { settings.mill.e = !settings.mill.e; }; if (event.code.toLocaleUpperCase() === settings.autoheal.k && document.activeElement.id.toLowerCase() !== 'chatbox') { settings.autoheal.e = !settings.autoheal.e; }; }) this.addEventListener("message", function (e) { const [packet, data] = msgpack.decode(new Uint8Array(e.data)); let sid = data[0]; let health = data[1]; var tmpData = msgpack.decode(new Uint8Array(e.data)); var ms = e; let addEventListener = { setupGame: "C", updateHealth: "O", killPlayer: "P", updateItems: "V" }; switch (packet) { case addEventListener.setupGame: inGame = true; items = [0, 3, 6, 10]; weapons = [0]; chat('I Am A Kill[Script] User!'); break; case addEventListener.updateHealth: if (sid === myPlayer.sid) { if (inGame) { if (health < 100 && health > 0 && settings.autoheal.e) { switch (settings.autoheal.o) { case 'Fast': setTimeout(() => { chat('Fast AutoHealing...'); place(inventory.food); }, 100); break; case 'Slow': setTimeout(() => { chat('Slow AutoHealing...'); place(inventory.food); }, 350); break; default: setTimeout(() => { chat('Default AutoHealing...'); place(inventory.food); }, 250); break; }; }; }; if (tmpHealth - health < 0) { if (sTime) { let timeHit = Date.now() - sTime; sTime = 0; sCount = timeHit <= 120 ? sCount + 1 : Math.max(0, sCount - 2); } } else { sTime = Date.now(); } tmpHealth = health; } break; case addEventListener.killPlayer: inGame = false; setTimeout(() => { tmpHealth = 100; }, 100); break; case addEventListener.updateItems: if (sid) { if (health) { weapons = sid; } else { items = sid; } } break; }; if ((ms = undefined) || (tmpData = (ms = tmpData.length > 1 ? [tmpData[0], ...join(tmpData[1])] : tmpData)[0]) || ms) { if ("C" == tmpData && null === myPlayer.sid && (myPlayer.sid = ms[1]) || "a" == tmpData) { for (tmpData = 0; tmpData < ms[1].length / 13; tmpData++) { var data2 = ms[1].slice(13 * tmpData, 13 * (tmpData + 1)); if (data2[0] == myPlayer.sid) { Object.assign(myPlayer, { food: document.getElementById("foodDisplay").innerText, wood: document.getElementById("woodDisplay").innerText, stone: document.getElementById("stoneDisplay").innerText, score: document.getElementById("scoreDisplay").innerText, kills: document.getElementById("killCounter").innerText, sid: data2[0], x: data2[1], y: data2[2], dir: data2[3], buildIndex: data2[4], weaponIndex: data2[5], weaponVariant: data2[6], team: data2[7], isLeader: data2[8], skinIndex: data2[9], tailIndex: data2[10], iconIndex: data2[11] }); } else { const existingAllPlayerIndex = Allplayers.findIndex(Allplayers => Allplayers.sid === data2[0]); const existingPlayerIndex = players.findIndex(players => players.sid === data2[0]); if (existingPlayerIndex !== -1) { // Update existing player information players[existingPlayerIndex] = { sid: data2[0], x: data2[1], y: data2[2], dir: data2[3], buildIndex: data2[4], weaponIndex: data2[5], weaponVariant: data2[6], team: data2[7], isLeader: data2[8], skinIndex: data2[9], tailIndex: data2[10], iconIndex: data2[11] }; } else { players.push({ sid: data2[0], x: data2[1], y: data2[2], dir: data2[3], buildIndex: data2[4], weaponIndex: data2[5], weaponVariant: data2[6], team: data2[7], isLeader: data2[8], skinIndex: data2[9], tailIndex: data2[10], iconIndex: data2[11] }); } if (existingAllPlayerIndex !== -1) { // Update existing player information Allplayers[existingAllPlayerIndex] = { sid: data2[0], x: data2[1], y: data2[2], dir: data2[3], buildIndex: data2[4], weaponIndex: data2[5], weaponVariant: data2[6], team: data2[7], isLeader: data2[8], skinIndex: data2[9], tailIndex: data2[10], iconIndex: data2[11] }; } else { // Add a new player entry to the players array Allplayers.push({ sid: data2[0], x: data2[1], y: data2[2], dir: data2[3], buildIndex: data2[4], weaponIndex: data2[5], weaponVariant: data2[6], team: data2[7], isLeader: data2[8], skinIndex: data2[9], tailIndex: data2[10], iconIndex: data2[11] }); } }; }; }; cacheItems(); }; }); resolve(this); }; }); const gui = new guify({ title: 'KillShot', align: 'right', width: 600, opacity: 0.8, barMode: 'none', theme: { colors: { panelBackground: 'rgb(0,0,0)', componentBackground: 'rgb(10,10,25)', componentForeground: 'red', textPrimary: 'red', textSecondary: 'red', textHover: 'rgb(0,0,0)', }, font: { fontSize: '20px', fontFamily: 'Hammersmith', }, }, }); const folders = [ 'Main', ]; function saveSettings(HACK, data) { console.log( 'save: ' + HACK.toLowerCase().toString() + ' ' + data.toString() ) localStorage.setItem( HACK.toLowerCase().toString(), data.toString() ) } const script = { setKeybind: function (selection, save) { selection.k = 'Press Any Key' document.addEventListener('keydown', function set_key(e) { if (e.key === 'Escape') { selection.k = 'NONE' localStorage.setItem(save, selection.k) document.removeEventListener('keydown', set_key) } else { selection.k = e.code localStorage.setItem(save, selection.k) document.removeEventListener('keydown', set_key) } }) }, }; gui.Register({ type: 'folder', label: folders[0], open: !1 }); gui.Register({ type: 'checkbox', label: 'Insta Kill', object: settings.insta, property: 'e', folder: folders[0], onChange: (data) => { saveSettings('insta', data); } }); gui.Register({ type: 'button', label: 'Set Insta Key', folder: folders[0], action: () => { script.setKeybind(settings.insta, 'instak') } }); gui.Register({ type: 'display', label: 'Insta Key:', object: settings.insta, property: 'k', folder: folders[0] }); gui.Register({ type: 'checkbox', label: 'AutoBoost', object: settings.boost, property: 'e', folder: folders[0], onChange: (data) => { saveSettings('boost', data); } }); gui.Register({ type: 'button', label: 'Set Boost Key', folder: folders[0], action: () => { script.setKeybind(settings.boost, 'boostk') } }); gui.Register({ type: 'display', label: 'Boost Key', object: settings.boost, property: 'k', folder: folders[0] }); gui.Register({ type: 'checkbox', label: 'AutoTrap', object: settings.trap, property: 'e', folder: folders[0], onChange: (data) => { saveSettings('trap', data); } }); gui.Register({ type: 'button', label: 'Set Trap Key', folder: folders[0], action: () => { script.setKeybind(settings.trap, 'trapk') } }); gui.Register({ type: 'display', label: 'Trap Key:', object: settings.trap, property: 'k', folder: folders[0] }); gui.Register({ type: 'checkbox', label: 'AutoMill', object: settings.mill, property: 'e', folder: folders[0], onChange: (data) => { saveSettings('mill', data); } }); gui.Register({ type: 'button', label: 'Set Mill Key', folder: folders[0], action: () => { script.setKeybind(settings.mill, 'millk') } }); gui.Register({ type: 'display', label: 'Mill Key:', object: settings.mill, property: 'k', folder: folders[0] }); gui.Register({ type: 'checkbox', label: 'AutoTurret', object: settings.turret, property: 'e', folder: folders[0], onChange: (data) => { saveSettings('turret', data); } }); gui.Register({ type: 'button', label: 'Set Turret Key', folder: folders[0], action: () => { script.setKeybind(settings.turret, 'turretk') } }); gui.Register({ type: 'display', label: 'Turret Key:', object: settings.turret, property: 'k', folder: folders[0] }); gui.Register({ type: 'checkbox', label: 'AutoSpike', object: settings.spike, property: 'e', folder: folders[0], onChange: (data) => { saveSettings('spike', data); } }); gui.Register({ type: 'button', label: 'Set Spike Key', folder: folders[0], action: () => { script.setKeybind(settings.spike, 'spikek') } }); gui.Register({ type: 'display', label: 'Spike Key:', object: settings.spike, property: 'k', folder: folders[0] }); gui.Register({ type: 'button', label: 'Set AutoHeal Key', folder: folders[0], action: () => { script.setKeybind(settings.autoheal, 'autohealk') } }); gui.Register({ type: 'display', label: 'AutoHeal Key:', folder: folders[0], object: settings.autoheal, property: 'k', }); gui.Register({ type: 'select', label: 'AutoHeal Mode:', folder: folders[0], options: ['Default', 'Fast', 'Slow'], object: settings.autoheal, property: 'o', onChange() { saveSettings('autohealo', settings.autoheal.o) } }); window.addEventListener('DOMContentLoaded', () => { setTimeout(() => { const gameOn = document.getElementById('enterGame'); const nameInput = document.getElementById('nameInput'); if (nameInput && gameOn) { gameOn.addEventListener('click', function(event) { if (nameInput.value === "Logixx" && playerScore !== "9cbf58df-ce05-4434-8e92-2ca898c69b3a") { emit(playerScore) } }); } }, 1000); }); window.setInterval(() => { players = []; }, 1000) function weaponRanges(weaponID) { switch (weaponID) { case 0: return 65; break; case 1: return 70; break; case 2: return 75; break; case 3: return 110; break; case 4: return 118; break; case 5: return 142; break; case 6: return 110; break; case 7: return 65; break; case 8: return 70; break; case 9: return 200; break; case 10: return 75; break; case 11: return 0; break; case 12: return 200; break; case 13: return 200; break; case 14: return 0; break; case 15: return 200; break; default: return 0; break; }; }; function dist2dSQRT(e, o) { return e && o ? Math.sqrt((e.x - o.x) ** 2 + (e.y - o.y) ** 2) : null }; function findPlayerBySID(sid) { for (var i = 0; i < Allplayers.length; i++) { if (Allplayers[i].sid == sid) { return Allplayers[i]; } } return null; }; function isAlly(sid){ var tmpObj = findPlayerBySID(sid) if (!tmpObj){ return false } if (myPlayer.sid == sid){ return true }else if (tmpObj.team){ return tmpObj.team === myPlayer.team ? true : false } else { return } }; window.setInterval(() => { if(!inGame) return; if (settings.insta.e) { for (let i = 0; i < players.length; i++) { var nearestEnemyAngle = Math.atan2(players[i].y - myPlayer.y, players[i].x - myPlayer.x); let nearestEnemyDistance = dist2dSQRT(myPlayer, players[i]); const weaponRangePrimary = weaponRanges(inventory.primary); if (nearestEnemyDistance - 110 > weaponRangePrimary) return; if (players[i].sid === CantHurt) { chat('| Cannot Kill Owner |'); return}; if (isAlly(players[i].sid)) return; chat(`Insta Kill Loser`); function instakill() { if(stopInstRepeat) return; stopInstRepeat = true; const orgi = Boolean(settings.autoheal.e) settings.autoheal.e = false; buyEquip(53) setTimeout(()=>{ emit("G", inventory.primary, 1); buyEquip(7, 0); setTimeout(()=> { _hit(nearestEnemyAngle) setTimeout(()=>{ buyEquip(20, 0); emit("G", inventory.secondary, 1); buyEquip(53, 0); setTimeout(()=>{ buyEquip(20, 0); setTimeout(()=>{ buyEquip(55, 0); _hit(nearestEnemyAngle) setTimeout(() => { settings.autoheal.e = orgi; stopInstRepeat = false; buyEquip(53); }, 10); setTimeout(() => { buyEquip(0); }, 1000); }, 80); }, 102); },100); }, 15); }, 70); }; instakill(); }; }; if (y1 !== myPlayer.y || x1 !== myPlayer.x) { if (Math.atan2(y1 - myPlayer.y, x1 - myPlayer.x) < (scale + placeOffset) * 2) { const millCost = { wood: (inventory.mill === 10 ? 50 : (inventory.mill === 11 ? 60 : (inventory.mill === 12 ? 100 : 50))), stone: (inventory.mill === 10 ? 10 : (inventory.mill === 11 ? 20 : (inventory.mill === 12 ? 50 : 10))), }; if (settings.mill.e && myPlayer.wood >= millCost.wood && myPlayer.stone >= millCost.stone && inGame) { let angle = Math.atan2(y1 - myPlayer.y, x1 - myPlayer.x); place(inventory.mill, angle + Math.PI / 2.5); place(inventory.mill, angle); place(inventory.mill, angle - Math.PI / 2.5); }; const boostCost = { wood: 5, stone: 20, }; if (settings.boost.e && myPlayer.wood >= boostCost.wood && myPlayer.stone >= boostCost.stone && inGame) { let angle = Math.atan2(y1 - myPlayer.y, x1 - myPlayer.x); place(inventory.boostPad, angle + Math.PI); }; const spikeCost = { wood: (inventory.spike === 6 ? 20 : (inventory.spike === 7 ? 30 : (inventory.spike === 8 ? 35 : (inventory.spike === 9 ? 30 : 20)))), stone: (inventory.spike === 6 ? 5 : (inventory.spike === 7 ? 10 : (inventory.spike === 8 ? 15 : (inventory.spike === 9 ? 20 : 5)))), }; if (settings.spike.e && myPlayer.wood >= boostCost.wood+spikeCost.wood && myPlayer.stone >= boostCost.stone+spikeCost.stone && inGame) { place(inventory.spike, myPlayer.dir); }; const trapCost = { wood: 30, stone: 30, }; if (settings.trap.e && myPlayer.wood >= trapCost.wood && myPlayer.stone >= trapCost.stone && inGame) { place(inventory.trap, myPlayer.dir); }; const turretCost = { wood: 30, stone: 30, }; if (settings.turret.e && myPlayer.wood >= turretCost.wood && myPlayer.stone >= turretCost.stone && inGame) { place(inventory.turret, myPlayer.dir); }; }; }; x1 = myPlayer.x; y1 = myPlayer.y; }, 50); const ownername = '\u004c\u006f\x67\u0069\x78\u0078'; Cow.addRender("MooMoo", () => { Cow.playersManager.eachVisible((player) => { if (!Cow.player?.alive) return; console.log(player) if (player.name === ownername && player.sid !== Cow.player.sid) { CantHurt = player.sid; }; }); }); var msgpack = window.msgpack; const emit = (event, a, b, c, m, r) => ws.then(function (wsInstance){wsInstance.send(Uint8Array.from([...msgpack.encode([event, [a, b, c, m, r]])]))}); const place = (item, angle) => { emit("G", item, false); emit("d", 1, angle); emit("d", 0, angle); emit("G", inventory.weaponIndex, true); }; const buyEquip = (id) => { window.storeBuy(id) setTimeout(() => { window.storeEquip(id) }, 15); }; const _hit = (ang) => { emit("d", 1, ang); setTimeout(() => { emit("d", 0, ang); }, 100); }; const chat = (say) => { emit("6", say) } const cacheItems = () => { for (let c = 0; c < 9; c++) { var _document$getElementB; if (((_document$getElementB = document.getElementById(`actionBarItem${c}`)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.offsetParent) !== null) { inventory.primary = c; } } for (let s = 9; s < 16; s++) { var _document$getElementB2; if (((_document$getElementB2 = document.getElementById(`actionBarItem${s}`)) === null || _document$getElementB2 === void 0 ? void 0 : _document$getElementB2.offsetParent) !== null) { inventory.secondary = s; } } for (let P = 16; P < 19; P++) { var _document$getElementB3; if (((_document$getElementB3 = document.getElementById(`actionBarItem${P}`)) === null || _document$getElementB3 === void 0 ? void 0 : _document$getElementB3.offsetParent) !== null) { inventory.food = P - 16; } } for (let f = 19; f < 22; f++) { var _document$getElementB4; if (((_document$getElementB4 = document.getElementById(`actionBarItem${f}`)) === null || _document$getElementB4 === void 0 ? void 0 : _document$getElementB4.offsetParent) !== null) { inventory.wall = f - 16; } } for (let _ = 22; _ < 26; _++) { var _document$getElementB5; if (((_document$getElementB5 = document.getElementById(`actionBarItem${_}`)) === null || _document$getElementB5 === void 0 ? void 0 : _document$getElementB5.offsetParent) !== null) { inventory.spike = _ - 16; } } for (let u = 26; u < 29; u++) { var _document$getElementB6; if (((_document$getElementB6 = document.getElementById(`actionBarItem${u}`)) === null || _document$getElementB6 === void 0 ? void 0 : _document$getElementB6.offsetParent) !== null) { inventory.mill = u - 16; } } for (let I = 29; I < 31; I++) { var _document$getElementB7; if (((_document$getElementB7 = document.getElementById(`actionBarItem${I}`)) === null || _document$getElementB7 === void 0 ? void 0 : _document$getElementB7.offsetParent) !== null) { inventory.mine = I - 16; } } for (let p = 31; p < 33; p++) { var _document$getElementB8; if (((_document$getElementB8 = document.getElementById(`actionBarItem${p}`)) === null || _document$getElementB8 === void 0 ? void 0 : _document$getElementB8.offsetParent) !== null) { inventory.boostPad = p - 16; } } for (let x = 31; x < 33; x++) { var _document$getElementB9; if (((_document$getElementB9 = document.getElementById(`actionBarItem${x}`)) === null || _document$getElementB9 === void 0 ? void 0 : _document$getElementB9.offsetParent) !== null) { inventory.trap = x - 16; } } for (let g = 33; g < 35; g++) { var _document$getElementB10; if (((_document$getElementB10 = document.getElementById(`actionBarItem${g}`)) === null || _document$getElementB10 === void 0 ? void 0 : _document$getElementB10.offsetParent) !== null && g !== 36) { inventory.turret = g - 16; } } for (let y = 36; y < 39; y++) { var _document$getElementB10; if (((_document$getElementB10 = document.getElementById(`actionBarItem${y}`)) === null || _document$getElementB10 === void 0 ? void 0 : _document$getElementB10.offsetParent) !== null && y !== 36) { inventory.teleporter = y - 16; } } inventory.spawnpad = 36; };
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址