diff --git a/CS2-SimpleAdmin.cs b/CS2-SimpleAdmin.cs index 0f16da1..85777c1 100644 --- a/CS2-SimpleAdmin.cs +++ b/CS2-SimpleAdmin.cs @@ -27,12 +27,9 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig mutedPlayers = new ConcurrentBag(); public static Dictionary voteAnswers = new Dictionary(); public static HashSet votePlayers = new HashSet(); public static ConcurrentBag godPlayers = new ConcurrentBag(); - //public static ConcurrentBag gaggedPlayers = new ConcurrentBag(); - //public static ConcurrentBag commsPlayers = new ConcurrentBag(); public static ConcurrentBag silentPlayers = new ConcurrentBag(); public static ConcurrentBag bannedPlayers = new ConcurrentBag(); public static bool TagsDetected = false; @@ -48,7 +45,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig "CS2-SimpleAdmin"; public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)"; public override string ModuleAuthor => "daffyy"; - public override string ModuleVersion => "1.3.0e"; + public override string ModuleVersion => "1.3.0f"; public CS2_SimpleAdminConfig Config { get; set; } = new(); @@ -425,7 +422,10 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig playersToTarget = targets!.Players.Where(player => player != null && player.IsValid && !player.IsHLTV).ToList(); if (playersToTarget.Count > 1 && Config.DisableDangerousCommands || playersToTarget.Count == 0) @@ -443,13 +443,9 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig= 2) @@ -1454,7 +1450,6 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig - + diff --git a/Events.cs b/Events.cs index 8627851..af0d300 100644 --- a/Events.cs +++ b/Events.cs @@ -15,31 +15,12 @@ public partial class CS2_SimpleAdmin { private void registerEvents() { - //RegisterListener(OnClientAuthorized); - //RegisterListener(OnClientConnect); RegisterListener(OnClientPutInServer); - //RegisterListener(OnClientDisconnect); - //RegisterEventHandler(OnPlayerFullConnect); RegisterListener(OnMapStart); - RegisterListener(OnClientVoice); - //RegisterEventHandler(OnPlayerHurt); - //RegisterEventHandler(OnRoundStart); AddCommandListener("say", OnCommandSay); AddCommandListener("say_team", OnCommandTeamSay); } - private void OnClientVoice(int playerSlot) - { - PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager(); - if (!playerPenaltyManager.IsSlotInPenalties(playerSlot)) return; - - CCSPlayerController? player = Utilities.GetPlayerFromSlot(playerSlot); - if (player is null || !player.IsValid) return; - - if (playerPenaltyManager.IsPenalized(playerSlot, PenaltyType.Mute) || playerPenaltyManager.IsPenalized(playerSlot, PenaltyType.Silence)) - player.VoiceFlags = VoiceFlags.Muted; - } - [GameEventHandler] private HookResult OnRoundEnd(EventRoundEnd @event, GameEventInfo info) { @@ -136,6 +117,7 @@ public partial class CS2_SimpleAdmin BanManager _banManager = new(_database, Config); MuteManager _muteManager = new(_database); + PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager(); Task.Run(async () => { @@ -160,48 +142,41 @@ public partial class CS2_SimpleAdmin if (activeMutes.Count > 0) { - PlayerPenaltyManager playerPenaltyManager = new PlayerPenaltyManager(); - foreach (var mute in activeMutes) + foreach (dynamic mute in activeMutes) { string muteType = mute.type; + DateTime ends = mute.ends; + int duration = mute.duration; if (muteType == "GAG") { - /* - if (playerInfo.Slot.HasValue && !gaggedPlayers.Contains(playerInfo.Slot.Value)) - gaggedPlayers.Add(playerInfo.Slot.Value); - */ - playerPenaltyManager.AddPenalty(1, PenaltyType.Gag, DateTime.Parse(mute.ends), mute.duration); - - if (TagsDetected) + playerPenaltyManager.AddPenalty(playerInfo.Slot, PenaltyType.Gag, ends, duration); + Server.NextFrame(() => { - Server.NextFrame(() => + if (TagsDetected) { Server.ExecuteCommand($"css_tag_mute {playerInfo.SteamId}"); - }); - } + } + }); } else if (muteType == "MUTE") { - playerPenaltyManager.AddPenalty(1, PenaltyType.Mute, DateTime.Parse(mute.ends), mute.duration); + playerPenaltyManager.AddPenalty(playerInfo.Slot, PenaltyType.Mute, ends, duration); + Server.NextFrame(() => + { + player.VoiceFlags = VoiceFlags.Muted; + }); } else { - /* - * if (playerInfo.Slot.HasValue && !gaggedPlayers.Contains(playerInfo.Slot.Value)) - gaggedPlayers.Add(playerInfo.Slot.Value); - */ - playerPenaltyManager.AddPenalty(1, PenaltyType.Silence, DateTime.Parse(mute.ends), mute.duration); - + playerPenaltyManager.AddPenalty(playerInfo.Slot, PenaltyType.Silence, ends, duration); Server.NextFrame(() => { - if (player.IsValid) + player.VoiceFlags = VoiceFlags.Muted; + if (TagsDetected) { - if (TagsDetected) - { - Server.ExecuteCommand($"css_tag_mute {playerInfo.SteamId}"); - } + Server.ExecuteCommand($"css_tag_mute {playerInfo.SteamId}"); } }); } diff --git a/Helper.cs b/Helper.cs index 84db15f..c545fea 100644 --- a/Helper.cs +++ b/Helper.cs @@ -23,14 +23,14 @@ namespace CS2_SimpleAdmin public static List GetPlayerFromSteamid64(string steamid) { - return Utilities.GetPlayers().FindAll(x => + return GetValidPlayers().FindAll(x => x.SteamID.ToString().Equals(steamid, StringComparison.OrdinalIgnoreCase) ); } public static List GetPlayerFromIp(string ipAddress) { - return Utilities.GetPlayers().FindAll(x => + return GetValidPlayers().FindAll(x => x.IpAddress != null && x.IpAddress.Split(":")[0].Equals(ipAddress) ); diff --git a/PlayerInfo.cs b/PlayerInfo.cs index de7c85d..4d472c0 100644 --- a/PlayerInfo.cs +++ b/PlayerInfo.cs @@ -4,7 +4,7 @@ { public int? Index { get; set; } public int? UserId { get; set; } - public int? Slot { get; set; } + public int Slot { get; set; } public string? SteamId { get; set; } public string? Name { get; set; } public string? IpAddress { get; set; } diff --git a/PlayerUtils.cs b/PlayerUtils.cs index 874afed..6acdddf 100644 --- a/PlayerUtils.cs +++ b/PlayerUtils.cs @@ -1,6 +1,7 @@ using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Modules.Admin; +using CounterStrikeSharp.API.Modules.Entities; using CounterStrikeSharp.API.Modules.Memory; using CounterStrikeSharp.API.Modules.Utils; using System.Text; @@ -24,7 +25,9 @@ public static class PlayerUtils public static bool CanTarget(this CCSPlayerController controller, CCSPlayerController target) { if (target.IsBot) return true; - return AdminManager.CanPlayerTarget(controller, target); + if (controller is null) return true; + + return AdminManager.CanPlayerTarget(controller, target) || AdminManager.CanPlayerTarget(new SteamID(controller.SteamID), new SteamID(target.SteamID)); } public static void SetSpeed(this CCSPlayerController controller, float speed)