Files
云端客 7809496731 活动期限/周本通知器 0.0.8 (#2763)
* feat(ActivitySwitchNotice): 添加地图任务识别功能

- 新增 mapMission 工具模块用于OCR地图任务识别
- 在初始化工具列表中加入 mapMission 模块
- 修改 main 函数增加异常处理和开关控制逻辑
- 优化代码格式和缩进一致性
- 添加地图任务OCR识别区域配置参数

* feat(ActivitySwitchNotice): 添加地图任务识别功能并优化配置管理

- 实现地图任务识别功能,支持伴月纪闻任务和每日委托奖励识别
- 新增initSettings函数用于统一管理配置文件读取和初始化
- 在settings.json中添加地图任务相关的多选框配置选项
- 更新manifest.json版本至0.0.8并添加最低BGI版本要求
- 重构ocrMapMission函数以支持多任务名称匹配
- 添加openMap和mapMission工具函数用于地图操作和任务识别
- 优化通知系统,移除不必要的参数并完善错误处理
- 调整设置界面布局,添加分隔符提升用户体验

* feat(map): 添加地图任务识别功能

- 实现多复选框配置映射表获取功能
- 添加根据复选框名称获取对应值的方法
- 重构OCR地图任务识别函数,优化参数和错误处理
- 集成UID识别并在通知中显示
- 更新地图任务识别流程和结果显示格式
- 添加地图任务识别数量统计日志
- 在README中更新版本历史记录

* feat(map): 添加地图任务识别功能

- 实现多复选框配置映射表获取功能
- 添加根据复选框名称获取对应值的方法
- 重构OCR地图任务识别函数,优化参数和错误处理
- 集成UID识别并在通知中显示
- 更新地图任务识别流程和结果显示格式
- 添加地图任务识别数量统计日志
- 在README中更新版本历史记录

* feat(ActivitySwitchNotice): 添加新的活动任务选项并设置默认值

- 添加探索派遣奖励选项
- 添加豪斗旅纪奖励选项
- 设置伴月纪闻任务为默认选项之一
- 设置探索派遣奖励为默认选项之一
- 设置每日委托奖励为默认选项之一
- 更新配置结构以支持多选默认值
2026-01-23 00:01:53 +08:00

100 lines
3.1 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const ocrRegionConfig = {
mapMission: {x: 6, y: 8, width: 395, height: 977},//地图任务识别区域坐标和尺寸
}
/**
* OCR地图任务识别函数
* 通过OCR技术识别游戏界面中的任务名称并与预设的任务名称列表进行匹配
* @param {Array<string>} [missionNameList=[]] - 需要识别的任务名称列表
* @param {Object} [regionConfig=ocrRegionConfig.mapMission] - OCR识别区域配置对象包含x、y、width、height属性
* @returns {Promise<Array<Object>>} 返回识别结果数组每个元素包含ok(boolean)和text(string)属性
*/
async function ocrMapMission(missionNameList = [], regionConfig = ocrRegionConfig.mapMission) {
let jsonList = [];
let region = null;
try {
// 捕获游戏区域并创建OCR识别对象
region = captureGameRegion();
let recognitionObject = RecognitionObject.Ocr(regionConfig.x, regionConfig.y, regionConfig.width, regionConfig.height);
// 执行多目标OCR识别
let resList = region.findMulti(recognitionObject);
// if (!resList || !resList.length) {
// return jsonList;
// }
// 遍历识别结果并匹配任务名称
for (let i = 0; i < resList.count; i++) {
let res = resList[i];
log.debug(`[-]识别结果: ${res.text}, 原始坐标: x=${res.x}, y=${res.y},width:${res.width},height:${res.height}`);
let json = {
ok: false,
text: undefined
};
// 检查当前识别文本是否包含任一任务名称
let matchedMission = null;
for (const missionName of missionNameList) {
if (res.text.trim().includes(missionName)) {
matchedMission = missionName;
break;
}
}
if (matchedMission) {
log.debug(`识别成功=>${matchedMission}->${res.text}`);
json.ok = true;
json.text = res.text.trim();
}
jsonList.push(json);
}
} catch (e) {
log.error('OCR识别过程出错:', e.message);
throw e;
} finally {
// 确保资源始终被释放
if (region) {
region.Dispose();
}
}
return jsonList;
}
//伴月纪闻任务待完成
// 通过地图识别任务
async function openMap() {
const key = settings.mapKey || 'M'
await sleep(200)
await keyPress(key)
}
async function mapMission(list = [], toOpenMap = true) {
let ms = 600
if (toOpenMap) {
await openMap();
await sleep(ms);
}
await sleep(ms * 2);
let keyJsonList = await ocrMapMission(list);
keyJsonList = keyJsonList.filter(item => item.ok)
log.info(`识别到地图任务数量:${keyJsonList.length}`)
if (keyJsonList.length <= 0) {
log.warn(`未识别到地图任务`)
return
}
const uid = await uidUtil.ocrUID()
let text = ""
keyJsonList.forEach(item => text += "|< " + item.text + " >\n")
await noticeUtil.sendText(text, `UID:${uid}\n地图任务`)
}
this.mapUtil = {
mapMission,
ocrMapMission,
openMap,
}