Greasy Fork is available in English.
A BlitzRhythm Editor Mod Base Lib
此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.org/scripts/474680/1257375/BlitzRhythm%20Editor%20Mod%20Base%20Lib.js
// ==UserScript== // @name BlitzRhythm Editor Mod Base Lib // @name:zh-CN 闪韵灵境编辑器模组基本库 // @namespace lib-cipher-mod-base // @version 1.2.2 // @description A BlitzRhythm Editor Mod Base Lib // @description:zh-CN 兼容模组加载器所必须的库 // @author Moyuer // @author:zh-CN 如梦Nya // @license MIT // @source https://github.com/CMoyuer/BlitzRhythm-Editor-Mod-Loader // @match *://*/* // ==/UserScript== const scriptInfo = window.GM_info.script // const icon = window.GM_info.script.icon // const scriptName = window.GM_info.script.name const scriptNamespace = scriptInfo.namespace function log(...data) { console.log("[" + scriptNamespace + "]", ...data) } /** * i18n * @param {string} key * @param {any[]} data */ function $t(key, ...data) { let language = localStorage.getItem("i18nextLng") ?? "en" if (/^zh-?/.test(language) && I18N["zh"]) language = "zh" let keys = key.split('.') try { /** @type {string} */ let val = I18N[language] ?? I18N['en'] keys.forEach(element => { val = val[element] }) for (let i = 0; i < data.length; i++) val = val.replace(new RegExp("\\{" + i + "\\}", "g"), data[i] + "") return val } catch (error) { console.warn("[" + scriptNamespace + "]I18N Key not found: " + key) return key } } /** * Get parameter value * @param {string} parameterId */ function $p(parameterId) { try { let info = JSON.parse(localStorage.getItem("mod-" + scriptNamespace)) return info.parameter[parameterId].value } catch (error) { return } } function showSetupPage() { unsafeWindow.modloader.gotoPage("/settings/" + scriptNamespace) } function hideDrawer() { unsafeWindow.modloader.drawer.methods.hide() } (function () { 'use strict' let _methods = { enabled: () => { if (typeof (onEnabled) === "function") onEnabled() }, disabled: () => { if (typeof (onDisabled) === "function") onDisabled() }, parameterChanged: (id, val) => { if (typeof (onParameterValueChanged) === "function") onParameterValueChanged(id, val) } } let handle = setInterval(() => { if (!unsafeWindow.modloader) return unsafeWindow.modloader.addMod({ id: scriptNamespace, info: scriptInfo, parameter: PARAMETER, methods: METHODS, _methods, window, }) clearInterval(handle) }, 100) })()