From 06a7f81336912c66aae2928a0134443e76242638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Schr=C3=B6dinger?= <132720404+Schrodinger71@users.noreply.github.com> Date: Wed, 1 Jan 2025 17:48:57 +0300 Subject: [PATCH] =?UTF-8?q?[Admin]=20=D0=A1=D0=B8=D0=BD=D1=85=D1=80=D0=BE?= =?UTF-8?q?=D0=BD=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D1=86=D0=B2=D0=B5?= =?UTF-8?q?=D1=82=D0=B0=20=D0=B8=D0=BC=D0=B5=D0=BD=D0=B8=20=D0=B0=D0=B4?= =?UTF-8?q?=D0=BC=D0=B8=D0=BD=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=20=D1=81=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=D0=BA=D0=B0=D0=BC=D0=B8=20OOC=20=D1=87=D0=B0=D1=82=D0=B0?= =?UTF-8?q?=20(#929)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Описание PR Теперь в админ-ахелпе и OOC чате используется одинаковый цвет для имени администратора, который был установлен через команду `setadminooc`. Цвет имени администратора в чате теперь синхронизирован с цветом, заданным в настройках OOC. ## Почему / Баланс Это изменение улучшает визуальное восприятие администраторов в игре. Ранее, имя администратора в админ-ахелпе не использовало его индивидуальный цвет, установленный в `setadminooc`. ## Техническая информация Внесены изменения в код для синхронизации цвета имени администратора в админ-ахелпе с настройкой цвета, установленной через команду `setadminooc`. Цвет теперь задается с учетом предпочтений администратора, и если цвет не установлен, применяется стандартный красный. ## Медиа ![image](https://github.com/user-attachments/assets/0fc778f3-a0dc-4fcd-bd9a-613f17d185c4) ![image](https://github.com/user-attachments/assets/2a104f59-620b-4c90-b12e-0ef06b46c8b0) ## Требования - [x] Я прочитал(а) и следую [Руководство по созданию пулл реквестов](https://docs.spacestation14.com/en/general-development/codebase-info/pull-request-guidelines.html). Я понимаю, что в противном случае мой ПР может быть закрыт по усмотрению мейнтейнера. - [x] Я добавил скриншоты/видео к этому пулл реквесту, демонстрирующие его изменения в игре, **или** этот пулл реквест не требует демонстрации в игре ## Критические изменения - Нет критических изменений. `Content.Server\Administration\Systems\BwoinkSystem.cs` затронут только этот файл, все изменения подписаны. **Чейнджлог** :cl: Шрёдька - add: Теперь используется цвет, установленный для администратора через команду setadminooc, для его ника в админ-ахелпе. --- .../Administration/Systems/BwoinkSystem.cs | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/Content.Server/Administration/Systems/BwoinkSystem.cs b/Content.Server/Administration/Systems/BwoinkSystem.cs index 7a47755db9d..59080f1cfe5 100644 --- a/Content.Server/Administration/Systems/BwoinkSystem.cs +++ b/Content.Server/Administration/Systems/BwoinkSystem.cs @@ -25,6 +25,7 @@ using Robust.Shared.Player; using Robust.Shared.Timing; using Robust.Shared.Utility; +using Content.Server.Preferences.Managers; namespace Content.Server.Administration.Systems { @@ -43,6 +44,7 @@ public sealed partial class BwoinkSystem : SharedBwoinkSystem [Dependency] private readonly IAfkManager _afkManager = default!; [Dependency] private readonly IServerDbManager _dbManager = default!; [Dependency] private readonly PlayerRateLimitManager _rateLimit = default!; + [Dependency] private readonly IServerPreferencesManager _preferencesManager = default!; [GeneratedRegex(@"^https://discord\.com/api/webhooks/(\d+)/((?!.*/).*)$")] private static partial Regex DiscordRegex(); @@ -669,7 +671,24 @@ protected override void OnBwoinkTextMessage(BwoinkTextMessage message, EntitySes } else if (senderAdmin is not null && senderAdmin.HasFlag(AdminFlags.Adminhelp)) { - bwoinkText = $"[color=red]{adminPrefix}{senderSession.Name}[/color]"; + // ADT-Tweak-Start: Теперь цвета установленные setadminooc также будут красить ник с префиксом в ф1 + Color? colorOverride = null; + var prefs = _preferencesManager.GetPreferences(senderSession.UserId); + colorOverride = prefs.AdminOOCColor; + if (colorOverride.HasValue) + { + var colorString = $"#" + + $"{(int)(colorOverride.Value.R * 255):X2}" + + $"{(int)(colorOverride.Value.G * 255):X2}" + + $"{(int)(colorOverride.Value.B * 255):X2}" + + $"{(int)(colorOverride.Value.A * 255):X2}"; // Color -> переводим в #RGBAFORMAT + bwoinkText = $"[color={colorString}]{adminPrefix}{senderSession.Name}[/color]"; + } + else + { + bwoinkText = $"[color=red]{adminPrefix}{senderSession.Name}[/color]"; + } + // ADT-Tweak-End } else {