From c6a85e271d35b4152269701d690e63d390dcf93b Mon Sep 17 00:00:00 2001 From: daffyyyy Date: Wed, 29 Nov 2023 00:45:20 +0100 Subject: [PATCH] Probably groups, timer for clantag, ignore more commands --- CS2-Tags.cs | 96 ++++++++++++++++++++++++++++++++++++++++++----------- README.md | 6 ++++ 2 files changed, 83 insertions(+), 19 deletions(-) diff --git a/CS2-Tags.cs b/CS2-Tags.cs index 520de61..98ebbc0 100644 --- a/CS2-Tags.cs +++ b/CS2-Tags.cs @@ -6,9 +6,7 @@ using CounterStrikeSharp.API.Modules.Commands; using CounterStrikeSharp.API.Modules.Entities; using CounterStrikeSharp.API.Modules.Utils; using Newtonsoft.Json.Linq; -using System.Numerics; using System.Reflection; -using static CounterStrikeSharp.API.Core.Listeners; namespace CS2_Tags; public class CS2_Tags : BasePlugin @@ -85,7 +83,7 @@ public class CS2_Tags : BasePlugin if (player == null || !player.IsValid || player.IsBot) return; - SetPlayerClanTag(player); + AddTimer(1.0f, () => SetPlayerClanTag(player)); } private HookResult OnPlayerSpawn(EventPlayerSpawn @event, GameEventInfo info) @@ -93,17 +91,17 @@ public class CS2_Tags : BasePlugin CCSPlayerController? player = @event.Userid; if (player == null || !player.IsValid || player.IsBot) return HookResult.Continue; - SetPlayerClanTag(player); + AddTimer(1.0f, () => SetPlayerClanTag(player)); return HookResult.Continue; } private HookResult OnPlayerChat(CCSPlayerController? player, CommandInfo info) { - if (player == null || !player.IsValid) return HookResult.Continue; + if (player == null || !player.IsValid || info.GetArg(1).Length == 0) return HookResult.Continue; string steamid = new SteamID(player.SteamID).SteamId64.ToString(); - if (info.GetArg(1).StartsWith("!") || info.GetArg(1).StartsWith("/") || info.GetArg(1) == "rtv") return HookResult.Continue; + if (info.GetArg(1).StartsWith("!") || info.GetArg(1).StartsWith("@") || info.GetArg(1).StartsWith("/") || info.GetArg(1).StartsWith(".") || info.GetArg(1) == "rtv") return HookResult.Continue; if (JsonTags != null && JsonTags.TryGetValue("tags", out var tags) && tags is JObject tagsObject) { @@ -130,8 +128,30 @@ public class CS2_Tags : BasePlugin return HookResult.Handled; } + + foreach (var tagKey in tagsObject.Properties()) { + if (tagKey.Name.StartsWith("#")) + { + string group = tagKey.Name; + bool inGroup = AdminManager.PlayerInGroup(player, group); + + if (inGroup) + { + if (tagsObject.TryGetValue(group, out var groupTag) && groupTag is JObject) + { + string prefix = groupTag["prefix"]?.ToString() ?? ""; + string? nickColor = !string.IsNullOrEmpty(groupTag?["nick_color"]?.ToString()) ? groupTag?["nick_color"]?.ToString() : $"{ChatColors.Default}"; + string messageColor = groupTag?["message_color"]?.ToString() ?? $"{ChatColors.Default}"; + + Server.PrintToChatAll(ReplaceTags($" {deadIcon}{prefix}{nickColor}{player.PlayerName}{ChatColors.Default}: {messageColor}{info.GetArg(1)}", player.TeamNum)); + + return HookResult.Handled; + } + } + } + if (tagKey.Name.StartsWith("@")) { string permission = tagKey.Name; @@ -170,10 +190,10 @@ public class CS2_Tags : BasePlugin private HookResult OnPlayerChatTeam(CCSPlayerController? player, CommandInfo info) { - if (player == null || !player.IsValid) return HookResult.Continue; + if (player == null || !player.IsValid || info.GetArg(1).Length == 0) return HookResult.Continue; string steamid = new SteamID(player.SteamID).SteamId64.ToString(); - if (info.GetArg(1).StartsWith("!") || info.GetArg(1).StartsWith("/") || info.GetArg(1) == "rtv") return HookResult.Continue; + if (info.GetArg(1).StartsWith("!") || info.GetArg(1).StartsWith("@") || info.GetArg(1).StartsWith("/") || info.GetArg(1).StartsWith(".") || info.GetArg(1) == "rtv") return HookResult.Continue; if (JsonTags != null && JsonTags.TryGetValue("tags", out var tags) && tags is JObject tagsObject) { @@ -197,6 +217,32 @@ public class CS2_Tags : BasePlugin foreach (var tagKey in tagsObject.Properties()) { + if (tagKey.Name.StartsWith("#")) + { + string group = tagKey.Name; + bool inGroup = AdminManager.PlayerInGroup(player, group); + + if (inGroup) + { + if (tagsObject.TryGetValue(group, out var groupTag) && groupTag is JObject) + { + string prefix = groupTag["prefix"]?.ToString() ?? ""; + string? nickColor = !string.IsNullOrEmpty(groupTag?["nick_color"]?.ToString()) ? groupTag?["nick_color"]?.ToString() : $"{ChatColors.Default}"; + string messageColor = groupTag["message_color"]?.ToString() ?? $"{ChatColors.Default}"; ; + + for (int i = 1; i <= Server.MaxPlayers; i++) + { + CCSPlayerController? p = Utilities.GetPlayerFromIndex(i); + if (p == null || !p.IsValid || p.IsBot || p.TeamNum != player.TeamNum) continue; + + p.PrintToChat(ReplaceTags($" {deadIcon}{TeamName(player.TeamNum)} {ChatColors.Default}{prefix}{nickColor}{player.PlayerName}{ChatColors.Default}: {messageColor}{info.GetArg(1)}", p.TeamNum)); + } + + return HookResult.Handled; + } + } + } + if (tagKey.Name.StartsWith("@")) { string permission = tagKey.Name; @@ -224,6 +270,7 @@ public class CS2_Tags : BasePlugin } } + /* if (tagsObject.TryGetValue("everyone", out var everyoneTag) && everyoneTag is JObject) { string prefix = everyoneTag["prefix"]?.ToString() ?? ""; @@ -235,22 +282,18 @@ public class CS2_Tags : BasePlugin CCSPlayerController? p = Utilities.GetPlayerFromIndex(i); if (p == null || !p.IsValid || p.IsBot || p.TeamNum != player.TeamNum) continue; - p.PrintToChat(ReplaceTags($" {TeamName(player.TeamNum)} {ChatColors.Default}{prefix}{nickColor}{player.PlayerName}{ChatColors.Default}: {messageColor}{info.GetArg(1)}", p.TeamNum)); + p.PrintToChat(ReplaceTags($" {ChatColors.Default}{prefix}{nickColor}{player.PlayerName}{ChatColors.Default}: {messageColor}{info.GetArg(1)}", p.TeamNum)); + + //p.PrintToChat(ReplaceTags($" {TeamName(player.TeamNum)} {ChatColors.Default}{prefix}{nickColor}{player.PlayerName}{ChatColors.Default}: {messageColor}{info.GetArg(1)}", p.TeamNum)); } + return HookResult.Handled; } } - - for (int i = 1; i <= Server.MaxPlayers; i++) - { - CCSPlayerController? p = Utilities.GetPlayerFromIndex(i); - if (p == null || !p.IsValid || p.IsBot || p.TeamNum != player.TeamNum) continue; - - p.PrintToChat(ReplaceTags($" {TeamName(player.TeamNum)} {ChatColors.Default}{player.PlayerName}: {info.GetArg(1)}", p.TeamNum)); + */ } - - return HookResult.Handled; + return HookResult.Continue; } private void SetPlayerClanTag(CCSPlayerController? player) @@ -269,6 +312,21 @@ public class CS2_Tags : BasePlugin foreach (var tagKey in tagsObject.Properties()) { + if (tagKey.Name.StartsWith("#")) + { + string group = tagKey.Name; + bool inGroup = AdminManager.PlayerInGroup(player, group); + + if (inGroup) + { + if (tagsObject.TryGetValue(group, out var groupTag) && groupTag is JObject) + { + player.Clan = groupTag["scoreboard"]?.ToString() ?? ""; + return; + } + } + } + if (tagKey.Name.StartsWith("@")) { string permission = tagKey.Name; @@ -317,7 +375,7 @@ public class CS2_Tags : BasePlugin private string TeamColor(int teamNum) { - string teamColor = ""; + string teamColor; switch (teamNum) { diff --git a/README.md b/README.md index 146dc6c..aa4e4e6 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,12 @@ Adds tags to the server that can be easily edited, tags can be assigned via perm ``` { "tags": { + "#css/admin": { // Permission + "prefix": "{GREEN}[ADMIN]", // Chat prefix + "nick_color": "{RED}", // Nick color + "message_color": "{GOLD}", // Message nick color + "scoreboard": "[ADMIN]" // Scoreboard tag + }, "@css/chat": { // Permission "prefix": "{GREEN}[ADMIN]", // Chat prefix "nick_color": "{RED}", // Nick color