[1.1.9]圣遗物批量强化-修复异常识别 (#2630)

* ```
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 的调试日志从解析函数中移到初始化函数末尾
- 删除了原来的重复日志输出代码
This commit is contained in:
云端客
2026-01-06 09:05:21 +08:00
committed by GitHub
parent 4d0e97d1e7
commit 50ae06735e
3 changed files with 84 additions and 10 deletions

View File

@@ -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 修改)

View File

@@ -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<void>}
@@ -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()
})();

View File

@@ -1,6 +1,6 @@
{
"name": "圣遗物批量强化",
"version": "1.1.8",
"version": "1.1.9",
"description": "一个批量强化圣遗物的脚本",
"settings_ui": "settings.json",
"main": "main.js",