您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Хелпер для других скриптов склада
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/457946/1138815/HWM%20Armory%20Framework.js
// ==UserScript== // @name HWM Armory Framework // @namespace https://github.com/bonArt0/hwm_scripts // @version 1.2.0 // @description Хелпер для других скриптов склада // @author bonArt // @license GPL-3.0-only // @icon https://dcdn.heroeswm.ru/i/btns/job_fl_btn_warehouse.png // @match https://*.heroeswm.ru/sklad_info.php?* // @match https://178.248.235.15/sklad_info.php?* // @match https://www.lordswm.com/sklad_info.php?* // @match https://my.lordswm.com/sklad_info.php?* // @supportURL https://www.heroeswm.ru/sms-create.php?mailto_id=117282 // ==/UserScript== const FrameworkClassNames = { ARTS_PLACE_FORM: 'afw_arts_place_form', ARTS_PLACE_HEADER: 'afw_arts_place_header', ARMORY_INFO: 'afw_armory_info', }; let _ArmoryFrameworkInstance = ArmoryFramework.init(); class ArmoryFramework { /** * @type {boolean} * @private */ _initialized = false /** * @type {boolean} * @private */ _isControlOn; static init() { if (!_ArmoryFrameworkInstance) { _ArmoryFrameworkInstance = new ArmoryFramework(); } return _ArmoryFrameworkInstance; } /** * @private use ArmoryFramework.init() */ constructor() { this._initFramework(); } /** * @returns {boolean} */ isControlOn() { if (this._isControlOn === undefined) { this._isControlOn = document.body.innerHTML.search('sklad_rc_on=0') > -1; } return this._isControlOn; } /** * @throws {Error} on init failure * @private */ _initFramework() { if (!this._initialized && this.isControlOn()) { let initialized = this._initArtPlaceBox(); if (!initialized) { this._throwError('ArtPlaceBox'); } initialized = this._initArmoryInfoBox(); if (!initialized) { this._throwError('ArmoryInfoBox'); } this._initialized = true; console.info('Armory Framework initialized'); } } /** * @throws {Error} on init failure * @private */ _throwError(component) { console.error('Something happen with game layout'); throw new Error(component); } /* <editor-fold desc="arts place box"> */ /** * @returns {boolean} */ _initArtPlaceBox() { const artsPlaceForm = document.getElementsByName('p_art_id') ?.item(0) // select ?.parentElement // td ?.parentElement // tr ?.parentElement // tbody ?.parentElement // table ?.parentElement; if (!artsPlaceForm || artsPlaceForm.tagName !== 'FORM') { return false; } artsPlaceForm.classList.add(FrameworkClassNames.ARTS_PLACE_FORM); const artsPlaceHeader = artsPlaceForm ?.parentElement // td ?.parentElement // tr#1 ?.parentElement // tbody ?.children.item(0) // tr#0 ?.children.item(0) // td#0 ?.children.item(0); // b if (!artsPlaceHeader || artsPlaceHeader.tagName !== 'B') { artsPlaceForm.classList.remove(FrameworkClassNames.ARTS_PLACE_FORM); return false; } artsPlaceHeader?.classList.add(FrameworkClassNames.ARTS_PLACE_HEADER); return true; } /** * @returns {HTMLFormElement|null} * @throws {Error} on invalid framework usage */ getArtPlaceForm() { const form = document.getElementsByClassName(FrameworkClassNames.ARTS_PLACE_FORM)?.item(0); if (!form || form.tagName !== 'FORM') { this._throwError('Invalid ArmoryFramework usage, use ArmoryFramework.init() first'); } return form; } /* </editor-fold> */ /* <editor-fold desc="armory info box"> */ /** * @returns {boolean} */ _initArmoryInfoBox() { const box = this.getArtPlaceForm() ?.parentElement // td ?.parentElement // tr ?.parentElement // tbody ?.parentElement // table#1 ?.previousSibling // table#0 ?.firstChild // tbody ?.firstChild // tr ?.firstChild; // td if (!box || box.tagName !== 'TD') { return false; } box.classList.add(FrameworkClassNames.ARMORY_INFO); return true; } /** * @returns {HTMLTableCellElement|null} * @throws {Error} on invalid framework usage */ getArmoryInfoBox() { const box = document.getElementsByClassName(FrameworkClassNames.ARMORY_INFO)?.item(0); if (!box || box.tagName !== 'td') { this._throwError('Invalid ArmoryFramework usage, use ArmoryFramework.init() first'); } return box; } /** * @returns {number} */ _getArmoryId() { return +this.getArtPlaceForm()?.children?.item(0)?.value; } /** * @returns {string} */ getArtsPlaceSign() { return this.getArtPlaceForm()?.children?.item(1)?.value + ''; } /** * @returns {number} */ getCurrentCapacity() { return +this.getArmoryInfoBox()?.innerHTML.match(/<b>(\d+)<\/b> из \d+/)[1]; } /** * @returns {number} */ getTotalCapacity() { return +this.getArmoryInfoBox()?.innerHTML.match(/<b>\d+<\/b> из (\d+)/)[1]; } /* </editor-fold> */ /* <editor-fold desc="common"> */ /** * @param {string} name * @param {string} innerHTML * @returns {HTMLLabelElement} */ buildCheckboxLabel(name, innerHTML) { const checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.name = name; const label = document.createElement('label'); label.append(checkbox); label.append(innerHTML); return label; } /* </editor-fold> */ }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址