zio fork 1.8.2b-zio16: backport unban, rename and css_history from upstream 1.9.0
From upstream 530f603: - css_unban updates the ban cache at once (and clears the engine banid with UnlockedCommands) instead of waiting up to a minute for the cache refresh. - css_prename is saved in sa_renames (migration 017) and re-applied on connect and name change, so it survives restarts. css_rename from a hidden admin renames again. - New css_history command and Players > History menu entry. Commands missing from an existing Commands.json are registered under their default name. - Migrations are copied with a glob, so 017 reaches the build output. Upstream's admin-loading changes, css_say change and css_penalties fix are left out.
This commit is contained in:
parent
8bec658db4
commit
71d51d7b92
35 changed files with 539 additions and 143 deletions
|
|
@ -30,6 +30,7 @@ public abstract class BasicMenu
|
|||
manager.RegisterMenu("players", "mute", "sa_mute", CreateMuteMenu, "@css/chat", "css_mute");
|
||||
manager.RegisterMenu("players", "silence", "sa_silence", CreateSilenceMenu, "@css/chat", "css_silence");
|
||||
manager.RegisterMenu("players", "team", "sa_team_force", CreateForceTeamMenu, "@css/kick", "css_team");
|
||||
manager.RegisterMenu("players", "history", "sa_history", CreateHistoryMenu, "@css/kick", "css_history");
|
||||
|
||||
// Server category menus - using translation keys
|
||||
manager.RegisterMenu("server", "plugins", "sa_menu_pluginsmanager_title", CreatePluginsMenu, "@css/root");
|
||||
|
|
@ -128,6 +129,62 @@ public abstract class BasicMenu
|
|||
return slayMenu.WithBackButton();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates the penalty history menu: pick an online player, then one entry per past penalty.
|
||||
/// Selecting an entry prints its full details to the admin's console.
|
||||
/// </summary>
|
||||
/// <param name="admin">The admin player opening the menu.</param>
|
||||
/// <returns>A MenuBuilder instance for the history menu.</returns>
|
||||
private static MenuBuilder CreateHistoryMenu(CCSPlayerController admin)
|
||||
{
|
||||
var localizer = CS2_SimpleAdmin._localizer;
|
||||
var historyMenu = new MenuBuilder("sa_history", admin, localizer);
|
||||
|
||||
var players = Helper.GetValidPlayers().Where(p => !p.IsBot && admin.CanTarget(p));
|
||||
|
||||
foreach (var player in players)
|
||||
{
|
||||
var playerName = player.PlayerName.Length > 26 ? player.PlayerName[..26] : player.PlayerName;
|
||||
historyMenu.AddOption(playerName, _ =>
|
||||
{
|
||||
var steamId = player.SteamID;
|
||||
var name = player.PlayerName;
|
||||
var adminSteamId = admin.SteamID;
|
||||
|
||||
// The list is built after the DB round trip, so it is opened from the world update rather than returned here
|
||||
Task.Run(async () =>
|
||||
{
|
||||
var rows = await CS2_SimpleAdmin.PlayerManager.GetPenaltyHistory(steamId);
|
||||
await Server.NextWorldUpdateAsync(() =>
|
||||
{
|
||||
// The slot may have been reused by another player while the query ran
|
||||
if (!admin.IsValid || admin.SteamID != adminSteamId) return;
|
||||
|
||||
if (rows.Count == 0)
|
||||
{
|
||||
CS2_SimpleAdmin.Instance.PrintHistory(admin.PrintToConsole, name, steamId, rows);
|
||||
return;
|
||||
}
|
||||
|
||||
var list = new MenuBuilder("sa_history", admin, localizer);
|
||||
foreach (var row in rows)
|
||||
{
|
||||
var active = (string)row.status == "ACTIVE";
|
||||
var label = $"[{(active ? $"{ChatColors.LightRed}X" : $"{ChatColors.Lime}✔️")}{ChatColors.Default}] {(string)row.type} {(string)row.reason}";
|
||||
list.AddOption(label.Length > 40 ? label[..40] : label,
|
||||
_ => CS2_SimpleAdmin.Instance.PrintHistory(admin.PrintToConsole, name, steamId, [row]));
|
||||
}
|
||||
|
||||
// Built standalone, so the back button must be wired to the player list explicitly
|
||||
list.WithBackAction(historyMenu.OpenMenu).OpenMenu(admin);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return historyMenu.WithBackButton();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates menu for kicking players with reason selection.
|
||||
/// </summary>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue