mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-03-05 15:09:52 +00:00
Base menu structure done
This commit is contained in:
41
Menus/AdminMenu.cs
Normal file
41
Menus/AdminMenu.cs
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
using CounterStrikeSharp.API.Core;
|
||||||
|
using CounterStrikeSharp.API.Modules.Admin;
|
||||||
|
using CounterStrikeSharp.API.Modules.Menu;
|
||||||
|
|
||||||
|
namespace CS2_SimpleAdmin.Menus
|
||||||
|
{
|
||||||
|
public static class AdminMenu
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
//bool xpRights = AdminManager.PlayerHasPermissions(admin, "@wcs/xp");
|
||||||
|
|
||||||
|
CenterHtmlMenu menu = new CenterHtmlMenu("Simple Admin");
|
||||||
|
ChatMenuOptionData[] options = new[]
|
||||||
|
{
|
||||||
|
new ChatMenuOptionData("Manage Players", () => ManagePlayersMenu.OpenMenu(admin))
|
||||||
|
//new ChatMenuOptionData("Manage Server", () => GiveXp.OpenMenu(admin, false)),
|
||||||
|
//new ChatMenuOptionData("Fun actions", () => GiveXp.OpenMenu(admin, true)),
|
||||||
|
//new ChatMenuOptionData("Manage Admins", () => GiveLevels.OpenMenu(admin, false))
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (ChatMenuOptionData menuOptionData in options)
|
||||||
|
{
|
||||||
|
string menuName = menuOptionData.name;
|
||||||
|
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.action?.Invoke(); }, menuOptionData.disabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
MenuManager.OpenCenterHtmlMenu(CS2_SimpleAdmin.Instance, admin, menu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
23
Menus/ChatMenuOptionData.cs
Normal file
23
Menus/ChatMenuOptionData.cs
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
namespace CS2_SimpleAdmin.Menus
|
||||||
|
{
|
||||||
|
public class ChatMenuOptionData
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
32
Menus/DurationMenu.cs
Normal file
32
Menus/DurationMenu.cs
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
using CounterStrikeSharp.API;
|
||||||
|
using CounterStrikeSharp.API.Core;
|
||||||
|
using CounterStrikeSharp.API.Modules.Menu;
|
||||||
|
|
||||||
|
namespace CS2_SimpleAdmin.Menus
|
||||||
|
{
|
||||||
|
public static class DurationMenu
|
||||||
|
{
|
||||||
|
public static Tuple<string, int>[] _durations = new[]
|
||||||
|
{
|
||||||
|
new Tuple<string, int>("1 minute", 60),
|
||||||
|
new Tuple<string, int>("5 minutes", 60 * 5),
|
||||||
|
new Tuple<string, int>("15 minutes", 60 * 15),
|
||||||
|
new Tuple<string, int>("1 hour", 60 * 60),
|
||||||
|
new Tuple<string, int>("1 day", 60 * 60 * 24),
|
||||||
|
new Tuple<string, int>("Permanent", 0)
|
||||||
|
};
|
||||||
|
|
||||||
|
public static void OpenMenu(CCSPlayerController admin, string menuName, CCSPlayerController player, Action<CCSPlayerController, CCSPlayerController, int> onSelectAction)
|
||||||
|
{
|
||||||
|
CenterHtmlMenu menu = new CenterHtmlMenu(menuName);
|
||||||
|
|
||||||
|
foreach (Tuple<string, int> duration in _durations)
|
||||||
|
{
|
||||||
|
string optionName = duration.Item1;
|
||||||
|
menu.AddMenuOption(optionName, (_, _) => { onSelectAction?.Invoke(admin, player, duration.Item2); });
|
||||||
|
}
|
||||||
|
|
||||||
|
MenuManager.OpenCenterHtmlMenu(CS2_SimpleAdmin.Instance, admin, menu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
111
Menus/ManagePlayersMenu.cs
Normal file
111
Menus/ManagePlayersMenu.cs
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
using CounterStrikeSharp.API.Core;
|
||||||
|
using CounterStrikeSharp.API.Modules.Admin;
|
||||||
|
using CounterStrikeSharp.API.Modules.Menu;
|
||||||
|
|
||||||
|
namespace CS2_SimpleAdmin.Menus
|
||||||
|
{
|
||||||
|
public static class ManagePlayersMenu
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
//bool xpRights = AdminManager.PlayerHasPermissions(admin, "@wcs/xp");
|
||||||
|
|
||||||
|
CenterHtmlMenu menu = new CenterHtmlMenu("Manage Players");
|
||||||
|
List<ChatMenuOptionData> options = new();
|
||||||
|
|
||||||
|
// permissions
|
||||||
|
bool hasSlay = AdminManager.PlayerHasPermissions(admin, "@css/slay");
|
||||||
|
bool hasKick = AdminManager.PlayerHasPermissions(admin, "@css/kick");
|
||||||
|
bool hasBan = AdminManager.PlayerHasPermissions(admin, "@css/ban");
|
||||||
|
bool hasChat = AdminManager.PlayerHasPermissions(admin, "@css/chat");
|
||||||
|
|
||||||
|
// options added in order
|
||||||
|
options.Add(new ChatMenuOptionData("Who is", () => PlayersMenu.OpenMenu(admin, "Who is", WhoIs)));
|
||||||
|
|
||||||
|
if (hasSlay)
|
||||||
|
{
|
||||||
|
options.Add(new ChatMenuOptionData("Slap", () => PlayersMenu.OpenMenu(admin, "Slap", SlapMenu)));
|
||||||
|
options.Add(new ChatMenuOptionData("Slay", () => PlayersMenu.OpenMenu(admin, "Slay", Slay)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasKick)
|
||||||
|
{
|
||||||
|
options.Add(new ChatMenuOptionData("Kick", () => PlayersMenu.OpenMenu(admin, "Kick", Kick)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasBan)
|
||||||
|
{
|
||||||
|
options.Add(new ChatMenuOptionData("Ban", () => PlayersMenu.OpenMenu(admin, "Ban", (admin, player) => DurationMenu.OpenMenu(admin, "Ban", player, Ban))));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasChat)
|
||||||
|
{
|
||||||
|
options.Add(new ChatMenuOptionData("Gag", () => PlayersMenu.OpenMenu(admin, "Gag", (admin, player) => DurationMenu.OpenMenu(admin, "Gag", player, Gag))));
|
||||||
|
options.Add(new ChatMenuOptionData("Mute", () => PlayersMenu.OpenMenu(admin, "Mute", (admin, player) => DurationMenu.OpenMenu(admin, "Mute", player, Mute))));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasKick)
|
||||||
|
{
|
||||||
|
options.Add(new ChatMenuOptionData("Force Team", () => PlayersMenu.OpenMenu(admin, "Force Team", ForceTeam)));
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (ChatMenuOptionData menuOptionData in options)
|
||||||
|
{
|
||||||
|
string menuName = menuOptionData.name;
|
||||||
|
menu.AddMenuOption(menuName, (_, _) => { menuOptionData.action?.Invoke(); }, menuOptionData.disabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
MenuManager.OpenCenterHtmlMenu(CS2_SimpleAdmin.Instance, admin, menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void WhoIs(CCSPlayerController admin, CCSPlayerController player)
|
||||||
|
{
|
||||||
|
// TODO: WhoIs
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SlapMenu(CCSPlayerController admin, CCSPlayerController player)
|
||||||
|
{
|
||||||
|
// TODO: Slap
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Slay(CCSPlayerController admin, CCSPlayerController player)
|
||||||
|
{
|
||||||
|
// TODO: Slay
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Kick(CCSPlayerController admin, CCSPlayerController player)
|
||||||
|
{
|
||||||
|
// TODO: Kick
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Ban(CCSPlayerController admin, CCSPlayerController player, int duration)
|
||||||
|
{
|
||||||
|
// TODO: Ban
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Gag(CCSPlayerController admin, CCSPlayerController player, int duration)
|
||||||
|
{
|
||||||
|
// TODO: Gag
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Mute(CCSPlayerController admin, CCSPlayerController player, int duration)
|
||||||
|
{
|
||||||
|
// TODO: Mute
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ForceTeam(CCSPlayerController admin, CCSPlayerController player)
|
||||||
|
{
|
||||||
|
// TODO: ForceTeam
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
23
Menus/PlayersMenu.cs
Normal file
23
Menus/PlayersMenu.cs
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
using CounterStrikeSharp.API;
|
||||||
|
using CounterStrikeSharp.API.Core;
|
||||||
|
using CounterStrikeSharp.API.Modules.Menu;
|
||||||
|
|
||||||
|
namespace CS2_SimpleAdmin.Menus
|
||||||
|
{
|
||||||
|
public static class PlayersMenu
|
||||||
|
{
|
||||||
|
public static void OpenMenu(CCSPlayerController admin, string menuName, Action<CCSPlayerController, CCSPlayerController> onSelectAction)
|
||||||
|
{
|
||||||
|
CenterHtmlMenu menu = new CenterHtmlMenu(menuName);
|
||||||
|
|
||||||
|
IEnumerable<CCSPlayerController> players = Utilities.GetPlayers().Where(p => p.Connected == PlayerConnectedState.PlayerConnected);
|
||||||
|
foreach (CCSPlayerController player in players)
|
||||||
|
{
|
||||||
|
string optionName = player.PlayerName;
|
||||||
|
menu.AddMenuOption(optionName, (_, _) => { onSelectAction?.Invoke(admin, player); });
|
||||||
|
}
|
||||||
|
|
||||||
|
MenuManager.OpenCenterHtmlMenu(CS2_SimpleAdmin.Instance, admin, menu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user