diff --git a/BetterGenshinImpact/Core/Config/PathingConditionConfig.cs b/BetterGenshinImpact/Core/Config/PathingConditionConfig.cs
index 47a5d6ea..591c796d 100644
--- a/BetterGenshinImpact/Core/Config/PathingConditionConfig.cs
+++ b/BetterGenshinImpact/Core/Config/PathingConditionConfig.cs
@@ -32,7 +32,7 @@ public partial class PathingConditionConfig : ObservableObject
// 启用自动吃药功能
[ObservableProperty]
- private bool _autoEatEnabled = true;
+ private bool _autoEatEnabled = false;
public static PathingConditionConfig Default => new()
{
diff --git a/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.cs b/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.cs
index 9d0deeac..89e0bb0a 100644
--- a/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.cs
+++ b/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.cs
@@ -214,6 +214,11 @@ public class AutoDomainTask : ISoloTask
private void Init()
{
LogScreenResolution();
+ if (_config.AutoEat)
+ {
+ TaskTriggerDispatcher.Instance().AddTrigger("AutoEat", null);
+ }
+
if (_config.SpecifyResinUse)
{
Logger.LogInformation("→ {Text} 指定使用树脂", "自动秘境,");
@@ -749,7 +754,7 @@ public class AutoDomainTask : ISoloTask
if (!IsTakeFood())
{
- Logger.LogInformation("未装备 “{Tool}”,不启用红血自动吃药功能", "便携营养袋");
+ Logger.LogInformation("未装备 “{Tool}”,不启用红血自动吃药功能", "便携营养袋");
return;
}
diff --git a/BetterGenshinImpact/GameTask/AutoEat/AutoEatConfig.cs b/BetterGenshinImpact/GameTask/AutoEat/AutoEatConfig.cs
index 5fab8ad9..ae087ca4 100644
--- a/BetterGenshinImpact/GameTask/AutoEat/AutoEatConfig.cs
+++ b/BetterGenshinImpact/GameTask/AutoEat/AutoEatConfig.cs
@@ -25,14 +25,14 @@ public partial class AutoEatConfig : ObservableObject
/// 检测间隔时间(毫秒)
///
[ObservableProperty]
- private int _checkInterval = 500;
+ private int _checkInterval = 150;
///
/// 吃药间隔时间(毫秒)
/// 防止频繁吃药
///
[ObservableProperty]
- private int _eatInterval = 2000;
+ private int _eatInterval = 1000;
///
/// 测试食物名称
diff --git a/BetterGenshinImpact/GameTask/AutoEat/AutoEatTrigger.cs b/BetterGenshinImpact/GameTask/AutoEat/AutoEatTrigger.cs
index 9d1ed670..0cae5e42 100644
--- a/BetterGenshinImpact/GameTask/AutoEat/AutoEatTrigger.cs
+++ b/BetterGenshinImpact/GameTask/AutoEat/AutoEatTrigger.cs
@@ -31,6 +31,8 @@ public class AutoEatTrigger : ITaskTrigger
private DateTime _lastResurrectionTime = DateTime.MinValue;
private DateTime _lastEatTime = DateTime.MinValue;
private bool _recoveryDetected = false;
+
+ private DateTime _prevExecute = DateTime.MinValue;
public AutoEatTrigger()
{
@@ -44,28 +46,17 @@ public class AutoEatTrigger : ITaskTrigger
public void OnCapture(CaptureContent content)
{
- if (!IsEnabled)
+ if ((DateTime.Now - _prevExecute).TotalMilliseconds <= _config.CheckInterval)
+ {
return;
+ }
+ _prevExecute = DateTime.Now;
try
{
- using var ra = TaskControl.CaptureToRectArea();
+ var ra = content.CaptureRectArea;
var now = DateTime.Now;
- // 优先检测复活图标,添加2秒CD
- if (CheckResurrection(ra))
- {
- // 检查复活CD(2秒)
- if ((now - _lastResurrectionTime).TotalSeconds >= 2)
- {
- // 按z键复活
- Simulation.SendInput.Keyboard.KeyPress(VK.VK_Z);
- _lastResurrectionTime = now;
- _logger.LogInformation("检测到复活图标,自动复活");
- }
- return;
- }
-
// 检测角色是否红血
if (Bv.CurrentAvatarIsLowHp(ra))
{
@@ -92,10 +83,23 @@ public class AutoEatTrigger : ITaskTrigger
Simulation.SendInput.SimulateAction(GIActions.QuickUseGadget);
_lastEatTime = now;
- _logger.LogInformation("检测到红血且Recovery可用,自动吃药");
+ _logger.LogInformation("检测到红血且不在CD,自动吃药");
}
}
}
+
+ // 检测复活图标,添加2秒CD
+ if (CheckResurrection(ra))
+ {
+ // 检查复活CD(2秒)
+ if ((now - _lastResurrectionTime).TotalSeconds >= 2)
+ {
+ // 按z键复活
+ Simulation.SendInput.Keyboard.KeyPress(VK.VK_Z);
+ _lastResurrectionTime = now;
+ _logger.LogInformation("检测到复活图标,自动复活");
+ }
+ }
}
catch (Exception e)
{
diff --git a/BetterGenshinImpact/GameTask/TaskRunner.cs b/BetterGenshinImpact/GameTask/TaskRunner.cs
index 2a3519fe..80f0afed 100644
--- a/BetterGenshinImpact/GameTask/TaskRunner.cs
+++ b/BetterGenshinImpact/GameTask/TaskRunner.cs
@@ -147,6 +147,7 @@ public class TaskRunner
}
// 还原实时任务触发器
+ TaskTriggerDispatcher.Instance().ClearTriggers();
TaskTriggerDispatcher.Instance().SetTriggers(GameTaskManager.LoadInitialTriggers());
VisionContext.Instance().DrawContent.ClearAll();
diff --git a/BetterGenshinImpact/View/Pages/TriggerSettingsPage.xaml b/BetterGenshinImpact/View/Pages/TriggerSettingsPage.xaml
index a6565ea9..dfbf5408 100644
--- a/BetterGenshinImpact/View/Pages/TriggerSettingsPage.xaml
+++ b/BetterGenshinImpact/View/Pages/TriggerSettingsPage.xaml
@@ -689,18 +689,43 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Text="{Binding Config.AutoEatConfig.EatInterval, Mode=TwoWay}" />