Auto - Mill

Hotkeys: [N] Enable / Disable Auto - Mill

// ==UserScript==
// @name         Auto - Mill
// @version      0.1
// @description  Hotkeys: [N] Enable / Disable Auto - Mill
// @author       _VcrazY_
// @match        *://*.moomoo.io/*
// @match        *://*moomoo.io/*
// @require      https://code.jquery.com/jquery-3.3.1.slim.min.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.5/socket.io.min.js
// @require      http://code.jquery.com/jquery-3.3.1.min.js
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/msgpack.min.js
// @require      https://cdn.jsdelivr.net/npm/[email protected]/fontfaceobserver.standalone.min.js
// @grant        none
// @namespace    https://gf.qytechs.cn/users/1064285-vcrazy-gaming
// @license MIT
// ==/UserScript==

let mouseX;
let mouseY;
let width;
let height;
let coreURL = new URL(window.location.href);
window.sessionStorage.force = coreURL.searchParams.get("fc");

function aim(x, y) {
    var cvs = document.getElementById("touch-controls-fullscreen");
    cvs.dispatchEvent(new MouseEvent("mousemove", {
        clientX: x,
        clientY: y
    }));
}
var millType;
var ws;
var msgpack5 = window.msgpack;
var boostDir;
var myPlayeroldx;
var myPlayeroldy;
var automillx = 10;
var automilly = 10;
var walkmillhaha = false;
let myPlayer = {
    id: null,
    x: null,
    y: null,
    dir: null,
    object: null,
    weapon: null,
    clan: null,
    isLeader: null,
    hat: null,
    accessory: null,
    isSkull: null
};
document.msgpack = window.msgpack;

function n() {
    this.buffer = new Uint8Array([0]);
    Object.setPrototypeOf(this.buffer, Uint8Array.prototype);
    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 == "C" && myPlayer.id == null) {
        myPlayer.id = data[1];
    }
    if (item == "a") {
        for (let i = 0; i < data[1].length / 13; i++) {
            var object = data[1].slice(13 * i, 13 * i + 13);
            if (object[0] == myPlayer.id) {
                myPlayer.x = object[1];
                myPlayer.y = object[2];
                myPlayer.dir = object[3];
                myPlayer.object = object[4];
                myPlayer.weapon = object[5];
                myPlayer.clan = object[7];
                myPlayer.isLeader = object[8];
                myPlayer.hat = object[9];
                myPlayer.accessory = object[10];
                myPlayer.isSkull = object[11];
            }
        }
        if (automillx == false) {
            automillx = myPlayer.x;
        }
        if (automilly == false) {
            automilly = myPlayer.y;
        }
        if (myPlayeroldy != myPlayer.y || myPlayeroldx != myPlayer.x) {
            if (walkmillhaha == true) {
                if (Math.sqrt(Math.pow(myPlayer.y - automilly, 2) + Math.pow(myPlayer.x - automillx, 2)) > 100) {
                    place(millType, Math.atan2(myPlayeroldy - myPlayer.y, myPlayeroldx - myPlayer.x) + toRad(78));
                    place(millType, Math.atan2(myPlayeroldy - myPlayer.y, myPlayeroldx - myPlayer.x) - toRad(78));
                    place(millType, Math.atan2(myPlayeroldy - myPlayer.y, myPlayeroldx - myPlayer.x) - toRad(0));
                    doNewSend(["D", [Math.atan2(mouseY - height / 2, mouseX - width / 2)]]);
                    automillx = myPlayer.x;
                    automilly = myPlayer.y;
                }
            }
            myPlayeroldx = myPlayer.x;
            myPlayeroldy = myPlayer.y;
        }
    }
    update();
}

function doNewSend(sender) {
    ws.send(new Uint8Array(Array.from(msgpack5.encode(sender))));
}

function place(id, angle = Math.atan2(mouseY - height / 2, mouseX - width / 2)) {
    doNewSend(["z", [id, null]]);
    doNewSend(["F", [1, angle]]);
    doNewSend(["F", [0, angle]]);
    doNewSend(["z", [myPlayer.weapon, true]]);
    doNewSend(["z", [id, null]]);
    doNewSend(["F", [1, angle]]);
    doNewSend(["F", [0, angle]]);
    doNewSend(["z", [myPlayer.weapon, true]]);
}
document.addEventListener("keydown", function(a) {
    if (a.keyCode == 78 && document.activeElement.id.toLowerCase() !== "chatbox") {
        walkmillhaha = !walkmillhaha;
        doNewSend(["6", ["Mills : " + walkmillhaha]]);
    }
});

function isElementVisible(options) {
    return options.offsetParent !== null;
}

function toRad(degrees) {
    return degrees * 0.01745329251;
}

function dist(p1, p) {
    return Math.sqrt(Math.pow(p.y - p1[2], 2) + Math.pow(p.x - p1[1], 2));
}

function update() {
    var f = 26;
    for (; f < 29; f++) {
        if (isElementVisible(document.getElementById("actionBarItem" + f.toString()))) {
            millType = f - 16;
        }
    }
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址