From 57dfbbbc5c501accc4060ce70ff3ea79bb6c675e Mon Sep 17 00:00:00 2001 From: kaedelcb <57870068+kaedelcb@users.noreply.github.com> Date: Thu, 10 Apr 2025 22:02:02 +0800 Subject: [PATCH] =?UTF-8?q?Auto=E5=85=A8=E8=87=AA=E5=8A=A8=E2=80=9C?= =?UTF-8?q?=E6=9E=AB=E4=B8=B9=E2=80=9D=E5=9C=B0=E8=84=89=E8=8A=B1=20=20(#5?= =?UTF-8?q?53)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Delete repo/js/Auto全自动“枫丹”地脉花 directory * Auto全自动“枫丹”地脉花修复问题 零、前言 测试中,注意事项不完善请谅解,如有BUG,QQ:119996800,随时欢迎反馈。 后续优化代码和使用说明,先测试看如何! 感谢平面镜和D捣蛋两位大佬的基础线路和逻辑。 一、省流注意事项: 1、目前设置两次自动战斗,加入了错误打开奖励页面的检测,解决误触领奖的错误,建议把超时时间设定为60秒以上,并勾选更快检测战斗结束,根据练度不同调整。 2、建议手动把自动拾取关闭,公版没有API接口可以关闭,开始前设置不自动拾取怪物的掉落物,能让线路运行更流畅。 3、禁用UID刷取地脉花有概率识别不成功,如更换纯色或没花纹的名片能大大提高识别率(99.99999%)。 4、寻路会先通过快速拖动进行识别,如线路没被打过,一般都能识别成功,如快速无法找到地脉花,会切换到放大拖动模式进行地脉花寻找,此时可能会寻找到之前没打完的线路。 二、配置简介: 1、《好感队伍》和《战斗队伍》填写:如填写了《好感队伍》(用于打完地脉花领取奖励和结束地脉花领取励练点、每日),则《战斗队伍》必须填写,否则无法运行。 冷知识:浓缩树脂只算一次地脉次数,所以在一条龙时可以不合树脂,打完地脉再领每日。如《好感队伍》和《战斗队伍》都不填,则不会切换队伍打地脉花,建议和配置器的配置设置队伍一致。 2、如果勾选了打完后,领取每日奖励《好感队伍》必填,建议无论是否需要,《好感队伍》和《战斗队伍》都填,都填一个队伍也行。 3、《刷取次数》默认为6,每条线路4~6朵花,如果不想刷太多次,可选择单线路模式,只会打一条线路内的花,数量为《刷取次数》,如果选择了《耗尽树脂模式》,线路打完也会继续寻找新的线路,直到耗尽浓缩和使用原粹树脂,不会使用小月亮,请放心。 4、默认选“1”刷蓝色的经验书地脉之花,选“2”为刷金黄色的摩拉地脉之花。 5、可填写需要禁用的UID,禁止此UID刷地脉花,通过派蒙页面左上角的UID进行文字识别,如有多个账号需禁用,使用“/”符号隔开,如12345678/99999999,经过测试,只要在UID数字后面为比较干净的颜色,没有特效动画的名片,识别了100次全正确,再多测看下。 5、作者测试用的BOX不要点,勾选后会报错,不要点!!!! 先写那么多,后需会优化代码规范,现在太乱了。 三、更新说明: 1.1版本:20250410 1、修复自动战斗不停向前走的问题。 2、修复第一次战斗部不切换战斗队伍问题。 3、修复线路1第三朵花文件命错误。 4、修复队伍未填写判断为已定义问题,改为在设置过又删除队伍后判断未未定义。 5、修复树脂耗尽模式下,不打完整体线路问题,改为强制打完整体线路。 * 新增一些优化 三、更新说明: v.1.1版本:20250410 1、修复自动战斗不停向前走的问题。 2、修复第一次战斗部不切换战斗队伍问题。 3、修复线路1第三朵花文件命错误。 4、修复队伍未填写判断为已定义问题,改为在设置过又删除队伍后判断未未定义。 5、修复树脂耗尽模式下,不打完整体线路问题,改为强制打完整体线路。 6、新增,如地脉花线路不在初始位置,快速模式是找不到的,在模糊位置可能被找到,即线路在被打过后,尝试通过无视树脂是否用完,遍历此线路查找线路剩余的地脉花,如再次找到地脉花,恢复正常判断树脂是否用完。 7、优化快速查找模式下的准确性。 8、优化模糊模式下的搜索范围,和坐标位置。 --- .../AAA 地脉花注意事项.txt | 13 ++- .../枫丹地脉花-路线1 厄里那斯-1:厄里那斯神像下1.json | 4 - ...那斯神像右下_ 1.json => 枫丹地脉花-路线1 厄里那斯-3:厄里那斯神像右下_1.json} | 0 repo/js/Auto全自动“枫丹”地脉花/main.js | 85 ++++++++++--------- repo/js/Auto全自动“枫丹”地脉花/manifest.json | 2 +- 5 files changed, 56 insertions(+), 48 deletions(-) rename repo/js/Auto全自动“枫丹”地脉花/assets/枫丹地脉花-路线1 厄里那斯/{枫丹地脉花-路线1 厄里那斯-3:厄里那斯神像右下_ 1.json => 枫丹地脉花-路线1 厄里那斯-3:厄里那斯神像右下_1.json} (100%) diff --git a/repo/js/Auto全自动“枫丹”地脉花/AAA 地脉花注意事项.txt b/repo/js/Auto全自动“枫丹”地脉花/AAA 地脉花注意事项.txt index e6fd5f15..952210f8 100644 --- a/repo/js/Auto全自动“枫丹”地脉花/AAA 地脉花注意事项.txt +++ b/repo/js/Auto全自动“枫丹”地脉花/AAA 地脉花注意事项.txt @@ -7,7 +7,7 @@ 1、目前设置两次自动战斗,加入了错误打开奖励页面的检测,解决误触领奖的错误,建议把超时时间设定为60秒以上,并勾选更快检测战斗结束,根据练度不同调整。 2、建议手动把自动拾取关闭,公版没有API接口可以关闭,开始前设置不自动拾取怪物的掉落物,能让线路运行更流畅。 3、禁用UID刷取地脉花有概率识别不成功,如更换纯色或没花纹的名片能大大提高识别率(99.99999%)。 -4、寻路会先通过快速拖动进行识别,一般都能识别成功,如快速无法找到地脉花,会切换到放大拖动模式进行地脉花寻找,此时可能会寻找到之前没打完的线路。 +4、寻路会先通过快速拖动进行识别,如线路没被打过,一般都能识别成功,如快速无法找到地脉花,会切换到放大拖动模式进行地脉花寻找,此时会寻找到之前没打完的线路。 二、配置简介: @@ -26,3 +26,14 @@ 5、作者测试用的BOX不要点,勾选后会报错,不要点!!!! 先写那么多,后需会优化代码规范,现在太乱了。 + +三、更新说明: +v.1.1版本:20250410 +1、修复自动战斗不停向前走的问题。 +2、修复第一次战斗部不切换战斗队伍问题。 +3、修复线路1第三朵花文件命错误。 +4、修复队伍未填写判断为已定义问题,改为在设置过又删除队伍后判断未未定义。 +5、修复树脂耗尽模式下,不打完整体线路问题,改为强制打完整体线路。 +6、新增,如地脉花线路不在初始位置,快速模式是找不到的,在模糊位置可能被找到,即线路在被打过后,尝试通过无视树脂是否用完,遍历此线路查找线路剩余的地脉花,如再次找到地脉花,恢复正常判断树脂是否用完。 +7、优化快速查找模式下的准确性。 +8、优化模糊模式下的搜索范围,和坐标位置。 \ No newline at end of file diff --git a/repo/js/Auto全自动“枫丹”地脉花/assets/枫丹地脉花-路线1 厄里那斯/枫丹地脉花-路线1 厄里那斯-1:厄里那斯神像下1.json b/repo/js/Auto全自动“枫丹”地脉花/assets/枫丹地脉花-路线1 厄里那斯/枫丹地脉花-路线1 厄里那斯-1:厄里那斯神像下1.json index a5abae75..081791a0 100644 --- a/repo/js/Auto全自动“枫丹”地脉花/assets/枫丹地脉花-路线1 厄里那斯/枫丹地脉花-路线1 厄里那斯-1:厄里那斯神像下1.json +++ b/repo/js/Auto全自动“枫丹”地脉花/assets/枫丹地脉花-路线1 厄里那斯/枫丹地脉花-路线1 厄里那斯-1:厄里那斯神像下1.json @@ -12,18 +12,14 @@ "id": 1, "x": 4749.5869140625, "y": 2636.20751953125, - "action": "", "move_mode": "walk", - "action_params": "", "type": "teleport" }, { "id": 2, "x": 4758.18505859375, "y": 2611.123291015625, - "action": "", "move_mode": "walk", - "action_params": "", "type": "path" }, { diff --git a/repo/js/Auto全自动“枫丹”地脉花/assets/枫丹地脉花-路线1 厄里那斯/枫丹地脉花-路线1 厄里那斯-3:厄里那斯神像右下_ 1.json b/repo/js/Auto全自动“枫丹”地脉花/assets/枫丹地脉花-路线1 厄里那斯/枫丹地脉花-路线1 厄里那斯-3:厄里那斯神像右下_1.json similarity index 100% rename from repo/js/Auto全自动“枫丹”地脉花/assets/枫丹地脉花-路线1 厄里那斯/枫丹地脉花-路线1 厄里那斯-3:厄里那斯神像右下_ 1.json rename to repo/js/Auto全自动“枫丹”地脉花/assets/枫丹地脉花-路线1 厄里那斯/枫丹地脉花-路线1 厄里那斯-3:厄里那斯神像右下_1.json diff --git a/repo/js/Auto全自动“枫丹”地脉花/main.js b/repo/js/Auto全自动“枫丹”地脉花/main.js index f2f16dfd..cd07b0c2 100644 --- a/repo/js/Auto全自动“枫丹”地脉花/main.js +++ b/repo/js/Auto全自动“枫丹”地脉花/main.js @@ -58,7 +58,7 @@ } } const NowTime = new Date(); - if (Math.abs(NowTime - startTime)>chaotime*1000){if (x===0 & y===0){log.info(`${chaotime}秒超时退出,"${wenzi}"未找到`);}return result = {found: false };}else{ii=8;await keyPress("VK_W");log.info(`"${wenzi}"识别中……`);} + if (Math.abs(NowTime - startTime)>chaotime*1000){if (x===0 & y===0){log.info(`${chaotime}秒超时退出,"${wenzi}"未找到`);}return result = {found: false };}else{ii=8;if (x !== 861){await keyPress("VK_W");}log.info(`"${wenzi}"识别中……`);} await sleep(100); } } @@ -192,7 +192,7 @@ // 调用PathCheak2 if (await PathCheak2()) {return true;} else return false; } else { - throw new Error("无效的参数LOOOKING,请使用1或2"); + throw new Error("无效的参数LOOOKING,请使用0或1"); } } @@ -265,16 +265,15 @@ await moveMouseTo(1272,18); await sleep(200); let XIAN23 = await imageRecognition(DIMAIHUA,1,0,0,1076,651,183,142); - let QIU = await Textocr("秋分山西侧",1,0,0,1076,651,183,142); - if (QIU.found && (QIU.y > XIAN23.y+651)){AutofilePath=3;log.info("找到线路'3'");await leftButtonUp();return true}//return true - if (QIU.found && (QIU.y < XIAN23.y+651)){AutofilePath=2;log.info("找到线路'2'");await leftButtonUp();return true}//return true + if ( (XIAN23.y+651)<=720){AutofilePath=3;log.info("找到线路'3'");await leftButtonUp();return true}//return true + if ( (XIAN23.y+651)>720){AutofilePath=2;log.info("找到线路'2'");await leftButtonUp();return true}//return true let XIAN1 = await imageRecognition(DIMAIHUA,1,0,0,714,633,130,124);if (XIAN1.found){AutofilePath=1;log.info("找到线路'1'");await leftButtonUp();return true}//return true await moveMouseTo(132,583); await sleep(200); - let XIAN4 = await imageRecognition(DIMAIHUA,1,0,0,714,633,130,124);if (XIAN4.found){AutofilePath=4;log.info("找到线路'4'");await leftButtonUp();return true}//return true + let XIAN4 = await imageRecognition(DIMAIHUA,1,0,0,884,497,107,87);if (XIAN4.found){AutofilePath=4;log.info("找到线路'4'");await leftButtonUp();return true}//return true await moveMouseTo(1064,1026); await sleep(200); - let XIAN5 = await imageRecognition(DIMAIHUA,1,0,0,714,633,130,124);if (XIAN5.found){AutofilePath=5;log.info("找到线路'5'");await leftButtonUp();return true}// + let XIAN5 = await imageRecognition(DIMAIHUA,1,0,0,680,148,87,72);if (XIAN5.found){AutofilePath=5;log.info("找到线路'5'");await leftButtonUp();return true}// AutofilePath =0; await leftButtonUp(); return false @@ -284,22 +283,23 @@ async function PathCheak2() { // 地脉花坐标 const coordArray = [ - { x: 4760, y: 2374 },//1 - { x: 4113, y: 2354 },//2 - { x: 4058, y: 2354 },//3 + { x: 4960, y: 2180 },//1 + { x: 4113, y: 2154 },//2 + { x: 3858, y: 2354 },//3 { x: 2732, y: 3633 },//4 - { x: 4556, y: 4999 },//5 - { x: 4962, y: 4599 }];//6 - // const coordArray = [ - // { x: 4760, y: 2374 },//1 - // { x: 4143, y: 2374 },//2 - // { x: 4088, y: 2374 },//3 - // { x: 2732, y: 3633 },//4 - // { x: 4556, y: 4999 },//5 - // { x: 4962, y: 4599 }];//6 + { x: 4556, y: 5100 },//5 + { x: 4962, y: 4699 }];//6 + + const coordArray2 = [ + { x: 974, y: 150 ,w: 616 ,h:775},//1 + { x: 515, y: 228 ,w: 493 ,h:710},//2 + { x: 651, y: 236 ,w: 531 ,h:481},//3 + { x: 500, y: 300 ,w: 600 ,h:500},//4 + { x: 582, y: 238 ,w: 700 ,h:600},//5 + { x: 384, y: 175 ,w: 850 ,h:800},];//6 await genshin.returnMainUi(); - log.info("更换为放大模式寻找地脉花……"); + log.info("更换为放大模糊模式寻找地脉花,……"); await genshin.tp(2297.60, -824.45); await genshin.returnMainUi(); await sleep(1000); @@ -309,15 +309,14 @@ for (let i = 0; i < coordArray.length; i++) { const coord = coordArray[i]; + const coord2 = coordArray2[i]; await genshin.moveMapTo(coord.x,coord.y,"枫丹"); - if (i===1 || i===2){await genshin.setBigMapZoomLevel(1);}else{await genshin.setBigMapZoomLevel(1.5);} - let DIMAI = await imageRecognition(DIMAIHUA,1.5,0,0,408,185,1200,780); - if (i===1 || i===2){var QIU = await Textocr("秋分山西侧",1.5,0,0,408,185,1200,780);} + await genshin.setBigMapZoomLevel(1.5); + let DIMAI = await imageRecognition(DIMAIHUA,1.5,0,0,coord2.x,coord2.y,coord2.w,coord2.h); if (DIMAI.found) - {if (i===1 || i===2) { - if (QIU.found && (QIU.y > DIMAI.y+185)){AutofilePath=3;return true}//break; - if (QIU.found && (QIU.y < DIMAI.y+185)){AutofilePath=2;return true}//break; - } else{AutofilePath=i+1;return true}//break; + { + log.info("地脉花找到,但不在初始位置,尝试寻找……"); + AutofilePath=i+1;FINDagin = 1;return true; } await genshin.returnMainUi(); if (i === 5){return false;} @@ -373,14 +372,14 @@ let SHUY = await Textocr("使用原粹树脂",2,1,0,877,726,193,53); let SHUB = await Textocr("补充原粹树脂",1,0,0,877,726,193,53); await sleep(1000); - if (SHUB.found){log.warn("树脂消耗完毕,结束任务");SHUOVER=2;await keyPress("VK_ESCAPE");await sleep(1000);return false;} + if (SHUB.found){log.warn("树脂消耗完毕,结束任务");await keyPress("VK_ESCAPE");await sleep(1000);if (FINDagin===1){SHUOVER=1;log.warn("模糊模式,地脉不在初始位置,继续寻找!");return true;}else{SHUOVER=2;return false;}} else if (SHUN.found || SHUY.found) { - log.info("找到树脂,已经使用...");dispatcher.addTimer(new RealtimeTimer("AutoPick", { forceInteraction: true })); return true; + log.info("找到树脂,已经使用...");FINDagin=0;dispatcher.addTimer(new RealtimeTimer("AutoPick", { forceInteraction: true })); return true; }else{ log.warn("未找到树脂,尝试领取奖励..."); let SHUN = await Textocr("使用浓缩树脂",0.5,1,0,672,726,191,53); let SHUY = await Textocr("使用原粹树脂",0.5,1,0,877,726,193,53); - if (SHUN.found || SHUY.found) { return true;}else{log.warn("领取错误,退出!");SHUOVER=2;return false;}//SHUOVER=2 + if (SHUN.found || SHUY.found) {FINDagin=0; return true;}else{log.warn("领取错误,退出!");if (FINDagin===1){SHUOVER=1;log.warn("模糊模式,地脉不在初始位置,继续寻找!");return true}else{SHUOVER=2;return false;}}//SHUOVER=2 } } @@ -424,11 +423,12 @@ var executedCount = 0; for (let i = 0; i < selectedPath.length; i += 2){ + // if(AutofilePath==1 && i <=8 ){i=8}测试用,注释掉即可 const jsonFile1 = selectedPath[i]; const jsonFile2 = selectedPath[i + 1]; // 条件1触发:次数限制 if (executedCount >= maxExecutions*2) { - log.info("已达到执行次数,终止运行"); + log.info("本线路已达到执行次数,终止运行!"); break;} // 执行单个到达地脉花路径文件1 @@ -436,6 +436,8 @@ await pathingScript.runFile(`${selectedFolder}${jsonFile1}`); // 寻找地脉溢口,文字识别不到转圈寻找,不管有没找到都执行战斗,最后领取奖励判断是否继续执行 + shouldContinueChecking = true; + checkRewardPage();// 执行自动战斗并同步检测领奖页面 await VeinEntrance(); await sleep(1000); dispatcher.addTimer(new RealtimeTimer("AutoPick", { "forceInteraction": false })); @@ -443,9 +445,6 @@ if (LCBMODEL){await dispatcher.runTask(new SoloTask("LCBAutoPickCLOSE"));}//LCB自编译版本命令,公版BETTERGI无效===========LCB //执行自动战斗,配置器中的设置建议填你的队伍打一次大概得时间 - shouldContinueChecking = true; - checkRewardPage();// 执行自动战斗并同步检测领奖页面 - await dispatcher.runTask(new SoloTask("AutoFight")); await sleep(2000); await dispatcher.runTask(new SoloTask("AutoFight"));//公版BETTERGI战斗两次可能触发已经出现的地脉花 @@ -473,6 +472,7 @@ await sleep(1000); executedCount=executedCount+2; } + FINDagin = 0; //重置地脉花寻找标志。lv.1.2新增,用于判断是否找线路余下地脉花。 return true;// 线路完成 } @@ -484,19 +484,20 @@ var SHUV = settings.shuv ? settings.shuv : 1; // 1 单线路,2 树脂耗尽 var Rewards = settings.Rewards ? settings.Rewards : false; // ture 领取冒险点奖励,false 不领取冒险点奖励 var Fligtin = false; //领取冒险点奖励标志。 + var FINDagin = 0; //地脉花寻找标志。lv.1.2新增,用于判断是否找线路余下地脉花。 log.debug(`DEBUG:${SHUV}.${color}.${rawTimes}`);//调试LOG - if (Rewards){log.warn("结束后领励练点和提交每日!");if(settings.nh === undefined) {log.warn("好感队未配置,领奖励时不切换队伍")}} - if (settings.nh === undefined) { log.warn("好感队禁用!");haoganq=0}else{var haogandui = settings.nh;haoganq=1;if(settings.n === undefined) {throw new Error("好感队已经设置,请填战斗队伍!")}} - if (settings.n === undefined) { log.warn("队伍名称未配置,不更换队伍!");SHUOVER=1;} - if (SHUV === 1) {log.warn("线路模式 :'单线路!'");}else{log.warn("线路模式 :'树脂耗尽模式!'")} + if (Rewards){log.warn("结束后领励练点和提交每日!");if(settings.nh === undefined || settings.nh === "") {log.warn("好感队未配置,领奖励时不切换队伍")}} + if (settings.nh === undefined || settings.nh === "") { log.warn("好感队禁用!");haoganq=0}else{var haogandui = settings.nh;haoganq=1;if(settings.n === undefined ) {throw new Error("好感队已经设置,请填战斗队伍!")}} + if (settings.n === undefined || settings.n === "") { log.warn("队伍名称未配置,不更换队伍!");SHUOVER=1;} + if (SHUV === 1) {log.warn("线路模式 :'单线路!'");}else{log.warn("线路模式 :'树脂耗尽模式,强制打完整体线路!'");rawTimes=12} if (color == 1) {log.warn("地脉类型 :'蓝色经验书花!'");}else{log.warn("地脉类型 :'黄色摩拉花!'")} - - let nowuidString = settings.nowuid ? settings.nowuid : ""; - // 使用正则表达式匹配字符串中的所有数字序列//UID获取存在概率不成功,慎用!请更换背景纯色的名片提高OCR成功率 + + + // UID获取存在概率不成功,慎用!请更换背景纯色的名片提高OCR成功率 let uidNumbers = nowuidString.match(/\d+/g); if (nowuidString) { log.debug(`DEBUG:${uidNumbers}`);//调试LOG @@ -526,7 +527,7 @@ Fligtin = true ; //领取冒险点奖励标志。 if (!(await PathCheak(0))){if (!(await PathCheak(1))){throw new Error("未找到地脉花,退出!")}} //第一次执行选择队伍 - if (SHUOVER = 0){await genshin.SwitchParty(settings.n);await sleep(500);} + if (SHUOVER == 0){await genshin.SwitchParty(settings.n);await sleep(500);} //开始寻找并执行地脉花自动。 if (!(await Veinfligt())){throw new Error("线路出错,退出!")} //线路一般4~6朵花,默认打完一条线路后退出,如耗尽模式重新寻找地脉线路,打到没树脂为止。 diff --git a/repo/js/Auto全自动“枫丹”地脉花/manifest.json b/repo/js/Auto全自动“枫丹”地脉花/manifest.json index 59c85bb6..019e82c0 100644 --- a/repo/js/Auto全自动“枫丹”地脉花/manifest.json +++ b/repo/js/Auto全自动“枫丹”地脉花/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 1, "name": "可禁UID&领每日&好感队切换", - "version": "1.0", + "version": "1.1", "bgi_version": "0.44.3", "description": "枫丹地脉花,蓝花金花通用。生存压力大,请带盾奶;避免纯水输出。地脉花特殊,请注意说明文件。QQ:119996800(茶包) 加我请说明来意。", "authors": [