zio fork 1.8.2b-zio7: guardian rank tag, ranks on private messages

#rank/guardian shows as G, after the staff ranks so a staff rank wins. css_psay from a player
reads "(PM) [RANK] name: message" ("(PM) name: message" without a rank group); console's is
unchanged. New lang keys sa_psay_template and sa_psay_template_norank.
This commit is contained in:
Astra 2026-09-28 19:50:02 +01:00
parent e2b6670c5a
commit 2ade27ce1b
5 changed files with 19 additions and 5 deletions

View file

@ -22,7 +22,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
public override string ModuleName => "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)"); public override string ModuleName => "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)");
public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)"; public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)";
public override string ModuleAuthor => "daffyy"; public override string ModuleAuthor => "daffyy";
public override string ModuleVersion => "1.8.2b-zio6"; public override string ModuleVersion => "1.8.2b-zio7";
public override void Load(bool hotReload) public override void Load(bool hotReload)
{ {

View file

@ -128,9 +128,16 @@ public partial class CS2_SimpleAdmin
var utf8BytesString = Encoding.UTF8.GetBytes(message); var utf8BytesString = Encoding.UTF8.GetBytes(message);
var utf8String = Encoding.UTF8.GetString(utf8BytesString); var utf8String = Encoding.UTF8.GetString(utf8BytesString);
// zio: from a player, "(PM) [RANK] name: message".
var rank = caller == null ? null : Helper.GetStaffRankTag(caller);
var line = caller == null || _localizer == null
? $"({callerName}) {utf8String}".ReplaceColorTags()
: rank == null
? _localizer["sa_psay_template_norank", callerName, utf8String.Trim()]
: _localizer["sa_psay_template", rank, callerName, utf8String.Trim()];
playersToTarget.ForEach(player => playersToTarget.ForEach(player =>
{ {
player.PrintToChat($"({callerName}) {utf8String}".ReplaceColorTags()); player.PrintToChat(line);
}); });
command.ReplyToCommand($" Private message sent!"); command.ReplyToCommand($" Private message sent!");

View file

@ -144,7 +144,8 @@ internal static class Helper
return string.Join(" ", parts); return string.Join(" ", parts);
} }
// zio: staff rank groups, highest first, and their chat abbreviations. // zio: rank groups, highest first, and their chat abbreviations. Guardian (VIP) is last, so a
// staff rank wins.
private static readonly (string Group, string Tag)[] StaffRanks = private static readonly (string Group, string Tag)[] StaffRanks =
[ [
("#rank/owner", "O"), ("#rank/owner", "O"),
@ -154,9 +155,10 @@ internal static class Helper
("#rank/mod", "M"), ("#rank/mod", "M"),
("#rank/trialmod", "TM"), ("#rank/trialmod", "TM"),
("#rank/helper", "H"), ("#rank/helper", "H"),
("#rank/guardian", "G"),
]; ];
// zio: the player's highest staff rank abbreviation, or null if they're in no rank group. // zio: the player's highest rank abbreviation, or null if they're in no rank group.
internal static string? GetStaffRankTag(CCSPlayerController player) internal static string? GetStaffRankTag(CCSPlayerController player)
{ {
var groups = AdminManager.GetPlayerAdminData(new SteamID(player.SteamID))?.Groups; var groups = AdminManager.GetPlayerAdminData(new SteamID(player.SteamID))?.Groups;

View file

@ -146,6 +146,8 @@
"sa_staffchat_template_player": "{default}>[{purple}STAFF{default}] {purple}{0}{default}: {purple}{1}{default}", "sa_staffchat_template_player": "{default}>[{purple}STAFF{default}] {purple}{0}{default}: {purple}{1}{default}",
"sa_staffsay_template": "[{lime}{0}{default}] {darkred}{1}{default}: {red}{2}{default}", "sa_staffsay_template": "[{lime}{0}{default}] {darkred}{1}{default}: {red}{2}{default}",
"sa_staffsay_template_norank": "{darkred}{0}{default}: {red}{1}{default}", "sa_staffsay_template_norank": "{darkred}{0}{default}: {red}{1}{default}",
"sa_psay_template": "{default}(PM) [{lime}{0}{default}] {yellow}{1}{default}: {grey}{2}{default}",
"sa_psay_template_norank": "{default}(PM) {yellow}{0}{default}: {grey}{1}{default}",
"sa_adminchat_template_player": "{SILVER}(PLAYER) {lightred}{0}{default}: {lightred}{1}{default}", "sa_adminchat_template_player": "{SILVER}(PLAYER) {lightred}{0}{default}: {lightred}{1}{default}",
"sa_discord_log_command": "**{0}** issued command `{1}` on server `HOSTNAME`", "sa_discord_log_command": "**{0}** issued command `{1}` on server `HOSTNAME`",
"sa_menu_pluginsmanager_loaded": "{lime}Enabled {default}plugin {lime}{0}", "sa_menu_pluginsmanager_loaded": "{lime}Enabled {default}plugin {lime}{0}",

View file

@ -15,12 +15,15 @@ from the `build-1.8.2b` tag). Changes, all marked `zio:` in the code:
that share their IP, don't apply to them; a ban on their own SteamID still does. `@css/root` that share their IP, don't apply to them; a ban on their own SteamID still does. `@css/root`
has it, as it has every `@css` flag. has it, as it has every `@css` flag.
- Staff chat shows the sender's rank, from their highest `#rank/...` group (O, SA, A, TA, M, TM, - Staff chat shows the sender's rank, from their highest `#rank/...` group (O, SA, A, TA, M, TM,
H for helper): `@message` in team chat and `css_asay` read `>[STAFF][RANK] name: message`, and H for helper, G for guardian): `@message` in team chat and `css_asay` read
`>[STAFF][RANK] name: message`, and
`@message` in all chat and `css_say` from a player read `[RANK] name: message` (`name: message` `@message` in all chat and `css_say` from a player read `[RANK] name: message` (`name: message`
if they have no rank group). A non-staff player's `@message` in team chat reads if they have no rank group). A non-staff player's `@message` in team chat reads
`>[STAFF] name: message`, all in purple. Console's `css_say`/`css_asay` are unchanged. New lang keys `>[STAFF] name: message`, all in purple. Console's `css_say`/`css_asay` are unchanged. New lang keys
`sa_staffchat_template`, `sa_staffsay_template`, their `_norank` variants and `sa_staffchat_template`, `sa_staffsay_template`, their `_norank` variants and
`sa_staffchat_template_player`, in `lang/en.json` only. `sa_staffchat_template_player`, in `lang/en.json` only.
- `css_psay` from a player reads `(PM) [RANK] name: message` (`(PM) name: message` without a rank
group); console's is unchanged. Lang keys `sa_psay_template` and `sa_psay_template_norank`.
Publish with `FORGEJO_TOKEN=... ./release.sh v<ModuleVersion>` (ModuleVersion is `1.8.2b-zioN`). Publish with `FORGEJO_TOKEN=... ./release.sh v<ModuleVersion>` (ModuleVersion is `1.8.2b-zioN`).
It rebuilds from the committed source and uploads `SimpleAdmin-<tag>.tar.gz` to git.zio.sh It rebuilds from the committed source and uploads `SimpleAdmin-<tag>.tar.gz` to git.zio.sh