您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在线统计强化成功/失败次数
当前为
// ==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或关注我们的公众号极客氢云获取最新地址