- Fix for command overrides in menu
- Fix for kick with banid when player disconnected
This commit is contained in:
Dawid Bepierszcz
2024-08-17 18:43:11 +02:00
parent 79270acafe
commit 8f2f95ca23
7 changed files with 67 additions and 40 deletions

View File

@@ -41,7 +41,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
public override string ModuleName => "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)"); public override string ModuleName => "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)");
public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)"; public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)";
public override string ModuleAuthor => "daffyy & Dliix66"; 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(); public CS2_SimpleAdminConfig Config { get; set; } = new();

View File

@@ -59,7 +59,7 @@ public partial class CS2_SimpleAdmin
if (player.PawnIsAlive) if (player.PawnIsAlive)
{ {
player.Pawn.Value!.Freeze(); player.Pawn.Value?.Freeze();
} }
PlayerInfo playerInfo = new() PlayerInfo playerInfo = new()
@@ -82,10 +82,6 @@ public partial class CS2_SimpleAdmin
await banManager.BanPlayer(playerInfo, adminInfo, reason, time); 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)) if (playerInfo.IpAddress != null && !BannedPlayers.Contains(playerInfo.IpAddress))
BannedPlayers.Add(playerInfo.IpAddress); BannedPlayers.Add(playerInfo.IpAddress);
if (!BannedPlayers.Contains(player.SteamID.ToString())) if (!BannedPlayers.Contains(player.SteamID.ToString()))
@@ -134,6 +130,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) if (UnlockedCommands)
Server.ExecuteCommand($"banid 2 {new SteamID(player.SteamID).SteamId3}"); Server.ExecuteCommand($"banid 2 {new SteamID(player.SteamID).SteamId3}");
@@ -191,13 +195,9 @@ public partial class CS2_SimpleAdmin
return; 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 (time == 0)
{ {
if (!player.IsBot && !player.IsHLTV) if (player is { IsBot: false, IsHLTV: false })
using (new WithTemporaryCulture(player.GetLanguage())) using (new WithTemporaryCulture(player.GetLanguage()))
{ {
player.PrintToCenter(_localizer!["sa_player_ban_message_perm", reason, caller == null ? "Console" : caller.PlayerName]); player.PrintToCenter(_localizer!["sa_player_ban_message_perm", reason, caller == null ? "Console" : caller.PlayerName]);
@@ -237,6 +237,15 @@ 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); Helper.SendDiscordPenaltyMessage(caller, player, reason, time, Helper.PenaltyType.Ban, _localizer);
@@ -350,12 +359,12 @@ public partial class CS2_SimpleAdmin
} }
if (player.UserId.HasValue) if (player.UserId.HasValue)
{
AddTimer(Config.KickTime, () => 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); }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
}
} }
Helper.SendDiscordPenaltyMessage(caller, player, reason, time, Helper.PenaltyType.Ban, _localizer); Helper.SendDiscordPenaltyMessage(caller, player, reason, time, Helper.PenaltyType.Ban, _localizer);
@@ -384,13 +393,11 @@ public partial class CS2_SimpleAdmin
return false; return false;
} }
if (duration > Config.MaxBanDuration && canPermBan == false) if (duration <= Config.MaxBanDuration || canPermBan) return true;
{
caller.PrintToChat($"{_localizer!["sa_prefix"]} {_localizer["sa_ban_max_duration_exceeded", Config.MaxBanDuration]}"); caller.PrintToChat($"{_localizer!["sa_prefix"]} {_localizer["sa_ban_max_duration_exceeded", Config.MaxBanDuration]}");
return false; return false;
}
return true;
} }
[ConsoleCommand("css_unban")] [ConsoleCommand("css_unban")]

View File

@@ -439,7 +439,7 @@ namespace CS2_SimpleAdmin
Helper.LogCommand(caller, command); 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) if (playersToTarget.Count > 1)
return; return;

View File

@@ -49,8 +49,11 @@ namespace CS2_SimpleAdmin.Menus
List<ChatMenuOptionData> options = []; List<ChatMenuOptionData> options = [];
// permissions // permissions
var hasCheats = AdminManager.PlayerHasPermissions(admin, "@css/cheats"); var hasCheats = AdminManager.CommandIsOverriden("css_godmode") ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_godmode")) : AdminManager.PlayerHasPermissions(admin, "@css/cheats");
var hasSlay = AdminManager.PlayerHasPermissions(admin, "@css/slay"); 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 // options added in order

View File

@@ -25,10 +25,10 @@ namespace CS2_SimpleAdmin.Menus
List<ChatMenuOptionData> options = []; List<ChatMenuOptionData> options = [];
// permissions // permissions
var hasSlay = AdminManager.PlayerHasPermissions(admin, "@css/slay"); var hasSlay = AdminManager.CommandIsOverriden("css_slay") ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_slay")) : AdminManager.PlayerHasPermissions(admin, "@css/slay");
var hasKick = AdminManager.PlayerHasPermissions(admin, "@css/kick"); var hasKick = AdminManager.CommandIsOverriden("css_kick") ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_kick")) : AdminManager.PlayerHasPermissions(admin, "@css/kick");
var hasBan = AdminManager.PlayerHasPermissions(admin, "@css/ban"); var hasBan = AdminManager.CommandIsOverriden("css_ban") ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_ban")) : AdminManager.PlayerHasPermissions(admin, "@css/ban");
var hasChat = AdminManager.PlayerHasPermissions(admin, "@css/chat"); var hasChat = AdminManager.CommandIsOverriden("css_gag") ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_gag")) : AdminManager.PlayerHasPermissions(admin, "@css/chat");
// TODO: Localize options // TODO: Localize options
// options added in order // options added in order
@@ -42,21 +42,36 @@ namespace CS2_SimpleAdmin.Menus
if (hasKick) if (hasKick)
{ {
options.Add(new ChatMenuOptionData(localizer?["sa_kick"] ?? "Kick", () => PlayersMenu.OpenMenu(admin, localizer?["sa_kick"] ?? "Kick", KickMenu))); 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) 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)))); 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) 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)))); if (AdminManager.CommandIsOverriden("css_gag")
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)))); ? AdminManager.PlayerHasPermissions(admin, AdminManager.GetPermissionOverrides("css_gag"))
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)))); : 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) if (AdminManager.CommandIsOverriden("css_team")
options.Add(new ChatMenuOptionData(localizer?["sa_team_force"] ?? "Force Team", () => PlayersMenu.OpenMenu(admin, localizer?["sa_team_force"] ?? "Force Team", ForceTeamMenu))); ? 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) 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}"); 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, (_, _) => menu.AddMenuOption(option, (_, _) =>
{ {
@@ -176,7 +191,6 @@ namespace CS2_SimpleAdmin.Menus
private static void GagMenu(CCSPlayerController admin, CCSPlayerController? player, int duration) 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}"); var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_gag"] ?? "Gag"}: {player?.PlayerName}");
foreach (var option in CS2_SimpleAdmin.Instance.Config.MenuConfigs.MuteReasons) foreach (var option in CS2_SimpleAdmin.Instance.Config.MenuConfigs.MuteReasons)

View File

@@ -23,8 +23,11 @@ namespace CS2_SimpleAdmin.Menus
var menu = AdminMenu.CreateMenu(localizer?["sa_menu_server_manage"] ?? "Server Manage"); var menu = AdminMenu.CreateMenu(localizer?["sa_menu_server_manage"] ?? "Server Manage");
List<ChatMenuOptionData> options = []; List<ChatMenuOptionData> options = [];
// permissions // 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 // options added in order

View File

@@ -1 +1 @@
1.5.2a 1.5.2b