Поваренная книга админа: различия между версиями

Материал из Space Station 14 Вики
м удалил BGL
Нет описания правки
 
(не показано 39 промежуточных версий 3 участников)
Строка 1: Строка 1:
Данная статья посвящена всяким полезностям для админов.
Данная статья посвящена всяким полезностям для админов.
 
{{ModernTitle|Работа с консолью|h1}}
Консоль открывается по клавише <code>`</code> (<code>ё</code>).
== Основы ==
 
Консоль по стандарту открывается на <code>~</code> (<code>ё</code>). Автозаполнение работает нажатием кнопки Tab после выбора стрелками. Не все команды отображаются в зависимости от прав.
Переход между состояниями админа и простого игрока с помощью команд:
* <code>deadmin/readmin</code> - убирает/возвращает права администратора
* <code>deadmin</code> убирает с вас права и делает обычным игроком;
* <code>aghost</code> - та же команда <code>ghost</code>, но с правами администратора
* <code>readmin</code> возвращает вам права администратора.
* <code>setadminooc #FFFFFF</code> - устанавливает цвет вашему нику, который будет виден в чате OOC.
* <code>help [название команды]</code>  - расскажет вам о команде, не забывайте про неё!
* <code>list</code> - выводит список доступных вам команд
* <code>listgamerules</code> - выводит список всех игровых событий
* <code>forcemap</code> - перманентно устанавливает карту (сброс карты делается forcemap "")
* <code>> self scale:multiplyvector [2, 1]</code> (ТУЛШЕД!) - <strike>способ получить аварн</strike> изменение размера спрайта(увеличить в два раза = 2, уменьшить = 0,5)
* <code>tpto</code> - телепортация куда кого, алтернатива tp
* <code>playglobalsound</code> - чтобы все услышали ваше аудио(после указания пути идёт громкость, она может быть отрицательной, если нужно тише)
* <code>ftldisk</code> - диск БСС скачков шаттла
* <code>explosionui</code> - искусство это взрыв


== Отыгрыш ЦК ==
== Отыгрыш ЦК ==
Строка 16: Строка 25:


ID кодов:
ID кодов:
* <code>green</code> - <span style="color:308E30">зелёный</span>;
* <code>green</code> - {{цвет|text|green|c=зелёный}};
* <code>blue</code> - <span style="color:394FCC">синий</span>;
* <code>blue</code> - {{цвет|text|blue|c=синий}};
* <code>yellow</code> - <span style="color:808000">жёлтый</span>;
* <code>yellow</code> - {{цвет|text|darkyellow|c=жёлтый}};
* <code>violet</code> - <span style="color:9932CC">фиолетовый</span>;
* <code>violet</code> - {{цвет|text|violet|c=фиолетовый}};
* <code>red</code> - <span style="color:8B0000">красный</span>;
* <code>red</code> - {{цвет|text|red|c=красный}};
* <code>gamma</code> - <span style="color:C6A500">гамма</span>;
* <code>gamma</code> - {{цвет|text|gamma|c=гамма}};
* <code>delta</code> - <span style="color:800080">дельта</span>;
* <code>delta</code> - {{цвет|text|delta|c=дельта}};
* <code>epsilon</code> - эпсилон.
* <code>epsilon</code> - {{цвет|text|violet|dark|c=эпсилон}}.
 
Значения кодов см. [[СРП#Уровни_угрозы]].
 
=== Цели станции по факсу ===
* <code>sendstationgoal</code> - позволяет по факсу отправить цель на выбор. Примеры:
* <code>StationGoalContaintment</code>
* <code>StationGoalShuttle</code>
* <code>StationGoalSingularity</code>
* <code>StationGoalSolarPanels</code>
* <code>StationGoalBank</code>
* <code>StationGoalZoo</code>
* <code>StationGoalArtifacts</code>
* <code>StationGoalMiningOutpost</code>
 
Значение целей см. [[Задачи_станции]].
 
=== Счёт карго ===


Значения кодов см. [[Стандартные_Рабочие_Процедуры#Уровни_угрозы]].
* <code>> station:list</code> => появляется список станций, ищете свою => пишете <code>vv <uid</code>, он показывается сбоку от названия>.
Далее заходим в компоненты сервера и находим <code>StationBank</code> и нажимаем на него, там есть и текущий счёт карго и количество пассивного дохода.


== Внутриигровые события (ивенты) ==
=== Эвакуационный шаттл ===


* <code>callshuttle #</code>, где <code>#</code> - кол-во минут до шаттла, вызывает эвакуационный шаттл.
* <code>dockemergencyshuttle</code> мгновенно стыкует эвакуационный шаттл к станции.
== Раунд ==
В лобби в зависимости от числа готовых игра подбирает прототипы режима и карты. Маппул и пресеты игры найти можно (также далее). Они имеют минимальное и максимальное число игроков.
<code>customvote <вопрос> <ответ1> <ответ2> ... <ответN></code> - создаёт голосование с заданными параметрами, которое видно и в раунде, и в лобби. 
Например:
* <code>customvote "Какой режим хотите выбрать?" Выживание Трейторы Секрет ...</code>
* <code>delaystart [seconds]</code> - ставит старт раунда на паузу в лобби. Если указан аргумент, то откладывает старт на указанное количество секунд.
* <code>forcemap</code> - позволяет поменять карту до начала раунда.
=== Режимы игры ===
Существующие режимы игры:
* Extended
* Secret
* Sandbox
* Traitor
* Nukeops
* Zombie
* Pirates
* Deathmatch
* Revolutionary
* AllAtOnce
* Survival
<code>setgamepreset</code> устанавливает режим следующего раунда.
<code>forcegamepreset</code> устанавливает режим и мгновенно запускает раунд.
==== Внутриигровые ивенты ====
Игровой режим запускает генераторы ивентов, которые вы можете увидеть в <code>listgamerules</code>.
<code>addgamerule <rules></code> добавляет режим или ивент к следующему или идущему раунду.
<code>addgamerule <rules></code> добавляет режим или ивент к следующему или идущему раунду.
'''Nukeops''' и '''Pirates''' надо добавлять обязательно до начала раунда. '''Zombie''' и '''Traitor'''  можно добавлять во время раунда, но лучше до начала. Остальные - классические ивенты - срабатывают сразу, даже в лобби.
<code>endgamerule <rule></code> останавливает текущий в игре ивент.
Список ID событий:
* <code>BasicStationEventScheduler</code> - спавнер редких игровых ивентов. Стоит во всех режимах игры кроме выживания.
* <code>RampingStationEventScheduler</code> - спавнер частых игровых ивентов для режима выживания.
* <code>Secret</code> - режим игры "Секрет"
* <code>DeathMatch</code> - режим игры "Все против всех".
* <code>NukeOps</code> - режим игры ядерных оперативников - спавнит пять нюкеров и их базу.
* <code>Pirates</code> - режим игры "Пираты" - создаёт шаттл с пиратами, пиратов по хорошему переспавнить и сделать через Уристов, сломаны.
* <code>Sandbox</code> - режим игры "Песочница", игроки имеют права спавнить энтити/декали/тайлы.
* <code>Suspicion</code> - TTT - Все вооружены, среди вооруженных есть предатели, задача не-предателей найти их и убить.
* <code>TraitorDeathMatch</code> - режим игры, резня агентов.
* <code>Zombie</code> - режим игры "Зомби".
* <code>VentClog</code> выпускает жидкости из скрубберов.
* <code>PowerGridCheck</code> выключает свет на неопределённый срок.
* <code>FalseAlarm</code> - ивент, создающий фальшивые обьявления о игровых ивентах.
* <code>BluespaceArtifact</code> создаёт рядом со станции/На ней артефакт.
* <code>BreakerFlip</code> отключает в некоторых местах ЛКП.
* <code>DiseaseOutbreak</code> выпускает рандомную болезнь рядом с игроком.
* <code>AnomalySpawn</code> создаёт аномалию.
* <code>BureaucraticError</code> - бюрократическая ошибка.
* <code>GasLeak</code> создаёт в рандомном месте рандомный газ.
* <code>KudzuGrowth</code> - кудзу.
* <code>MeteorSwarm</code> - метеоритный рой.
* <code>RandomSentience</code> даёт некоторым объектам роль призрака.
* <code>Dragon</code> - дракон, не работает, админу нужно спавнить вручную.
* <code>RevenantSpawn</code> спавнит Ревенанта.
* <code>Traitor</code> - игра выдаёт случайным игрокам предателей.
* <code>VentCritters</code> - из вентиляции лезут существа, от мышей до тарантулов.
* <code>ZombieOutbreak</code> оживляет мертвых игроков в виде зомби.
* <code>MouseMigration</code> - крысиный король с его свитой.
* <code>BluespaceLockerLink</code> - блюспейс-шкаф.
* <code>SpiderSpawn</code> спавнит в рандомных местах Тарантулов.
* <code>ClosedSkeleton</code> скелет в шкафу.
* <code>GiftsMedical</code> отправляет на трейд-пост набор медицины.
* <code>GiftsSecurityGuns</code> отправляет на трейд-пост ящик снаряжения.
* <code>GiftsEngineering</code> отправляет на трейд-пост инженерный набор.
* <code>GiftsSecurityRiot</code> отправляет на трейд-пост ящик против бунта.
* <code>GiftsSpacingSupplies</code> отправляет на трейд-пост защиту от космоса.
* <code>GiftsFireProtection</code> отправляет на трейд-пост защиту от огня.
* <code>GiftsJanitor</code> отправляет на трейд-пост наборы для сервиса.
* <code>GiftsVendingRestock</code> отправляет на трейд-пост наборы пополнения.
* <code>GiftsPizzaPartySmall</code> отправляет на трейд-пост малый набор пицц.
* <code>GiftsPizzaPartyLarge</code> отправляет на трейд-пост большой набор пицц.
* <code>IonStorm</code> меняет законы всем киборгам на станции.
* <code>CockroachMigration</code> спавн ивент с рандомными мобами из вентиляций.
* <code>ClericalError</code> ивент, рандомно удаляющий человека из манифеста.
* <code>Revolutionary</code> режим революционеров.
* <code>EvilTwin</code> спавнит злого двойника.
* <code>NinjaSpawn</code> спавнит ниндзю.
* <code>Thief</code> выдаёт роль вора.
* <code>LoneOpsSpawn</code> спавнит одинокого Ядерного Оперативника.


...
<code>NukeOps</code>, <code>Pirates</code> и <code>Revolutionary</code> надо добавлять обязательно до начала раунда. <code>Zombie</code> и <code>Traitor</code> можно добавлять во время раунда, но лучше до начала. Остальные, классические ивенты, срабатывают сразу, даже в лобби.
 
==== Починка пацифизма дионы ====
 
Чтобы убрать пацифизм у дионы, нужно удалить компоненты PacifedComponent и CombatModeComponent, а затем добавить CombatModeComponent снова. Это делается через просмотр переменных (<code>vv <EntityUID></code>) во вкладке "Компоненты сервера". Если добавить CombatModeComponent, пока у моба стоит PacifedComponent, то ничего не сработает.
 
''Если вы меняете расу ядерного оперативника или респауните его, то вы во-первых лишаете его тега синдиката, а во-вторых ломаете систему режима, из-за чего раунд может закончиться, даже если этот опер жив.''
 
==== Цели антагониста ====
 
С помощью команды <code>lsobjectives <ник игрока></code> можно просмотреть цели антагониста.
 
С помощью команды <code>rmobjective <ник игрока> <номер цели></code> можно удалить цель у человека на выбор. Пример:
* <code>rmobjective trinnq 0</code>
 
Команда <code>adduplink <ник игрока></code> позволяет добавить аплинк указанному игроку.
 
Команда <code>addobjective <nickname> <objective ID></code> добавит выбранному игроку ещё одну цель антагониста. Список ID целей (см. файл [https://github.com/space-syndicate/space-station-14/blob/master/Resources/Prototypes/Objectives/traitorObjectives.yml traitorObjectives.yml]):
* <code>CaptainIDStealObjective</code>
* <code>KillRandomObjective</code>
* <code>KillRandomHeadObjective</code>
* <code>RandomTraitorAliveObjective</code>
* <code>DieObjective</code>
* <code>CMOHyposprayStealObjective</code>
* <code>CMOCrewMonitorStealObjective</code>
* <code>RDHardsuitStealObjective</code>
* <code>HandTeleporterStealObjective</code>
* <code>NukeDiskStealObjective</code>
* <code>ClipboardStealObjective</code>
* <code>MagbootsStealObjective</code>
* <code>SecretDocumentsStealObjective</code>
* <code>CorgiMeatStealObjective</code>
* <code>CaptainGunStealObjective</code>
* <code>CaptainJetpackStealObjective</code>
* <code>EscapeShuttleObjective</code>
* <code>RandomTraitorProgressObjective</code>
 
 
[[Файл:Демонстрация_команды_addobjective.png]]
== Наказания ==
=== Баны ===


== Баны ==
==== Баны роли ====


=== Бан роли игроку ===
<code>rolebanlist ...</code> позволяет просмотреть список банов ролей игрока.


<pre>roleban <логин> <ID профессии> "<причина>" <время в минутах или 0 для пермы></pre>
<pre>roleban <логин> <ID профессии> "<причина>" <время в минутах или 0 для пермы></pre> банит данную профессию для данного игрока.


Узнать ID работы можно, найдя соответствующий файл этой роли на [https://github.com/space-syndicate/space-station-14/tree/master/Resources/Prototypes/Roles/Jobs Github]:
Узнать ID работы можно, найдя соответствующий файл этой роли на [https://github.com/space-syndicate/space-station-14/tree/master/Resources/Prototypes/Roles/Jobs Github]:
Строка 53: Строка 201:
Пример команды: <code>roleban Morty Assistant "Очень плох" 60</code>
Пример команды: <code>roleban Morty Assistant "Очень плох" 60</code>


=== Отмена бана роли ===
<code>departmentban <nickname> <ID отдела> <причина> <время в минутах или 0 для пермы></code> банит игроку весь отдел. ID отделов:
* Cargo
* Civilian
* Command
* Engineering
* Medical
* Science
* Security


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


=== Просто бан ===
==== Общие баны ====


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


== Логи ==
<code>ban <login> <причина> [время бана в минутах или 0 для перма]</code> просто банит игрока с сервера.
 
<code>pardon <ID бана></code> разбанивает простой бан игрока.
 
=== Логи ===


Просмотр логов доступен по команде <code>adminlogs</code> в консоли.
Просмотр логов доступен по команде <code>adminlogs</code> в консоли.


== Сетки и карты ==
=== Заметки ===
 
Просмотр заметок доступен по команде <code>adminnotes</code> в консоли.
 
== GoobFork команды ==
 
* Система навыков - Навыки: <code>ShuttleControl</code> <code>Shooting</code> <code>AdvancedBuilding</code> <code>Surgery</code> <code>MedicalEquipment</code>  <code>Butchering</code>
Команды:
* <code>grantskill <euid> <skill></code> - выдаёт скилл.
* <code>revokeskill <euid> <skill></code> - забирает скилл.
* <code>listskills <euid></code> - перечисляет скиллы.
* <code>grantallskills <euid></code>- выдаёт все скиллы.
* AntagObjectiveImmunityComponent - иммунитет от становления целью
 
{{ModernTitle|Прототипы|h1}}
== Основы ==
В игре всё является сущностями(entity), сущность - это экземпляр(версия, или сын) прототипа. Когда вы создаёте что-либо на основе прототипа - вы спавните сущность, которая имеет уникальный айди и характеристики прототипа, которые вы можете менять.
Компоненты - это переменные, они хранят разные данные - простые - true/false(включен-выключен), сложные - словарь определяющий тип урона. Они могут своим добавлением могут позволять что-либо — например, боргам пользоваться прибором; являться связующим посредником - stepTrigger(активировался если наступишь), представлять механику игры - Anomaly, и многое другое. Отношения между компонентами определены их кодом, знать его не обязательно, их описание довольно неплохо документировано [https://github.com/space-syndicate/space-station-14/tree/master/Content.Shared/ просто нужно знать, где искать].
 
Прототип - это описание чего-либо(режимы игры тоже определяются ими но не являются сущностями), которое состоит из компонентов. Если нам нужно описать хлебушек - самое простое из компонентов будет - itemComponent(его можно поднять и положить, он имеет объём для сумки), спрайт, набор звуков; сложные - являются частями механик и могут для изменения требовать понимания кода игры(с этим вы столкнётесь рано или поздно) - для хлебушка это его питательность(в метаболизме), это не трудно. И из кучи компонентов получим прототип хлеба(зарезервировавший уникальное имя прототипа), который без особого тестирования вполне может уронить сервер(и подарить аварн).


=== Спавн "шаблона" ===
Отдельно упомяну, что прототипы существуют в иерархии - предыдущий передаёт компоненты последующему, для описания чего либо вам не нужно начинать в нуля, вы можете унаследоваться от существующего прототипа, расширив его компоненты.


Итог, для понимания - карта, грид на карте, стена на гриде, станция(со счётом в карго) - это всё сущности. Игрок видит объекты потому что имеет компонент глаз, управляет благодаря компоненту актёра. Прототипы написаны на YAML и могут быть изучены на гитхабе в /Resources/Prototypes/... .
Если прототип не тестится на локалке из-за размера файла больше 3мб, то необходимо следовать следующим пунктам:
На серверах Корвакс размер файлах ограничен 25-ю мб, но для этого надо пойти в cvar в \Resources\ConfigPresets\Build
И написать:
<pre>
[netres]
limit = 25.0
</pre>
== Работа с файлами и загрузка прототипов ==
При автодополнении пути для указания файла вы будете в [https://github.com/space-syndicate/space-station-14/tree/master/Resources/ Resources]. Если вам нужно что-то быстро найти - легче всего будет скачать с гитхаба и найти сначала у себя, а потом в игре. Когда вы пишете /, вы начинаете уже в папке, имя Resources вам писать не надо.
Чем эта папка отличается от гитхаба? У мапперов есть свои папки, которую можете создать и вы себе для хранения маперских наработок(при сохранении необходимо в пути указать имя новой папки — по традиции ваш сикей, срать папкам НЕ НАДО!). Во-вторых, есть новая папка - Resources/Uploaded/ в неё отправляется всё, что загружается на сервер через <code>uploadfile</code> или <code>uploadfolder</code>, при перезапуске сервер она очищается. ОДНАКО это не значит, что в неё можно срать, при заходе на сервер эти файлы отправляются игрокам, что может приводить к тому, что окно подключения к серверу у них будет висеть и минуту и больше, сжимайте аудио.
* Когда вы пользуетесь <code>uploadfolder</code>  вы указываете имя папки которая на вашем компьюторе лежит на пути - C:\Users\(ИМЯ ПОЛЬЗОВАТЕЛЯ)\AppData\Roaming\Space Station 14\data\UploadFolder
* Для <code>uploadfile</code> вы придумываете своё название файла как он отправится на сервер, который выберете на компьютере.
* Для загрузки прототипа <code>loadprototype</code> , нужно выбрать yml файл.
Сначала вы загружаете ресурсы прототипа - музыку, спрайты, если оно того требует, потом сам прототип, иначе может крашнуть. Учитывайте, если ваш прототип перезаписывает существующие на карте сущности, после раундстарта оно не заменит уже созданные сущности, но возможно сломает, если там присутствуют сложные механики(например, новый список товаров в автомате).
== Загрузка RSI ==
[https://docs.spacestation14.io/en/engine/rsi RSI] - формат группы изображений, изобретённый создателями SS14. Используется для спрайтов. У администраторов существует возможность загрузить свои RSI для использования их в прототипах без необходимости перезапуска сервера или перекомпиляции сборки.
Например, нужно загрузить следующий RSI:
<pre>
delorian.rsi/
├── auto.png
└── meta.json
</pre>
Для этого нужно использовать команду <code>uploadfile</code> с прописанной директорией:
<pre>
> uploadfile delorian.rsi/auto.png
> uploadfile delorian.rsi/meta.json
</pre>
Для использования загруженных спрайтов в прототипах нужно прописывать такой путь:
<pre>
    - type: Sprite
      sprite: /Uploaded/delorian.rsi # <------
      layers:
        - state: auto
          map: ["enum.VehicleVisualLayers.AutoAnimate"]
</pre>
Загруженные файлы удаляются при перезапуске сервера.
В недавнем обновлении появился более лёгкий способ загрузки папок - команда <code>uploadfolder</code>.
{{ModernTitle|Маппинг|h1}}
Основные понятия:
* Карта (map) - БСС-пространство, содержащее сетки (grids).
* Сетка (grid) - совокупность соединённых тайлов и игровых сущностях, находящихся на них. Собственно, станция - большая единая сетка. Например, если отделить от неё кусочек или поставить прутья на космос, то получится новая сетка, отдельная от станции.
=== Карта (map) ===
Карта - БСС-пространство и содержащиеся в нём сетки (grids). Имеет два состояния <code>init: True</code> и <code>init: False</code> - пауза и не пауза. С помощью команды <code>lsmap</code> можно вывести список всех существующих в текущий момент карт, их ID и их состояние (пауза или нет). Основные команды:
* <code>mapping [MapID] [путь до мира или сетки]</code> создаёт новую карту на свободном ID или с данным ID, который не должен быть занят существующими картами, и телепортирует вас на неё. Если дан путь до мира или сетки, то загружает этот файл в новосозданный мир. По умолчанию карта поставлена на паузы.
* <code>mapinit <MapID></code> снимает с паузы или размораживает карту. Не сработает с эвакуационным шаттлом и картой ЦК.
* <code>addmap <MapID></code> создаёт размороженный мир с данным ID, к которому телепортироваться нужно вручную.
* <code>rmmap <MapID></code> удаляет мир с данным ID. ОЧЕНЬ рекомендуется дюжину раз проверять ID прежде, чем нажимать Enter, иначе ненароком можно удалить мир со станцией вместе с игроками.
=== Сетка (grid) ===
Сетка - совокупность соединённых вместе тайлов (пол) и лежащих на них предметов. Например, станция - отдельная сетка, шаттл карго - тоже отдельная сетка.
'''Спавн сетки:'''
# Получить ID текущей карты. Для этого используйте команду <code>loc</code>:<br>[[Файл:Демонстрация использования команды loc.png]]
# Получить ID текущей карты. Для этого используйте команду <code>loc</code>:<br>[[Файл:Демонстрация использования команды loc.png]]
# Определитесь с шаблоном который хотите загрузить на карту. <!-- TODO: указать, как можно узнать список доступных шаблонов -->
# Определитесь с шаблоном который хотите загрузить на карту. <!-- TODO: указать, как можно узнать список доступных шаблонов -->
# Используйте команду <code>loadbp <ID карты> <загружаемый шаблон></code>. По умолчанию объект появится на нулевых координатах (x: 0, y: 0). Вы можете телепортировать себя туда, используя команду: <code>tp <x> <y></code>.
# Используйте команду <code>loadgrid <ID карты> <загружаемый шаблон></code>. По умолчанию объект появится на нулевых координатах (x: 0, y: 0). Вы можете телепортировать себя туда, используя команду: <code>tp <x> <y></code>.
# Если вы хотите переместить его на другие координаты, то см. [[#Перемещение сеток]].
# Если вы хотите переместить его на другие координаты, то см. [[#Перемещение сеток]].
5. Profit!
# Profit!
 
=== Перемещение сеток ===
 
Все тайлы в космосе расположены на ''сетке'': станция является сеткой с тайлами и стенами, корабль, который вы загружаете или строите это новая отдельная сетка с тайлами.


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


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


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


❗Не злоупотребляйте этой функцией и сохраняйте только действительно необходимые вам вещи.
❗Не злоупотребляйте этой функцией и сохраняйте только действительно необходимые вам вещи.
Строка 95: Строка 342:
<li>Profit!</li>
<li>Profit!</li>
</ol>
</ol>
'''БСС (FTL)''':
Чтобы сделать сетку доступной для прыжка к ней через БСС, нужно открыть окно просмотра переменных этой сетки. Для этого прописывается <code>vv <gridUID></code>. Во вкладке "Компоненты сервера" нужно добавить компонент "FTLDestination" через кнопку "Добавить компонент". Готово! Сетка, а вместе с ней и карта, на которой она расположена, доступны для прыжка, например, карго-шаттла.
Опционально можно переименовать сетку опять в просмотре переменных <code>vv</code> - во вкладке "Переменные сервера" в поле Name прописывается новое имя и обязательно нажимается Enter по завершению ввода.
''Примечание: чтобы новое БСС-пространство появилось в консолях управления шаттлами, нужно их обновить путём выкручивания и вкручивания обратно гаечным ключом.''
=== Непосредственно маппинг ===
<code>fixgridatmos</code> мгновенно заполняет все тайлы грида дыхательной смесью.
<code>colornetwork <UID> Pipe <HEX-color></code> добавляет выбранный цвет на трубу.
* <code>0000FF</code> — Дистра
* <code>FF0000</code> — Вейст
* <code>17E8E2</code> — Воздух
* <code>947507</code> — Грязный
* <code>FFD800</code> — Автобус
* <code>FF9900</code> — Сигнальный
* <code>D3FC03</code> — Вирусология
* <code>FEF101</code> — Жёлтый
* <code>A505FA</code> — Фиолетовый
<code>loadmappacts</code> - подгружает некоторые инструменты для более удобного маппинга (ставит в меню действий некоторые тайлы и стены).
<code>dock <ID1> <ID2></code> стыкует два стыковочных портах с ID1 и с ID2, находящихся на разных сетках. Полезно, когда нужна стыковка на карте, находящейся в паузе.
{{ModernTitle|BQL|h1}}
''Основная статья: [[BQL]]''
BQL - язык запросов движка SS14, который позволяет проводить массовые манипуляции с игровыми сущностями. Примеры:
* <code>forall with FaxMachine do echo $ID</code> найдёт абсолютно все факсы и выведет их UID.
Toolshed - разработана как замена старым BQL командам, но не сильно от них отличается. (см. файл [https://docs.spacestation14.com/en/robust-toolbox/toolshed.html])
Например:
* <code> adjstationjob => stations:get jobs:job AtmosphericTechnician jobs:adjust 1</code> позволяет добавить свободную роль на станцию. (см. файл [https://github.com/space-syndicate/space-station-14/tree/master/Resources/Prototypes/Roles/Jobs])
* <code> > entities with PointLight do "addcomp $ID RgbLightController"</code> позволяет добавить всем лампам компонент RGB.

Текущая версия от 12:12, 12 октября 2025

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

Работа с консолью

Основы

Консоль по стандарту открывается на ~ (ё). Автозаполнение работает нажатием кнопки Tab после выбора стрелками. Не все команды отображаются в зависимости от прав.

  • deadmin/readmin - убирает/возвращает права администратора
  • aghost - та же команда ghost, но с правами администратора
  • setadminooc #FFFFFF - устанавливает цвет вашему нику, который будет виден в чате OOC.
  • help [название команды] - расскажет вам о команде, не забывайте про неё!
  • list - выводит список доступных вам команд
  • listgamerules - выводит список всех игровых событий
  • forcemap - перманентно устанавливает карту (сброс карты делается forcemap "")
  • > self scale:multiplyvector [2, 1] (ТУЛШЕД!) - способ получить аварн изменение размера спрайта(увеличить в два раза = 2, уменьшить = 0,5)
  • tpto - телепортация куда кого, алтернатива tp
  • playglobalsound - чтобы все услышали ваше аудио(после указания пути идёт громкость, она может быть отрицательной, если нужно тише)
  • ftldisk - диск БСС скачков шаттла
  • explosionui - искусство это взрыв

Отыгрыш ЦК

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

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

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

ID кодов:

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

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

Цели станции по факсу

  • sendstationgoal - позволяет по факсу отправить цель на выбор. Примеры:
  • StationGoalContaintment
  • StationGoalShuttle
  • StationGoalSingularity
  • StationGoalSolarPanels
  • StationGoalBank
  • StationGoalZoo
  • StationGoalArtifacts
  • StationGoalMiningOutpost

Значение целей см. Задачи_станции.

Счёт карго

  • > station:list => появляется список станций, ищете свою => пишете vv <uid, он показывается сбоку от названия>.

Далее заходим в компоненты сервера и находим StationBank и нажимаем на него, там есть и текущий счёт карго и количество пассивного дохода.

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

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

Раунд

В лобби в зависимости от числа готовых игра подбирает прототипы режима и карты. Маппул и пресеты игры найти можно (также далее). Они имеют минимальное и максимальное число игроков.

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

  • customvote "Какой режим хотите выбрать?" Выживание Трейторы Секрет ...
  • delaystart [seconds] - ставит старт раунда на паузу в лобби. Если указан аргумент, то откладывает старт на указанное количество секунд.
  • forcemap - позволяет поменять карту до начала раунда.

Режимы игры

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

  • Extended
  • Secret
  • Sandbox
  • Traitor
  • Nukeops
  • Zombie
  • Pirates
  • Deathmatch
  • Revolutionary
  • AllAtOnce
  • Survival

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

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

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

Игровой режим запускает генераторы ивентов, которые вы можете увидеть в listgamerules. 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 спавнит в рандомных местах Тарантулов.
  • ClosedSkeleton скелет в шкафу.
  • GiftsMedical отправляет на трейд-пост набор медицины.
  • GiftsSecurityGuns отправляет на трейд-пост ящик снаряжения.
  • GiftsEngineering отправляет на трейд-пост инженерный набор.
  • GiftsSecurityRiot отправляет на трейд-пост ящик против бунта.
  • GiftsSpacingSupplies отправляет на трейд-пост защиту от космоса.
  • GiftsFireProtection отправляет на трейд-пост защиту от огня.
  • GiftsJanitor отправляет на трейд-пост наборы для сервиса.
  • GiftsVendingRestock отправляет на трейд-пост наборы пополнения.
  • GiftsPizzaPartySmall отправляет на трейд-пост малый набор пицц.
  • GiftsPizzaPartyLarge отправляет на трейд-пост большой набор пицц.
  • IonStorm меняет законы всем киборгам на станции.
  • CockroachMigration спавн ивент с рандомными мобами из вентиляций.
  • ClericalError ивент, рандомно удаляющий человека из манифеста.
  • Revolutionary режим революционеров.
  • EvilTwin спавнит злого двойника.
  • NinjaSpawn спавнит ниндзю.
  • Thief выдаёт роль вора.
  • LoneOpsSpawn спавнит одинокого Ядерного Оперативника.

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

Починка пацифизма дионы

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

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

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

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

С помощью команды rmobjective <ник игрока> <номер цели> можно удалить цель у человека на выбор. Пример:

  • rmobjective trinnq 0

Команда adduplink <ник игрока> позволяет добавить аплинк указанному игроку.

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

  • CaptainIDStealObjective
  • KillRandomObjective
  • KillRandomHeadObjective
  • RandomTraitorAliveObjective
  • DieObjective
  • CMOHyposprayStealObjective
  • CMOCrewMonitorStealObjective
  • RDHardsuitStealObjective
  • HandTeleporterStealObjective
  • NukeDiskStealObjective
  • ClipboardStealObjective
  • MagbootsStealObjective
  • SecretDocumentsStealObjective
  • 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 в консоли.

Заметки

Просмотр заметок доступен по команде adminnotes в консоли.

GoobFork команды

  • Система навыков - Навыки: ShuttleControl Shooting AdvancedBuilding Surgery MedicalEquipment Butchering

Команды:

  • grantskill <euid> <skill> - выдаёт скилл.
  • revokeskill <euid> <skill> - забирает скилл.
  • listskills <euid> - перечисляет скиллы.
  • grantallskills <euid>- выдаёт все скиллы.
  • AntagObjectiveImmunityComponent - иммунитет от становления целью

Прототипы

Основы

В игре всё является сущностями(entity), сущность - это экземпляр(версия, или сын) прототипа. Когда вы создаёте что-либо на основе прототипа - вы спавните сущность, которая имеет уникальный айди и характеристики прототипа, которые вы можете менять. Компоненты - это переменные, они хранят разные данные - простые - true/false(включен-выключен), сложные - словарь определяющий тип урона. Они могут своим добавлением могут позволять что-либо — например, боргам пользоваться прибором; являться связующим посредником - stepTrigger(активировался если наступишь), представлять механику игры - Anomaly, и многое другое. Отношения между компонентами определены их кодом, знать его не обязательно, их описание довольно неплохо документировано просто нужно знать, где искать.

Прототип - это описание чего-либо(режимы игры тоже определяются ими но не являются сущностями), которое состоит из компонентов. Если нам нужно описать хлебушек - самое простое из компонентов будет - itemComponent(его можно поднять и положить, он имеет объём для сумки), спрайт, набор звуков; сложные - являются частями механик и могут для изменения требовать понимания кода игры(с этим вы столкнётесь рано или поздно) - для хлебушка это его питательность(в метаболизме), это не трудно. И из кучи компонентов получим прототип хлеба(зарезервировавший уникальное имя прототипа), который без особого тестирования вполне может уронить сервер(и подарить аварн).

Отдельно упомяну, что прототипы существуют в иерархии - предыдущий передаёт компоненты последующему, для описания чего либо вам не нужно начинать в нуля, вы можете унаследоваться от существующего прототипа, расширив его компоненты.

Итог, для понимания - карта, грид на карте, стена на гриде, станция(со счётом в карго) - это всё сущности. Игрок видит объекты потому что имеет компонент глаз, управляет благодаря компоненту актёра. Прототипы написаны на YAML и могут быть изучены на гитхабе в /Resources/Prototypes/... .

Если прототип не тестится на локалке из-за размера файла больше 3мб, то необходимо следовать следующим пунктам: На серверах Корвакс размер файлах ограничен 25-ю мб, но для этого надо пойти в cvar в \Resources\ConfigPresets\Build И написать:

[netres]
limit = 25.0

Работа с файлами и загрузка прототипов

При автодополнении пути для указания файла вы будете в Resources. Если вам нужно что-то быстро найти - легче всего будет скачать с гитхаба и найти сначала у себя, а потом в игре. Когда вы пишете /, вы начинаете уже в папке, имя Resources вам писать не надо. Чем эта папка отличается от гитхаба? У мапперов есть свои папки, которую можете создать и вы себе для хранения маперских наработок(при сохранении необходимо в пути указать имя новой папки — по традиции ваш сикей, срать папкам НЕ НАДО!). Во-вторых, есть новая папка - Resources/Uploaded/ в неё отправляется всё, что загружается на сервер через uploadfile или uploadfolder, при перезапуске сервер она очищается. ОДНАКО это не значит, что в неё можно срать, при заходе на сервер эти файлы отправляются игрокам, что может приводить к тому, что окно подключения к серверу у них будет висеть и минуту и больше, сжимайте аудио.


  • Когда вы пользуетесь uploadfolder вы указываете имя папки которая на вашем компьюторе лежит на пути - C:\Users\(ИМЯ ПОЛЬЗОВАТЕЛЯ)\AppData\Roaming\Space Station 14\data\UploadFolder
  • Для uploadfile вы придумываете своё название файла как он отправится на сервер, который выберете на компьютере.
  • Для загрузки прототипа loadprototype , нужно выбрать yml файл.


Сначала вы загружаете ресурсы прототипа - музыку, спрайты, если оно того требует, потом сам прототип, иначе может крашнуть. Учитывайте, если ваш прототип перезаписывает существующие на карте сущности, после раундстарта оно не заменит уже созданные сущности, но возможно сломает, если там присутствуют сложные механики(например, новый список товаров в автомате).

Загрузка 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.

Маппинг

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

  • Карта (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 текущей карты. Для этого используйте команду loc:
  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> добавляет выбранный цвет на трубу.

  • 0000FF — Дистра
  • FF0000 — Вейст
  • 17E8E2 — Воздух
  • 947507 — Грязный
  • FFD800 — Автобус
  • FF9900 — Сигнальный
  • D3FC03 — Вирусология
  • FEF101 — Жёлтый
  • A505FA — Фиолетовый

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

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

BQL

Основная статья: BQL

BQL - язык запросов движка SS14, который позволяет проводить массовые манипуляции с игровыми сущностями. Примеры:

  • forall with FaxMachine do echo $ID найдёт абсолютно все факсы и выведет их UID.

Toolshed - разработана как замена старым BQL командам, но не сильно от них отличается. (см. файл [1]) Например:

  • adjstationjob => stations:get jobs:job AtmosphericTechnician jobs:adjust 1 позволяет добавить свободную роль на станцию. (см. файл [2])
  • > entities with PointLight do "addcomp $ID RgbLightController" позволяет добавить всем лампам компонент RGB.