From 5d58465c74ca55e135454a97068f9ff07b32e566 Mon Sep 17 00:00:00 2001 From: Valentin Barat Date: Fri, 1 Mar 2024 02:12:10 +0100 Subject: [PATCH] Working custom server commands --- Config.cs | 13 +++++++++++++ Menus/ManageServerMenu.cs | 16 +++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/Config.cs b/Config.cs index 05ec01f..805f15f 100644 --- a/Config.cs +++ b/Config.cs @@ -12,6 +12,16 @@ public class Discord public string DiscordPenaltyWebhook { get; set; } = ""; } + public class CustomServerCommandData + { + [JsonPropertyName("Flag")] + public string Flag { get; set; } = "@css/generic"; + [JsonPropertyName("DisplayName")] + public string DisplayName { get; set; } = ""; + [JsonPropertyName("Command")] + public string Command { get; set; } = ""; + } + public class CS2_SimpleAdminConfig : BasePluginConfig { public override int Version { get; set; } = 6; @@ -54,5 +64,8 @@ public class CS2_SimpleAdminConfig : BasePluginConfig [JsonPropertyName("WorkshopMaps")] public List WorkshopMaps { get; set; } = new List(); + + [JsonPropertyName("CustomServerCommands")] + public List CustomServerCommands { get; set; } = new List(); } } \ No newline at end of file diff --git a/Menus/ManageServerMenu.cs b/Menus/ManageServerMenu.cs index 43fe6f2..8b19ebb 100644 --- a/Menus/ManageServerMenu.cs +++ b/Menus/ManageServerMenu.cs @@ -1,3 +1,4 @@ +using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Modules.Admin; using CounterStrikeSharp.API.Modules.Menu; @@ -34,6 +35,19 @@ public static void OpenMenu(CCSPlayerController admin) 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; @@ -48,7 +62,7 @@ public static void ChangeMapMenu(CCSPlayerController admin) BaseMenu menu = AdminMenu.CreateMenu($"Change Map"); List options = new(); - List maps = CS2_SimpleAdmin.Instance.Config.DefaultMaps;//Server.GetMapList(); + List maps = CS2_SimpleAdmin.Instance.Config.DefaultMaps; foreach (string map in maps) { options.Add(new ChatMenuOptionData(map, () => ExecuteChangeMap(admin, map, false)));