From 9c6b6063830d5063e3891aee4f4a00df7a661c78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8F=90=E7=93=A6=E7=89=B9=E9=92=93=E9=B1=BC=E7=8E=B3?= =?UTF-8?q?=E5=B8=88?= Date: Fri, 13 Feb 2026 16:28:57 +0800 Subject: [PATCH] =?UTF-8?q?AutoFishingTeyvat-Bait=E3=80=90=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E3=80=91=20(#2869)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * update * update * fix --- repo/js/AutoFishingTeyvat-Bait/README.md | 26 ++++++---------- repo/js/AutoFishingTeyvat-Bait/main.js | 32 +++++++++++++++++--- repo/js/AutoFishingTeyvat-Bait/manifest.json | 2 +- 3 files changed, 38 insertions(+), 22 deletions(-) diff --git a/repo/js/AutoFishingTeyvat-Bait/README.md b/repo/js/AutoFishingTeyvat-Bait/README.md index 12cb7d99e..c10d5792a 100644 --- a/repo/js/AutoFishingTeyvat-Bait/README.md +++ b/repo/js/AutoFishingTeyvat-Bait/README.md @@ -4,29 +4,21 @@ ## 核心功能 -~~1. 自动收集和制作合成鱼饵所需的材料~~ - -2. 自动合成设定的鱼饵,可通过背包识别达到指定数量 - -3. 可选择合成台位置 - -4. 可自行配置鱼饵原材料余量相关的设置 - +~~1. 自动收集和制作合成鱼饵所需的材料~~ +2. 自动合成设定的鱼饵,可通过背包识别达到指定数量 +3. 可选择合成台位置 +4. 可自行配置鱼饵原材料余量相关的设置 ~~5. 可通过NPC购买原料(可选)~~ ## 注意事项 **该脚本处于测试阶段,可能出现OCR误差导致的问题** -1. 请确保所选的鱼饵配方已经学习(如果勾选```其他功能```中的```优化OCR(建议启用)```) -2. 请确保鱼饵的原材料数量充足 - -~~3. 自动获取的原料有限,在单次原材料CD周期内,通过地图追踪来收集原料合成的饵料数量建议**小于500**~~ - -~~4. 小麦目前只能通过购买获取(暂不支持通过调查点获取)~~ - -~~5. 如果选择了购买原料,需要保证对应的商人可用(确保已经进行过前置对话,可以直接进入商店)~~ +1. 请确保所选的鱼饵配方已经学习(如果勾选```其他功能```中的```优化OCR(建议启用)```) +2. 请确保鱼饵的原材料数量充足 +~~2. 自动获取的原料有限,在单次原材料CD周期内,通过地图追踪来收集原料合成的饵料数量建议**小于500**~~ +~~3. 小麦目前只能通过购买获取(暂不支持通过调查点获取)~~ +~~4. 如果选择了购买原料,需要保证对应的商人可用(确保已经进行过前置对话,可以直接进入商店)~~ ## 其它 脚本反馈群(推荐):BetterGI v7群(1029539994) - 脚本反馈邮箱:hijiwos@hotmail.com \ No newline at end of file diff --git a/repo/js/AutoFishingTeyvat-Bait/main.js b/repo/js/AutoFishingTeyvat-Bait/main.js index 97f665b72..a500ae83f 100644 --- a/repo/js/AutoFishingTeyvat-Bait/main.js +++ b/repo/js/AutoFishingTeyvat-Bait/main.js @@ -561,7 +561,18 @@ * @returns {Promise} */ async function make_bait(name, num) { - if (num === 0) return true; + if (num === 0) { + log.info("合成次数: 0,跳过..."); + await sleep(500); + return true; + } else if (num > 200) { + log.warn(`合成次数: ${num},次数异常,跳过...`); + await sleep(500); + return true; + } else { + log.info(`合成次数: ${num}`); + await sleep(500); + } let shelter_option = await Ocr(165, 1001, 289, 32); // 筛选器文本 if (shelter_option) { @@ -677,20 +688,32 @@ await sleep(100); let current_num = await Ocr(1264, 617, 158, 30); // 已选的合成次数文本区域 if (current_num && max_num > num) { // [DEBUG]若false则可能有些许误差 - current_num = parseInt(current_num.text.replace(/\D/g, ''), 10); + // 如果差值过大,从头开始 + if (Math.abs(num - current_num) > 125) { + await sleep(300); + click(1167, 671); + current_num = 1; + } else { + current_num = parseInt(current_num.text.replace(/\D/g, ''), 10); + } + if (current_num > num) { for (let i = 0; i < current_num - num; i++) { // - log.debug("-1"); click(1075, 671); - await sleep(50); + await sleep(75); } } else if (current_num < num) { for (let i = 0; i < num - current_num; i++) { // + log.debug("+1"); click(1612, 671); - await sleep(50); + await sleep(75); } } + } else if (!current_num) { + log.error(`OCR错误,未识别到当前合成数,该鱼饵(${name})跳过...`); + await sleep(1000); + return false; } await sleep(500); @@ -950,6 +973,7 @@ * "material_dic": material_dic // x: x * } */ + let data = await calculate_values(); await go_and_interact("合成台"); for (const[b_name, b_msg] of Object.entries(data["exp_bait_dic"])) { diff --git a/repo/js/AutoFishingTeyvat-Bait/manifest.json b/repo/js/AutoFishingTeyvat-Bait/manifest.json index 46c7afdf6..776463604 100644 --- a/repo/js/AutoFishingTeyvat-Bait/manifest.json +++ b/repo/js/AutoFishingTeyvat-Bait/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 1, "name": "提瓦特自动饵料机[测试版]", - "version": "1.0.2", + "version": "1.0.3", "bgi_version": "0.55.0", "description": "全自动合成鱼饵(支持自动获取原料)", "authors": [