While GroupVerify has a clan tag set (css_gv_clantag or the web panel), players without a rank tag get it on the scoreboard if they're verified, and no tag at all if they aren't. Staff keep their rank tag either way. With no clan tag, or GroupVerify off or missing, nothing changes; clearing it gives players their own tags back. Tags update as soon as verification or the clan tag changes (OnVerifiedChanged, OnClanTagChanged). GroupVerifyApi is a compile-only reference (lib/), optional at runtime. Also (zio5, not released on its own): the scoreboard spells ranks in capitals (OWNER, S.ADMIN, ADMIN, ...) and chat prefixes use SimpleAdmin's staff chat rank names ([Mod], [S.Admin], ...).
5.6 KiB
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-zio6 now).