MooMoo.io Anti-Kick

Anti-kick for MooMoo.io

目前为 2023-08-27 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.gf.qytechs.cn/scripts/474034/1241805/MooMooio%20Anti-Kick.js

// ==UserScript==
// @name         MooMoo.io Anti-Kick
// @namespace    https://gf.qytechs.cn/users/1064285-vcrazy-gaming
// @version      1
// @description  Anti-kick for MooMoo.io
// @author       _VcrazY_
// @match        *://moomoo.io/*
// @match        *://*.moomoo.io/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @require      https://gf.qytechs.cn/scripts/423602-msgpack/code/msgpack.js
// @grant        none
// @license      MIT
// ==/UserScript==
/* jshint esversion:11 */

(async () => {
  const { decode } = window.msgpack;
  const ignoredDataTypes = new Set(["pp", "rmd"]);
  const delayedDataTypes = new Set(["5", "c", "33", "2", "7", "13c"]);
  const receivedData = new Map();
  const delayedQueue = [];
  let lastUpdateTime = Date.now();

  const isDataIgnored = (dataType, data) => {
    if (Date.now() - lastUpdateTime > 125) {
      receivedData.clear();
      lastUpdateTime = Date.now();
    }

    if (!ignoredDataTypes.has(dataType)) {
      const previousData = receivedData.get(dataType);

      if ((dataType === "2" || dataType === "33") && previousData?.[0] === data[0]) {
        return true;
      }

      if (delayedQueue.length > 10 && delayedDataTypes.has(dataType)) {
        delayedQueue.push([dataType, data]);
        return true;
      }

      receivedData.set(dataType, data);
    }

    return false;
  };

  const originalSend = WebSocket.prototype.send;
  WebSocket.prototype.send = function (data) {
    const [dataType, dataPayload] = decode(new Uint8Array(data));

    if (!isDataIgnored(dataType, dataPayload)) {
      originalSend.call(this, data);
    }
  };

  if (!WebSocket.prototype.isMessageEventListenerSet) {
    WebSocket.prototype.addEventListener("message", async (event) => {
      if (delayedQueue.length > 0) {
        const [dataType, dataPayload] = delayedQueue.shift();
        if (dataType === "33") {
          this.send(msgpackEncode([dataType, dataPayload]));
        }
      }
    });
    WebSocket.prototype.isMessageEventListenerSet = true;
  }
})();

QingJ © 2025

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