Поваренная книга админа

Данная статья посвящена всяким полезностям для админов.

Консоль открывается по клавише ``` (`ё`).

Переход между состояниями админа и простого игрока с помощью команд:

* `deadmin` убирает с вас права и делает обычным игроком;
* `readmin` возвращает вам права администратора.

`setadminooc #FFFFFF` устанавливает цвет вашему нику, который будет виден в чате OOC.

## Отыгрыш ЦК

### Установка кодов угроз

Позволяет менять код на станции и блокировать его смену персоналом с консоли связи:

`setalertlevel <ID кода> [заблокирована ли возможность сменить ("true" или "false")]`

ID кодов:

* `green` - зелёный;
* `blue` - синий;
* `yellow` - жёлтый;
* `violet` - фиолетовый;
* `red` - красный;
* `gamma` - гамма;
* `delta` - дельта;
* `epsilon` - эпсилон.

Значения кодов см. Стандартные\_Рабочие\_Процедуры#Уровни\_угрозы.

### Эвакуационный шаттл

* `callshuttle #`, где `#` - кол-во минут до шаттла, вызывает эвакуационный шаттл.
* `dockemergencyshuttle` мгновенно стыкует эвакуационный шаттл к станции.

## Раунд

`customvote <вопрос> <ответ1> <ответ2> ... <ответN>` - создаёт голосование с заданными параметрами, которое видно и в раунде, и в лобби.

`delaystart [seconds]` - ставит старт раунда на паузу в лобби. Если указан аргумент, то откладывает старт на указанное количество секунд.

### Режимы игры

Существующие режимы игры:

* Extended
* Secret
* Sandbox
* Traitor
* Nukeops
* Zombie
* Pirates
* Deathmatch

`setgamepreset` устанавливает режим следующего раунда.

`forcegamepreset` устанавливает режим и мгновенно запускает раунд.

#### Внутриигровые ивенты

Понятия игровых режимов и игровых ивентов тесно связаны (почему-то), поэтому вызывать их можно через команды тоже...

`addgamerule <rules>` добавляет режим или ивент к следующему или идущему раунду.

`endgamerule <rule>` останавливает текущий в игре ивент.

Список ID событий:

* `BasicStationEventScheduler` - спавнер редких игровых ивентов. Стоит во всех режимах игры кроме выживания.
* `RampingStationEventScheduler` - спавнер частых игровых ивентов для режима выживания.
* `Secret` - режим игры "Секрет"
* `DeathMatch` - режим игры "Все против всех".
* `NukeOps` - режим игры ядерных оперативников - спавнит пять нюкеров и их базу.
* `Pirates` - режим игры "Пираты" - создаёт шаттл с пиратами, пиратов по хорошему переспавнить и сделать через Уристов, сломаны.
* `Sandbox` - режим игры "Песочница", игроки имеют права спавнить энтити/декали/тайлы.
* `Suspicion` - TTT - Все вооружены, среди вооруженных есть предатели, задача не-предателей найти их и убить.
* `TraitorDeathMatch` - режим игры, резня агентов.
* `Zombie` - режим игры "Зомби".
* `VentClog` выпускает жидкости из скрубберов.
* `PowerGridCheck` выключает свет на неопределённый срок.
* `FalseAlarm` - ивент, создающий фальшивые обьявления о игровых ивентах.
* `BluespaceArtifact` создаёт рядом со станции/На ней артефакт.
* `BreakerFlip` отключает в некоторых местах ЛКП.
* `DiseaseOutbreak` выпускает рандомную болезнь рядом с игроком.
* `AnomalySpawn` создаёт аномалию.
* `BureaucraticError` - бюрократическая ошибка.
* `GasLeak` создаёт в рандомном месте рандомный газ.
* `KudzuGrowth` - кудзу.
* `MeteorSwarm` - метеоритный рой.
* `RandomSentience` даёт некоторым объектам роль призрака.
* `Dragon` - дракон, не работает, админу нужно спавнить вручную.
* `RevenantSpawn` спавнит Ревенанта.
* `Traitor` - игра выдаёт случайным игрокам предателей.
* `VentCritters` - из вентиляции лезут существа, от мышей до тарантулов.
* `ZombieOutbreak` оживляет мертвых игроков в виде зомби.
* `MouseMigration` - крысиный король с его свитой.
* `BluespaceLockerLink` - блюспейс-шкаф.
* `SpiderSpawn` спавнит в рандомных местах Тарантулов.

Nukeops и Pirates надо добавлять обязательно до начала раунда. Zombie и Traitor можно добавлять во время раунда, но лучше до начала. Остальные, классические ивенты, срабатывают сразу, даже в лобби.

#### Починка нюкера-дионы

Чтобы убрать пацифизм у дионы-нюкера, нужно удалить компоненты PacifedComponent и CombatModeComponent, а затем добавить CombatModeComponent снова. Это делается через просмотр переменных (`vv <EntityUID>`) во вкладке "Компоненты сервера". Если добавить CombatModeComponent, пока у моба стоит PacifedComponent, то ничего не сработает.

*Если вы меняете расу ядерного оперативника или респауните его, то вы во первых лишаете его тега синдиката, а во вторых ломаете систему режима из-за чего раунд может закончится, даже если этот опер жив.*

#### Цели антагониста

С помощью команды `lsobjectives <ник игрока>` можно просмотреть цели антагониста.

Команда `addobjective <nickname> <objective ID>` добавит выбранному игроку ещё одну цель антагониста. Список ID целей (см. файл traitorObjectives.yml):

* `CaptainIDStealObjective`
* `KillRandomObjective`
* `RandomTraitorAliveObjective`
* `DieObjective`
* `CMOHyposprayStealObjective`
* `RDHardsuitStealObjective`
* `NukeDiskStealObjective`
* `IDComputerBoardStealObjective`
* `MagbootsStealObjective`
* `SupplyConsoleBoardStealObjective`
* `CorgiMeatStealObjective`
* `CaptainGunStealObjective`
* `CaptainJetpackStealObjective`
* `EscapeShuttleObjective`
* `RandomTraitorProgressObjective`

## Баны

### Баны роли

`rolebanlist ...` позволяет просмотреть список банов ролей игрока.

```
roleban <логин> <ID профессии> "<причина>" <время в минутах или 0 для пермы>
```
банит данную профессию для данного игрока.
Узнать ID работы можно, найдя соответствующий файл этой роли на Github:

```
# /Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml
- type: job
  id: HeadOfSecurity # <--- интересующий нас ID
  name: job-name-hos
  playTimeTracker: JobHeadOfSecurity
...

```
Пример команды: `roleban Morty Assistant "Очень плох" 60`

`departmentban <nickname> <ID отдела> <причина> <время в минутах или 0 для пермы>` банит игроку весь отдел. ID отделов:

* Cargo
* Civilian
* Command
* Engineering
* Medical
* Science
* Security

`roleunban <ID бана>` отменяет бан роли.

### Общие баны

`banlist ...` позволяет просмотреть список банов игрока.

`ban <login> <причина> [время бана в минутах или 0 для перма]` просто банит игрока с сервера.

`pardon <ID бана>` разбанивает простой бан игрока.

## Логи

Просмотр логов доступен по команде `adminlogs` в консоли.

## Сетки и карты

Основные понятия:

* Карта (map) - БСС-пространство, содержащее сетки (grids).
* Сетка (grid) - совокупность соединённых тайлов и игровых сущностях, находящихся на них. Собственно, станция - большая единая сетка. Например, если отделить от неё кусочек или поставить прутья на космос, то получится новая сетка, отдельная от станции.

### Карта (map)

Карта - БСС-пространство и содержащиеся в нём сетки (grids). Имеет два состояния `init: True` и `init: False` - пауза и не пауза. С помощью команды `lsmap` можно вывести список всех существующих в текущий момент карт, их ID и их состояние (пауза или нет). Основные команды:

* `mapping [MapID] [путь до мира или сетки]` создаёт новую карту на свободном ID или с данным ID, который не должен быть занят существующими картами, и телепортирует вас на неё. Если дан путь до мира или сетки, то загружает этот файл в новосозданный мир. По умолчанию карта поставлена на паузы.
* `mapinit <MapID>` снимает с паузы или размораживает карту. Не сработает с эвакуационным шаттлом и картой ЦК.
* `addmap <MapID>` создаёт размороженный мир с данным ID, к которому телепортироваться нужно вручную.
* `rmmap <MapID>` удаляет мир с данным ID. ОЧЕНЬ рекомендуется дюжину раз проверять ID прежде, чем нажимать Enter, иначе ненароком можно удалить мир со станцией вместе с игроками.

### Сетка (grid)

Сетка - совокупность соединённых вместе тайлов (пол) и лежащих на них предметов. Например, станция - отдельная сетка, шаттл карго - тоже отдельная сетка.

**Спавн сетки:**

1. Получить ID текущей карты. Для этого используйте клавишу F3:
2. Определитесь с шаблоном который хотите загрузить на карту.
3. Используйте команду `loadgrid <ID карты> <загружаемый шаблон>`. По умолчанию объект появится на нулевых координатах (x: 0, y: 0). Вы можете телепортировать себя туда, используя команду: `tp <x> <y>`.
4. Если вы хотите переместить его на другие координаты, то см. #Перемещение сеток.
5. Profit!

**Перемещение сеток:**

* `tpgrid <id сетки> <x> <y>` - сама команда для телепорта;
* `lsgrid` выдаёт список всех существующих сеток;
* `loc` даёт ваши текущие координаты, там же указывается ID сетки на которой вы стоите (GridID).

**Сохранение сеток:**

Функция позволяет сохранить сетку как файл с картой на сервере и загружать ее в будущих раундах.

❗Не злоупотребляйте этой функцией и сохраняйте только действительно необходимые вам вещи.

1. Узнайте ID сетки на которой находится ваш персонаж/призрак с помощью команды `loc`. Нужное вами число это GridID.
2. Далее сама команда для сохранения сетки как карты: `savebp <gridUid> <path>`, где `<gridId>` это ранее полученное число, а `<path>` - путь, по которому *сетка* будет сохранена в папке сервера. Достаточно просто указать название файла. Обязательно укажите расширение `.yml` для файла.
Пример: `savebp 12 myShuttle.yml`.
3. Profit!

**БСС (FTL)**:

Чтобы сделать сетку доступной для прыжка к ней через БСС, нужно открыть окно просмотра переменных этой сетки. Для этого прописывается `vv <gridUID>`. Во вкладке "Компоненты сервера" нужно добавить компонент "FTLDestination" через кнопку "Добавить компонент". Готово! Сетка, а вместе с ней и карта, на которой она расположена, доступны для прыжка, например, карго-шаттла.

Опционально можно переименовать сетку опять в просмотре переменных `vv` - во вкладке "Переменные сервера" в поле Name прописывается новое имя и обязательно нажимается Enter по завершению ввода.

*Примечание: чтобы новое БСС-пространство появилось в консолях управления шаттлами, нужно их обновить путём выкручивания и вкручивания обратно гаечным ключом.*

### Непосредственно маппинг

`fixgridatmos` мгновенно заполняет все тайлы грида дыхательной смесью.

`colornetwork <UID> Pipe <HEX-color>` добавляет выбранный цвет на трубу.

* #FF9900 - Сигнальный
* #FF0000FF - Скруббер
* #0000FFFF - Вентиляция
* #17E8E2FF - Воздух
* #D3FC03FF - Вирусология
* #FEF101FF - Жёлтый
* #A505FAFF - Фиолетовый
* #947507FF - Грязный
* #FFD800FF - Автобус

`loadmappacts` - подгружает некоторые инструменты для более удобного маппинга (ставит в меню действий некоторые тайлы и стены).

`dock <ID1> <ID2>` стыкует два стыковочных портах с ID1 и с ID2, находящихся на разных сетках. Полезно, когда нужна стыковка на карте, находящейся в паузе.

## Прототипы

В панели администратора есть возможность загрузить в игру свой прототип. Например, нужен спавнер случайного гуманоида для проведения какого-нибудь мероприятия:

```
- type: entity
  parent: ClothingHeadsetAlt
  id: ClothingHeadsetCentComCCAlt
  suffix: CentCom
  name: Гарнитура офицера ЦК
  description: Стандартная гарнитура ЦК.
  components:
  - type: Headset
    channels:
    - CentCom
  - type: Sprite
    sprite: Clothing/Ears/Headsets/centcom.rsi
  - type: Clothing
    sprite: Clothing/Ears/Headsets/centcom.rsi

```
В админ-панели (по клавише F7) во вкладке "Админ-абуз" есть кнопка "Загрузить прототип", кликнув на неё выберите файл прототипа, который нужно загрузить.

Загруженные прототипы будут доступен до перезапуска сервера.

### Загрузка RSI

RSI - формат группы изображений, изобретённый создателями SS14. Используется для спрайтов. У администраторов существует возможность загрузить свои RSI для использования их в прототипах без необходимости перезапуска сервера или перекомпиляции сборки.

Например, нужно загрузить следующий RSI:

```
delorian.rsi/
├── auto.png
└── meta.json

```
Для этого нужно использовать команду `uploadfile` с прописанной директорией:

```
> uploadfile delorian.rsi/auto.png
> uploadfile delorian.rsi/meta.json

```
Для использования загруженных спрайтов в прототипах нужно прописывать такой путь:

```

```
   - type: Sprite
     sprite: /Uploaded/delorian.rsi # <------
     layers:
       - state: auto
         map: ["enum.VehicleVisualLayers.AutoAnimate"]

```

```
Загруженные файлы удаляются при перезапуске сервера.

В недавнем обновлении появился более лёгкий способ загрузки папок - команда `uploadfolder`.

## Хоткеи

В игре существует немалое количество полезных хоткеев, например:

```
F7 - открывает панель администратора
P - копирует Entity или Тайл на который вы навелись
Alt+V - открывает VV Entity на который вы навелись
F5 - открывает панель спавна сущностей
F6 - открывает панель спавна Тайлов
F8 - открывает панель спавна Декалей
B - открывает режим песочницы
F3 - открывает панель откладки
Shift+F4 - скрывает текущий UI

```

Это основные хоткеи, давайте же перейдем к хоткеям для мапперов:

```
Разместить объект Entity - ЛКМ
Отменить размещение Entity  - ПКМ
Разместить в сетке Entity  - Control+ЛКМ
Разместить в линию Entity - Shift+ЛКМ
Повернуть Entity - СКМ
Перевернуть Entity - Control+СКМ

```