| .github | ||
| lib | ||
| .gitattributes | ||
| .gitignore | ||
| CS2-Tags.cs | ||
| CS2-Tags.csproj | ||
| LICENSE | ||
| README.md | ||
| release.sh | ||
| VerifyLink.cs | ||
CS2-Tags
Our fork of daffyyyy/CS2-Tags: chat prefixes, name/message colours and scoreboard (clan) tags, assigned by SteamID64, admin group or permission. Built for CounterStrikeSharp 1.0.375 (net10.0) and meant to run alongside CS2-SimpleAdmin.
Changes from upstream 1.0.4c
- Targets net10.0 / CSS 1.0.375. Uses System.Text.Json, so Newtonsoft.Json no longer ships with it.
- Config moved to
configs/plugins/CS2-Tags/tags.json. The default file uses our SimpleAdmin rank groups. Comments and trailing commas are allowed. A broken file is logged and the previous tags stay in use. - Scoreboard tags call
SetStateChangedonm_szClanso clients are told about the change. - Colour tags like
{RED}are only expanded in the config's strings. Players can no longer colour their own chat by typing them. - An empty
nick_colormeans the team colour (like normal chat), not whatever colour the prefix ended on. - A tag with an empty
prefix,nick_colorandmessage_colorleaves that player's chat alone (the game prints it), in both all and team chat. The oldteam_chatkey is gone. css_tags_reloadworks from the server console and for@css/rootadmins, and reapplies scoreboard tags straight away. Hot reload applies tags to players already connected.- Verification tags from GroupVerify (see below).
- Removed
css_tag_mute/css_tag_unmuteand the@team-chat admin chat. CS2-SimpleAdmin already does both, and its catch-all command listener runs first. CSS always runs those before per-command listeners, so gagged players' messages never reach this plugin.
Configuration
addons/counterstrikesharp/configs/plugins/CS2-Tags/tags.json, written on first load with a tag
for each of our SimpleAdmin rank groups. The chat prefixes are the same rank tags SimpleAdmin uses in
staff chat (O, S.Admin, Admin, T.Admin, Mod, T.Mod, Helper, Guardian): [Mod] name: message,
with a white [ ], lime rank and team-coloured name. The scoreboard shows OWNER, S.ADMIN, ADMIN,
T.ADMIN, MOD, T.MOD, HELPER and GUARDIAN (CS2 adds the brackets itself). An example with other
kinds of key:
{
"tags": {
"76561198000000000": { "prefix": "{Magenta}[Dev]", "nick_color": "", "message_color": "", "scoreboard": "Dev" },
"#rank/owner": { "prefix": "{Default}[{Lime}O{Default}]", "nick_color": "", "message_color": "", "scoreboard": "OWNER" },
"#rank/mod": { "prefix": "{Default}[{Lime}Mod{Default}]", "nick_color": "", "message_color": "", "scoreboard": "MOD" },
"@css/vip": { "prefix": "{Gold}[VIP]", "nick_color": "", "message_color": "", "scoreboard": "VIP" },
"everyone": { "prefix": "", "nick_color": "", "message_color": "", "scoreboard": "" }
}
}
Each player gets exactly one tag, picked in this order:
- A SteamID64 key matching the player.
- The first
#groupor@permissionkey the player matches, in file order. Put higher ranks first.@css/rootpasses every@css/...check, so owners match any permission key. everyone, if present.
Fields (all optional, empty means "not set"):
prefix- shown before the name in chat.nick_color/message_color- colour tags; empty means team colour / default.scoreboard- clan tag on the scoreboard, without brackets (CS2 adds them); empty leaves the player's own clan tag.
The optional chat section sets the labels CS2-Tags adds to the chat lines it prints (only for
players whose tag changes their chat). Leave a key out for its default, or set it to "" to drop
the label:
"chat": {
"dead": "{White}☠", // before a dead player's line
"team_t": "{Yellow}(T)", // start of team chat, per team
"team_ct": "{Blue}(CT)",
"team_spec": "(SPEC)",
"team_none": "(NONE)"
}
Colours: any ChatColors field name in braces, case-insensitive, e.g. {Red}, {LightBlue},
{Gold}, {Grey}, plus {TEAMCOLOR}.
Group membership comes from CS2-SimpleAdmin (css_addadmin ... -g, css_addgroup, then
css_reloadadmins). After changing ranks or tags.json, run css_tags_reload to reapply
scoreboard tags without waiting for a respawn.
Verified players' clan tag (GroupVerify)
When GroupVerify (plugins/GroupVerify) is installed and has a clan tag set (css_gv_clantag,
or the web panel's Verification page), players without a rank tag get it in place of their own
Steam group tag:
| verified | not verified | |
|---|---|---|
a scoreboard tag from tags.json |
their rank tag | their rank tag |
| everyone else | the clan tag | no tag at all |
Staff keep their rank tag either way. With no clan tag set, GroupVerify turned off or not installed, everyone else keeps their own tag, as before; turning the clan tag off puts back the tag each player had. Tags update as soon as someone's verification or the clan tag changes.
GroupVerify's API is a compile-only reference (lib/GroupVerifyApi.dll, a copy of
plugins/GroupVerify's build; GroupVerify installs the real one in shared/GroupVerifyApi).
CS2-Tags loads without it.
Commands
css_tags_reload(@css/rootor server console) - reloadtags.jsonand reapply scoreboard tags.
Building and releasing
cd plugins/CS2-Tags && ../../build.sh # output in compiled/CS2-Tags/
FORGEJO_TOKEN=... ./release.sh v<ModuleVersion>
release.sh rebuilds from the committed source and publishes CS2-Tags-<tag>.tar.gz, laid out
like game/csgo/, to https://git.zio.sh/cs2/CS2-Tags. The tag must equal v<ModuleVersion>
(v1.0.4c-zio7 now).