diff --git a/CS2-SimpleAdmin.cs b/CS2-SimpleAdmin.cs index 82cb430..1657b0e 100644 --- a/CS2-SimpleAdmin.cs +++ b/CS2-SimpleAdmin.cs @@ -1627,39 +1627,46 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig { - if (!teamName.Equals("swap")) - { - if (player.PawnIsAlive && teamNum != CsTeam.Spectator && !command.GetArg(3).ToLower().Equals("-k")) - player.SwitchTeam(teamNum); - else - player.ChangeTeam(teamNum); - } + ChangeTeam(caller, player, _teamName, teamNum, kill); + }); + } + + public void ChangeTeam(CCSPlayerController? caller, CCSPlayerController player, string teamName, CsTeam teamNum, bool kill) + { + if (!teamName.Equals("swap")) + { + if (player.PawnIsAlive && teamNum != CsTeam.Spectator && !kill) + player.SwitchTeam(teamNum); else + player.ChangeTeam(teamNum); + } + else + { + if (player.TeamNum != (byte)CsTeam.Spectator) { - if (player.TeamNum != (byte)CsTeam.Spectator) + teamNum = (CsTeam)player.TeamNum == CsTeam.Terrorist ? CsTeam.CounterTerrorist : CsTeam.Terrorist; + teamName = teamNum == CsTeam.Terrorist ? "TT" : "CT"; + if (player.PawnIsAlive && !kill) { - CsTeam teamNum = (CsTeam)player.TeamNum == CsTeam.Terrorist ? CsTeam.CounterTerrorist : CsTeam.Terrorist; - _teamName = teamNum == CsTeam.Terrorist ? "TT" : "CT"; - if (player.PawnIsAlive && !command.GetArg(3).ToLower().Equals("-k")) - { - player.SwitchTeam(teamNum); - } - else - { - player.ChangeTeam(teamNum); - } + player.SwitchTeam(teamNum); + } + else + { + player.ChangeTeam(teamNum); } } + } - if (caller == null || caller != null && caller.UserId != null && !silentPlayers.Contains((ushort)caller.UserId)) - { - StringBuilder sb = new(_localizer!["sa_prefix"]); - sb.Append(_localizer["sa_admin_team_message", caller == null ? "Console" : caller.PlayerName, player.PlayerName, _teamName]); - Server.PrintToChatAll(sb.ToString()); - } - }); + if (caller == null || caller != null && caller.UserId != null && !silentPlayers.Contains((ushort)caller.UserId)) + { + StringBuilder sb = new(_localizer!["sa_prefix"]); + sb.Append(_localizer["sa_admin_team_message", caller == null ? "Console" : caller.PlayerName, player.PlayerName, teamName]); + Server.PrintToChatAll(sb.ToString()); + } } [ConsoleCommand("css_vote")] diff --git a/Menus/DurationMenu.cs b/Menus/DurationMenu.cs index 5581153..ead4bd0 100644 --- a/Menus/DurationMenu.cs +++ b/Menus/DurationMenu.cs @@ -6,6 +6,7 @@ namespace CS2_SimpleAdmin.Menus { public static class DurationMenu { + // TODO: Localize public static Tuple[] _durations = new[] { new Tuple("1 minute", 1), diff --git a/Menus/ManagePlayersMenu.cs b/Menus/ManagePlayersMenu.cs index dd41c53..86b0255 100644 --- a/Menus/ManagePlayersMenu.cs +++ b/Menus/ManagePlayersMenu.cs @@ -28,6 +28,7 @@ namespace CS2_SimpleAdmin.Menus bool hasBan = AdminManager.PlayerHasPermissions(admin, "@css/ban"); bool hasChat = AdminManager.PlayerHasPermissions(admin, "@css/chat"); + // TODO: Localize options // options added in order options.Add(new ChatMenuOptionData("Who Is", () => PlayersMenu.OpenMenu(admin, "Who is", WhoIs))); @@ -55,7 +56,7 @@ namespace CS2_SimpleAdmin.Menus if (hasKick) { - options.Add(new ChatMenuOptionData("Force Team", () => PlayersMenu.OpenMenu(admin, "Force Team", ForceTeam))); + options.Add(new ChatMenuOptionData("Force Team", () => PlayersMenu.OpenMenu(admin, "Force Team", ForceTeamMenu))); } foreach (ChatMenuOptionData menuOptionData in options) @@ -137,6 +138,7 @@ namespace CS2_SimpleAdmin.Menus private static void GagMenu(CCSPlayerController admin, CCSPlayerController player, int duration) { + // TODO: Localize and make options in config? CenterHtmlMenu menu = new CenterHtmlMenu($"Gag {player.PlayerName}"); List options = new() { @@ -163,6 +165,7 @@ namespace CS2_SimpleAdmin.Menus private static void MuteMenu(CCSPlayerController admin, CCSPlayerController player, int duration) { + // TODO: Localize and make options in config? CenterHtmlMenu menu = new CenterHtmlMenu($"Mute {player.PlayerName}"); List options = new() { @@ -189,7 +192,26 @@ namespace CS2_SimpleAdmin.Menus CS2_SimpleAdmin.Instance.Mute(admin, player, duration, reason); } - private static void ForceTeam(CCSPlayerController admin, CCSPlayerController player) + private static void ForceTeamMenu(CCSPlayerController admin, CCSPlayerController player) + { + // TODO: Localize + CenterHtmlMenu menu = new CenterHtmlMenu($"Force {player.PlayerName}'s Team"); + List options = new(); + options.Add(new ChatMenuOptionData("CT", () => ForceTeam(admin, player, "ct"))); + options.Add(new ChatMenuOptionData("T", () => ForceTeam(admin, player, "t"))); + options.Add(new ChatMenuOptionData("Swap", () => ForceTeam(admin, player, "swap"))); + options.Add(new ChatMenuOptionData("Spectator", () => ForceTeam(admin, player, "spec"))); + + 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 ForceTeam(CCSPlayerController admin, CCSPlayerController player, string teamName) { // TODO: ForceTeam }