diff --git a/CS2-SimpleAdmin/CS2-SimpleAdmin.cs b/CS2-SimpleAdmin/CS2-SimpleAdmin.cs index 9f5d4e9..e26be56 100644 --- a/CS2-SimpleAdmin/CS2-SimpleAdmin.cs +++ b/CS2-SimpleAdmin/CS2-SimpleAdmin.cs @@ -11,7 +11,7 @@ using MySqlConnector; namespace CS2_SimpleAdmin; -[MinimumApiVersion(271)] +[MinimumApiVersion(276)] public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig { internal static CS2_SimpleAdmin Instance { get; private set; } = new(); @@ -19,7 +19,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.6.2a"; + public override string ModuleVersion => "1.6.3a"; public override void Load(bool hotReload) { diff --git a/CS2-SimpleAdmin/CS2-SimpleAdmin.csproj b/CS2-SimpleAdmin/CS2-SimpleAdmin.csproj index 519af28..da6229a 100644 --- a/CS2-SimpleAdmin/CS2-SimpleAdmin.csproj +++ b/CS2-SimpleAdmin/CS2-SimpleAdmin.csproj @@ -10,7 +10,7 @@ - + diff --git a/CS2-SimpleAdmin/Commands/basebans.cs b/CS2-SimpleAdmin/Commands/basebans.cs index bc45d0c..6861346 100644 --- a/CS2-SimpleAdmin/Commands/basebans.cs +++ b/CS2-SimpleAdmin/Commands/basebans.cs @@ -38,7 +38,7 @@ public partial class CS2_SimpleAdmin { if (!caller.CanTarget(player)) return; - if (!int.TryParse(command.GetArg(2), out var time) && caller != null && caller.IsValid) + if (!int.TryParse(command.GetArg(2), out var time) && caller != null && caller.IsValid && Config.OtherSettings.ShowBanMenuIfNoTime) { DurationMenu.OpenMenu(caller, $"{_localizer?["sa_ban"] ?? "Ban"}: {player.PlayerName}", player, ManagePlayersMenu.BanMenu); diff --git a/CS2-SimpleAdmin/Commands/basecommands.cs b/CS2-SimpleAdmin/Commands/basecommands.cs index f337d3a..2797fdc 100644 --- a/CS2-SimpleAdmin/Commands/basecommands.cs +++ b/CS2-SimpleAdmin/Commands/basecommands.cs @@ -19,13 +19,30 @@ namespace CS2_SimpleAdmin; public partial class CS2_SimpleAdmin { - [CommandHelper(whoCanExecute: CommandUsage.CLIENT_ONLY)] + [CommandHelper(usage: "[#userid or name]", whoCanExecute: CommandUsage.CLIENT_ONLY)] public void OnPenaltiesCommand(CCSPlayerController? caller, CommandInfo command) { if (caller == null || caller.IsValid == false || !caller.UserId.HasValue || Database == null) return; - + var userId = caller.UserId.Value; + + if (!string.IsNullOrEmpty(command.GetArg(1)) && AdminManager.PlayerHasPermissions(caller, "@css/kick")) + { + var targets = GetTarget(command); + + if (targets == null) + return; + + var playersToTarget = targets.Players.Where(player => player is { IsValid: true, IsHLTV: false }).ToList(); + playersToTarget.ForEach(player => + { + if (!player.UserId.HasValue) return; + if (!caller!.CanTarget(player)) return; + + userId = player.UserId.Value; + }); + } Task.Run(async () => { @@ -103,7 +120,7 @@ public partial class CS2_SimpleAdmin { caller.SendLocalizedMessage(_localizer, "sa_player_penalty_info", [ - caller.PlayerName, + PlayersInfo[userId].Name, PlayersInfo[userId].TotalBans, PlayersInfo[userId].TotalGags, PlayersInfo[userId].TotalMutes, diff --git a/CS2-SimpleAdmin/Commands/basecomms.cs b/CS2-SimpleAdmin/Commands/basecomms.cs index d0d2647..97011c7 100644 --- a/CS2-SimpleAdmin/Commands/basecomms.cs +++ b/CS2-SimpleAdmin/Commands/basecomms.cs @@ -35,7 +35,7 @@ public partial class CS2_SimpleAdmin playersToTarget.ForEach(player => { if (!caller!.CanTarget(player)) return; - if (!int.TryParse(command.GetArg(2), out var time) && caller != null && caller.IsValid) + if (!int.TryParse(command.GetArg(2), out var time) && caller != null && caller.IsValid && Config.OtherSettings.ShowBanMenuIfNoTime) { DurationMenu.OpenMenu(caller, $"{_localizer?["sa_gag"] ?? "Gag"}: {player.PlayerName}", player, ManagePlayersMenu.GagMenu); @@ -251,7 +251,7 @@ public partial class CS2_SimpleAdmin playersToTarget.ForEach(player => { if (!caller!.CanTarget(player)) return; - if (!int.TryParse(command.GetArg(2), out var time) && caller != null && caller.IsValid) + if (!int.TryParse(command.GetArg(2), out var time) && caller != null && caller.IsValid && Config.OtherSettings.ShowBanMenuIfNoTime) { DurationMenu.OpenMenu(caller, $"{_localizer?["sa_mute"] ?? "Mute"}: {player.PlayerName}", player, ManagePlayersMenu.MuteMenu); @@ -472,7 +472,7 @@ public partial class CS2_SimpleAdmin playersToTarget.ForEach(player => { if (!caller!.CanTarget(player)) return; - if (!int.TryParse(command.GetArg(2), out var time) && caller != null && caller.IsValid) + if (!int.TryParse(command.GetArg(2), out var time) && caller != null && caller.IsValid && Config.OtherSettings.ShowBanMenuIfNoTime) { DurationMenu.OpenMenu(caller, $"{_localizer?["sa_silence"] ?? "Silence"}: {player.PlayerName}", player, ManagePlayersMenu.SilenceMenu); diff --git a/CS2-SimpleAdmin/Config.cs b/CS2-SimpleAdmin/Config.cs index 7a043ad..f523734 100644 --- a/CS2-SimpleAdmin/Config.cs +++ b/CS2-SimpleAdmin/Config.cs @@ -213,11 +213,14 @@ public class OtherSettings [JsonPropertyName("NotifyPenaltiesToAdminOnConnect")] public bool NotifyPenaltiesToAdminOnConnect { get; set; } = true; + + [JsonPropertyName("ShowBanMenuIfNoTime")] + public bool ShowBanMenuIfNoTime { get; set; } = true; } public class CS2_SimpleAdminConfig : BasePluginConfig { - [JsonPropertyName("ConfigVersion")] public override int Version { get; set; } = 20; + [JsonPropertyName("ConfigVersion")] public override int Version { get; set; } = 21; [JsonPropertyName("DatabaseHost")] public string DatabaseHost { get; set; } = ""; diff --git a/CS2-SimpleAdmin/Events.cs b/CS2-SimpleAdmin/Events.cs index 38d630f..a1aa247 100644 --- a/CS2-SimpleAdmin/Events.cs +++ b/CS2-SimpleAdmin/Events.cs @@ -1,7 +1,6 @@ using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core.Attributes.Registration; -using CounterStrikeSharp.API.Modules.Admin; using CounterStrikeSharp.API.Modules.Commands; using CounterStrikeSharp.API.Modules.Entities; using CounterStrikeSharp.API.Modules.Utils; @@ -10,6 +9,7 @@ using CS2_SimpleAdmin.Models; using CS2_SimpleAdminApi; using Microsoft.Extensions.Logging; using System.Text; +using CounterStrikeSharp.API.Modules.Admin; namespace CS2_SimpleAdmin; @@ -26,20 +26,20 @@ public partial class CS2_SimpleAdmin // AddCommandListener("say_team", OnCommandTeamSay); } - private HookResult OnCommandCallVote(CCSPlayerController? caller, CommandInfo commandinfo) + private HookResult OnCommandCallVote(CCSPlayerController? caller, CommandInfo info) { - var voteType = commandinfo.GetArg(1).ToLower(); + var voteType = info.GetArg(1).ToLower(); if (voteType != "kick") return HookResult.Continue; - var target = int.TryParse(commandinfo.GetArg(2), out var userId) + var target = int.TryParse(info.GetArg(2), out var userId) ? Utilities.GetPlayerFromUserid(userId) : null; if (target == null || !target.IsValid || target.Connected != PlayerConnectedState.PlayerConnected) return HookResult.Continue; - return !CounterStrikeSharp.API.Modules.Admin.AdminManager.CanPlayerTarget(caller, target) ? HookResult.Stop : HookResult.Continue; + return !AdminManager.CanPlayerTarget(caller, target) ? HookResult.Stop : HookResult.Continue; } private void OnGameServerSteamAPIActivated() @@ -158,7 +158,7 @@ public partial class CS2_SimpleAdmin if (player == null || !player.IsValid || player.IsBot) return HookResult.Continue; - var command = info.GetArg(0); + var command = info.GetArg(0).ToLower(); if (!command.Contains("say")) return HookResult.Continue; @@ -173,11 +173,17 @@ public partial class CS2_SimpleAdmin if (PlayerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Gag) || PlayerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Silence)) return HookResult.Stop; + if (command == "say" && info.GetArg(1).StartsWith($"@") && + AdminManager.PlayerHasPermissions(player, "@css/chat")) + { + player.ExecuteClientCommandFromServer($"css_say {info.GetArg(1).Remove(0, 1)}"); + return HookResult.Stop; + } + if (command != "say_team" || !info.GetArg(1).StartsWith($"@")) return HookResult.Continue; StringBuilder sb = new(); - - if (CounterStrikeSharp.API.Modules.Admin.AdminManager.PlayerHasPermissions(player, "@css/chat")) + if (AdminManager.PlayerHasPermissions(player, "@css/chat")) { sb.Append(_localizer!["sa_adminchat_template_admin", player.PlayerName, info.GetArg(1).Remove(0, 1)]); foreach (var p in Utilities.GetPlayers().Where(p => p.IsValid && p is { IsBot: false, IsHLTV: false } && CounterStrikeSharp.API.Modules.Admin.AdminManager.PlayerHasPermissions(p, "@css/chat"))) diff --git a/CS2-SimpleAdmin/VERSION b/CS2-SimpleAdmin/VERSION index a142da5..1ba7ebb 100644 --- a/CS2-SimpleAdmin/VERSION +++ b/CS2-SimpleAdmin/VERSION @@ -1 +1 @@ -1.6.2a \ No newline at end of file +1.6.3a \ No newline at end of file diff --git a/CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj b/CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj index 2338bfa..70e518f 100644 --- a/CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj +++ b/CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj @@ -8,7 +8,7 @@ - +