From e25194e29a4a9e17e63a1177ec0dfcc0167e6718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BA=81=E5=8A=A8=E7=9A=84=E6=B0=A8=E6=B0=94?= <131591012+zaodonganqi@users.noreply.github.com> Date: Mon, 19 Jan 2026 21:13:55 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E6=98=93=E7=AD=96=E7=95=A5=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E4=B8=AD=E9=94=AE=E6=BB=9A=E5=8A=A8=20(#2660)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GameTask/AutoFight/Model/Avatar.cs | 5 +++++ .../GameTask/AutoFight/Script/CombatCommand.cs | 12 +++++++++++- .../GameTask/AutoFight/Script/Method.cs | 2 ++ 3 files changed, 18 insertions(+), 1 deletion(-) 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; } }