Genesis Mod

OP Mod In 2024!

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Genesis Mod
// @namespace    http://tampermonkey.net/
// @version      v3.0.2
// @description  OP Mod In 2024!
// @author       2k09__
// @match        https://moomoo.io/
// @match        https://dev.moomoo.io/
// @match        https://sandbox.moomoo.io/
// @license      MIT
// @grant        none
// ==/UserScript==
var ws;
$("#moomooio_728x90_home").parent().css({display: "none"});
    setTimeout(() => {
    document.getElementById("gameName").innnerHTML = 'G';
     document.getElementById("gameName").style.color = "#000000";
    setTimeout(() => {
     document.getElementById("gameName").innerHTML = 'Ge';
      document.getElementById("gameName").style.color = "#000000";
    setTimeout(() => {
      document.getElementById("gameName").innerHTML = 'Gen';
       document.getElementById("gameName").style.color = "#000000";
    setTimeout(() => {
    document.getElementById("gameName").innnerHTML = 'Gene';
     document.getElementById("gameName").style.color = "#000000";
    setTimeout(() => {
     document.getElementById("gameName").innerHTML = 'Genes';
      document.getElementById("gameName").style.color = "#000000";
    setTimeout(() => {
      document.getElementById("gameName").innerHTML = 'Genesi';
       document.getElementById("gameName").style.color = "#000000";
    setTimeout(() => {
    document.getElementById("gameName").innnerHTML = 'Genesis';
     document.getElementById("gameName").style.color = "#000000";
    setTimeout(() => {
     document.getElementById("gameName").innerHTML = 'Genesis ';
      document.getElementById("gameName").style.color = "#000000";
    setTimeout(() => {
      document.getElementById("gameName").innerHTML = 'Genesis M';
       document.getElementById("gameName").style.color = "#000000";
    setTimeout(() => {
    document.getElementById("gameName").innnerHTML = 'Genesis Mo';
     document.getElementById("gameName").style.color = "#000000";
    setTimeout(() => {
     document.getElementById("gameName").innerHTML = 'Genesis Mod';
      document.getElementById("gameName").style.color = "#000000";
          }, 10000);
         }, 10000);
        }, 10000);
       }, 10000);
      }, 10000);
     }, 10000);
    }, 10000);
   }, 10000);
  }, 10000);
 }, 10000);
}, 10000);

      setTimeout(() => {
      document.getElementById("diedText").innerHTML = 'R';
       document.getElementById('diedText').style.color = "#000000";
      setTimeout(() => {
      document.getElementById("diedText").innerHTML = 'Re';
        document.getElementById('diedText').style.color = "#000000";
      setTimeout(() => {
      document.getElementById("diedText").innerHTML = 'Rev';
        document.getElementById('diedText').style.color = "#000000";
      setTimeout(() => {
      document.getElementById("diedText").innerHTML = 'Reve';
        document.getElementById('diedText').style.color = "#000000";
      setTimeout(() => {
      document.getElementById("diedText").innerHTML = 'Reven';
        document.getElementById('diedText').style.color = "#000000";
      setTimeout(() => {
      document.getElementById("diedText").innerHTML = 'Reven';
        document.getElementById('diedText').style.color = "#000000";
      setTimeout(() => {
      document.getElementById("diedText").innerHTML = 'Reveng';
        document.getElementById('diedText').style.color = "#000000";
      setTimeout(() => {
      document.getElementById("diedText").innerHTML = 'Revenge';
        document.getElementById('diedText').style.color = "#000000";
      setTimeout(() => {
      document.getElementById("diedText").innerHTML = 'Revenge !';
        document.getElementById('diedText').style.color = "#000000";
        }, 510);
       }, 510);
      }, 510);
     }, 510);
    }, 510);
   }, 510);
  }, 510);
 }, 510);
}, 510);
setTimeout(() => {
 document.getElementById("leaderboard").innerHTML = 'Im';
  document.getElementById("leaderboard").style.color = "#000000";
  setTimeout(() => {
   document.getElementById("leaderboard").innerHTML = 'Super';
    document.getElementById("leaderboard").style.color = "#000000";
    setTimeout(() => {
     document.getElementById("leaderboard").innerHTML = 'Pro';
      document.getElementById("leaderboard").style.color = "#000000";
      setTimeout(() => {
       document.getElementById("leaderboard").innerHTML = 'Now';
        document.getElementById("leaderboard").style.color = "#000000";
         setTimeout(() => {
          document.getElementById("leaderboard").innerHTML = 'Im Super Pro Now !';
           document.getElementById("leaderboard").style.color = "#00000";
        }, 10000);
      }, 10000);
    }, 10000);
  }, 10000);
}, 25000);


const MooMoo = (function MooMooJS_beta() {})[69]

MooMoo.addEventListener("updatehealth", (data) => {
    let sid = data[0]
    let health = data[1]

    if (MooMoo.myPlayer.sid === sid && health < 100) {

        let food = MooMoo.myPlayer.inventory.food;

        if(health < 100 && health > 79) {
        setTimeout(() => {
        MooMoo.myPlayer.place(food)
        }, 90);
        } else if(health < 80 && health > 59) {
            storeEquip(6)
            setTimeout(() => {
                MooMoo.myPlayer.place(food)
                MooMoo.myPlayer.place(food)
            }, 90);
        } else if(health < 60 && health > 39) {
            storeEquip(7)
            MooMoo.myPlayer.place(food)
            MooMoo.myPlayer.place(food)
        } else if(health < 40 && health > 0) {
            storeEquip(7)
            MooMoo.myPlayer.place(food)
            MooMoo.myPlayer.place(food)
            MooMoo.myPlayer.place(food)
        };
    };
});
   var hatList = {
       Unequip: 0,
       WinterCap: 15,
       BullHelmet: 7,
       SoldierHelmet: 6,
       TankGear: 40,
       TurretGear: 53,
       FlipperHat: 31,
       BoosterHat: 12,
       BarbarianArmor: 26,
       EmpHelmet: 22,
       ThiefGear: 52,
       SamuraiArmor: 20,
       AssassinGear: 56,
       BushidoArmor: 16,
       PigHead: 29
   };
    function buyAndEquip(name) {
        var target2 = hatList.name;
        storeBuy(target2);
        storeEquip(target2);
    };
    if (document.activeElement.id !== 'chatBox'){
        document.addEventListener('keydown', function(e) {
            switch (e.keyCode) {
                case 16: buyAndEquip('Unequip'); break; // Shift
                case 82: buyAndEquip('BullHelmet'); break; // R
                case 90: buyAndEquip('TankGear'); break; // Z
                case 71: buyAndEquip('SoldierHelmet'); break; // G
                case 66: buyAndEquip('BoosterHat'); break; // B
                case 89: buyAndEquip('FlipperHat'); break; // Y
                case 78: buyAndEquip('WinterCap'); break; // N
                case 74: buyAndEquip('EmpHelmet'); break; // J
                case 84: buyAndEquip('TurretGear'); break; // T
                case 88: buyAndEquip('ThiefGear'); break; // K
                case 76: buyAndEquip('BarbarianArmor'); break; // H
                case 85: buyAndEquip('SamuraiArmor'); break; // U
                case 73: buyAndEquip('AssassinGear'); break; // I
                case 79: buyAndEquip('BushidoArmor'); break; // O
                case 80: buyAndEquip('PigHead'); break; // P
            };
        });
    };
localStorage.moofoll = !0;
var preInsta = false,
   canInsta = false;

function updatePreInstaStatus() {
   var e = document.getElementById("preInstaStatus");
   preInsta ? (e.innerText = "[true]") : (e.innerText = "[false]");
}
async function asyncInsta() {
   let e = MooMoo.ActivePlayerManager.getClosestEnemyDistance();
   if (preInsta && !canInsta && e && e <= 200) {
      canInsta = true;
      let {
         secondary: o
      } = MooMoo.myPlayer.inventory,
         t = MooMoo.ActivePlayerManager.getClosestEnemyAngle(), {
            primary: a,
         } = MooMoo.myPlayer.inventory;
      MooMoo.myPlayer.hit(t);
      MooMoo.sendPacket("5", a, true);
      MooMoo.myPlayer.buyHat(7);
      MooMoo.myPlayer.equipHat(7);
      MooMoo.myPlayer.unequipAccessory();
      setTimeout(() => {
         MooMoo.myPlayer.hit(t);
         MooMoo.myPlayer.buyHat(53);
         MooMoo.myPlayer.equipHat(53);
         MooMoo.sendPacket("5", o, true);
      }, 100);
      setTimeout(() => {
         MooMoo.sendPacket("5", a, true);
         MooMoo.myPlayer.buyHat(6);
         MooMoo.myPlayer.equipHat(6);
         MooMoo.myPlayer.buyAccessory(11);
         MooMoo.myPlayer.equipAccessory(11);
         2400 > MooMoo.myPlayer.y ?
            (MooMoo.myPlayer.buyHat(15), MooMoo.myPlayer.equipHat(15)) :
            6850 < MooMoo.myPlayer.y && MooMoo.myPlayer.y < 7550 ?
            (MooMoo.myPlayer.buyHat(31), MooMoo.myPlayer.equipHat(31)) :
            (MooMoo.myPlayer.buyHat(12), MooMoo.myPlayer.equipHat(12));
         canInsta = false;
         preInsta = false;
         document.getElementById("preInstaStatus").innerText = "[false]";
      }, 200);
   }
}
var isKeyDown = false;

function handleKeyDown(e) {
   82 !== e.which ||
      isKeyDown ||
      "chatbox" === document.activeElement.id.toLowerCase() ||
      ((isKeyDown = true),
         preInsta ? ((preInsta = false), (canInsta = false)) : (preInsta = true),
         asyncInsta(),
         updatePreInstaStatus());
}

function handleKeyUp(e) {
   82 === e.which && (isKeyDown = false);
}
document.addEventListener("keydown", handleKeyDown);
document.addEventListener("keyup", handleKeyUp);
document.addEventListener("keydown", handleKeyDown);
MooMoo.addEventListener("updatePlayers", function (e) {
   canInsta || asyncInsta();
});
var preInstaStatusElement = document.createElement("div");
preInstaStatusElement.id = "preInstaStatus";
preInstaStatusElement.style.position = "fixed";
preInstaStatusElement.style.top = "5%";
preInstaStatusElement.style.left = "5%";
preInstaStatusElement.style.transform = "translate(-50%, -50%)";
preInstaStatusElement.style.color = "white";
preInstaStatusElement.style.fontSize = "25px";
document.body.appendChild(preInstaStatusElement);
updatePreInstaStatus();

(() => {
    // Constants and Variables
    let ws = null;
    let x = 0;
    let y = 0;
    let msgpack5 = window.msgpack;
    let scale = 45;
    let placeOffset = 5;
    let autoMill = false;
    let moreMill = false;
    let Allplayers = [];
    let players = [];
    //--------------------------------------------------------------------------------------------------
    const inventory = {
        primary: null,
        secondary: null,
        food: null,
        wall: null,
        spike: null,
        mill: null,
        mine: null,
        boostPad: null,
        trap: null,
        turret: null,
        teleporter: null,
        spawnpad: null
    };
    const vars = {
        camX: 0,
        camY: 0
    };
    const myPlayer = {
        sid: null,
        x: null,
        y: null,
        dir: null,
        buildIndex: null,
        weaponIndex: null,
        weaponVariant: null,
        team: null,
        isLeader: null,
        skinIndex: null,
        tailIndex: null,
        iconIndex: null
    };

    //--------------------------------------------------------------------------------------------------
    // Helper Functions

    /**
   * Utility function to join arrays
   * @param {Array} message - The array to join
   * @returns {Array} - Joined array
   */
    const join = message => Array.isArray(message) ? [...message] : [...message];

    /**
   * Hook function for WebSocket
   * @param {object} ms - WebSocket message
   */
    const hookWS = ms => {
        let tmpData = msgpack5.decode(new Uint8Array(ms.data));
        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++) {
                    let data = ms[1].slice(13 * tmpData, 13 * (tmpData + 1));
                    if (data[0] == myPlayer.sid) {
                        Object.assign(myPlayer, {
                            x: data[1],
                            y: data[2],
                            dir: data[3],
                            buildIndex: data[4],
                            weaponIndex: data[5],
                            weaponVariant: data[6],
                            team: data[7],
                            isLeader: data[8],
                            skinIndex: data[9],
                            tailIndex: data[10],
                            iconIndex: data[11]
                        });
                    }
                }
            }

            vars.camX || (vars.camX = myPlayer.x);
            vars.camY || (vars.camY = myPlayer.y);

            //--------------------------------------------------------------------------------------------------
            //--------------------------------------------------------------------------------------------------
            if (y !== myPlayer.y || x !== myPlayer.x) {
                //--------------------------------------------------------------------------------------------------
                // AUTO MILL CODE:
                if (autoMill) {
                    let angle = Math.atan2(y - myPlayer.y, x - myPlayer.x);
                    place(inventory.mill, angle + Math.PI / 2.5);
                    place(inventory.mill, angle);
                    place(inventory.mill, angle - Math.PI / 2.5);
                }
                x = myPlayer.x;
                y = myPlayer.y;
            }
            if(moreMill){
                place(inventory.mill);
            }
        }
        cacheItems();
    }
    //--------------------------------------------------------------------------------------------------

    /**
   * Function to emit a packet
   * @param {string} event - Event type
   * @param {*} a - Parameter a
   * @param {*} b - Parameter b
   * @param {*} c - Parameter c
   * @param {*} m - Parameter m
   * @param {*} r - Parameter r
   */
    const emit = (event, a, b, c, m, r) => ws.send(Uint8Array.from([...msgpack5.encode([event, [a, b, c, m, r]])]));

    /**
   * Function to place an item
   * @param {number} event - Event type
   * @param {number} l - Angle
   */
    const place = (event, l) => {
        emit("G", event, false);
        emit("d", 1, l);
        emit("d", 0, l);
        emit("G", myPlayer.weaponIndex, true);
    };
    const hit = function (ang) {
        emit("d", 1, ang);
        emit("d", 0, ang);
        emit("G", myPlayer.weaponIndex, true);
    };

    /**
   * Function to send a chat message
   * @param {string} event - The chat message
   */
    const chat = event => emit("6", event);

    //--------------------------------------------------------------------------------------------------
    /**
   * Cache the player's items
   */
    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++) {
            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;
    };
    //--------------------------------------------------------------------------------------------------
    // Auto Mill
    document.addEventListener("keydown", event => {
        if (event.keyCode === 77 && document.activeElement.id.toLowerCase() !== 'chatbox') {//M
            autoMill = !autoMill;
        }
        if (event.keyCode === 70 && document.activeElement.id.toLowerCase() !== 'chatbox'){//N
            moreMill = true;
        }
    });
    document.addEventListener("keyup", event => {
        if (event.keyCode === 70 && document.activeElement.id.toLowerCase() !== 'chatbox'){//N
            moreMill = false;
        }
    });
    //--------------------------------------------------------------------------------------------------
    // Override WebSocket's send method
    document.msgpack = window.msgpack;
    WebSocket.prototype.oldSend = WebSocket.prototype.send;
    WebSocket.prototype.send = function (event) {
        ws || (document.ws = this, ws = this, document.ws.addEventListener("message", hookWS));
        this.oldSend(event);
    };
})();
let msgpack5 = window.msgpack;
 let prevCount = 0;

/**
 * Attach an event listener to the WebSocket object
 * @param {WebSocket} e - The WebSocket object
 */
const attachWebSocketListener = e => {
  e.addEventListener("message", hookWS);
};

/**
 * WebSocket message hook function
 * @param {MessageEvent} e - The WebSocket message event
 */
const hookWS = e => {
  // You can add actions related to WebSocket messages here
};

/**
 * Send a packet on the WebSocket
 * @param {Array} e - The packet to send
 */
const sendPacket = e => {
  if (ws) {
    ws.send(msgpack5.encode(e));
  }
};

/**
 * Send a chat message
 * @param {string} e - The message to send
 */
const chat = e => {
  sendPacket(["6", [e]]);
};

// Override WebSocket's send method
WebSocket.prototype.oldSend = WebSocket.prototype.send;
WebSocket.prototype.send = function (e) {
  if (!ws) {
    [document.ws, ws] = [this, this];
    attachWebSocketListener(this);
  }
  this.oldSend(e);
};

// Mutation Observer
/**
 * Handle observed mutations
 * @param {MutationRecord[]} mutationsList - List of observed mutations
 */
const handleMutations = mutationsList => {
  for (const mutation of mutationsList) {
    if (mutation.target.id === "killCounter") {
      const count = parseInt(mutation.target.innerText, 10) || 0;
      if (count > prevCount) {
        chat("Genesis Mod v3 - GG");
        prevCount = count;
      }
    }
  }
};
const observer = new MutationObserver(handleMutations);
observer.observe(document, {
  subtree: true,
  childList: true
});