mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-02-20 19:23:08 +00:00
1.4.2a
- Config upgrade - Translatable and customizable menu - More async - Minor changes
This commit is contained in:
@@ -13,49 +13,53 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
public static void OpenMenu(CCSPlayerController player, BaseMenu menu)
|
||||
{
|
||||
if (menu is CenterHtmlMenu centerHtmlMenu)
|
||||
switch (menu)
|
||||
{
|
||||
MenuManager.OpenCenterHtmlMenu(CS2_SimpleAdmin.Instance, player, centerHtmlMenu);
|
||||
}
|
||||
else if (menu is ChatMenu chatMenu)
|
||||
{
|
||||
MenuManager.OpenChatMenu(player, chatMenu);
|
||||
case CenterHtmlMenu centerHtmlMenu:
|
||||
MenuManager.OpenCenterHtmlMenu(CS2_SimpleAdmin.Instance, player, centerHtmlMenu);
|
||||
break;
|
||||
case ChatMenu chatMenu:
|
||||
MenuManager.OpenChatMenu(player, chatMenu);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public static void OpenMenu(CCSPlayerController admin)
|
||||
{
|
||||
if (admin == null || admin.IsValid == false)
|
||||
if (admin.IsValid == false)
|
||||
return;
|
||||
|
||||
var localizer = CS2_SimpleAdmin._localizer;
|
||||
if (AdminManager.PlayerHasPermissions(admin, "@css/generic") == false)
|
||||
{
|
||||
// TODO: Localize
|
||||
admin.PrintToChat("[Simple Admin] You do not have permissions to use this command.");
|
||||
admin.PrintToChat(localizer?["sa_prefix"] ??
|
||||
"[SimpleAdmin] " +
|
||||
(localizer?["sa_no_permission"] ?? "You do not have permissions to use this command")
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
BaseMenu menu = CreateMenu("Simple Admin");
|
||||
var menu = CreateMenu(localizer?["sa_title"] ?? "SimpleAdmin");
|
||||
List<ChatMenuOptionData> options =
|
||||
[
|
||||
new ChatMenuOptionData("Manage Players", () => ManagePlayersMenu.OpenMenu(admin)),
|
||||
new ChatMenuOptionData("Manage Server", () => ManageServerMenu.OpenMenu(admin)),
|
||||
new ChatMenuOptionData("Fun actions", () => FunActionsMenu.OpenMenu(admin)),
|
||||
new ChatMenuOptionData(localizer?["sa_menu_players_manage"] ?? "Players Manage", () => ManagePlayersMenu.OpenMenu(admin)),
|
||||
new ChatMenuOptionData(localizer?["sa_menu_server_manage"] ?? "Server Manage", () => ManageServerMenu.OpenMenu(admin)),
|
||||
new ChatMenuOptionData(localizer?["sa_menu_fun_commands"] ?? "Fun Commands", () => FunActionsMenu.OpenMenu(admin)),
|
||||
];
|
||||
|
||||
List<CustomServerCommandData> customCommands = CS2_SimpleAdmin.Instance.Config.CustomServerCommands;
|
||||
var customCommands = CS2_SimpleAdmin.Instance.Config.CustomServerCommands;
|
||||
if (customCommands.Count > 0)
|
||||
{
|
||||
options.Add(new ChatMenuOptionData("Custom Commands", () => CustomCommandsMenu.OpenMenu(admin)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_menu_custom_commands"] ?? "Custom Commands", () => CustomCommandsMenu.OpenMenu(admin)));
|
||||
}
|
||||
|
||||
if (AdminManager.PlayerHasPermissions(admin, "@css/root"))
|
||||
options.Add(new ChatMenuOptionData("Manage Admins", () => ManageAdminsMenu.OpenMenu(admin)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_menu_admins_manage"] ?? "Admins Manage", () => ManageAdminsMenu.OpenMenu(admin)));
|
||||
|
||||
foreach (ChatMenuOptionData menuOptionData in options)
|
||||
foreach (var menuOptionData in options)
|
||||
{
|
||||
string menuName = menuOptionData.name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.action?.Invoke(); }, menuOptionData.disabled);
|
||||
var menuName = menuOptionData.Name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.Action.Invoke(); }, menuOptionData.Disabled);
|
||||
}
|
||||
|
||||
OpenMenu(admin, menu);
|
||||
|
||||
@@ -1,23 +1,9 @@
|
||||
namespace CS2_SimpleAdmin.Menus
|
||||
{
|
||||
public class ChatMenuOptionData
|
||||
public class ChatMenuOptionData(string name, Action action, bool disabled = false)
|
||||
{
|
||||
public string name;
|
||||
public Action action;
|
||||
public bool disabled = true;
|
||||
|
||||
public ChatMenuOptionData(string name, Action action)
|
||||
{
|
||||
this.name = name;
|
||||
this.action = action;
|
||||
this.disabled = false;
|
||||
}
|
||||
|
||||
public ChatMenuOptionData(string name, Action action, bool disabled)
|
||||
{
|
||||
this.name = name;
|
||||
this.action = action;
|
||||
this.disabled = disabled;
|
||||
}
|
||||
public readonly string Name = name;
|
||||
public readonly Action Action = action;
|
||||
public readonly bool Disabled = disabled;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
using CounterStrikeSharp.API;
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Menu;
|
||||
|
||||
namespace CS2_SimpleAdmin.Menus
|
||||
{
|
||||
@@ -9,44 +8,41 @@ namespace CS2_SimpleAdmin.Menus
|
||||
{
|
||||
public static void OpenMenu(CCSPlayerController admin)
|
||||
{
|
||||
if (admin == null || admin.IsValid == false)
|
||||
if (admin.IsValid == false)
|
||||
return;
|
||||
|
||||
var localizer = CS2_SimpleAdmin._localizer;
|
||||
if (AdminManager.PlayerHasPermissions(admin, "@css/generic") == false)
|
||||
{
|
||||
// TODO: Localize
|
||||
admin.PrintToChat("[Simple Admin] You do not have permissions to use this command.");
|
||||
admin.PrintToChat(localizer?["sa_prefix"] ??
|
||||
"[SimpleAdmin] " +
|
||||
(localizer?["sa_no_permission"] ?? "You do not have permissions to use this command")
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
BaseMenu menu = AdminMenu.CreateMenu("Custom Commands");
|
||||
List<ChatMenuOptionData> options = new();
|
||||
var menu = AdminMenu.CreateMenu(localizer?["sa_menu_custom_commands"] ?? "Custom Commands");
|
||||
List<ChatMenuOptionData> options = [];
|
||||
|
||||
List<CustomServerCommandData> 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, () =>
|
||||
var customCommands = CS2_SimpleAdmin.Instance.Config.CustomServerCommands;
|
||||
options.AddRange(from customCommand in customCommands
|
||||
where !string.IsNullOrEmpty(customCommand.DisplayName) && !string.IsNullOrEmpty(customCommand.Command)
|
||||
let hasRights = AdminManager.PlayerHasPermissions(admin, customCommand.Flag)
|
||||
where hasRights
|
||||
select new ChatMenuOptionData(customCommand.DisplayName, () =>
|
||||
{
|
||||
Helper.TryLogCommandOnDiscord(admin, customCommand.Command);
|
||||
|
||||
|
||||
if (customCommand.ExecuteOnClient)
|
||||
admin.ExecuteClientCommand(customCommand.Command);
|
||||
else
|
||||
Server.ExecuteCommand(customCommand.Command);
|
||||
}));
|
||||
}
|
||||
|
||||
foreach (ChatMenuOptionData menuOptionData in options)
|
||||
foreach (var menuOptionData in options)
|
||||
{
|
||||
string menuName = menuOptionData.name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.action?.Invoke(); }, menuOptionData.disabled);
|
||||
var menuName = menuOptionData.Name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.Action(); }, menuOptionData.Disabled);
|
||||
}
|
||||
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
|
||||
@@ -1,29 +1,16 @@
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Modules.Menu;
|
||||
|
||||
namespace CS2_SimpleAdmin.Menus
|
||||
{
|
||||
public static class DurationMenu
|
||||
{
|
||||
// TODO: Localize
|
||||
public static Tuple<string, int>[] _durations = new[]
|
||||
{
|
||||
new Tuple<string, int>("1 minute", 1),
|
||||
new Tuple<string, int>("5 minutes", 5),
|
||||
new Tuple<string, int>("15 minutes", 15),
|
||||
new Tuple<string, int>("1 hour", 60),
|
||||
new Tuple<string, int>("1 day", 60 * 24),
|
||||
new Tuple<string, int>("Permanent", 0)
|
||||
};
|
||||
|
||||
public static void OpenMenu(CCSPlayerController admin, string menuName, CCSPlayerController? player, Action<CCSPlayerController, CCSPlayerController?, int> onSelectAction)
|
||||
{
|
||||
BaseMenu menu = AdminMenu.CreateMenu(menuName);
|
||||
var menu = AdminMenu.CreateMenu(menuName);
|
||||
|
||||
foreach (Tuple<string, int> duration in _durations)
|
||||
foreach (var durationItem in CS2_SimpleAdmin.Instance.Config.MenuConfigs.Durations)
|
||||
{
|
||||
string optionName = duration.Item1;
|
||||
menu.AddMenuOption(optionName, (_, _) => { onSelectAction?.Invoke(admin, player, duration.Item2); });
|
||||
menu.AddMenuOption(durationItem.Name, (_, _) => { onSelectAction(admin, player, durationItem.Duration); });
|
||||
}
|
||||
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
|
||||
@@ -1,31 +1,29 @@
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Entities.Constants;
|
||||
using CounterStrikeSharp.API.Modules.Menu;
|
||||
|
||||
namespace CS2_SimpleAdmin.Menus
|
||||
{
|
||||
public static class FunActionsMenu
|
||||
{
|
||||
private static Dictionary<int, CsItem>? _weaponsCache = null;
|
||||
private static Dictionary<int, CsItem>? _weaponsCache;
|
||||
|
||||
private static Dictionary<int, CsItem> GetWeaponsCache
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_weaponsCache == null)
|
||||
if (_weaponsCache != null) return _weaponsCache;
|
||||
|
||||
var weaponsArray = Enum.GetValues(typeof(CsItem));
|
||||
|
||||
// avoid duplicates in the menu
|
||||
_weaponsCache = new Dictionary<int, CsItem>();
|
||||
foreach (CsItem item in weaponsArray)
|
||||
{
|
||||
var weaponsArray = Enum.GetValues(typeof(CsItem));
|
||||
if (item == CsItem.Tablet)
|
||||
continue;
|
||||
|
||||
// avoid duplicates in the menu
|
||||
_weaponsCache = new();
|
||||
foreach (CsItem item in weaponsArray)
|
||||
{
|
||||
if (item == CsItem.Tablet)
|
||||
continue;
|
||||
|
||||
_weaponsCache[(int)item] = item;
|
||||
}
|
||||
_weaponsCache[(int)item] = item;
|
||||
}
|
||||
|
||||
return _weaponsCache;
|
||||
@@ -34,48 +32,50 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
public static void OpenMenu(CCSPlayerController admin)
|
||||
{
|
||||
if (admin == null || admin.IsValid == false)
|
||||
if (admin.IsValid == false)
|
||||
return;
|
||||
|
||||
var localizer = CS2_SimpleAdmin._localizer;
|
||||
if (AdminManager.PlayerHasPermissions(admin, "@css/generic") == false)
|
||||
{
|
||||
// TODO: Localize
|
||||
admin.PrintToChat("[Simple Admin] You do not have permissions to use this command.");
|
||||
admin.PrintToChat(localizer?["sa_prefix"] ??
|
||||
"[SimpleAdmin] " +
|
||||
(localizer?["sa_no_permission"] ?? "You do not have permissions to use this command")
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
var menu = AdminMenu.CreateMenu("Fun Actions");
|
||||
List<ChatMenuOptionData> options = new();
|
||||
var menu = AdminMenu.CreateMenu(localizer?["sa_menu_fun_commands"] ?? "Fun Commands");
|
||||
List<ChatMenuOptionData> options = [];
|
||||
|
||||
// permissions
|
||||
var hasCheats = AdminManager.PlayerHasPermissions(admin, "@css/cheats");
|
||||
var hasSlay = AdminManager.PlayerHasPermissions(admin, "@css/slay");
|
||||
|
||||
// TODO: Localize options
|
||||
// options added in order
|
||||
|
||||
if (hasCheats)
|
||||
{
|
||||
options.Add(new ChatMenuOptionData("God Mode", () => PlayersMenu.OpenAliveMenu(admin, "God Mode", GodMode)));
|
||||
options.Add(new ChatMenuOptionData("No Clip", () => PlayersMenu.OpenAliveMenu(admin, "No Clip", NoClip)));
|
||||
options.Add(new ChatMenuOptionData("Respawn", () => PlayersMenu.OpenDeadMenu(admin, "Respawn", Respawn)));
|
||||
options.Add(new ChatMenuOptionData("Give Weapon", () => PlayersMenu.OpenAliveMenu(admin, "Give Weapon", GiveWeaponMenu)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_godmode"] ?? "God Mode", () => PlayersMenu.OpenAliveMenu(admin, localizer?["sa_godmode"] ?? "God Mode", GodMode)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_noclip"] ?? "No Clip", () => PlayersMenu.OpenAliveMenu(admin, localizer?["sa_noclip"] ?? "No Clip", NoClip)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_respawn"] ?? "Respawn", () => PlayersMenu.OpenDeadMenu(admin, localizer?["sa_respawn"] ?? "Respawn", Respawn)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_give_weapon"] ?? "Give Weapon", () => PlayersMenu.OpenAliveMenu(admin, localizer?["sa_give_weapon"] ?? "Give Weapon", GiveWeaponMenu)));
|
||||
}
|
||||
|
||||
if (hasSlay)
|
||||
{
|
||||
options.Add(new ChatMenuOptionData("Strip All Weapons", () => PlayersMenu.OpenAliveMenu(admin, "Strip All Weapons", StripWeapons)));
|
||||
options.Add(new ChatMenuOptionData("Freeze", () => PlayersMenu.OpenAliveMenu(admin, "Freeze", Freeze)));
|
||||
options.Add(new ChatMenuOptionData("HP", () => PlayersMenu.OpenAliveMenu(admin, "HP", SetHpMenu)));
|
||||
options.Add(new ChatMenuOptionData("Speed", () => PlayersMenu.OpenAliveMenu(admin, "Speed", SetSpeedMenu)));
|
||||
options.Add(new ChatMenuOptionData("Gravity", () => PlayersMenu.OpenAliveMenu(admin, "Gravity", SetGravityMenu)));
|
||||
options.Add(new ChatMenuOptionData("Set Money", () => PlayersMenu.OpenMenu(admin, "Set Money", SetMoneyMenu)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_strip_weapons"] ?? "Strip Weapons", () => PlayersMenu.OpenAliveMenu(admin, localizer?["sa_strip_weapons"] ?? "Strip Weapons", StripWeapons)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_freeze"] ?? "Freeze", () => PlayersMenu.OpenAliveMenu(admin, localizer?["sa_freeze"] ?? "Freeze", Freeze)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_set_hp"] ?? "Set Hp", () => PlayersMenu.OpenAliveMenu(admin, localizer?["sa_set_hp"] ?? "Set Hp", SetHpMenu)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_set_speed"] ?? "Set Speed", () => PlayersMenu.OpenAliveMenu(admin, localizer?["sa_set_speed"] ?? "Set Speed", SetSpeedMenu)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_set_gravity"] ?? "Set Gravity", () => PlayersMenu.OpenAliveMenu(admin, localizer?["sa_set_gravity"] ?? "Set Gravity", SetGravityMenu)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_set_money"] ?? "Set Money", () => PlayersMenu.OpenMenu(admin, localizer?["sa_set_money"] ?? "Set Money", SetMoneyMenu)));
|
||||
}
|
||||
|
||||
foreach (var menuOptionData in options)
|
||||
{
|
||||
var menuName = menuOptionData.name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.action?.Invoke(); }, menuOptionData.disabled);
|
||||
var menuName = menuOptionData.Name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.Action(); }, menuOptionData.Disabled);
|
||||
}
|
||||
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
@@ -98,7 +98,7 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
private static void GiveWeaponMenu(CCSPlayerController admin, CCSPlayerController player)
|
||||
{
|
||||
var menu = AdminMenu.CreateMenu($"Give Weapon: {player.PlayerName}");
|
||||
var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_give_weapon"] ?? "Give Weapon"}: {player.PlayerName}");
|
||||
|
||||
foreach (var weapon in GetWeaponsCache)
|
||||
{
|
||||
@@ -120,7 +120,7 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
private static void Freeze(CCSPlayerController admin, CCSPlayerController? player)
|
||||
{
|
||||
if (!(player?.PlayerPawn?.Value?.IsValid ?? false))
|
||||
if (!(player?.PlayerPawn.Value?.IsValid ?? false))
|
||||
return;
|
||||
|
||||
if (player.PlayerPawn.Value.MoveType != MoveType_t.MOVETYPE_OBSOLETE)
|
||||
@@ -143,18 +143,17 @@ namespace CS2_SimpleAdmin.Menus
|
||||
new Tuple<string, int>("999", 999)
|
||||
};
|
||||
|
||||
var menu = AdminMenu.CreateMenu($"Set HP: {player?.PlayerName}");
|
||||
var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_set_hp"] ?? "Set Hp"}: {player?.PlayerName}");
|
||||
|
||||
foreach (var hpTuple in hpArray)
|
||||
foreach (var (optionName, value) in hpArray)
|
||||
{
|
||||
var optionName = hpTuple.Item1;
|
||||
menu.AddMenuOption(optionName, (_, _) => { SetHP(admin, player, hpTuple.Item2); });
|
||||
menu.AddMenuOption(optionName, (_, _) => { SetHp(admin, player, value); });
|
||||
}
|
||||
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
}
|
||||
|
||||
private static void SetHP(CCSPlayerController admin, CCSPlayerController? player, int hp)
|
||||
private static void SetHp(CCSPlayerController admin, CCSPlayerController? player, int hp)
|
||||
{
|
||||
CS2_SimpleAdmin.Instance.SetHp(admin, player, hp);
|
||||
}
|
||||
@@ -173,12 +172,11 @@ namespace CS2_SimpleAdmin.Menus
|
||||
new Tuple<string, float>("4", 4)
|
||||
};
|
||||
|
||||
var menu = AdminMenu.CreateMenu($"Set Speed: {player?.PlayerName}");
|
||||
var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_set_speed"] ?? "Set Speed"}: {player?.PlayerName}");
|
||||
|
||||
foreach (var speedTuple in speedArray)
|
||||
foreach (var (optionName, value) in speedArray)
|
||||
{
|
||||
var optionName = speedTuple.Item1;
|
||||
menu.AddMenuOption(optionName, (_, _) => { SetSpeed(admin, player, speedTuple.Item2); });
|
||||
menu.AddMenuOption(optionName, (_, _) => { SetSpeed(admin, player, value); });
|
||||
}
|
||||
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
@@ -201,12 +199,11 @@ namespace CS2_SimpleAdmin.Menus
|
||||
new Tuple<string, float>("2", 2)
|
||||
};
|
||||
|
||||
var menu = AdminMenu.CreateMenu($"Set Gravity: {player?.PlayerName}");
|
||||
var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_set_gravity"] ?? "Set Gravity"}: {player?.PlayerName}");
|
||||
|
||||
foreach (var gravityTuple in gravityArray)
|
||||
foreach (var (optionName, value) in gravityArray)
|
||||
{
|
||||
var optionName = gravityTuple.Item1;
|
||||
menu.AddMenuOption(optionName, (_, _) => { SetGravity(admin, player, gravityTuple.Item2); });
|
||||
menu.AddMenuOption(optionName, (_, _) => { SetGravity(admin, player, value); });
|
||||
}
|
||||
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
@@ -229,12 +226,11 @@ namespace CS2_SimpleAdmin.Menus
|
||||
new Tuple<string, int>("$16000", 16000)
|
||||
};
|
||||
|
||||
var menu = AdminMenu.CreateMenu($"Set Money: {player?.PlayerName}");
|
||||
var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_set_money"] ?? "Set Money"}: {player?.PlayerName}");
|
||||
|
||||
foreach (var moneyTuple in moneyArray)
|
||||
foreach (var (optionName, value) in moneyArray)
|
||||
{
|
||||
var optionName = moneyTuple.Item1;
|
||||
menu.AddMenuOption(optionName, (_, _) => { SetMoney(admin, player, moneyTuple.Item2); });
|
||||
menu.AddMenuOption(optionName, (_, _) => { SetMoney(admin, player, value); });
|
||||
}
|
||||
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Menu;
|
||||
|
||||
namespace CS2_SimpleAdmin.Menus
|
||||
{
|
||||
@@ -8,30 +7,34 @@ namespace CS2_SimpleAdmin.Menus
|
||||
{
|
||||
public static void OpenMenu(CCSPlayerController admin)
|
||||
{
|
||||
if (admin == null || admin.IsValid == false)
|
||||
if (admin.IsValid == false)
|
||||
return;
|
||||
|
||||
if (AdminManager.PlayerHasPermissions(admin, "@css/generic") == false)
|
||||
var localizer = CS2_SimpleAdmin._localizer;
|
||||
if (AdminManager.PlayerHasPermissions(admin, "@css/root") == false)
|
||||
{
|
||||
// TODO: Localize
|
||||
admin.PrintToChat("[Simple Admin] You do not have permissions to use this command.");
|
||||
admin.PrintToChat(localizer?["sa_prefix"] ??
|
||||
"[SimpleAdmin] " +
|
||||
(localizer?["sa_no_permission"] ?? "You do not have permissions to use this command")
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
BaseMenu menu = AdminMenu.CreateMenu("Manage Admins");
|
||||
List<ChatMenuOptionData> options = new();
|
||||
|
||||
// TODO: Localize options
|
||||
// options added in order
|
||||
|
||||
options.Add(new ChatMenuOptionData("Add Admin", () => PlayersMenu.OpenRealPlayersMenu(admin, "Add Admin", AddAdminMenu)));
|
||||
options.Add(new ChatMenuOptionData("Remove Admin", () => PlayersMenu.OpenAdminPlayersMenu(admin, "Remove Admin", RemoveAdmin, player => player != admin && admin.CanTarget(player))));
|
||||
options.Add(new ChatMenuOptionData("Reload Admins", () => ReloadAdmins(admin)));
|
||||
var menu = AdminMenu.CreateMenu(localizer?["sa_menu_admins_manage"] ?? "Admins Manage");
|
||||
List<ChatMenuOptionData> options =
|
||||
[
|
||||
new ChatMenuOptionData(localizer?["sa_admin_add"] ?? "Add Admin",
|
||||
() => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_admin_add"] ?? "Add Admin", AddAdminMenu)),
|
||||
new ChatMenuOptionData(localizer?["sa_admin_remove"] ?? "Remove Admin",
|
||||
() => PlayersMenu.OpenAdminPlayersMenu(admin, localizer?["sa_admin_remove"] ?? "Remove Admin", RemoveAdmin,
|
||||
player => player != admin && admin.CanTarget(player))),
|
||||
new ChatMenuOptionData(localizer?["sa_admin_reload"] ?? "Reload Admins", () => ReloadAdmins(admin))
|
||||
];
|
||||
|
||||
foreach (var menuOptionData in options)
|
||||
{
|
||||
var menuName = menuOptionData.name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.action?.Invoke(); }, menuOptionData.disabled);
|
||||
var menuName = menuOptionData.Name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.Action.Invoke(); }, menuOptionData.Disabled);
|
||||
}
|
||||
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
@@ -39,28 +42,12 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
private static void AddAdminMenu(CCSPlayerController admin, CCSPlayerController player)
|
||||
{
|
||||
var flags = new[]
|
||||
{
|
||||
new Tuple<string, string>("Generic", "@css/generic"),
|
||||
new Tuple<string, string>("Chat", "@css/chat"),
|
||||
new Tuple<string, string>("Change Map", "@css/changemap"),
|
||||
new Tuple<string, string>("Slay", "@css/slay"),
|
||||
new Tuple<string, string>("Kick", "@css/kick"),
|
||||
new Tuple<string, string>("Ban", "@css/ban"),
|
||||
new Tuple<string, string>("Unban", "@css/unban"),
|
||||
new Tuple<string, string>("Cheats", "@css/cheats"),
|
||||
new Tuple<string, string>("CVAR", "@css/cvar"),
|
||||
new Tuple<string, string>("RCON", "@css/rcon"),
|
||||
new Tuple<string, string>("Root", "@css/root"),
|
||||
};
|
||||
var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_admin_add"] ?? "Add Admin"}: {player.PlayerName}");
|
||||
|
||||
var menu = AdminMenu.CreateMenu($"Add Admin: {player.PlayerName}");
|
||||
|
||||
foreach (var flagsTuple in flags)
|
||||
foreach (var adminFlag in CS2_SimpleAdmin.Instance.Config.MenuConfigs.AdminFlags)
|
||||
{
|
||||
var optionName = flagsTuple.Item1;
|
||||
var disabled = AdminManager.PlayerHasPermissions(player, flagsTuple.Item2);
|
||||
menu.AddMenuOption(optionName, (_, _) => { AddAdmin(admin, player, flagsTuple.Item2); }, disabled);
|
||||
var disabled = AdminManager.PlayerHasPermissions(player, adminFlag.Flag);
|
||||
menu.AddMenuOption(adminFlag.Name, (_, _) => { AddAdmin(admin, player, adminFlag.Flag); }, disabled);
|
||||
}
|
||||
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Menu;
|
||||
using CounterStrikeSharp.API.Modules.Utils;
|
||||
|
||||
namespace CS2_SimpleAdmin.Menus
|
||||
@@ -12,14 +11,17 @@ namespace CS2_SimpleAdmin.Menus
|
||||
if (admin.IsValid == false)
|
||||
return;
|
||||
|
||||
var localizer = CS2_SimpleAdmin._localizer;
|
||||
if (AdminManager.PlayerHasPermissions(admin, "@css/generic") == false)
|
||||
{
|
||||
// TODO: Localize
|
||||
admin.PrintToChat("[Simple Admin] You do not have permissions to use this command.");
|
||||
admin.PrintToChat(localizer?["sa_prefix"] ??
|
||||
"[SimpleAdmin] " +
|
||||
(localizer?["sa_no_permission"] ?? "You do not have permissions to use this command")
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
var menu = AdminMenu.CreateMenu("Manage Players");
|
||||
var menu = AdminMenu.CreateMenu(localizer?["sa_menu_players_manage"] ?? "Manage Players");
|
||||
List<ChatMenuOptionData> options = [];
|
||||
|
||||
// permissions
|
||||
@@ -33,36 +35,30 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
if (hasSlay)
|
||||
{
|
||||
options.Add(new ChatMenuOptionData("Slap", () => PlayersMenu.OpenMenu(admin, "Slap", SlapMenu)));
|
||||
options.Add(new ChatMenuOptionData("Slay", () => PlayersMenu.OpenMenu(admin, "Slay", Slay)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_slap"] ?? "Slap", () => PlayersMenu.OpenMenu(admin, localizer?["sa_slap"] ?? "Slap", SlapMenu)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_slay"] ?? "Slay", () => PlayersMenu.OpenMenu(admin, localizer?["sa_slay"] ?? "Slay", Slay)));
|
||||
}
|
||||
|
||||
if (hasKick)
|
||||
{
|
||||
options.Add(new ChatMenuOptionData("Kick", () => PlayersMenu.OpenMenu(admin, "Kick", KickMenu)));
|
||||
}
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_kick"] ?? "Kick", () => PlayersMenu.OpenMenu(admin, localizer?["sa_kick"] ?? "Kick", KickMenu)));
|
||||
|
||||
if (hasBan)
|
||||
{
|
||||
options.Add(new ChatMenuOptionData("Ban", () => PlayersMenu.OpenRealPlayersMenu(admin, "Ban", (admin, player) => DurationMenu.OpenMenu(admin, $"Ban: {player?.PlayerName}", player, BanMenu))));
|
||||
}
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_ban"] ?? "Ban", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_ban"] ?? "Ban", (admin, player) => DurationMenu.OpenMenu(admin, $"{localizer?["sa_ban"] ?? "Ban"}: {player.PlayerName}", player, BanMenu))));
|
||||
|
||||
if (hasChat)
|
||||
{
|
||||
options.Add(new ChatMenuOptionData("Gag", () => PlayersMenu.OpenRealPlayersMenu(admin, "Gag", (admin, player) => DurationMenu.OpenMenu(admin, $"Gag: {player?.PlayerName}", player, GagMenu))));
|
||||
options.Add(new ChatMenuOptionData("Mute", () => PlayersMenu.OpenRealPlayersMenu(admin, "Mute", (admin, player) => DurationMenu.OpenMenu(admin, $"Mute: {player?.PlayerName}", player, MuteMenu))));
|
||||
options.Add(new ChatMenuOptionData("Silence", () => PlayersMenu.OpenRealPlayersMenu(admin, "Silence", (admin, player) => DurationMenu.OpenMenu(admin, $"Silence: {player?.PlayerName}", player, SilenceMenu))));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_gag"] ?? "Gag", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_gag"] ?? "Gag", (admin, player) => DurationMenu.OpenMenu(admin, $"{localizer?["sa_gag"] ?? "Gag"}: {player.PlayerName}", player, GagMenu))));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_mute"] ?? "Mute", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_mute"] ?? "Mute", (admin, player) => DurationMenu.OpenMenu(admin, $"{localizer?["sa_mute"] ?? "Mute"}: {player.PlayerName}", player, MuteMenu))));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_silence"] ?? "Silence", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_silence"] ?? "Silence", (admin, player) => DurationMenu.OpenMenu(admin, $"{localizer?["sa_silence"] ?? "Silence"}: {player.PlayerName}", player, SilenceMenu))));
|
||||
}
|
||||
|
||||
if (hasKick)
|
||||
{
|
||||
options.Add(new ChatMenuOptionData("Force Team", () => PlayersMenu.OpenMenu(admin, "Force Team", ForceTeamMenu)));
|
||||
}
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_team_force"] ?? "Force Team", () => PlayersMenu.OpenMenu(admin, localizer?["sa_team_force"] ?? "Force Team", ForceTeamMenu)));
|
||||
|
||||
foreach (var menuOptionData in options)
|
||||
{
|
||||
var menuName = menuOptionData.name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.action?.Invoke(); }, menuOptionData.disabled);
|
||||
var menuName = menuOptionData.Name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.Action.Invoke(); }, menuOptionData.Disabled);
|
||||
}
|
||||
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
@@ -70,7 +66,7 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
private static void SlapMenu(CCSPlayerController admin, CCSPlayerController? player)
|
||||
{
|
||||
var menu = AdminMenu.CreateMenu($"Slap: {player?.PlayerName}");
|
||||
var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_slap"] ?? "Slap"}: {player?.PlayerName}");
|
||||
List<ChatMenuOptionData> options =
|
||||
[
|
||||
// options added in order
|
||||
@@ -84,8 +80,8 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
foreach (var menuOptionData in options)
|
||||
{
|
||||
var menuName = menuOptionData.name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.action?.Invoke(); }, menuOptionData.disabled);
|
||||
var menuName = menuOptionData.Name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.Action.Invoke(); }, menuOptionData.Disabled);
|
||||
}
|
||||
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
@@ -93,33 +89,28 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
private static void ApplySlapAndKeepMenu(CCSPlayerController admin, CCSPlayerController? player, int damage)
|
||||
{
|
||||
if (player is null || !player.IsValid) return;
|
||||
if (player is not { IsValid: true }) return;
|
||||
|
||||
CS2_SimpleAdmin.Instance.Slap(admin, player, damage);
|
||||
SlapMenu(admin, player);
|
||||
}
|
||||
|
||||
private static void Slay(CCSPlayerController admin, CCSPlayerController? player)
|
||||
{
|
||||
if (player is not null && player.IsValid)
|
||||
CS2_SimpleAdmin.Instance.Slay(admin, player);
|
||||
if (player is not { IsValid: true }) return;
|
||||
|
||||
CS2_SimpleAdmin.Instance.Slay(admin, player);
|
||||
}
|
||||
|
||||
private static void KickMenu(CCSPlayerController admin, CCSPlayerController? player)
|
||||
{
|
||||
var menu = AdminMenu.CreateMenu($"Kick: {player?.PlayerName}");
|
||||
List<string> options =
|
||||
[
|
||||
"Voice Abuse",
|
||||
"Chat Abuse",
|
||||
"Admin disrespect",
|
||||
"Other"
|
||||
];
|
||||
var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_kick"] ?? "Kick"}: {player?.PlayerName}");
|
||||
|
||||
foreach (var option in options)
|
||||
foreach (var option in CS2_SimpleAdmin.Instance.Config.MenuConfigs.KickReasons)
|
||||
{
|
||||
menu.AddMenuOption(option, (_, _) =>
|
||||
{
|
||||
if (player is not null && player.IsValid)
|
||||
if (player is { IsValid: true })
|
||||
Kick(admin, player, option);
|
||||
});
|
||||
}
|
||||
@@ -127,29 +118,22 @@ namespace CS2_SimpleAdmin.Menus
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
}
|
||||
|
||||
private static void Kick(CCSPlayerController admin, CCSPlayerController? player, string reason)
|
||||
private static void Kick(CCSPlayerController admin, CCSPlayerController? player, string? reason)
|
||||
{
|
||||
if (player is not null && player.IsValid)
|
||||
CS2_SimpleAdmin.Instance.Kick(admin, player, reason);
|
||||
if (player is not { IsValid: true }) return;
|
||||
|
||||
CS2_SimpleAdmin.Instance.Kick(admin, player, reason);
|
||||
}
|
||||
|
||||
private static void BanMenu(CCSPlayerController admin, CCSPlayerController? player, int duration)
|
||||
{
|
||||
var menu = AdminMenu.CreateMenu($"Ban: {player?.PlayerName}");
|
||||
List<string> options =
|
||||
[
|
||||
"Hacking",
|
||||
"Voice Abuse",
|
||||
"Chat Abuse",
|
||||
"Admin disrespect",
|
||||
"Other"
|
||||
];
|
||||
var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_ban"] ?? "Ban"}: {player?.PlayerName}");
|
||||
|
||||
foreach (var option in options)
|
||||
foreach (var option in CS2_SimpleAdmin.Instance.Config.MenuConfigs.BanReasons)
|
||||
{
|
||||
menu.AddMenuOption(option, (_, _) =>
|
||||
{
|
||||
if (player is not null && player.IsValid)
|
||||
if (player is { IsValid: true })
|
||||
Ban(admin, player, duration, option);
|
||||
});
|
||||
}
|
||||
@@ -159,29 +143,21 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
private static void Ban(CCSPlayerController admin, CCSPlayerController? player, int duration, string reason)
|
||||
{
|
||||
if (player is not null && player.IsValid)
|
||||
CS2_SimpleAdmin.Instance.Ban(admin, player, duration, reason);
|
||||
if (player is not { IsValid: true }) return;
|
||||
|
||||
CS2_SimpleAdmin.Instance.Ban(admin, player, duration, reason);
|
||||
}
|
||||
|
||||
private static void GagMenu(CCSPlayerController admin, CCSPlayerController? player, int duration)
|
||||
{
|
||||
// TODO: Localize and make options in config?
|
||||
var menu = AdminMenu.CreateMenu($"Gag: {player?.PlayerName}");
|
||||
List<string> options =
|
||||
[
|
||||
"Advertising",
|
||||
"Spamming",
|
||||
"Spectator camera abuse",
|
||||
"Hate",
|
||||
"Admin disrespect",
|
||||
"Other"
|
||||
];
|
||||
var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_gag"] ?? "Gag"}: {player?.PlayerName}");
|
||||
|
||||
foreach (var option in options)
|
||||
foreach (var option in CS2_SimpleAdmin.Instance.Config.MenuConfigs.MuteReasons)
|
||||
{
|
||||
menu.AddMenuOption(option, (_, _) =>
|
||||
{
|
||||
if (player is not null && player.IsValid)
|
||||
if (player is { IsValid: true })
|
||||
Gag(admin, player, duration, option);
|
||||
});
|
||||
}
|
||||
@@ -191,31 +167,21 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
private static void Gag(CCSPlayerController admin, CCSPlayerController? player, int duration, string reason)
|
||||
{
|
||||
if (player is not null && player.IsValid)
|
||||
CS2_SimpleAdmin.Instance.Gag(admin, player, duration, reason);
|
||||
if (player is not { IsValid: true }) return;
|
||||
|
||||
CS2_SimpleAdmin.Gag(admin, player, duration, reason);
|
||||
}
|
||||
|
||||
private static void MuteMenu(CCSPlayerController admin, CCSPlayerController? player, int duration)
|
||||
{
|
||||
// TODO: Localize and make options in config?
|
||||
var menu = AdminMenu.CreateMenu($"Mute: {player?.PlayerName}");
|
||||
List<string> options =
|
||||
[
|
||||
"Shouting",
|
||||
"Playing music",
|
||||
"Advertising",
|
||||
"Spamming",
|
||||
"Spectator camera abuse",
|
||||
"Hate",
|
||||
"Admin disrespect",
|
||||
"Other"
|
||||
];
|
||||
var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_mute"] ?? "Mute"}: {player?.PlayerName}");
|
||||
|
||||
foreach (var option in options)
|
||||
foreach (var option in CS2_SimpleAdmin.Instance.Config.MenuConfigs.MuteReasons)
|
||||
{
|
||||
menu.AddMenuOption(option, (_, _) =>
|
||||
{
|
||||
if (player is not null && player.IsValid)
|
||||
if (player is { IsValid: true })
|
||||
Mute(admin, player, duration, option);
|
||||
});
|
||||
}
|
||||
@@ -225,31 +191,21 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
private static void Mute(CCSPlayerController admin, CCSPlayerController? player, int duration, string reason)
|
||||
{
|
||||
if (player is not null && player.IsValid)
|
||||
CS2_SimpleAdmin.Instance.Mute(admin, player, duration, reason);
|
||||
if (player is not { IsValid: true }) return;
|
||||
|
||||
CS2_SimpleAdmin.Instance.Mute(admin, player, duration, reason);
|
||||
}
|
||||
|
||||
private static void SilenceMenu(CCSPlayerController admin, CCSPlayerController? player, int duration)
|
||||
{
|
||||
// TODO: Localize and make options in config?
|
||||
var menu = AdminMenu.CreateMenu($"Silence: {player?.PlayerName}");
|
||||
List<string> options =
|
||||
[
|
||||
"Shouting",
|
||||
"Playing music",
|
||||
"Advertising",
|
||||
"Spamming",
|
||||
"Spectator camera abuse",
|
||||
"Hate",
|
||||
"Admin disrespect",
|
||||
"Other"
|
||||
];
|
||||
var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_silence"] ?? "Silence"}: {player?.PlayerName}");
|
||||
|
||||
foreach (var option in options)
|
||||
foreach (var option in CS2_SimpleAdmin.Instance.Config.MenuConfigs.MuteReasons)
|
||||
{
|
||||
menu.AddMenuOption(option, (_, _) =>
|
||||
{
|
||||
if (player is not null && player.IsValid)
|
||||
if (player is { IsValid: true })
|
||||
Silence(admin, player, duration, option);
|
||||
});
|
||||
}
|
||||
@@ -259,26 +215,27 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
private static void Silence(CCSPlayerController admin, CCSPlayerController? player, int duration, string reason)
|
||||
{
|
||||
if (player is not null && player.IsValid)
|
||||
CS2_SimpleAdmin.Instance.Silence(admin, player, duration, reason);
|
||||
if (player is not { IsValid: true }) return;
|
||||
|
||||
CS2_SimpleAdmin.Instance.Silence(admin, player, duration, reason);
|
||||
}
|
||||
|
||||
private static void ForceTeamMenu(CCSPlayerController admin, CCSPlayerController? player)
|
||||
{
|
||||
// TODO: Localize
|
||||
var menu = AdminMenu.CreateMenu($"Force {player?.PlayerName}'s Team");
|
||||
var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_team_force"] ?? "Force Team"} {player?.PlayerName}");
|
||||
List<ChatMenuOptionData> options =
|
||||
[
|
||||
new ChatMenuOptionData("CT", () => ForceTeam(admin, player, "ct", CsTeam.CounterTerrorist)),
|
||||
new ChatMenuOptionData("T", () => ForceTeam(admin, player, "t", CsTeam.Terrorist)),
|
||||
new ChatMenuOptionData("Swap", () => ForceTeam(admin, player, "swap", CsTeam.Spectator)),
|
||||
new ChatMenuOptionData("Spectator", () => ForceTeam(admin, player, "spec", CsTeam.Spectator)),
|
||||
new ChatMenuOptionData(CS2_SimpleAdmin._localizer?["sa_team_ct"] ?? "CT", () => ForceTeam(admin, player, "ct", CsTeam.CounterTerrorist)),
|
||||
new ChatMenuOptionData(CS2_SimpleAdmin._localizer?["sa_team_t"] ?? "T", () => ForceTeam(admin, player, "t", CsTeam.Terrorist)),
|
||||
new ChatMenuOptionData(CS2_SimpleAdmin._localizer?["sa_team_swap"] ?? "Swap", () => ForceTeam(admin, player, "swap", CsTeam.Spectator)),
|
||||
new ChatMenuOptionData(CS2_SimpleAdmin._localizer?["sa_team_spec"] ?? "Spec", () => ForceTeam(admin, player, "spec", CsTeam.Spectator)),
|
||||
];
|
||||
|
||||
foreach (var menuOptionData in options)
|
||||
{
|
||||
var menuName = menuOptionData.name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.action?.Invoke(); }, menuOptionData.disabled);
|
||||
var menuName = menuOptionData.Name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.Action.Invoke(); }, menuOptionData.Disabled);
|
||||
}
|
||||
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
@@ -286,8 +243,9 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
private static void ForceTeam(CCSPlayerController admin, CCSPlayerController? player, string teamName, CsTeam teamNum)
|
||||
{
|
||||
if (player is not null && player.IsValid)
|
||||
CS2_SimpleAdmin.Instance.ChangeTeam(admin, player, teamName, teamNum, true);
|
||||
if (player is not { IsValid: true }) return;
|
||||
|
||||
CS2_SimpleAdmin.Instance.ChangeTeam(admin, player, teamName, teamNum, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Menu;
|
||||
|
||||
namespace CS2_SimpleAdmin.Menus
|
||||
{
|
||||
@@ -8,62 +7,58 @@ namespace CS2_SimpleAdmin.Menus
|
||||
{
|
||||
public static void OpenMenu(CCSPlayerController admin)
|
||||
{
|
||||
if (admin == null || admin.IsValid == false)
|
||||
if (admin.IsValid == false)
|
||||
return;
|
||||
|
||||
var localizer = CS2_SimpleAdmin._localizer;
|
||||
if (AdminManager.PlayerHasPermissions(admin, "@css/generic") == false)
|
||||
{
|
||||
// TODO: Localize
|
||||
admin.PrintToChat("[Simple Admin] You do not have permissions to use this command.");
|
||||
admin.PrintToChat(localizer?["sa_prefix"] ??
|
||||
"[SimpleAdmin] " +
|
||||
(localizer?["sa_no_permission"] ?? "You do not have permissions to use this command")
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
BaseMenu menu = AdminMenu.CreateMenu("Manage Server");
|
||||
List<ChatMenuOptionData> options = new();
|
||||
var menu = AdminMenu.CreateMenu(localizer?["sa_menu_server_manage"] ?? "Server Manage");
|
||||
List<ChatMenuOptionData> options = [];
|
||||
|
||||
// permissions
|
||||
bool hasMap = AdminManager.PlayerHasPermissions(admin, "@css/changemap");
|
||||
|
||||
// TODO: Localize options
|
||||
// options added in order
|
||||
|
||||
if (hasMap)
|
||||
{
|
||||
options.Add(new ChatMenuOptionData("Change Map", () => ChangeMapMenu(admin)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_changemap"] ?? "Change Map", () => ChangeMapMenu(admin)));
|
||||
}
|
||||
|
||||
options.Add(new ChatMenuOptionData("Restart Game", () => CS2_SimpleAdmin.RestartGame(admin)));
|
||||
options.Add(new ChatMenuOptionData(localizer?["sa_restart_game"] ?? "Restart Game", () => CS2_SimpleAdmin.RestartGame(admin)));
|
||||
|
||||
foreach (ChatMenuOptionData menuOptionData in options)
|
||||
foreach (var menuOptionData in options)
|
||||
{
|
||||
string menuName = menuOptionData.name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.action?.Invoke(); }, menuOptionData.disabled);
|
||||
var menuName = menuOptionData.Name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.Action.Invoke(); }, menuOptionData.Disabled);
|
||||
}
|
||||
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
}
|
||||
|
||||
public static void ChangeMapMenu(CCSPlayerController admin)
|
||||
private static void ChangeMapMenu(CCSPlayerController admin)
|
||||
{
|
||||
BaseMenu menu = AdminMenu.CreateMenu($"Change Map");
|
||||
List<ChatMenuOptionData> options = new();
|
||||
var menu = AdminMenu.CreateMenu(CS2_SimpleAdmin._localizer?["sa_changemap"] ?? "Change Map");
|
||||
List<ChatMenuOptionData> options = [];
|
||||
|
||||
List<string> maps = CS2_SimpleAdmin.Instance.Config.DefaultMaps;
|
||||
foreach (string map in maps)
|
||||
{
|
||||
options.Add(new ChatMenuOptionData(map, () => ExecuteChangeMap(admin, map, false)));
|
||||
}
|
||||
var maps = CS2_SimpleAdmin.Instance.Config.DefaultMaps;
|
||||
options.AddRange(maps.Select(map => new ChatMenuOptionData(map, () => ExecuteChangeMap(admin, map, false))));
|
||||
|
||||
List<string> wsMaps = CS2_SimpleAdmin.Instance.Config.WorkshopMaps;
|
||||
foreach (string map in wsMaps)
|
||||
{
|
||||
options.Add(new ChatMenuOptionData($"{map} (WS)", () => ExecuteChangeMap(admin, map, true)));
|
||||
}
|
||||
var wsMaps = CS2_SimpleAdmin.Instance.Config.WorkshopMaps;
|
||||
options.AddRange(wsMaps.Select(map => new ChatMenuOptionData($"{map} (WS)", () => ExecuteChangeMap(admin, map, true))));
|
||||
|
||||
foreach (ChatMenuOptionData menuOptionData in options)
|
||||
foreach (var menuOptionData in options)
|
||||
{
|
||||
string menuName = menuOptionData.name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.action?.Invoke(); }, menuOptionData.disabled);
|
||||
var menuName = menuOptionData.Name;
|
||||
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.Action.Invoke(); }, menuOptionData.Disabled);
|
||||
}
|
||||
|
||||
AdminMenu.OpenMenu(admin, menu);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Menu;
|
||||
using System.Web;
|
||||
|
||||
namespace CS2_SimpleAdmin.Menus
|
||||
@@ -14,7 +13,7 @@ namespace CS2_SimpleAdmin.Menus
|
||||
|
||||
public static void OpenAdminPlayersMenu(CCSPlayerController admin, string menuName, Action<CCSPlayerController, CCSPlayerController> onSelectAction, Func<CCSPlayerController?, bool>? enableFilter = null)
|
||||
{
|
||||
OpenMenu(admin, menuName, onSelectAction, p => AdminManager.GetPlayerAdminData(p)?.Flags?.Count > 0);
|
||||
OpenMenu(admin, menuName, onSelectAction, p => AdminManager.GetPlayerAdminData(p)?.Flags.Count > 0);
|
||||
}
|
||||
|
||||
public static void OpenAliveMenu(CCSPlayerController admin, string menuName, Action<CCSPlayerController, CCSPlayerController> onSelectAction, Func<CCSPlayerController, bool>? enableFilter = null)
|
||||
@@ -45,7 +44,7 @@ namespace CS2_SimpleAdmin.Menus
|
||||
if (optionName != null)
|
||||
menu.AddMenuOption(optionName, (_, _) =>
|
||||
{
|
||||
if (player != null) onSelectAction?.Invoke(admin, player);
|
||||
if (player != null) onSelectAction.Invoke(admin, player);
|
||||
},
|
||||
enabled == false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user