From a67adc0070fc51efebcc57970ca804237d06439b Mon Sep 17 00:00:00 2001 From: jbcaaa <2712825619@qq.com> Date: Fri, 18 Oct 2024 08:24:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=B8=E5=A4=9A=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=B0=8F=E8=84=B1=E5=9B=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GameTask/AutoPathing/PathExecutor.cs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/BetterGenshinImpact/GameTask/AutoPathing/PathExecutor.cs b/BetterGenshinImpact/GameTask/AutoPathing/PathExecutor.cs index 08fbb3a4..e9d927dd 100644 --- a/BetterGenshinImpact/GameTask/AutoPathing/PathExecutor.cs +++ b/BetterGenshinImpact/GameTask/AutoPathing/PathExecutor.cs @@ -138,7 +138,7 @@ public class PathExecutor(CancellationTokenSource cts) // 非攀爬状态下,检测是否卡死 if (waypoint.MoveMode != MoveModeEnum.Climb.Code) { - if ((now - lastPositionRecord).TotalMilliseconds > 1000) + if ((now - lastPositionRecord).TotalMilliseconds > 1000 && (DateTime.Now - _lastActionTime).TotalSeconds > 2) { lastPositionRecord = now; prevPositions.Add(position); @@ -161,6 +161,7 @@ public class PathExecutor(CancellationTokenSource cts) _rotateTask.RotateToApproach(targetOrientation, screen); if (_randomAngle != 0) { + _randomAngle %= 360; if ((DateTime.Now - _lastActionTime).TotalSeconds > 0.5) _randomAngle = 0; } @@ -192,12 +193,15 @@ public class PathExecutor(CancellationTokenSource cts) await Delay(200, cts); continue; } - //设置为非攀爬时进入攀爬,自动脱离 - if (waypoint.MoveMode != MoveModeEnum.Climb.Code) + //设置为非攀爬时进入攀爬,自动脱离(小脱困) + if (waypoint.MoveMode != MoveModeEnum.Climb.Code && + waypoint.MoveMode != MoveModeEnum.Fly.Code) if (Bv.GetMotionStatus(screen) == MotionStatus.Climb) { Debug.WriteLine("进入攀爬状态,按下x"); Simulation.SendInput.Keyboard.KeyPress(User32.VK.VK_X); + _lastActionTime = DateTime.Now; + _randomAngle += _ran.Next(15, 30); continue; } @@ -257,7 +261,7 @@ public class PathExecutor(CancellationTokenSource cts) private async Task EscapeTrap() { - _randomAngle = _ran.Next(-30, 30); + _randomAngle += _ran.Next(15, 30); // 脱离攀爬状态 Simulation.SendInput.Keyboard.KeyUp(User32.VK.VK_W); await Delay(1500, cts); @@ -267,8 +271,8 @@ public class PathExecutor(CancellationTokenSource cts) await Delay(500, cts); TimeSpan timeSinceLastAction = DateTime.Now - _lastActionTime; - _lastActionTime = DateTime.Now; - if (timeSinceLastAction.TotalSeconds >= 3) + + if (timeSinceLastAction.TotalSeconds >= 5) { // 从零开始 _lastActionIndex = 0; @@ -313,6 +317,7 @@ public class PathExecutor(CancellationTokenSource cts) await Delay(500, cts); break; } + _lastActionTime = DateTime.Now; } private async Task MoveCloseTo(WaypointForTrack waypoint)