diff --git a/BetterGenshinImpact/GameTask/AutoFight/Model/Avatar.cs b/BetterGenshinImpact/GameTask/AutoFight/Model/Avatar.cs index 92354520..943ecdbe 100644 --- a/BetterGenshinImpact/GameTask/AutoFight/Model/Avatar.cs +++ b/BetterGenshinImpact/GameTask/AutoFight/Model/Avatar.cs @@ -892,6 +892,11 @@ public class Avatar GlobalMethod.MoveMouseBy(x, y); } + public void Scroll(int scrollAmountInClicks) + { + Simulation.SendInput.Mouse.VerticalScroll(scrollAmountInClicks); + } + public void KeyDown(string key) { var vk = KeyBindingsSettingsPageViewModel.MappingKey(User32Helper.ToVk(key)); diff --git a/BetterGenshinImpact/GameTask/AutoFight/Script/CombatCommand.cs b/BetterGenshinImpact/GameTask/AutoFight/Script/CombatCommand.cs index 11a2d939..7ca24110 100644 --- a/BetterGenshinImpact/GameTask/AutoFight/Script/CombatCommand.cs +++ b/BetterGenshinImpact/GameTask/AutoFight/Script/CombatCommand.cs @@ -64,6 +64,11 @@ public class CombatCommand throw new ArgumentException($"{Method.Alias[0]}方法的入参必须是VirtualKeyCodes枚举中的值,当前入参 {Args[0]} 不合法"); } } + else if (Method == Method.Scroll) + { + AssertUtils.IsTrue(Args.Count == 1, "scroll方法必须有一个入参,代表滚动格数。例:scroll(1) 或 scroll(-1)"); + AssertUtils.IsTrue(int.TryParse(Args[0], out _), "滚动格数必须是整数"); + } } public override string ToString() @@ -102,7 +107,8 @@ public class CombatCommand && Method != Method.MoveBy && Method != Method.KeyDown && Method != Method.KeyUp - && Method != Method.KeyPress) + && Method != Method.KeyPress + && Method != Method.Scroll) { avatar.Switch(); } @@ -275,6 +281,10 @@ public class CombatCommand { avatar.KeyPress(Args![0]); } + else if (Method == Method.Scroll) + { + avatar.Scroll(int.Parse(Args![0])); + } else if (Method == Method.Round) { // 作为回合标记使用,不做任何操作 diff --git a/BetterGenshinImpact/GameTask/AutoFight/Script/Method.cs b/BetterGenshinImpact/GameTask/AutoFight/Script/Method.cs index 6e5f999e..fbcb2fa0 100644 --- a/BetterGenshinImpact/GameTask/AutoFight/Script/Method.cs +++ b/BetterGenshinImpact/GameTask/AutoFight/Script/Method.cs @@ -32,6 +32,7 @@ public class Method public static readonly Method KeyDown = new(["keydown"]); public static readonly Method KeyUp = new(["keyup"]); public static readonly Method KeyPress = new(["keypress"]); + public static readonly Method Scroll = new(["scroll", "verticalscroll"]); public static readonly Method Round = new(["round"]); public static IEnumerable Values @@ -63,6 +64,7 @@ public class Method yield return KeyDown; yield return KeyUp; yield return KeyPress; + yield return Scroll; yield return Round; } }