diff --git a/repo/js/全队自动回满大招能量/main.js b/repo/js/全队自动回满大招能量/main.js index 4a4933cf..29a1a059 100644 --- a/repo/js/全队自动回满大招能量/main.js +++ b/repo/js/全队自动回满大招能量/main.js @@ -25,8 +25,8 @@ async function tpEndDetection() { throw new Error('传送时间超时'); } -//一直行动,直到检测到指定文字await autoNavigateToReward(); -const autoNavigateToReward = async () => { +//一直行动,直到检测到指定文字await restoredEnergyAutoNavigateToReward(); +const restoredEnergyAutoNavigateToReward = async () => { const rewardTextRo = RecognitionObject.Ocr(1210, 515, 200, 50);//领奖区域检测 let advanceNum = 0; while (true) { @@ -35,25 +35,24 @@ const autoNavigateToReward = async () => { let rewardTextArea = captureRegion.DeriveCrop(1210, 515, 200, 50); let rewardResult = rewardTextArea.find(RecognitionObject.ocrThis); // 检测到特点文字则结束!!! - if (rewardResult.text == "启动") { + if (rewardResult.text) { log.info("已到达指定位置,检测到文字: " + rewardResult.text); await sleep(100); return; } - else if(advanceNum > 15){ + else if(advanceNum > 60){ throw new Error('前进时间超时'); } // 前进一小步 keyDown("w"); - await sleep(400); + await sleep(200); keyUp("w"); - await sleep(200); // 等待角色移动稳定 advanceNum++; } } //执行战斗并检测结束 -async function autoFightAndEndDetection() { +async function restoredEnergyAutoFightAndEndDetection() { // 定义两个检测区域 const region2 = RecognitionObject.ocr(840, 935, 230, 40);//区域二 成功倒计时 @@ -61,7 +60,7 @@ async function autoFightAndEndDetection() { let challengeTime = 0; //2分钟兜底 - while (challengeTime < 4000) { + while (challengeTime < 5000) { // 捕获游戏区域 let capture = captureGameRegion(); // 检测两个区域的OCR结果 @@ -108,9 +107,18 @@ async function autoFightAndEndDetection() { } // 情况2: 区域2有文字且 区域3有文字 → 结束循环 else if (hasText2 && hasText3) { - log.info("检测到挑战成功"); - log.info("能量充满,任务结束"); - return; + await sleep(800); + //二次检验 + capture = captureGameRegion(); + res2 = capture.find(region2); + res3 = capture.find(region3); + hasText2 = !res2.isEmpty() && res2.text.trim().length > 0; + hasText3 = !res3.isEmpty() && res3.text.trim().length > 0; + if (hasText2 && hasText3) { + log.info("检测到挑战成功"); + log.info("能量充满,任务结束"); + return; + } } challengeTime = challengeTime + 1; // 每次检测间隔100毫秒,避免CPU占用过高 @@ -119,33 +127,37 @@ async function autoFightAndEndDetection() { log.info("挑战超时,可能充能失败"); } -let recovery = settings.recovery ?? 0; + +async function restoredEnergy() { let teamName = settings.teamName ?? 0; -await genshin.tp(2297.6201171875,-824.5869140625); await genshin.returnMainUi(); //切换队伍 if(teamName) await genshin.switchParty(teamName); -await pathingScript.runFile("assets/tp.json"); +await genshin.tp(2297.6201171875,-824.5869140625);//传送到神像,避免有倒下的角色 +//传送到蒙德武器副本 +await genshin.tp(-238,2256); await sleep(1000); -keyDown("w"); -await sleep(3000); -keyUp("w"); +await restoredEnergyAutoNavigateToReward(); await sleep(1000); keyPress("F"); await sleep(5000); -click( 380,190 );//选择难度最低的关卡 +click( 380,300 );//选择难度最低的关卡 await sleep(1000); click( 1700,1000 );//单人挑战 await sleep(200); click( 1100,750 );//避免没有体力掐死 -await sleep(1000); +await sleep(1200); click( 1700,1000 );//开始挑战 await tpEndDetection(); -await autoNavigateToReward(); +await restoredEnergyAutoNavigateToReward(); +await sleep(200); keyPress("F"); -await autoFightAndEndDetection();//一直战斗直到检测到结束 +await restoredEnergyAutoFightAndEndDetection();//一直战斗直到检测到结束 await sleep(1000); await genshin.tp(2297.6201171875,-824.5869140625);//传送到神像回血 await sleep(1000); +} + +await restoredEnergy(); })(); diff --git a/repo/js/全队自动回满大招能量/manifest.json b/repo/js/全队自动回满大招能量/manifest.json index 0ff698b6..d3ac2982 100644 --- a/repo/js/全队自动回满大招能量/manifest.json +++ b/repo/js/全队自动回满大招能量/manifest.json @@ -1,8 +1,8 @@ { "manifest_version": 1, "name": "大招能量一键拉满", - "version": "1.2", - "description": "没有什么特别的需求,但是队伍练度不要太离谱,不然35级的 QQ 人都打不过,火神、丝柯克也可用", + "version": "1.3", + "description": "需要开启蒙德武器副本,可选择指定队伍", "authors": [ { "name": "柒叶子",