From c0f571fcaa7e3101c4c5f47312030f513d0c4d0c Mon Sep 17 00:00:00 2001 From: daffyyyy Date: Tue, 21 Nov 2023 23:34:52 +0100 Subject: [PATCH] {TEAMCOLOR}, skull icon in team_cheat, css_tags_reload server command --- CS2-Tags.cs | 131 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 88 insertions(+), 43 deletions(-) diff --git a/CS2-Tags.cs b/CS2-Tags.cs index 582f1bd..09c5a4b 100644 --- a/CS2-Tags.cs +++ b/CS2-Tags.cs @@ -1,5 +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; @@ -22,7 +23,8 @@ public class CS2_Tags : BasePlugin { CreateOrLoadJsonFile(ModuleDirectory + "/tags.json"); - RegisterListener(OnClientPutInServer); + RegisterListener(OnClientAuthorized); + RegisterEventHandler(OnPlayerSpawn); AddCommandListener("say", OnPlayerChat); AddCommandListener("say_team", OnPlayerChatTeam); } @@ -70,45 +72,30 @@ public class CS2_Tags : BasePlugin } } - private void OnClientPutInServer(int playerSlot) + [ConsoleCommand("css_tags_reload")] + public void OnReloadConfig(CCSPlayerController? player, CommandInfo info) + { + if (player != null) return; + CreateOrLoadJsonFile(ModuleDirectory + "/tags.json"); + } + + private void OnClientAuthorized(int playerSlot, SteamID steamId) { CCSPlayerController? player = Utilities.GetPlayerFromSlot(playerSlot); if (player == null || !player.IsValid || player.IsBot) return; - string steamid = new SteamID(player.SteamID).SteamId64.ToString(); + SetPlayerClanTag(player); + } - if (JsonTags != null && JsonTags.TryGetValue("tags", out var tags) && tags is JObject tagsObject) - { - if (tagsObject.TryGetValue(steamid, out var playerTag) && playerTag is JObject) - { - player.Clan = playerTag["scoreboard"]?.ToString() ?? ""; - return; - } + private HookResult OnPlayerSpawn(EventPlayerSpawn @event, GameEventInfo info) + { + CCSPlayerController? player = @event.Userid; + if (player == null || !player.IsValid || player.IsBot) return HookResult.Continue; - foreach (var tagKey in tagsObject.Properties()) - { - if (tagKey.Name.StartsWith("@")) - { - string permission = tagKey.Name; - bool hasPermission = AdminManager.PlayerHasPermissions(player, permission); + SetPlayerClanTag(player); - if (hasPermission) - { - if (tagsObject.TryGetValue(permission, out var permissionTag) && permissionTag is JObject) - { - player.Clan = permissionTag["scoreboard"]?.ToString() ?? ""; - return; - } - } - } - } - } - - if (JsonTags != null && JsonTags["tags"]?["everyone"]?["scoreboard"] != null) - { - player.Clan = JsonTags?["tags"]?["everyone"]?["scoreboard"]?.ToString() ?? ""; - } + return HookResult.Continue; } private HookResult OnPlayerChat(CCSPlayerController? player, CommandInfo info) @@ -126,7 +113,7 @@ public class CS2_Tags : BasePlugin string? nickColor = !string.IsNullOrEmpty(playerTag?["nick_color"]?.ToString()) ? playerTag?["nick_color"]?.ToString() : $"{ChatColors.Default}"; string messageColor = playerTag?["message_color"]?.ToString() ?? $"{ChatColors.Default}"; - Server.PrintToChatAll(ReplaceTags($" {prefix}{nickColor}{player.PlayerName}{ChatColors.Default}: {messageColor}{info.GetArg(1)}")); + Server.PrintToChatAll(ReplaceTags($" {prefix}{nickColor}{player.PlayerName}{ChatColors.Default}: {messageColor}{info.GetArg(1)}", player.TeamNum)); /* Temp fix for commands OLD if (info.GetArg(1).StartsWith("!") || info.GetArg(1).StartsWith("/")) @@ -156,7 +143,7 @@ public class CS2_Tags : BasePlugin string? nickColor = !string.IsNullOrEmpty(permissionTag?["nick_color"]?.ToString()) ? permissionTag?["nick_color"]?.ToString() : $"{ChatColors.Default}"; string messageColor = permissionTag?["message_color"]?.ToString() ?? $"{ChatColors.Default}"; - Server.PrintToChatAll(ReplaceTags($" {prefix}{nickColor}{player.PlayerName}{ChatColors.Default}: {messageColor}{info.GetArg(1)}")); + Server.PrintToChatAll(ReplaceTags($" {prefix}{nickColor}{player.PlayerName}{ChatColors.Default}: {messageColor}{info.GetArg(1)}", player.TeamNum)); return HookResult.Handled; } @@ -170,13 +157,12 @@ public class CS2_Tags : BasePlugin string? nickColor = !string.IsNullOrEmpty(everyoneTag?["nick_color"]?.ToString()) ? everyoneTag?["nick_color"]?.ToString() : $"{ChatColors.Default}"; string messageColor = everyoneTag?["message_color"]?.ToString() ?? $"{ChatColors.Default}"; - Server.PrintToChatAll(ReplaceTags($" {prefix}{nickColor}{player.PlayerName}{ChatColors.Default}: {messageColor}{info.GetArg(1)}")); + Server.PrintToChatAll(ReplaceTags($" {prefix}{nickColor}{player.PlayerName}{ChatColors.Default}: {messageColor}{info.GetArg(1)}", player.TeamNum)); return HookResult.Handled; } } - return HookResult.Continue; } @@ -189,6 +175,7 @@ public class CS2_Tags : BasePlugin if (JsonTags != null && JsonTags.TryGetValue("tags", out var tags) && tags is JObject tagsObject) { + string deadIcon = !player.PawnIsAlive ? $"{ChatColors.White}☠ {ChatColors.Default}" : ""; if (tagsObject.TryGetValue(steamid, out var playerTag) && playerTag is JObject) { string prefix = playerTag["prefix"]?.ToString() ?? ""; @@ -200,7 +187,7 @@ 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.PrintToChat(ReplaceTags($" {deadIcon}{TeamName(player.TeamNum)} {ChatColors.Default}{prefix}{nickColor}{player.PlayerName}{ChatColors.Default}: {messageColor}{info.GetArg(1)}", p.TeamNum)); } return HookResult.Handled; @@ -226,7 +213,7 @@ 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.PrintToChat(ReplaceTags($" {deadIcon}{TeamName(player.TeamNum)} {ChatColors.Default}{prefix}{nickColor}{player.PlayerName}{ChatColors.Default}: {messageColor}{info.GetArg(1)}", p.TeamNum)); } return HookResult.Handled; @@ -246,12 +233,11 @@ 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.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++) @@ -259,12 +245,51 @@ 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}{player.PlayerName}: {info.GetArg(1)}")); + p.PrintToChat(ReplaceTags($" {TeamName(player.TeamNum)} {ChatColors.Default}{player.PlayerName}: {info.GetArg(1)}", p.TeamNum)); } return HookResult.Handled; } + private void SetPlayerClanTag(CCSPlayerController? player) + { + if (player == null || !player.IsValid || player.IsBot) return; + + string steamid = new SteamID(player.SteamID).SteamId64.ToString(); + + if (JsonTags != null && JsonTags.TryGetValue("tags", out var tags) && tags is JObject tagsObject) + { + if (tagsObject.TryGetValue(steamid, out var playerTag) && playerTag is JObject) + { + player.Clan = playerTag["scoreboard"]?.ToString() ?? ""; + return; + } + + foreach (var tagKey in tagsObject.Properties()) + { + if (tagKey.Name.StartsWith("@")) + { + string permission = tagKey.Name; + bool hasPermission = AdminManager.PlayerHasPermissions(player, permission); + + if (hasPermission) + { + if (tagsObject.TryGetValue(permission, out var permissionTag) && permissionTag is JObject) + { + player.Clan = permissionTag["scoreboard"]?.ToString() ?? ""; + return; + } + } + } + } + + if (JsonTags != null && JsonTags["tags"]?["everyone"]?["scoreboard"] != null) + { + player.Clan = JsonTags?["tags"]?["everyone"]?["scoreboard"]?.ToString() ?? ""; + } + } + } + private string TeamName(int teamNum) { string teamName = ""; @@ -288,7 +313,27 @@ public class CS2_Tags : BasePlugin return teamName; } - private string ReplaceTags(string message) + private string TeamColor(int teamNum) + { + string teamColor = ""; + + switch (teamNum) + { + case 2: + teamColor = $"{ChatColors.Gold}"; + break; + case 3: + teamColor = $"{ChatColors.Blue}"; + break; + default: + teamColor = ""; + break; + } + + return teamColor; + } + + private string ReplaceTags(string message, int teamNum = 0) { if (message.Contains('{')) { @@ -301,7 +346,7 @@ public class CS2_Tags : BasePlugin modifiedValue = modifiedValue.Replace(pattern, field.GetValue(null)!.ToString(), StringComparison.OrdinalIgnoreCase); } } - return modifiedValue; + return modifiedValue.Replace("{TEAMCOLOR}", TeamColor(teamNum)); } return message;