From ac940259f7234179c49b6e2d81c02aa338510544 Mon Sep 17 00:00:00 2001 From: Valentin Barat Date: Wed, 13 Mar 2024 11:43:33 +0100 Subject: [PATCH] Moved custom commands to its specific menu --- Menus/AdminMenu.cs | 6 +++++ Menus/CustomCommandsMenu.cs | 47 +++++++++++++++++++++++++++++++++++++ Menus/ManageServerMenu.cs | 14 ----------- 3 files changed, 53 insertions(+), 14 deletions(-) create mode 100644 Menus/CustomCommandsMenu.cs diff --git a/Menus/AdminMenu.cs b/Menus/AdminMenu.cs index a43495f..c3754cb 100644 --- a/Menus/AdminMenu.cs +++ b/Menus/AdminMenu.cs @@ -44,6 +44,12 @@ namespace CS2_SimpleAdmin.Menus new ChatMenuOptionData("Manage Server", () => ManageServerMenu.OpenMenu(admin)), new ChatMenuOptionData("Fun actions", () => FunActionsMenu.OpenMenu(admin)), }; + + List customCommands = CS2_SimpleAdmin.Instance.Config.CustomServerCommands; + if (customCommands.Count > 0) + { + options.Add(new ChatMenuOptionData("Custom Commands", () => CustomCommandsMenu.OpenMenu(admin))); + } if (AdminManager.PlayerHasPermissions(admin, "@css/root")) options.Add(new ChatMenuOptionData("Manage Admins", () => ManageAdminsMenu.OpenMenu(admin))); diff --git a/Menus/CustomCommandsMenu.cs b/Menus/CustomCommandsMenu.cs new file mode 100644 index 0000000..6d0805c --- /dev/null +++ b/Menus/CustomCommandsMenu.cs @@ -0,0 +1,47 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Modules.Admin; +using CounterStrikeSharp.API.Modules.Menu; + +namespace CS2_SimpleAdmin.Menus +{ + public static class CustomCommandsMenu + { + public static void OpenMenu(CCSPlayerController admin) + { + if (admin == null || admin.IsValid == false) + return; + + if (AdminManager.PlayerHasPermissions(admin, "@css/generic") == false) + { + // TODO: Localize + admin.PrintToChat("[Simple Admin] You do not have permissions to use this command."); + return; + } + + BaseMenu menu = AdminMenu.CreateMenu("Custom Commands"); + List options = new(); + + List customCommands = CS2_SimpleAdmin.Instance.Config.CustomServerCommands; + foreach (CustomServerCommandData customCommand in customCommands) + { + if (string.IsNullOrEmpty(customCommand.DisplayName) || string.IsNullOrEmpty(customCommand.Command)) + continue; + + bool hasRights = AdminManager.PlayerHasPermissions(admin, customCommand.Flag); + if (!hasRights) + continue; + + options.Add(new ChatMenuOptionData(customCommand.DisplayName, () => Server.ExecuteCommand(customCommand.Command))); + } + + foreach (ChatMenuOptionData menuOptionData in options) + { + string menuName = menuOptionData.name; + menu.AddMenuOption(menuName, (_, _) => { menuOptionData.action?.Invoke(); }, menuOptionData.disabled); + } + + AdminMenu.OpenMenu(admin, menu); + } + } +} diff --git a/Menus/ManageServerMenu.cs b/Menus/ManageServerMenu.cs index 8b19ebb..ea75e80 100644 --- a/Menus/ManageServerMenu.cs +++ b/Menus/ManageServerMenu.cs @@ -1,4 +1,3 @@ -using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Modules.Admin; using CounterStrikeSharp.API.Modules.Menu; @@ -35,19 +34,6 @@ namespace CS2_SimpleAdmin.Menus options.Add(new ChatMenuOptionData("Restart Game", () => CS2_SimpleAdmin.RestartGame(admin))); - List customCommands = CS2_SimpleAdmin.Instance.Config.CustomServerCommands; - foreach (CustomServerCommandData customCommand in customCommands) - { - if (string.IsNullOrEmpty(customCommand.DisplayName) || string.IsNullOrEmpty(customCommand.Command)) - continue; - - bool hasRights = AdminManager.PlayerHasPermissions(admin, customCommand.Flag); - if (!hasRights) - continue; - - options.Add(new ChatMenuOptionData(customCommand.DisplayName, () => Server.ExecuteCommand(customCommand.Command))); - } - foreach (ChatMenuOptionData menuOptionData in options) { string menuName = menuOptionData.name;