forked from AdventureTimeSS14/space_station_ADT
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ADMIN TOOL] new command "lslawset_get" (AdventureTimeSS14#817)
## Описание PR <!-- Что вы изменили в этом пулл реквесте? --> Просто выводит список законов ## Почему / Баланс <!-- Почему оно было изменено? Ссылайтесь на любые обсуждения или вопросы здесь. Пожалуйста, обсудите, как это повлияет на игровой баланс. --> **Ссылка на публикацию в Discord** - [Заказы-разработка](https://discord.com/channels/901772674865455115/1308859709700313228) ## Медиа ![image](https://github.com/user-attachments/assets/e24b047d-b701-41d8-89f0-25d73ebee254) ## Требования <!-- В связи с наплывом ПР'ов нам необходимо убедиться, что ПР'ы следуют правильным рекомендациям. Пожалуйста, уделите время прочтению, если делаете пулл реквест (ПР) впервые. Отметьте поля ниже, чтобы подтвердить, что Вы действительно видели их (поставьте X в скобках, например [X]): --> - [x] Я прочитал(а) и следую [Руководство по созданию пулл реквестов](https://docs.spacestation14.com/en/general-development/codebase-info/pull-request-guidelines.html). Я понимаю, что в противном случае мой ПР может быть закрыт по усмотрению мейнтейнера. - [x] Я добавил скриншоты/видео к этому пулл реквесту, демонстрирующие его изменения в игре, **или** этот пулл реквест не требует демонстрации в игре ## Критические изменения <!-- Перечислите все критические изменения, включая изменения пространства имён, публичных классов/методов/полей, переименования прототипов, и предоставьте инструкции по их исправлению. --> **Чейнджлог** no cl no fun
- Loading branch information
1 parent
9a2d133
commit 946cff8
Showing
4 changed files
with
87 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
82 changes: 82 additions & 0 deletions
82
Content.Server/ADT/Administration/Commands/ListLawsSetGetCommand.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
using Content.Server.Administration; | ||
using Content.Shared.Administration; | ||
using Robust.Server.Player; | ||
using Robust.Shared.Console; | ||
using System.Diagnostics.CodeAnalysis; | ||
using Content.Shared.Silicons.Laws.Components; | ||
|
||
namespace Content.Server.ADT.Administration.Commands; | ||
|
||
[AdminCommand(AdminFlags.Logs)] | ||
public sealed class ListLawsSetGetCommand : LocalizedCommands | ||
{ | ||
[Dependency] private readonly IPlayerManager _players = default!; | ||
[Dependency] private readonly IEntityManager _entManager = default!; | ||
|
||
public override string Command => "lslawset_get"; | ||
|
||
public override void Execute(IConsoleShell shell, string argStr, string[] args) | ||
{ | ||
var player = shell.Player; | ||
if (player == null) | ||
{ | ||
shell.WriteError(LocalizationManager.GetString("shell-target-player-does-not-exist")); | ||
return; | ||
} | ||
// Парсим UID | ||
if (!TryParseUid(args[0], shell, _entManager, out var entityUid)) | ||
return; | ||
if (!_entManager.TryGetComponent<SiliconLawProviderComponent>(entityUid.Value, out var componentUid)) | ||
{ | ||
shell.WriteLine(Loc.GetString("cmd-lslawset_get-error-component")); | ||
return; | ||
} | ||
|
||
var listLaws = componentUid?.Lawset?.Laws; | ||
// Проверяем, есть ли законы | ||
if (listLaws != null) | ||
{ | ||
// Перебираем все законы и выводим их ID в консоль | ||
foreach (var law in listLaws) | ||
{ | ||
shell.WriteLine($"Law {law.LawString}: {Loc.GetString(law.LawString)}"); | ||
} | ||
} | ||
else | ||
{ | ||
shell.WriteLine("Нет законов для данной сущности."); | ||
} | ||
} | ||
|
||
private bool TryParseUid(string str, IConsoleShell shell, | ||
IEntityManager entMan, [NotNullWhen(true)] out EntityUid? entityUid) | ||
{ | ||
if (NetEntity.TryParse(str, out var entityUidNet) && _entManager.TryGetEntity(entityUidNet, out entityUid) && entMan.EntityExists(entityUid)) | ||
return true; | ||
|
||
if (_players.TryGetSessionByUsername(str, out var session) && session.AttachedEntity.HasValue) | ||
{ | ||
entityUid = session.AttachedEntity.Value; | ||
return true; | ||
} | ||
|
||
if (session == null) | ||
shell.WriteError(Loc.GetString("cmd-rename-not-found", ("target", str))); | ||
else | ||
shell.WriteError(Loc.GetString("cmd-rename-no-entity", ("target", str))); | ||
|
||
entityUid = EntityUid.Invalid; | ||
return false; | ||
} | ||
|
||
public override CompletionResult GetCompletion(IConsoleShell shell, string[] args) | ||
{ | ||
if (args.Length == 1) | ||
{ | ||
return CompletionResult.FromHintOptions(CompletionHelper.SessionNames(), LocalizationManager.GetString("shell-argument-username-hint")); | ||
} | ||
|
||
return CompletionResult.Empty; | ||
} | ||
} | ||
|
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters