{TEAMCOLOR}, skull icon in team_cheat, css_tags_reload server command
This commit is contained in:
parent
bc096d5712
commit
c0f571fcaa
1 changed files with 88 additions and 43 deletions
131
CS2-Tags.cs
131
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<Listeners.OnClientPutInServer>(OnClientPutInServer);
|
||||
RegisterListener<Listeners.OnClientAuthorized>(OnClientAuthorized);
|
||||
RegisterEventHandler<EventPlayerSpawn>(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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue