Skip to content

Commit

Permalink
[ADMIN TOOL] new command "lslawset_get" (AdventureTimeSS14#817)
Browse files Browse the repository at this point in the history
## Описание 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
Schrodinger71 authored Nov 21, 2024
1 parent 9a2d133 commit 946cff8
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ public sealed class EchoChatCommand : LocalizedEntityCommands
[Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly ChatSystem _chatSystem = default!;
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
[Dependency] private readonly IAdminManager _adminManager = default!;

public override string Command => "echo_chat";

Expand Down
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;
}
}

5 changes: 5 additions & 0 deletions Resources/Locale/ru-RU/ADT/administration/commands.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,8 @@ cmd-admin_toggle-error-args = Указанный пользователь не
# Команда: export
cmd-export-only-yml = Указанный файл должен иметь расширение .yml
cmd-export-help = Экспортирует на ваш компьютер указанный .yml файл
# Команда: lslawset_get
cmd-lslawset_get-desc = Выводит список законов у сущности которая имеет SiliconLawProviderComponent.
cmd-lslawset_get-error-component = Сущность не имеет SiliconLawProviderComponent.
cmd-lslawset_get-help = Использование: lslawset_get <userName/Uid>

0 comments on commit 946cff8

Please sign in to comment.