From ba2ae75556540754f518cc6c0c4ac9fdb280d4b4 Mon Sep 17 00:00:00 2001 From: kaedelcb <57870068+kaedelcb@users.noreply.github.com> Date: Sun, 21 Sep 2025 11:24:45 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8F=88=E4=B9=8C?= =?UTF-8?q?=E7=8E=9BUI=E9=97=AE=E9=A2=98=E7=9A=84=E5=8D=A1=E9=A1=BF?= =?UTF-8?q?=E7=AD=89=E9=97=AE=E9=A2=98=20(#2238)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GameTask/AutoFight/AutoFightTask.cs | 5 ++ .../GameTask/AutoFight/Model/Avatar.cs | 11 +-- .../GameTask/AutoFight/Model/CombatScenes.cs | 69 +++++++------------ .../GameTask/AutoPathing/PathExecutor.cs | 2 +- 4 files changed, 37 insertions(+), 50 deletions(-) diff --git a/BetterGenshinImpact/GameTask/AutoFight/AutoFightTask.cs b/BetterGenshinImpact/GameTask/AutoFight/AutoFightTask.cs index bbb0581f..228fd69a 100644 --- a/BetterGenshinImpact/GameTask/AutoFight/AutoFightTask.cs +++ b/BetterGenshinImpact/GameTask/AutoFight/AutoFightTask.cs @@ -40,6 +40,8 @@ public class AutoFightTask : ISoloTask private readonly double _dpi = TaskContext.Instance().DpiScale; public static OtherConfig Config { get; set; } = TaskContext.Instance().Config.OtherConfig; + + public static bool FightStatusFlag { get; set; } = false; private class TaskFightFinishDetectConfig { @@ -287,6 +289,8 @@ public class AutoFightTask : ISoloTask { try { + FightStatusFlag = true; + while (!cts2.Token.IsCancellationRequested) { // 所有战斗角色都可以被取消 @@ -442,6 +446,7 @@ public class AutoFightTask : ISoloTask finally { Simulation.ReleaseAllKey(); + FightStatusFlag = false; } }, cts2.Token); diff --git a/BetterGenshinImpact/GameTask/AutoFight/Model/Avatar.cs b/BetterGenshinImpact/GameTask/AutoFight/Model/Avatar.cs index d703c3f6..e4fc4281 100644 --- a/BetterGenshinImpact/GameTask/AutoFight/Model/Avatar.cs +++ b/BetterGenshinImpact/GameTask/AutoFight/Model/Avatar.cs @@ -94,6 +94,7 @@ public class Avatar NameRect = nameRect; CombatAvatar = DefaultAutoFightConfig.CombatAvatarMap[name]; ManualSkillCd = manualSkillCd; + AutoFightTask.FightStatusFlag = false; } @@ -291,7 +292,7 @@ public class Avatar private void Offset60Fix(int i) { // 3次失败考虑是否偏移出现问题,修改偏移位置 - if (i <= 2) + if (i <= 2 || AutoFightTask.FightStatusFlag) { return; } @@ -300,18 +301,18 @@ public class Avatar { foreach (var avatar in CombatScenes.GetAvatars()) { - var rect1 = avatar.IndexRect; - rect1.Y += 14; + var originalRect = AutoFightAssets.Instance.AvatarIndexRectList[avatar.Index - 1]; + var rect1 = new Rect(originalRect.X, originalRect.Y, originalRect.Width, originalRect.Height); avatar.IndexRect = rect1; } - CombatScenes.IndexRectOffset60Fix = false; } else { foreach (var avatar in CombatScenes.GetAvatars()) { - var rect1 = avatar.IndexRect; + var originalRect = AutoFightAssets.Instance.AvatarIndexRectList[avatar.Index - 1]; + var rect1 = new Rect(originalRect.X, originalRect.Y, originalRect.Width, originalRect.Height); rect1.Y -= 14; avatar.IndexRect = rect1; } diff --git a/BetterGenshinImpact/GameTask/AutoFight/Model/CombatScenes.cs b/BetterGenshinImpact/GameTask/AutoFight/Model/CombatScenes.cs index c61f4ab0..856e53b8 100644 --- a/BetterGenshinImpact/GameTask/AutoFight/Model/CombatScenes.cs +++ b/BetterGenshinImpact/GameTask/AutoFight/Model/CombatScenes.cs @@ -96,15 +96,15 @@ public class CombatScenes : IDisposable Logger.LogInformation("当前处于联机状态,且在别人世界中,联机人数{Num}人", num); } - avatarSideIconRectList = AutoFightAssets.Instance.AvatarSideIconRectListMap[$"{p}_{num}"]; - avatarIndexRectList = AutoFightAssets.Instance.AvatarIndexRectListMap[$"{p}_{num}"]; + avatarSideIconRectList = new List(AutoFightAssets.Instance.AvatarSideIconRectListMap[$"{p}_{num}"]); + avatarIndexRectList = new List(AutoFightAssets.Instance.AvatarIndexRectListMap[$"{p}_{num}"]); ExpectedTeamAvatarNum = avatarSideIconRectList.Count; } else { - avatarSideIconRectList = AutoFightAssets.Instance.AvatarSideIconRectList; - avatarIndexRectList = AutoFightAssets.Instance.AvatarIndexRectList; + avatarSideIconRectList = new List(AutoFightAssets.Instance.AvatarSideIconRectList); + avatarIndexRectList = new List(AutoFightAssets.Instance.AvatarIndexRectList); } // 6.0 版本 队伍下的 草露 进度条 导致位置偏移 @@ -158,7 +158,7 @@ public class CombatScenes : IDisposable { // 角色序号 左上角 坐标偏移(+2, -5)后存在3个白色点,则认为存在 草露 进度条 // 存在 草露 进度条时候整体上移 14 个像素 - int whitePointCount = 0; + var whitePointCount = 0; foreach (var rectIndex in avatarIndexRectList) { int x = rectIndex.X + 2; @@ -170,47 +170,28 @@ public class CombatScenes : IDisposable } } - if (whitePointCount >= 3) + if (whitePointCount < 3) { - Logger.LogInformation("检测到右侧队伍上偏移,进行位置偏移"); - - for (int i = 0; i < avatarSideIconRectList.Count; i++) - { - var rect = avatarSideIconRectList[i]; - rect.Y -= 14; - avatarSideIconRectList[i] = rect; - } - - for (int i = 0; i < avatarIndexRectList.Count; i++) - { - var rect = avatarIndexRectList[i]; - rect.Y -= 14; - avatarIndexRectList[i] = rect; - } - - return true; - } - else if (whitePointCount <= 1) //发现有时候识别到一个白点 - { - Logger.LogInformation("检测到右侧队伍下偏移,进行位置偏移"); - for (int i = 0; i < avatarSideIconRectList.Count; i++) - { - var rect = avatarSideIconRectList[i]; - rect.Y += 14; - avatarSideIconRectList[i] = rect; - } - - for (int i = 0; i < avatarIndexRectList.Count; i++) - { - var rect = avatarIndexRectList[i]; - rect.Y += 14; - avatarIndexRectList[i] = rect; - } - return false; - } - - return false; + } + + Logger.LogInformation("检测到右侧队伍上偏移,进行位置偏移"); + + for (var i = 0; i < avatarSideIconRectList.Count; i++) + { + var rect = avatarSideIconRectList[i]; + rect.Y -= 14; + avatarSideIconRectList[i] = rect; + } + + for (var i = 0; i < avatarIndexRectList.Count; i++) + { + var rect = avatarIndexRectList[i]; + rect.Y -= 14; + avatarIndexRectList[i] = rect; + } + + return true; } diff --git a/BetterGenshinImpact/GameTask/AutoPathing/PathExecutor.cs b/BetterGenshinImpact/GameTask/AutoPathing/PathExecutor.cs index 467eef18..f8615d88 100644 --- a/BetterGenshinImpact/GameTask/AutoPathing/PathExecutor.cs +++ b/BetterGenshinImpact/GameTask/AutoPathing/PathExecutor.cs @@ -1101,7 +1101,7 @@ public class PathExecutor return null; } - var success = avatar.TrySwitch(); + var success = avatar.TrySwitch(5);//多切换一次,否则如果切人纠正要等下一个循环 if (success) { await Delay(100, ct); From 6d6f1b515398f08ed04f489c9a8f903e8f340f2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=89=E9=B8=AD=E8=9B=8B?= Date: Sun, 21 Sep 2025 14:14:49 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=B8=85=E7=90=86=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BetterGenshinImpact/App.xaml.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/BetterGenshinImpact/App.xaml.cs b/BetterGenshinImpact/App.xaml.cs index a0b63413..95abc1c7 100644 --- a/BetterGenshinImpact/App.xaml.cs +++ b/BetterGenshinImpact/App.xaml.cs @@ -63,7 +63,9 @@ public partial class App : Application .WriteTo.File(logFile, outputTemplate: "[{Timestamp:HH:mm:ss.fff}] [{Level:u3}] {SourceContext}{NewLine}{Message}{NewLine}{Exception}{NewLine}", - rollingInterval: RollingInterval.Day) + rollingInterval: RollingInterval.Day, + retainedFileCountLimit: 31, + retainedFileTimeLimit: TimeSpan.FromDays(21)) .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}") .MinimumLevel.Debug()