From 44b608ccb0df16092434d2f7f149e55014a0782b Mon Sep 17 00:00:00 2001 From: DarkFlameMaster <1004452714@qq.com> Date: Wed, 31 Dec 2025 16:01:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5AutoCommission=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=20(#2600)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 同步AutoCommission更新 * Update version to 0.98.14 in manifest.json * Refine update instructions in checkVersion.js Update log message to provide clearer instructions for users after an update. --------- Co-authored-by: DarkFlameMaster --- .../process/惊喜大礼/蒙德城/process.json | 2 +- repo/js/AutoCommission/constants.js | 4 -- repo/js/AutoCommission/lib/checkVersion.js | 69 +++++++++++++++++++ .../lib/commission-recognition.js | 30 ++++++-- repo/js/AutoCommission/lib/core.js | 5 -- repo/js/AutoCommission/lib/execute.js | 15 +++- repo/js/AutoCommission/lib/utils.js | 11 +-- repo/js/AutoCommission/main.js | 8 +-- repo/js/AutoCommission/manifest.json | 9 ++- 9 files changed, 117 insertions(+), 36 deletions(-) create mode 100644 repo/js/AutoCommission/lib/checkVersion.js diff --git a/repo/js/AutoCommission/assets/process/惊喜大礼/蒙德城/process.json b/repo/js/AutoCommission/assets/process/惊喜大礼/蒙德城/process.json index 91487ed74..a99a0ba0b 100644 --- a/repo/js/AutoCommission/assets/process/惊喜大礼/蒙德城/process.json +++ b/repo/js/AutoCommission/assets/process/惊喜大礼/蒙德城/process.json @@ -46,7 +46,7 @@ "type": "对话", "data": { "skipCount": 1, - "priorityOptions": ["关于礼物"], + "priorityOptions": ["关于礼物", "我付了"], "npcWhiteList": ["玛乔丽"] }, "note": "与玛乔丽对话" diff --git a/repo/js/AutoCommission/constants.js b/repo/js/AutoCommission/constants.js index a9608b812..cd528d73c 100644 --- a/repo/js/AutoCommission/constants.js +++ b/repo/js/AutoCommission/constants.js @@ -1,9 +1,5 @@ // 原神每日委托自动执行脚本 - 常量定义模块 var Constants = { - // 版本和编译信息 - VERSION: "0.98.13", - BUILD_TIME: "2025.12.26", - // 文件路径常量 SUPPORT_LIST_PATH: "name.json", OUTPUT_DIR: "Data", diff --git a/repo/js/AutoCommission/lib/checkVersion.js b/repo/js/AutoCommission/lib/checkVersion.js new file mode 100644 index 000000000..1fa4cb388 --- /dev/null +++ b/repo/js/AutoCommission/lib/checkVersion.js @@ -0,0 +1,69 @@ +/** + * 检查是否需要更新版本 + * @param {string} currentVersion 当前版本号 (如 "1.2.3") + * @param {string} latestVersion 最新版本号 (如 "1.2.4") + * @returns {boolean} 返回是否需要更新: true表示需要更新, false表示不需要更新 + */ +var needUpdate = function (currentVersion, latestVersion) { + // 将版本号字符串分割成数字数组 + const currentParts = currentVersion.split('.').map(Number); + const latestParts = latestVersion.split('.').map(Number); + + // 获取较长的版本号长度 + const maxLength = Math.max(currentParts.length, latestParts.length); + + // 逐位比较版本号 + for (let i = 0; i < maxLength; i++) { + const currentPart = currentParts[i] || 0; // 如果不存在则默认为0 + const latestPart = latestParts[i] || 0; // 如果不存在则默认为0 + + if (currentPart < latestPart) { + return true; // 当前版本小于最新版本,需要更新 + } else if (currentPart > latestPart) { + return false; // 当前版本大于最新版本,不需要更新 + } + } + + return false; // 两个版本号相等,不需要更新 +}; + +var printVersion = async function () { + try { + let currentVersion = JSON.parse(file.readTextSync("manifest.json")).version; + log.info(`当前版本为:{x}`, currentVersion); + + let response = await http.request( + "GET", + "https://cnb.cool/bettergi/bettergi-scripts-list/-/git/raw/release/repo/js/AutoCommission/manifest.json" + ); + + let latestVersion = JSON.parse(response.body).version; + + if (needUpdate(currentVersion, latestVersion)) { + log.info("=".repeat(20)); + log.info(" "); + log.info("{text}:{v}", "发现新版本!", latestVersion); + log.info(" "); + log.info("=".repeat(20)); + log.info(`更新方式:软件左侧菜单 -> 全自动 -> JS脚本 -> 脚本仓库 -> 更新仓库`); + log.info(`更新完毕后 {text1} 在左侧找到 {txt2} -> 上方点击 {txt3} -> 找到本脚本并点击 -> 右侧点击{txt4}`, + "打开仓库", + "Javascript 脚本", + "已订阅", + "再次订阅" + ); + await sleep(10000); + } + } catch (error) { + if (error.message.includes("不允许使用HTTP请求")) { + log.warn("获取版本号失败,请在调度器中右键本脚本 -> 修改通用设置 -> JS HTTP权限-> 禁用改为启用") + log.info(`==== 不影响脚本正常运行 ====`); + } else if (error.message.includes("A task was canceled")) { + // pass + } else { + log.error(`获取新版本号出错:${error}`); + log.info(`==== 不影响脚本正常运行 ====`); + } + await sleep(5000); + } +} diff --git a/repo/js/AutoCommission/lib/commission-recognition.js b/repo/js/AutoCommission/lib/commission-recognition.js index 3c4851f86..a02842b93 100644 --- a/repo/js/AutoCommission/lib/commission-recognition.js +++ b/repo/js/AutoCommission/lib/commission-recognition.js @@ -221,9 +221,18 @@ var CommissionRecognition = { await sleep(300); keyUp("VK_ESCAPE"); await sleep(1200); - await genshin.setBigMapZoomLevel(2); - // 获取地图坐标并保存 - var bigMapPosition = genshin.getPositionFromBigMap(); + let scale = 2.0 + let bigMapPosition + while (scale <= 5.0) { + try { + await genshin.setBigMapZoomLevel(scale); + bigMapPosition = genshin.getPositionFromBigMap(); + break; + } catch { + scale += 0.1; + } + await sleep(100); + } if (bigMapPosition) { commission.CommissionPosition = bigMapPosition; log.info( @@ -391,9 +400,18 @@ var CommissionRecognition = { await sleep(300); keyUp("VK_ESCAPE"); await sleep(1200); - await genshin.setBigMapZoomLevel(2); - // 获取地图坐标并保存 - var bigMapPosition = genshin.getPositionFromBigMap(); + let scale = 2.0 + let bigMapPosition + while (scale <= 5.0) { + try { + await genshin.setBigMapZoomLevel(scale); + bigMapPosition = genshin.getPositionFromBigMap(); + break; + } catch { + scale += 0.1; + } + await sleep(100); + } if (bigMapPosition) { fourthCommission.CommissionPosition = bigMapPosition; log.info( diff --git a/repo/js/AutoCommission/lib/core.js b/repo/js/AutoCommission/lib/core.js index 9f0959954..e84177327 100644 --- a/repo/js/AutoCommission/lib/core.js +++ b/repo/js/AutoCommission/lib/core.js @@ -90,7 +90,6 @@ var Core = { return commissions; } catch (error) { log.error("Identification函数出现错误: {error}", error.message); - await Utils.errorlog(); return []; } }, @@ -381,7 +380,6 @@ var Core = { return completedCount > 0; } catch (error) { log.error("执行委托追踪时出错: {error}", error.message); - await Utils.errorlog(); return false; } }, @@ -389,8 +387,6 @@ var Core = { // 主流程执行函数 executeMainProcess: async function() { try { - log.debug("版本: {version}", Constants.VERSION); - var settings = await Utils.getSetting(); if (settings.skipRecognition) { @@ -414,7 +410,6 @@ var Core = { } } catch (error) { log.error("执行出错: {error}", error.message); - await Utils.errorlog(); } }, }; \ No newline at end of file diff --git a/repo/js/AutoCommission/lib/execute.js b/repo/js/AutoCommission/lib/execute.js index 89f0e008f..c42577141 100644 --- a/repo/js/AutoCommission/lib/execute.js +++ b/repo/js/AutoCommission/lib/execute.js @@ -127,9 +127,18 @@ var Execute = { await sleep(300); keyUp("VK_ESCAPE"); await sleep(1200); - await genshin.setBigMapZoomLevel(2); - // 获取地图坐标并保存 - var bigMapPosition = genshin.getPositionFromBigMap(); + let scale = 2.0 + let bigMapPosition + while (scale <= 5.0) { + try { + await genshin.setBigMapZoomLevel(scale); + bigMapPosition = genshin.getPositionFromBigMap(); + break; + } catch { + scale += 0.1; + } + await sleep(100); + } if (bigMapPosition) { currentCommissionPosition = bigMapPosition; log.info( diff --git a/repo/js/AutoCommission/lib/utils.js b/repo/js/AutoCommission/lib/utils.js index 640f901c1..67a87da8d 100644 --- a/repo/js/AutoCommission/lib/utils.js +++ b/repo/js/AutoCommission/lib/utils.js @@ -188,7 +188,7 @@ var Utils = { var captureRegion = captureGameRegion(); var OCRresults = await captureRegion.findMulti(locationOcrRo); captureRegion.dispose(); - + log.debug("OCR结果: {OCRresults}", Array.from(OCRresults).map(r => r.text) ); return OCRresults; } catch (error) { log.error("easyOCR识别出错: {error}", error.message); @@ -281,15 +281,6 @@ var Utils = { } }, - // 输出版本和编译时间信息 - errorlog: async function () { - // 输出版本和编译时间信息 - log.info("=".repeat(20)); - log.info("版本: {version}", Constants.VERSION); - log.info("编译时间: {buildTime}", Constants.BUILD_TIME); - log.info("=".repeat(20)); - }, - // 睡眠函数包装 sleep: function (ms) { return sleep(ms); diff --git a/repo/js/AutoCommission/main.js b/repo/js/AutoCommission/main.js index d12e80c94..17cb53fc7 100644 --- a/repo/js/AutoCommission/main.js +++ b/repo/js/AutoCommission/main.js @@ -12,6 +12,7 @@ eval(file.readTextSync("lib/commission-basic.js")); eval(file.readTextSync("lib/commission-recognition.js")); eval(file.readTextSync("lib/commission-data.js")); eval(file.readTextSync("lib/step-processor-loader.js")); +eval(file.readTextSync("lib/checkVersion.js")); // === BGI标准脚本入口:匿名立即执行异步函数(必须是文件的最后一个表达式) === // 测试用代码 @@ -71,11 +72,8 @@ const test = async () => { (async function () { try { - // 输出版本和编译时间信息 - log.info("=".repeat(20)); - log.info("版本: {version}", Constants.VERSION); - log.info("编译时间: {buildTime}", Constants.BUILD_TIME); - log.info("=".repeat(20)); + // 检查更新 + await printVersion() // 加载步骤处理器 log.info("正在加载步骤处理器..."); diff --git a/repo/js/AutoCommission/manifest.json b/repo/js/AutoCommission/manifest.json index 14756f20b..726499375 100644 --- a/repo/js/AutoCommission/manifest.json +++ b/repo/js/AutoCommission/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 1, "name": "(对话+成就)全自动蒙德地区每日委托", - "version": "0.98.13", + "version": "0.98.14", "tags": ["委托","对话","战斗","成就","历练点"], "description": "自动完成每日委托、自动识别委托内容、自动追踪战斗委托、自动完成对话委托、自动获得到隐藏成就。使用前请阅读README.md获取详细说明和常见问题解答。目前项目急需人手,有意者可加群。感谢云闲vsv & 换苏伟u & 小鹰划船不用桨 & 塔台 & 未知_ 的共同开发", "authors": [ @@ -11,5 +11,10 @@ } ], "settings_ui": "settings.json", - "main": "main.js" + "main": "main.js", + "http_allowed_urls": [ + "https://cnb.cool/bettergi/bettergi-scripts-list/*", + "https://github.com/babalae/bettergi-scripts-list/*", + "https://github.com/1004452714/AutoCommission/*" + ] }