mirror of
https://github.com/babalae/bettergi-scripts-list.git
synced 2026-03-26 05:09:52 +08:00
- 实现同一天数据合并功能,将重复记录的paths和groupPaths进行合并 - 移除已注释的无用代码块,包括pathRunMap相关逻辑 - 清理废弃的pathing.json配置文件内容 - 修复字符串拼接格式问题,确保正确的换行符处理 - 删除未使用的变量声明和调试代码 - 优化记录列表的数据处理流程 feat(pathing): 添加路径层级父子关系支持并优化显示结构 - 在PATHING_ALL数组对象中添加parent_name字段以支持父子关系 - 修改addUniquePath函数调用以包含parent_name参数 - 添加getChildFolderNameFromRoot函数获取父级文件夹名称 - 在路径排序逻辑中增加parent_name比较条件 - 重构路径显示逻辑添加父级名称分组显示格式 - 更新main函数中的执行流程控制逻辑 feat(auto-tools): 添加UID识别功能支持 - 在Record对象中新增uid字段用于存储用户ID - 集成uid工具模块,实现OCR识别UID功能 - 添加uid.js工具文件,包含UID识别、验证和比较功能 - 实现在主界面检测和返回主界面的功能 - 集成UID配置验证和错误处理机制 refactor(FullyAutoAndSemiAutoTools): 重构路径执行记录管理 - 将原有的 hasRunning Set 替换为功能更完整的 Record 对象 - 添加路径、错误路径和分组路径的独立记录集合 - 更新路径执行状态检查逻辑以使用新的 Record 结构 - 在路径执行失败时记录错误路径信息 - 为任务分组添加路径记录功能 - 移除手动按键继续执行的交互流程 - 直接执行需要运行的地图任务 feat(auto-tools): 优化自动化脚本执行逻辑 - 添加hasRunning集合避免重复执行相同路径的脚本 - 修复半自动模式判断条件的逻辑错误 - 为runPath、runList、runMap函数添加详细的JSDoc注释 - 优化runPath函数确保执行完成后添加到运行记录 - 统一日志输出中的模式显示使用settings.mode替代硬编码值 - 实现路径去重检查机制防止同一路径被多次执行 - 重构任务执行流程支持Map结构的任务批量处理 refactor(FullyAutoAndSemiAutoTools): 重构路径配置逻辑并优化层级处理 - 修改了路径名称格式,将 levelName 的显示格式从 levelName_level 改为 levelName_level_level - 移除了对同名路径的过滤判断逻辑 - 注释掉了原有的设置项更新逻辑,改用新的分组方式处理 - 添加了按层级分组的工具函数 groupByLevel - 实现了基于层级分组的新设置项生成逻辑 - 新增了用于调试的 pathingALLSize 数组(注释状态) - 重写了多级路径的遍历和配置生成方式 feat(auto-tools): 添加开发者调试模式功能 - 新增 debug 和 isDebug 全局变量用于调试控制 - 实现了 debugKey 函数支持开发者模式下的断点调试 - 添加了 keyMousePress 函数用于检测按键按下和释放事件 - 在 settings.json 中增加 isDebug 复选框和 debug 输入框配置 - 更新自动暂停快捷键标签提醒避免 BGI 快捷键冲突 - 修改 dispatcher.addTimer 为 dispatcher.addTrigger - 在树形结构生成过程中添加调试日志输出功能 refactor(FullyAutoAndSemiAutoTools): 优化路径选择逻辑和标签显示 - 修改错误提示信息中的字符串格式,添加适当的空格 - 重构路径读取逻辑,将 treePathList 的赋值移到条件判断之后 - 添加 level 变量用于动态控制路径层级显示 - 更新设置选项标签,从静态文本改为动态显示当前路径级别 - 移动 level++ 操作到正确的位置以确保层级计算准确 refactor(FullyAutoAndSemiAutoTools): 优化路径配置和按键监听实现 - 将 pathing.json 的读取逻辑简化为 forEach 方式 - 移除多余的 log.warn 调试信息 - 修复 settings 配置的 JSON 解析问题 - 改进路径同步列表的处理方式 - 添加实时自动拾取任务配置 - 实现新的鼠标键盘按键监听函数 keyMousePress - 使用新的按键监听函数替换原有 keyPress 实现 - 优化路径执行时的用户交互提示信息 refactor(FullyAutoAndSemiAutoTools): 重构路径处理逻辑并添加父级目录获取功能 - 添加getParentFolderName函数用于获取指定层级的上级文件夹名称 - 使用新的getParentFolderName函数替换原有的路径处理逻辑 - 在treeList中增加parentName字段用于存储父级目录名称 - 修复路径分隔符处理和层级计算问题 - 临时注释掉主执行循环以进行调试 feat(FullyAutoAndSemiAutoTools): 添加路径执行设置配置功能 - 遍历pathRunMap创建多选框设置项 - 为每个路径生成对应的JSON配置对象 - 将路径名称映射到设置项的name字段 - 将路径执行类型数组作为选项值 - 将生成的设置项添加到settingsList数组 - 将设置列表写入manifest.settings_ui文件 feat(auto-tools): 添加半自动工具配置和路径处理功能 - 新增 needRunMap 存储需要运行的任务映射 - 修改 init 函数返回设置配置并解析为 JSON 格式 - 添加 parentJson 配置选项用于选择执行路径 - 重构路径处理逻辑,支持 @ 符号和特殊路径识别 - 注释掉旧的路径处理代码保持兼容性 - 实现主函数中遍历 needRunMap 执行任务列表 feat(FullyAutoAndSemiAutoTools): 添加全自动半自动工具箱功能 - 实现了自动和半自动路径执行功能 - 添加了配置文件初始化和验证机制 - 实现了路径文件的递归读取和树形结构构建 - 添加了路径映射和执行控制逻辑 - 集成了按键暂停和继续执行功能 - 实现了路径列表转换和执行流程管理 - 添加了 manifest.json、settings.json 和 pathing.json 配置文件支持
142 lines
3.6 KiB
JavaScript
142 lines
3.6 KiB
JavaScript
const commonPath = 'Assets/RecognitionObject/'
|
|
const commonMap = new Map([
|
|
['main_ui', {
|
|
path: `${commonPath}`,
|
|
name: 'paimon_menu',
|
|
type: '.png',
|
|
}],
|
|
])
|
|
const genshinJson = {
|
|
width: 1920,//genshin.width,
|
|
height: 1080,//genshin.height,
|
|
}
|
|
|
|
/**
|
|
* 根据键值获取JSON路径
|
|
* @param {string} key - 要查找的键值
|
|
* @returns {any} 返回与键值对应的JSON路径值
|
|
*/
|
|
function getJsonPath(key) {
|
|
return commonMap.get(key); // 通过commonMap的get方法获取指定键对应的值
|
|
}
|
|
|
|
function saveOnlyNumber(str) {
|
|
str = str ? str : '';
|
|
// 使用正则表达式匹配字符串中的所有数字
|
|
// \d+ 匹配一个或多个数字
|
|
// .join('') 将匹配到的数字数组连接成一个字符串
|
|
// parseInt 将连接后的字符串转换为整数
|
|
return parseInt(str.match(/\d+/g).join(''));
|
|
}
|
|
|
|
async function ocrUID() {
|
|
let uid_json = {
|
|
x: 1683,
|
|
y: 1051,
|
|
width: 234,
|
|
height: 28,
|
|
}
|
|
let recognitionObjectOcr = RecognitionObject.Ocr(uid_json.x, uid_json.y, uid_json.width, uid_json.height);
|
|
let region3 = captureGameRegion()
|
|
let res = region3.find(recognitionObjectOcr);
|
|
log.debug(`[OCR识别UID]识别结果: ${res.text}, 原始坐标: x=${res.x}, y=${res.y},width:${res.width},height:${res.height}`);
|
|
//只保留数字
|
|
let uid
|
|
try {
|
|
uid = saveOnlyNumber(res.text)
|
|
} catch (e) {
|
|
log.warn(`UID未设置`)
|
|
uid = 0
|
|
} finally {
|
|
region3.dispose()
|
|
}
|
|
log.debug(`[OCR识别UID]识别结果: {uid}`, uid);
|
|
return uid
|
|
}
|
|
|
|
// 判断是否在主界面的函数
|
|
const isInMainUI = () => {
|
|
// let name = '主界面'
|
|
let main_ui = getJsonPath('main_ui');
|
|
// 定义识别对象
|
|
let paimonMenuRo = RecognitionObject.TemplateMatch(
|
|
file.ReadImageMatSync(`${main_ui.path}${main_ui.name}${main_ui.type}`),
|
|
0,
|
|
0,
|
|
genshinJson.width / 3.0,
|
|
genshinJson.width / 5.0
|
|
);
|
|
let captureRegion = captureGameRegion();
|
|
let res = captureRegion.find(paimonMenuRo);
|
|
captureRegion.Dispose()
|
|
return !res.isEmpty();
|
|
};
|
|
|
|
async function toMainUi() {
|
|
let ms = 1000
|
|
let index = 1
|
|
await sleep(ms);
|
|
while (!isInMainUI()) {
|
|
await sleep(ms);
|
|
await genshin.returnMainUi(); // 如果未启用,则返回游戏主界面
|
|
await sleep(ms);
|
|
if (index > 3) {
|
|
throw new Error(`多次尝试返回主界面失败`);
|
|
}
|
|
index += 1
|
|
}
|
|
|
|
}
|
|
|
|
async function compareUid(UID = settings.uid) {
|
|
let uid = await ocrUID()
|
|
let setUid = 0
|
|
try {
|
|
setUid = saveOnlyNumber(UID)
|
|
} catch (e) {
|
|
// log.warn(`UID未设置`)
|
|
}
|
|
let compare = uid === setUid
|
|
if (compare) {
|
|
log.info(`[OCR识别UID]识别结果: {uid} 与设置UID相同`, uid);
|
|
}
|
|
return compare
|
|
}
|
|
|
|
async function checkUid() {
|
|
let reJson = {
|
|
inMainUI: false,
|
|
isUid: false
|
|
}
|
|
if (isInMainUI()) {
|
|
reJson.isUid = await compareUid()
|
|
}
|
|
return reJson
|
|
}
|
|
|
|
async function check() {
|
|
let check = false
|
|
if (settings.uid) {
|
|
try {
|
|
await toMainUi();
|
|
} catch (e) {
|
|
log.warn("多次尝试返回主界面失败")
|
|
}
|
|
let checkJson = await checkUid()
|
|
if ((!checkJson.inMainUI) && (!checkJson.isUid)) {
|
|
//尝试直接识别
|
|
checkJson.isUid = await compareUid()
|
|
}
|
|
check = checkJson.isUid
|
|
}
|
|
return check
|
|
}
|
|
|
|
this.uidUtil = {
|
|
toMainUi,
|
|
isInMainUI,
|
|
checkUid,
|
|
ocrUID,
|
|
check,
|
|
compareUid,
|
|
} |