From 50ae06735ead6958e3525a1ab2372aad52d080be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E7=AB=AF=E5=AE=A2?= <107686912+Kirito520Asuna@users.noreply.github.com> Date: Tue, 6 Jan 2026 09:05:21 +0800 Subject: [PATCH] =?UTF-8?q?[1.1.9]=E5=9C=A3=E9=81=97=E7=89=A9=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E5=BC=BA=E5=8C=96-=E4=BF=AE=E5=A4=8D=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E8=AF=86=E5=88=AB=20(#2630)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ``` refactor(HolyRelicsUp): 优化圣遗物强化脚本逻辑和文档 - 调整代码格式化,统一空格和分号使用规范 - 将OCR识别延迟时间从600ms增加到800ms以提高识别准确性 - 优化日志输出格式,使用log.info替代info函数 - 添加圣遗物等级验证逻辑,检查预估等级是否为4的倍数 - 在README中添加核心逻辑流程的mermaid图表说明 - 实现强化失败时的错误处理机制 ``` * refactor(HolyRelicsUp): 优化工具模块加载机制 - 将工具模块加载改为异步初始化函数 - 使用循环动态加载 utils 目录下的工具文件 - 添加初始化完成日志输出 - 更新版本号从 1.1.8 到 1.1.9 * fix(core): 修复异常识别问题 - 添加 manifest.json 版本信息读取 - 在初始化时输出版本日志 - 更新 README.md 版本历史记录 * refactor(HolyRelicsUp): 重构代码结构并优化日志输出 - 将 languageUtils.js 的加载移到初始化之前 - 从 utils 数组中移除 languageUtils 模块 - 将 holyRelicPartMapBySift 的调试日志从解析函数中移到初始化函数末尾 - 删除了原来的重复日志输出代码 --- repo/js/HolyRelicsUp/README.md | 54 ++++++++++++++++++++++++++++++ repo/js/HolyRelicsUp/main.js | 38 ++++++++++++++++----- repo/js/HolyRelicsUp/manifest.json | 2 +- 3 files changed, 84 insertions(+), 10 deletions(-) diff --git a/repo/js/HolyRelicsUp/README.md b/repo/js/HolyRelicsUp/README.md index 89accffc6..8000333f7 100644 --- a/repo/js/HolyRelicsUp/README.md +++ b/repo/js/HolyRelicsUp/README.md @@ -6,7 +6,58 @@ 1. **分辨率建议**:请尽量确保原神游戏分辨率为1920x1080(尽量在1K下运行)。虽然脚本已兼容其他分辨率,但其他分辨率未经过充分测试。 2. **筛选问题**:圣遗物筛选时选择“全选”可能导致失败,此问题暂时无法解决。 +## 核心逻辑流程 +```mermaid +sequenceDiagram + autonumber + participant Config as 配置初始化 + participant Utils as 工具函数 + participant RelicMgr as 圣遗物管理 + participant OCRSvc as OCR 服务 + participant Filter as 过滤决策 + participant Upgrade as 升级执行 + Config->>Utils: 加载 holyRelicsUpUtils.js + Config->>Utils: 加载 languageUtils.js + Utils-->>Config: 返回工具函数 + + Note over RelicMgr: 初始化圣遗物检测 + RelicMgr->>OCRSvc: 识别圣遗物信息 + OCRSvc-->>RelicMgr: 返回圣遗物数据 + + Note over RelicMgr: 圣遗物筛选流程 + loop 每个候选圣遗物 + Note over RelicMgr: 检查圣遗物类型过滤 + alt 配置了类型过滤 + RelicMgr->>Filter: 验证圣遗物类型 + Filter-->>RelicMgr: 返回类型匹配结果 + alt 类型不匹配 + RelicMgr-->>RelicMgr: 跳过该圣遗物 + end + end + + Note over RelicMgr: 检查属性过滤 + alt 配置了属性条件 + RelicMgr->>Filter: 验证主词条/副词条 + Filter->>OCRSvc: OCR校验属性值 + OCRSvc-->>Filter: 返回属性满足情况 + alt 属性不满足条件 + Filter-->>RelicMgr: 跳过该圣遗物 + else 属性满足条件 + Filter-->>RelicMgr: 保留该圣遗物 + end + end + end + + Note over RelicMgr: 圣遗物筛选完成后 + RelicMgr->>RelicMgr: 根据配置进行二次筛选 + alt 满足升级条件 + RelicMgr->>Upgrade: 执行圣遗物升级 + else 不满足升级条件 + RelicMgr-->>RelicMgr: 保留该圣遗物不升级 + end + Upgrade-->> RelicMgr: 升级完成反馈 +``` ## 核心功能 1. **批量强化圣遗物**:支持对圣遗物进行批量强化,自动循环强化直到达到指定等级。 @@ -251,6 +302,9 @@ ## 版本历史 +### 1.1.9 (2026-01-05) +- **修复** + - 异常识别 问题 ### 1.1.8 (2025-12-09) - **新增** **[1.1.8 新增]**: - 使用固定分辨率值替换动态获取(应 https://github.com/babalae/bettergi-scripts-list/pull/2464 修改) diff --git a/repo/js/HolyRelicsUp/main.js b/repo/js/HolyRelicsUp/main.js index 0cc1a3b11..10be0e30b 100644 --- a/repo/js/HolyRelicsUp/main.js +++ b/repo/js/HolyRelicsUp/main.js @@ -1,7 +1,18 @@ -// 加载 utils 模块 -eval(file.readTextSync("./utils/holyRelicsUpUtils.js")); -eval(file.readTextSync("./utils/languageUtils.js")); +eval(file.readTextSync(`utils/languageUtils.js`)); + +async function init() { + let manifest = JSON.parse(file.readTextSync("manifest.json")); + log.info(`版本:{version}`, manifest.version); + let utils=[ + "holyRelicsUpUtils", + ] + for (let util of utils) { + eval(file.readTextSync(`utils/${util}.js`)); + } + log.info("初始化完成"); + warn('holyRelicPartMapBySift==>' + JSON.stringify(Array.from(holyRelicPartMapBySift)), must) +} /** * 主方法 * @returns {Promise} @@ -278,7 +289,6 @@ const commonHolyRelicPartMapBySift = !config.enableAttributeHolyRelic ? [] : par const holyRelicPartMapBySift = !config.enableAttributeHolyRelic ? [] : (!config.coverSiftAttributeHolyRelic ? parseHolyRelicToMap(config.inputSiftAttributeHolyRelic) : takeDifferentHolyRelicToMap(parseHolyRelicToMap(config.inputSiftAttributeHolyRelic), commonHolyRelicPartMapBySift)) -warn('holyRelicPartMapBySift==>' + JSON.stringify(Array.from(holyRelicPartMapBySift)), must) /** * 属性值替换函数 @@ -759,7 +769,7 @@ async function validHitPreamble() { let tmEquipmentStatus = await templateMatchFindByJson(jsonEquipmentStatus) if (isExist(tmEquipmentStatus)) { equipmentStatusOk = true - await info(`验证成功==>装备状态-识别成功`,must) + await info(`验证成功==>装备状态-识别成功`, must) break } index++ @@ -2019,8 +2029,8 @@ const isInMainUI = () => { async function openAggrandizement() { let defaultEnhancedInterface = mana.get("defaultEnhancedInterfaceUp") if (config.defaultEnhancedInterface.includes(defaultEnhancedInterface)) { - log.info(`默认强化界面为{s}`,defaultEnhancedInterface) - return ; + log.info(`默认强化界面为{s}`, defaultEnhancedInterface) + return; } let ms = 600 // 注释掉的代码:使用模板匹配方法查找强化按钮 @@ -2229,7 +2239,7 @@ async function templateMatchHolyRelicsUpFrequency(source = 'HolyRelicsUpFrequenc await wait(300) await infoLog(`{x:${x},y:${y},w:${w},h:${h}}`, source) // 记录OCR识别结果*/ // 截取游戏画面并进行OCR识别 - let ms = 600 + let ms = 800 //x=1172, y=134,width:124,height:41 let all = { x: Math.floor(genshinJson.width * 1172 / 1920), @@ -2346,7 +2356,16 @@ async function upOperate(operate, source = 'upOperate', log_off) { upJson.level = templateMatchHolyRelics.level upJson.sumLevel = templateMatchHolyRelics.sumLevel // 输出当前圣遗物等级的日志信息 - await info(`当前圣遗物等级: ${templateMatchHolyRelics.level}`) + log.info(`===`) + log.info(`当前圣遗物等级: {templateMatchHolyRelics.level}`,templateMatchHolyRelics.level) + log.info(`当前圣遗物预估可提升至: {templateMatchHolyRelics.sumLevel}`,templateMatchHolyRelics.level) + if (templateMatchHolyRelics.sumLevel % 4 !== 0) { + upJson.errorMsg = '强化失败:狗粮不足' + upJson.ok = false; + throwError(upJson.errorMsg) + return upJson + } + // 检查圣遗物是否已达到满级(20级) if (templateMatchHolyRelics.level === 20 || templateMatchHolyRelics.level >= config.upMax) { upJson.start = false @@ -3253,6 +3272,7 @@ async function toMainUi() { (async function () { + await init() await main() })(); diff --git a/repo/js/HolyRelicsUp/manifest.json b/repo/js/HolyRelicsUp/manifest.json index 831792210..ae4c07be2 100644 --- a/repo/js/HolyRelicsUp/manifest.json +++ b/repo/js/HolyRelicsUp/manifest.json @@ -1,6 +1,6 @@ { "name": "圣遗物批量强化", - "version": "1.1.8", + "version": "1.1.9", "description": "一个批量强化圣遗物的脚本", "settings_ui": "settings.json", "main": "main.js",