diff --git a/RetakesAllocator/Menus/AdvancedGunMenu.cs b/RetakesAllocator/Menus/AdvancedGunMenu.cs index f43dc211..28655843 100644 --- a/RetakesAllocator/Menus/AdvancedGunMenu.cs +++ b/RetakesAllocator/Menus/AdvancedGunMenu.cs @@ -17,42 +17,33 @@ public class AdvancedGunMenu public Dictionary currentIndexDict = new Dictionary(); public Dictionary buttonPressed = new Dictionary(); - public HookResult OnEventPlayerChat(EventPlayerChat @event, GameEventInfo info) + + public void HandleMenuCommand(int eventplayer) { - if(string.IsNullOrEmpty(Configs.GetConfigData().InGameGunMenuCenterCommands) || @event == null)return HookResult.Continue; - var eventplayer = @event.Userid; - var eventmessage = @event.Text; + var player = Utilities.GetPlayerFromUserid(eventplayer); - - if (player == null || !player.IsValid)return HookResult.Continue; - var playerid = player.SteamID; - if (string.IsNullOrWhiteSpace(eventmessage)) return HookResult.Continue; - string trimmedMessageStart = eventmessage.TrimStart(); - string message = trimmedMessageStart.TrimEnd(); - string[] CenterMenuCommands = Configs.GetConfigData().InGameGunMenuCenterCommands.Split(','); + if (player == null || !player.IsValid) return; + var playerid = player.SteamID; - if (CenterMenuCommands.Any(cmd => cmd.Equals(message, StringComparison.OrdinalIgnoreCase))) + if (!menuon.ContainsKey(playerid)) { - if (!menuon.ContainsKey(playerid)) - { - menuon.Add(playerid, true); - } - if (!mainmenu.ContainsKey(playerid)) - { - mainmenu.Add(playerid, 0); - } - if (!currentIndexDict.ContainsKey(playerid)) - { - currentIndexDict.Add(playerid, 0); - } - if (!buttonPressed.ContainsKey(playerid)) - { - buttonPressed.Add(playerid, false); - } + menuon.Add(playerid, true); + } + if (!mainmenu.ContainsKey(playerid)) + { + mainmenu.Add(playerid, 0); + } + if (!currentIndexDict.ContainsKey(playerid)) + { + currentIndexDict.Add(playerid, 0); + } + if (!buttonPressed.ContainsKey(playerid)) + { + buttonPressed.Add(playerid, false); } - return HookResult.Continue; } + public void OnTick() { diff --git a/RetakesAllocator/RetakesAllocator.cs b/RetakesAllocator/RetakesAllocator.cs index 9588dc45..ef5c83c6 100644 --- a/RetakesAllocator/RetakesAllocator.cs +++ b/RetakesAllocator/RetakesAllocator.cs @@ -74,6 +74,50 @@ public override void Load(bool hotReload) { HandleHotReload(); } + + if (!string.IsNullOrEmpty(Configs.GetConfigData().InGameGunMenuChatCommands)) + { + string[] ChatMenuCommands = Configs.GetConfigData().InGameGunMenuChatCommands.Split(','); + if (ChatMenuCommands.Length > 0) + { + foreach (var command in ChatMenuCommands) + { + AddCommand($"css_{command}", "Opens the gun menu", (player, commandInfo) => + { + if (player == null || !player.IsValid) + { + return; + } + + _menuManager.OpenMenuForPlayer(player!, MenuType.Guns); + }); + } + } + + string[] InGameGunMenuCenterCommands = Configs.GetConfigData().InGameGunMenuCenterCommands.Split(','); + if (InGameGunMenuCenterCommands.Length > 0) + { + foreach (var command in InGameGunMenuCenterCommands) + { + AddCommand($"css_{command}", "Opens the advanced gun menu", (player, commandInfo) => + { + if (player == null || !player.IsValid) + { + return; + } + + _advancedGunMenu.HandleMenuCommand(player.UserId.Value); + }); + } + } + + + + + } + + + } private void ResetState(bool loadConfig = true) @@ -626,33 +670,6 @@ public HookResult OnEventPlayerDisconnect(EventPlayerDisconnect @event, GameEven return HookResult.Continue; } - [GameEventHandler(HookMode.Post)] - public HookResult OnEventPlayerChat(EventPlayerChat @event, GameEventInfo info) - { - if (@event == null) return HookResult.Continue; - _advancedGunMenu.OnEventPlayerChat(@event, info); - - if (string.IsNullOrEmpty(Configs.GetConfigData().InGameGunMenuChatCommands)) return HookResult.Continue; - var eventplayer = @event.Userid; - var eventmessage = @event.Text; - var player = Utilities.GetPlayerFromUserid(eventplayer); - - if (player == null || !player.IsValid) return HookResult.Continue; - var playerid = player.SteamID; - - if (string.IsNullOrWhiteSpace(eventmessage)) return HookResult.Continue; - string trimmedMessageStart = eventmessage.TrimStart(); - string message = trimmedMessageStart.TrimEnd(); - string[] ChatMenuCommands = Configs.GetConfigData().InGameGunMenuChatCommands.Split(','); - - if (ChatMenuCommands.Any(cmd => cmd.Equals(message, StringComparison.OrdinalIgnoreCase))) - { - _menuManager.OpenMenuForPlayer(player!, MenuType.Guns); - } - - return HookResult.Continue; - } - [GameEventHandler] public HookResult OnEventRoundAnnounceWarmup(EventRoundAnnounceWarmup @event, GameEventInfo info) { diff --git a/RetakesAllocatorCore/Config/Configs.cs b/RetakesAllocatorCore/Config/Configs.cs index 7e7abcbd..ddc69872 100644 --- a/RetakesAllocatorCore/Config/Configs.cs +++ b/RetakesAllocatorCore/Config/Configs.cs @@ -238,8 +238,8 @@ public Dictionary< public LogLevel LogLevel { get; set; } = LogLevel.Information; public string ChatMessagePluginName { get; set; } = "Retakes"; public string? ChatMessagePluginPrefix { get; set; } - public string InGameGunMenuCenterCommands { get; set; } = "gunsmenu,gunmenu,!gunmenu,!gunsmenu,!menugun,!menuguns"; - public string InGameGunMenuChatCommands { get; set; } = "guns,!guns"; + public string InGameGunMenuCenterCommands { get; set; } = "gunsmenu,gunmenu,menugun,menuguns"; + public string InGameGunMenuChatCommands { get; set; } = "guns"; public ZeusPreference ZeusPreference { get; set; } = ZeusPreference.Never; public DatabaseProvider DatabaseProvider { get; set; } = DatabaseProvider.Sqlite;