From 8f2f95ca23a2f794b9e94c494d4dbce4e479097b Mon Sep 17 00:00:00 2001 From: Dawid Bepierszcz <41084667+daffyyyy@users.noreply.github.com> Date: Sat, 17 Aug 2024 18:43:11 +0200 Subject: [PATCH] 1.5.2b - Fix for command overrides in menu - Fix for kick with banid when player disconnected --- CS2-SimpleAdmin.cs | 2 +- Commands/basebans.cs | 51 ++++++++++++++++++++++---------------- Commands/basecommands.cs | 2 +- Menus/FunActionsMenu.cs | 7 ++++-- Menus/ManagePlayersMenu.cs | 38 +++++++++++++++++++--------- Menus/ManageServerMenu.cs | 5 +++- VERSION | 2 +- 7 files changed, 67 insertions(+), 40 deletions(-) diff --git a/CS2-SimpleAdmin.cs b/CS2-SimpleAdmin.cs index d7f1786..0523898 100644 --- a/CS2-SimpleAdmin.cs +++ b/CS2-SimpleAdmin.cs @@ -41,7 +41,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)"); public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)"; public override string ModuleAuthor => "daffyy & Dliix66"; - public override string ModuleVersion => "1.5.2a"; + public override string ModuleVersion => "1.5.2b"; public CS2_SimpleAdminConfig Config { get; set; } = new(); diff --git a/Commands/basebans.cs b/Commands/basebans.cs index fa39976..3f3bb21 100644 --- a/Commands/basebans.cs +++ b/Commands/basebans.cs @@ -59,7 +59,7 @@ public partial class CS2_SimpleAdmin if (player.PawnIsAlive) { - player.Pawn.Value!.Freeze(); + player.Pawn.Value?.Freeze(); } PlayerInfo playerInfo = new() @@ -81,11 +81,7 @@ public partial class CS2_SimpleAdmin banManager ??= new BanManager(_database, Config); await banManager.BanPlayer(playerInfo, adminInfo, reason, time); }); - - if (player.UserId.HasValue) - AddTimer(Config.KickTime, () => Helper.KickPlayer(player.UserId.Value), - CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); - + if (playerInfo.IpAddress != null && !BannedPlayers.Contains(playerInfo.IpAddress)) BannedPlayers.Add(playerInfo.IpAddress); if (!BannedPlayers.Contains(player.SteamID.ToString())) @@ -133,6 +129,14 @@ public partial class CS2_SimpleAdmin } } } + + if (player.UserId.HasValue) + AddTimer(Config.KickTime, () => + { + if (player is null || !player.IsValid || !player.UserId.HasValue) return; + + Helper.KickPlayer(player.UserId.Value); + }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); if (UnlockedCommands) Server.ExecuteCommand($"banid 2 {new SteamID(player.SteamID).SteamId3}"); @@ -190,14 +194,10 @@ public partial class CS2_SimpleAdmin command.ReplyToCommand($"{player.PlayerName} is more powerful than you!"); return; } - - player.Pawn.Value!.Freeze(); - if (player.UserId.HasValue) - AddTimer(Config.KickTime, () => Helper.KickPlayer(player.UserId.Value), CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); - + if (time == 0) { - if (!player.IsBot && !player.IsHLTV) + if (player is { IsBot: false, IsHLTV: false }) using (new WithTemporaryCulture(player.GetLanguage())) { player.PrintToCenter(_localizer!["sa_player_ban_message_perm", reason, caller == null ? "Console" : caller.PlayerName]); @@ -237,8 +237,17 @@ public partial class CS2_SimpleAdmin } } } + + player.Pawn.Value?.Freeze(); + if (player.UserId.HasValue) + AddTimer(Config.KickTime, () => + { + if (player is null || !player.IsValid || !player.UserId.HasValue) return; + + Helper.KickPlayer(player.UserId.Value); + }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); } - + Helper.SendDiscordPenaltyMessage(caller, player, reason, time, Helper.PenaltyType.Ban, _localizer); } @@ -350,12 +359,12 @@ public partial class CS2_SimpleAdmin } if (player.UserId.HasValue) - { AddTimer(Config.KickTime, () => { - Helper.KickPlayer(player.UserId.Value, "Banned"); + if (player is null || !player.IsValid || !player.UserId.HasValue) return; + + Helper.KickPlayer(player.UserId.Value); }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); - } } Helper.SendDiscordPenaltyMessage(caller, player, reason, time, Helper.PenaltyType.Ban, _localizer); @@ -384,13 +393,11 @@ public partial class CS2_SimpleAdmin return false; } - if (duration > Config.MaxBanDuration && canPermBan == false) - { - caller.PrintToChat($"{_localizer!["sa_prefix"]} {_localizer["sa_ban_max_duration_exceeded", Config.MaxBanDuration]}"); - return false; - } + if (duration <= Config.MaxBanDuration || canPermBan) return true; + + caller.PrintToChat($"{_localizer!["sa_prefix"]} {_localizer["sa_ban_max_duration_exceeded", Config.MaxBanDuration]}"); + return false; - return true; } [ConsoleCommand("css_unban")] diff --git a/Commands/basecommands.cs b/Commands/basecommands.cs index d49c744..51fa552 100644 --- a/Commands/basecommands.cs +++ b/Commands/basecommands.cs @@ -439,7 +439,7 @@ namespace CS2_SimpleAdmin Helper.LogCommand(caller, command); - var playersToTarget = targets.Players.Where(player => player is { IsValid: true, IsHLTV: false }).ToList(); + var playersToTarget = targets.Players.Where(player => player is { IsValid: true, IsBot: false }).ToList(); if (playersToTarget.Count > 1) return; diff --git a/Menus/FunActionsMenu.cs b/Menus/FunActionsMenu.cs index cbcd985..7194578 100644 --- a/Menus/FunActionsMenu.cs +++ b/Menus/FunActionsMenu.cs @@ -49,8 +49,11 @@ namespace CS2_SimpleAdmin.Menus List options = []; // permissions - var hasCheats = AdminManager.PlayerHasPermissions(admin, "@css/cheats"); - var hasSlay = AdminManager.PlayerHasPermissions(admin, "@css/slay"); + var hasCheats = AdminManager.CommandIsOverriden("css_godmode") ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_godmode")) : AdminManager.PlayerHasPermissions(admin, "@css/cheats"); + var hasSlay = AdminManager.CommandIsOverriden("css_slay") ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_slay")) : AdminManager.PlayerHasPermissions(admin, "@css/slay"); + + //var hasCheats = AdminManager.PlayerHasPermissions(admin, "@css/cheats"); + //var hasSlay = AdminManager.PlayerHasPermissions(admin, "@css/slay"); // options added in order diff --git a/Menus/ManagePlayersMenu.cs b/Menus/ManagePlayersMenu.cs index e10f1fe..5cb3f28 100644 --- a/Menus/ManagePlayersMenu.cs +++ b/Menus/ManagePlayersMenu.cs @@ -25,10 +25,10 @@ namespace CS2_SimpleAdmin.Menus List options = []; // permissions - var hasSlay = AdminManager.PlayerHasPermissions(admin, "@css/slay"); - var hasKick = AdminManager.PlayerHasPermissions(admin, "@css/kick"); - var hasBan = AdminManager.PlayerHasPermissions(admin, "@css/ban"); - var hasChat = AdminManager.PlayerHasPermissions(admin, "@css/chat"); + var hasSlay = AdminManager.CommandIsOverriden("css_slay") ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_slay")) : AdminManager.PlayerHasPermissions(admin, "@css/slay"); + var hasKick = AdminManager.CommandIsOverriden("css_kick") ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_kick")) : AdminManager.PlayerHasPermissions(admin, "@css/kick"); + var hasBan = AdminManager.CommandIsOverriden("css_ban") ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_ban")) : AdminManager.PlayerHasPermissions(admin, "@css/ban"); + var hasChat = AdminManager.CommandIsOverriden("css_gag") ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_gag")) : AdminManager.PlayerHasPermissions(admin, "@css/chat"); // TODO: Localize options // options added in order @@ -42,21 +42,36 @@ namespace CS2_SimpleAdmin.Menus if (hasKick) { options.Add(new ChatMenuOptionData(localizer?["sa_kick"] ?? "Kick", () => PlayersMenu.OpenMenu(admin, localizer?["sa_kick"] ?? "Kick", KickMenu))); - options.Add(new ChatMenuOptionData(localizer?["sa_warn"] ?? "Warn", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_warn"] ?? "Warn", (admin, player) => DurationMenu.OpenMenu(admin, $"{localizer?["sa_warn"] ?? "Warn"}: {player.PlayerName}", player, WarnMenu)))); } + if (AdminManager.CommandIsOverriden("css_warn") + ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_warn")) + : AdminManager.PlayerHasPermissions(admin, "@css/kick")) + options.Add(new ChatMenuOptionData(localizer?["sa_warn"] ?? "Warn", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_warn"] ?? "Warn", (admin, player) => DurationMenu.OpenMenu(admin, $"{localizer?["sa_warn"] ?? "Warn"}: {player.PlayerName}", player, WarnMenu)))); + if (hasBan) 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(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 (AdminManager.CommandIsOverriden("css_gag") + ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_gag")) + : AdminManager.PlayerHasPermissions(admin, "@css/chat")) + 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)))); + if (AdminManager.CommandIsOverriden("css_mute") + ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_mute")) + : AdminManager.PlayerHasPermissions(admin, "@css/chat")) + 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)))); + if (AdminManager.CommandIsOverriden("css_silence") + ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_silence")) + : AdminManager.PlayerHasPermissions(admin, "@css/chat")) + 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(localizer?["sa_team_force"] ?? "Force Team", () => PlayersMenu.OpenMenu(admin, localizer?["sa_team_force"] ?? "Force Team", ForceTeamMenu))); + if (AdminManager.CommandIsOverriden("css_team") + ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_team")) + : AdminManager.PlayerHasPermissions(admin, "@css/kick")) + 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) { @@ -155,7 +170,7 @@ namespace CS2_SimpleAdmin.Menus { var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_warn"] ?? "Warn"}: {player?.PlayerName}"); - foreach (var option in CS2_SimpleAdmin.Instance.Config.MenuConfigs.BanReasons) + foreach (var option in CS2_SimpleAdmin.Instance.Config.MenuConfigs.WarnReasons) { menu.AddMenuOption(option, (_, _) => { @@ -176,7 +191,6 @@ namespace CS2_SimpleAdmin.Menus private static void GagMenu(CCSPlayerController admin, CCSPlayerController? player, int duration) { - // TODO: Localize and make options in config? var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_gag"] ?? "Gag"}: {player?.PlayerName}"); foreach (var option in CS2_SimpleAdmin.Instance.Config.MenuConfigs.MuteReasons) diff --git a/Menus/ManageServerMenu.cs b/Menus/ManageServerMenu.cs index 7638de6..6582b27 100644 --- a/Menus/ManageServerMenu.cs +++ b/Menus/ManageServerMenu.cs @@ -23,8 +23,11 @@ namespace CS2_SimpleAdmin.Menus var menu = AdminMenu.CreateMenu(localizer?["sa_menu_server_manage"] ?? "Server Manage"); List options = []; + // permissions - bool hasMap = AdminManager.PlayerHasPermissions(admin, "@css/changemap"); + var hasMap = AdminManager.CommandIsOverriden("css_map") ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_map")) : AdminManager.PlayerHasPermissions(admin, "@css/changemap"); + + //bool hasMap = AdminManager.PlayerHasPermissions(admin, "@css/changemap"); // options added in order diff --git a/VERSION b/VERSION index a7409fc..3b1470e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.5.2a \ No newline at end of file +1.5.2b \ No newline at end of file