您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Convert mice weight to metric.
// ==UserScript== // @name 🐭️ MouseHunt - Metric // @description Convert mice weight to metric. // @version 2.1.0 // @license MIT // @author bradp // @namespace bradp // @match https://www.mousehuntgame.com/* // @icon https://i.mouse.rip/mh-improved/icon-64.png // @run-at document-end // @grant none // @require https://cdn.jsdelivr.net/npm/[email protected] // ==/UserScript== var mhui = (() => { var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; // src/modules/metric/index.js var metric_exports = {}; __export(metric_exports, { default: () => metric_default }); // src/utils/events.js var requestCallbacks = {}; var onRequestHolder = null; var onRequest = (url = null, callback = null, skipSuccess = false, ignore = []) => { url = "*" === url ? "*" : `managers/ajax/${url}`; if (ignore.includes(url)) { return; } if (!callback) { return; } if (!requestCallbacks[url]) { requestCallbacks[url] = []; } requestCallbacks[url].push({ callback, skipSuccess }); if (onRequestHolder) { return; } const req = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function() { this.addEventListener("load", function() { if (this.responseText) { let response = {}; try { response = JSON.parse(this.responseText); } catch (e) { return; } Object.keys(requestCallbacks).forEach((key) => { if ("*" === key || this.responseURL.includes(key)) { requestCallbacks[key].forEach((item) => { if (item.callback && typeof item.callback === "function" && (item.skipSuccess || (response == null ? void 0 : response.success))) { item.callback(response); } }); } }); } }); Reflect.apply(req, this, arguments); }; onRequestHolder = true; }; var getDialogMapping = () => { return { treasureMapPopup: "map", itemViewPopup: "item", mouseViewPopup: "mouse", largerImage: "image", convertibleOpenViewPopup: "convertible", adventureBookPopup: "adventureBook", marketplaceViewPopup: "marketplace", giftSelectorViewPopup: "gifts", supportPageContactUsForm: "support", MHCheckout: "premiumShop" }; }; var onDialogShow = (overlay = null, callback = null, once = false) => { const identifier = callback.toString().replaceAll(/[^\w-]/gi, ""); eventRegistry.addEventListener("js_dialog_show", () => { if (!activejsDialog) { return; } const tokens = activejsDialog.getAllTokens(); if (!tokens || !tokens["{*content*}"] || !tokens["{*content*}"].value || tokens["{*content*}"].value === "" || tokens["{*content*}"].value.includes('data-item-type=""') || // Item view. tokens["{*content*}"].value.includes('data-mouse-id=""')) { return; } const atts = activejsDialog.getAttributes(); let dialogType = atts.className.replace("jsDialogFixed", "").replace("wide", "").replace("default", "").replaceAll(" ", " ").replaceAll(" ", ".").trim(); if (dialogType.endsWith(".")) { dialogType = dialogType.slice(0, -1); } if ((!overlay || "all" === overlay) && "function" === typeof callback) { return callback(); } const dialogMapping = getDialogMapping(); if ("function" === typeof callback && (overlay === dialogType || overlay === dialogMapping[dialogType])) { return callback(); } }, null, once, 0, identifier); }; // src/utils/messages.js hadAddedErrorStyles = false; // src/modules/metric/index.js var imperialToMetric = (text) => { const lb = text.match(/(\d+? )lb./i); const oz = text.match(/(\d+? )oz./i); if (!(lb || oz)) { return; } const lbValue = lb ? lb[1] : 0; const ozValue = oz ? oz[1] : 0; const totalWeight = Number.parseInt(lbValue) + Number.parseInt(ozValue) / 16; const totalWeightMetric = (Math.round(totalWeight * 0.45359237 * 100) / 100).toString(); return text.replace(/(\d+? lb.\s)?(\d+? oz.)/i, totalWeightMetric + " kg. "); }; var convertInDialog = () => { const mouseViewWeights = document.querySelectorAll(".mouseView-statsContainer .mouseView-statsContainer-block-padding table tbody tr"); if (mouseViewWeights.length) { mouseViewWeights.forEach((row) => { const firstCell = row.querySelector("td"); const secondCell = firstCell.nextSibling; if (firstCell.innerText === "Avg. Weight:" || firstCell.innerText === "Heaviest:") { const converted = imperialToMetric(secondCell.innerText); if (converted) { secondCell.innerText = converted; } } }); } }; var replaceInJournal = () => { const entries = document.querySelectorAll(".journal .entry .journalbody .journaltext"); if (!entries.length) { return; } entries.forEach((entry) => { const converted = imperialToMetric(entry.innerHTML); if (converted) { entry.innerHTML = converted; } }); }; var replaceOnMousePage = () => { const mouseWeightsStats = document.querySelectorAll(".mouseListView-categoryContent-subgroupContainer .mouseListView-categoryContent-subgroup-mouse-stats"); if (!mouseWeightsStats.length) { return; } mouseWeightsStats.forEach((stat) => { if (stat.classList.contains("average_weight") || stat.classList.contains("heaviest_catch")) { const converted = imperialToMetric(stat.innerText); if (converted) { stat.innerText = converted; } } }); }; var convertOnPage = () => { replaceOnMousePage(); replaceInJournal(); }; var init = () => __async(void 0, null, function* () { onDialogShow("all", convertInDialog); onRequest("*", convertOnPage); convertOnPage(); }); var metric_default = { id: "metric", name: "Metric Units", type: "feature", default: false, description: "Use metric units instead of imperial units.", load: init }; return __toCommonJS(metric_exports); })(); mhImprovedVersion = "0.0.0-userscript;" mhImprovedPlatform = "userscript"; mhui.default.load(); migrateUserscript('Metric', 'https://gf.qytechs.cn/en/scripts/449840-mousehunt-metric');
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址