diff --git a/Config.cs b/Config.cs index 4504bd1..e93c0f0 100644 --- a/Config.cs +++ b/Config.cs @@ -41,6 +41,12 @@ public class BaseConfigs : BasePluginConfig [JsonPropertyName("CommandCooldownSeconds")] public int CommandCooldownSeconds { get; set; } = 120; + [JsonPropertyName("DontCountAdmins")] + public bool DontCountAdmins { get; set; } = false; + + [JsonPropertyName("AdminBypassFlag")] + public string AdminBypassFlag { get; set; } = "@css/generic"; + [JsonPropertyName("Command")] public List Command { get; set; } = new List { "css_need", ".need" }; diff --git a/NeedSystem.cs b/NeedSystem.cs index 28b9a6a..eb97e53 100644 --- a/NeedSystem.cs +++ b/NeedSystem.cs @@ -6,6 +6,8 @@ using CounterStrikeSharp.API.Modules.Commands; using CounterStrikeSharp.API.Modules.Cvars; using CounterStrikeSharp.API.Core.Attributes; +using CounterStrikeSharp.API.Modules.Utils; +using CounterStrikeSharp.API.Modules.Admin; namespace NeedSystem; @@ -17,7 +19,7 @@ public class NeedSystemBase : BasePlugin, IPluginConfig private Translator _translator; public override string ModuleName => "NeedSystem"; - public override string ModuleVersion => "1.1.5"; + public override string ModuleVersion => "1.1.6"; public override string ModuleAuthor => "luca.uy"; public override string ModuleDescription => "Allows players to send a message to discord requesting players."; @@ -146,7 +148,25 @@ private bool CheckCommandCooldown(out int secondsRemaining) public int GetNumberOfPlayers() { var players = Utilities.GetPlayers(); - return players.Count(p => !p.IsBot && !p.IsHLTV); + return players.Where(p => !p.IsBot && !p.IsHLTV && ShouldShowPlayerInList(p)).Count(); + } + + private bool ShouldShowPlayerInList(CCSPlayerController player) + { + if (!Config.DontCountAdmins || string.IsNullOrEmpty(Config.AdminBypassFlag)) + return true; + + try + { + if (!AdminManager.PlayerHasPermissions(player, Config.AdminBypassFlag)) + return true; + + return player.Team == CsTeam.Terrorist || player.Team == CsTeam.CounterTerrorist; + } + catch + { + return true; + } } private int ConvertHexToColor(string hex) @@ -172,6 +192,7 @@ public void NeedCommand(CCSPlayerController? caller, string clientName) { var players = Utilities.GetPlayers() .Where(p => !p.IsBot && !p.IsHLTV && p.Connected == PlayerConnectedState.PlayerConnected) + .Where(ShouldShowPlayerInList) .Select(p => new { p.PlayerName, p.SteamID }) .ToList(); @@ -294,7 +315,7 @@ private async Task SendEmbedToDiscord(object embed) var payload = new { - content = content, + content, embeds = new[] { embed } };