Improved player selection in menus

This commit is contained in:
Valentin Barat
2024-03-16 16:08:28 +01:00
parent aac5caa565
commit 0cca38b10b
3 changed files with 22 additions and 10 deletions

View File

@@ -24,9 +24,9 @@ namespace CS2_SimpleAdmin.Menus
// TODO: Localize options // TODO: Localize options
// options added in order // options added in order
options.Add(new ChatMenuOptionData("Add Admin", () => PlayersMenu.OpenAliveMenu(admin, "Add Admin", AddAdminMenu))); options.Add(new ChatMenuOptionData("Add Admin", () => PlayersMenu.OpenRealPlayersMenu(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("Remove Admin", () => PlayersMenu.OpenAdminPlayersMenu(admin, "Remove Admin", RemoveAdmin, player => player != admin && admin.CanTarget(player))));
options.Add(new ChatMenuOptionData("Reload Admins", ReloadAdmins)); options.Add(new ChatMenuOptionData("Reload Admins", () => ReloadAdmins(admin)));
foreach (ChatMenuOptionData menuOptionData in options) foreach (ChatMenuOptionData menuOptionData in options)
{ {
@@ -77,9 +77,9 @@ namespace CS2_SimpleAdmin.Menus
CS2_SimpleAdmin.Instance.RemoveAdmin(admin, player.SteamID.ToString()); CS2_SimpleAdmin.Instance.RemoveAdmin(admin, player.SteamID.ToString());
} }
private static void ReloadAdmins() private static void ReloadAdmins(CCSPlayerController admin)
{ {
CS2_SimpleAdmin.Instance.ReloadAdmins(); CS2_SimpleAdmin.Instance.ReloadAdmins(admin);
} }
} }
} }

View File

@@ -44,14 +44,14 @@ namespace CS2_SimpleAdmin.Menus
if (hasBan) if (hasBan)
{ {
options.Add(new ChatMenuOptionData("Ban", () => PlayersMenu.OpenMenu(admin, "Ban", (admin, player) => DurationMenu.OpenMenu(admin, $"Ban: {player.PlayerName}", player, BanMenu)))); options.Add(new ChatMenuOptionData("Ban", () => PlayersMenu.OpenRealPlayersMenu(admin, "Ban", (admin, player) => DurationMenu.OpenMenu(admin, $"Ban: {player.PlayerName}", player, BanMenu))));
} }
if (hasChat) if (hasChat)
{ {
options.Add(new ChatMenuOptionData("Gag", () => PlayersMenu.OpenMenu(admin, "Gag", (admin, player) => DurationMenu.OpenMenu(admin, $"Gag: {player.PlayerName}", player, GagMenu)))); 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.OpenMenu(admin, "Mute", (admin, player) => DurationMenu.OpenMenu(admin, $"Mute: {player.PlayerName}", player, MuteMenu)))); 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.OpenMenu(admin, "Silence", (admin, player) => DurationMenu.OpenMenu(admin, $"Silence: {player.PlayerName}", player, SilenceMenu)))); options.Add(new ChatMenuOptionData("Silence", () => PlayersMenu.OpenRealPlayersMenu(admin, "Silence", (admin, player) => DurationMenu.OpenMenu(admin, $"Silence: {player.PlayerName}", player, SilenceMenu))));
} }
if (hasKick) if (hasKick)

View File

@@ -1,10 +1,21 @@
using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Modules.Admin;
using CounterStrikeSharp.API.Modules.Menu; using CounterStrikeSharp.API.Modules.Menu;
namespace CS2_SimpleAdmin.Menus namespace CS2_SimpleAdmin.Menus
{ {
public static class PlayersMenu public static class PlayersMenu
{ {
public static void OpenRealPlayersMenu(CCSPlayerController admin, string menuName, Action<CCSPlayerController, CCSPlayerController> onSelectAction, Func<CCSPlayerController, bool>? enableFilter = null)
{
OpenMenu(admin, menuName, onSelectAction, p => p.IsBot == false);
}
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);
}
public static void OpenAliveMenu(CCSPlayerController admin, string menuName, Action<CCSPlayerController, CCSPlayerController> onSelectAction, Func<CCSPlayerController, bool>? enableFilter = null) public static void OpenAliveMenu(CCSPlayerController admin, string menuName, Action<CCSPlayerController, CCSPlayerController> onSelectAction, Func<CCSPlayerController, bool>? enableFilter = null)
{ {
OpenMenu(admin, menuName, onSelectAction, p => p.PawnIsAlive); OpenMenu(admin, menuName, onSelectAction, p => p.PawnIsAlive);
@@ -23,9 +34,10 @@ namespace CS2_SimpleAdmin.Menus
foreach (CCSPlayerController player in players) foreach (CCSPlayerController player in players)
{ {
string optionName = player.PlayerName; string optionName = player.PlayerName;
bool enabled = admin.CanTarget(player);
if (enableFilter != null && enableFilter(player) == false) if (enableFilter != null && enableFilter(player) == false)
continue; continue;
bool enabled = admin.CanTarget(player);
menu.AddMenuOption(optionName, (_, _) => { onSelectAction?.Invoke(admin, player); }, enabled == false); menu.AddMenuOption(optionName, (_, _) => { onSelectAction?.Invoke(admin, player); }, enabled == false);
} }