using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Modules.Admin; using CounterStrikeSharp.API.Modules.Menu; namespace CS2_SimpleAdmin.Menus { public static class ManageAdminsMenu { 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("Manage Admins"); List options = new(); // TODO: Localize options // options added in order options.Add(new ChatMenuOptionData("Add Admin", () => PlayersMenu.OpenAliveMenu(admin, "Add Admin", AddAdminMenu))); options.Add(new ChatMenuOptionData("Remove Admin", () => PlayersMenu.OpenAliveMenu(admin, "Remove Admin", RemoveAdmin, player => player != admin && admin.CanTarget(player)))); options.Add(new ChatMenuOptionData("Reload Admins", ReloadAdmins)); foreach (ChatMenuOptionData menuOptionData in options) { string menuName = menuOptionData.name; menu.AddMenuOption(menuName, (_, _) => { menuOptionData.action?.Invoke(); }, menuOptionData.disabled); } AdminMenu.OpenMenu(admin, menu); } private static void AddAdminMenu(CCSPlayerController admin, CCSPlayerController player) { Tuple[] flags = new[] { new Tuple("Generic", "@css/generic"), new Tuple("Chat", "@css/chat"), new Tuple("Change Map", "@css/changemap"), new Tuple("Slay", "@css/slay"), new Tuple("Kick", "@css/kick"), new Tuple("Ban", "@css/ban"), new Tuple("Unban", "@css/unban"), new Tuple("Cheats", "@css/cheats"), new Tuple("CVAR", "@css/cvar"), new Tuple("RCON", "@css/rcon"), new Tuple("Root", "@css/root"), }; BaseMenu menu = AdminMenu.CreateMenu($"Add Admin: {player.PlayerName}"); foreach (Tuple flagsTuple in flags) { string optionName = flagsTuple.Item1; bool disabled = AdminManager.PlayerHasPermissions(player, flagsTuple.Item2); menu.AddMenuOption(optionName, (_, _) => { AddAdmin(admin, player, flagsTuple.Item2); }, disabled); } AdminMenu.OpenMenu(admin, menu); } private static void AddAdmin(CCSPlayerController admin, CCSPlayerController player, string flag) { // TODO: Change default immunity? CS2_SimpleAdmin.Instance.AddAdmin(admin, player.SteamID.ToString(), player.PlayerName, flag, 10); } private static void RemoveAdmin(CCSPlayerController admin, CCSPlayerController player) { CS2_SimpleAdmin.Instance.RemoveAdmin(admin, player.SteamID.ToString()); } private static void ReloadAdmins(CCSPlayerController admin) { CS2_SimpleAdmin.Instance.ReloadAdmins(admin); } } }