[銀河奶牛]強化工具

統計強化成功/失敗次數

目前為 2024-09-05 提交的版本,檢視 最新版本

// ==UserScript==
// @name         [MWI]Enhancement Tool
// @name:zh-CN   [银河奶牛]强化工具(血压工具)
// @name:zh-TW   [銀河奶牛]強化工具
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Track the number of enhancement successes and failures
// @description:zh-CN 在线统计强化成功/失败次数
// @description:zh-TW 統計強化成功/失敗次數
// @author       Truth_Light
// @license      Truth_Light
// @match        https://www.milkywayidle.com/*
// @match        https://test.milkywayidle.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=milkywayidle.com
// @grant        GM.xmlHttpRequest
// @grant        GM_registerMenuCommand
// ==/UserScript==


(function() {
    'use strict';
    let enhancementLevel;
    let list = {"成功次数": {}, "失败次数": {}};
    const userLanguage = navigator.language || navigator.userLanguage;
    const isZH = userLanguage.startsWith("zh");

    function hookWS() {
        const dataProperty = Object.getOwnPropertyDescriptor(MessageEvent.prototype, "data");
        const oriGet = dataProperty.get;

        dataProperty.get = hookedGet;
        Object.defineProperty(MessageEvent.prototype, "data", dataProperty);

        function hookedGet() {
            const socket = this.currentTarget;
            if (!(socket instanceof WebSocket)) {
                return oriGet.call(this);
            }
            if (socket.url.indexOf("api.milkywayidle.com/ws") <= -1 && socket.url.indexOf("api-test.milkywayidle.com/ws") <= -1) {
                return oriGet.call(this);
            }

            const message = oriGet.call(this);
            Object.defineProperty(this, "data", { value: message });

            return handleMessage(message);
        }
    }

    function handleMessage(message) {
        try {
            let obj = JSON.parse(message);
            if (obj && obj.type === "action_completed" && obj.endCharacterAction && obj.endCharacterAction.actionHrid === "/actions/enhancing/enhance") {
                const now_enhancementLevel = parseInt(obj.endCharacterAction.upgradeItemHash.match(/::(\d+)$/)[1]);
                if (enhancementLevel !== undefined) {
                    if (enhancementLevel < now_enhancementLevel) {
                        list["成功次数"][enhancementLevel] = (list["成功次数"][enhancementLevel] || 0) + 1;
                    } else {
                        list["失败次数"][enhancementLevel] = (list["失败次数"][enhancementLevel] || 0) + 1;
                    }
                    enhancementLevel = now_enhancementLevel;
                } else {
                    enhancementLevel = now_enhancementLevel;
                }
                console.log("强化统计", list);
                updateDisplay();
            } else {
                return message;
            }
        } catch (error) {
            console.error("Error processing message:", error);
        }
        return message;
    }

    function updateDisplay() {
        const targetElement = document.querySelector(".SkillActionDetail_enhancingComponent__17bOx");
        if (!targetElement) return;

        let enhancementStats_Div = document.querySelector("#enhancementStatsDiv");

        if (!enhancementStats_Div) {
            enhancementStats_Div = document.createElement("div");
            enhancementStats_Div.id = "enhancementStatsDiv";
            enhancementStats_Div.style.display = "flex";
            enhancementStats_Div.style.justifyContent = "space-between";
            enhancementStats_Div.style.marginTop = "10px";

            const successDiv = document.createElement("div");
            successDiv.id = "successDiv";
            successDiv.style.textAlign = "left";
            enhancementStats_Div.appendChild(successDiv);

            const totalDiv = document.createElement("div");
            totalDiv.id = "totalDiv";
            totalDiv.style.textAlign = "left";
            enhancementStats_Div.appendChild(totalDiv);

            const failureDiv = document.createElement("div");
            failureDiv.id = "failureDiv";
            failureDiv.style.textAlign = "left";
            enhancementStats_Div.appendChild(failureDiv);

            targetElement.appendChild(enhancementStats_Div);
        }

        const successDiv = document.querySelector("#successDiv");
        const totalDiv = document.querySelector("#totalDiv");
        const failureDiv = document.querySelector("#failureDiv");

        successDiv.innerHTML = isZH ? "成功次数:<br>" : "Success:<br>";
        Object.keys(list["成功次数"]).sort((a, b) => b - a).forEach(level => {
            successDiv.innerHTML += `+${level}:${list["成功次数"][level]}次<br>`;
        });

        let totalSuccess = Object.values(list["成功次数"]).reduce((acc, val) => acc + val, 0);
        let totalFailure = Object.values(list["失败次数"]).reduce((acc, val) => acc + val, 0);
        let totalCount = totalSuccess + totalFailure;

        totalDiv.innerHTML = isZH ? `总计次数:<br>${totalCount}次<br>` : `Total:<br>${totalCount} times<br>`;

        failureDiv.innerHTML = isZH ? "失败次数:<br>" : "Failure:<br>";
        Object.keys(list["失败次数"]).sort((a, b) => b - a).forEach(level => {
            failureDiv.innerHTML += `+${level}:${list["失败次数"][level]}次<br>`;
        });
    }

    hookWS();
})();

QingJ © 2025

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