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

Материал из SUNRISE WIKI

Основы

Приветствуем, начинающий Администратор!

На данной странице вы можете ознакомиться с основными моментами, которые будут востребованы в вашей работе.

Терминология

1. Ахелп / Ahelp - панель админпомощи, которая позволяет вам кикать игроков, выдавать им заметки, баны, а также просто отвечать на их вопросы, либо задавать вопросы по поводу их поведения.

2. Консоль - текстовый интерфейс, в который можно вписать команды, желаемые к исполнению, либо увидеть ошибки, на которые "жалуется" консоль.

Консоль открывается по клавише ` (ё). Команды можно написать и в обычном чате, для этого поставьте вначале "/".

3. Агост - админпризрак, специальный призрак с ручками, КПК, рюкзачком и уймой возможностей.

4. Джоббан / Департбан / Ролебан - бан определённых ролей, либо целого департамента ролей. К примеру, можно забанить как роль Детектива, так и весь департамент СБ.

5. Сикей / Логин - полагаю, тут излишни объяснения.

6. Сей-логи / сейлоги - действия "разговоров" в IC-чатах, такие как сообщения в чат "Рядом" и "Шёпот". Сообщения в чат "Эмоции" называются эмоут-логи.

7. IC- OOC-чаты - IC-чаты это все игровые чаты, в рамках которых игроки общаются от имени персонажа, такие как: "Рядом", "Шёпот", "Эмоции". OOC-чаты это все игровые чаты, в рамках которых игроки общаются от имени самих себя, такие как: "Мёртвые", "LOOC", "OOC".

Деадмин и реадмин

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

  • deadmin убирает с вас права и делает обычным игроком. В таком состоянии у вас "обычный" Ахелп, отсутствует возможность видеть админчат, отсутствует возможность выхода в агост и т.д.;
  • readmin возвращает вам права администратора. Вы вновь начинаете обладать властью.

Баны и ролебаны

Выдача бана

Вы можете как выдавать баны / ролебаны через Ахелп, так и через консоль.

Не всегда нужный вам игрок отображается в Ахелпе, потому в таких случаях поможет только консоль.

Приступим к разбору синтаксиса команды выдачи бана:

  • ban login "Reason" time risk
  • Графа login - вставьте сикей игрока, которому хотите выдать бан.
  • Графа Reason - напишите причину, по которой вы выдаёте блокировку, но не забывайте про кавычки.
  • Графа time - укажите время блокировки в секундах. Если речь идёт про пермабан - ставьте 0.
  • Графа risk необязательна к заполнению, но если вдруг вы хотите его заполнить, то ставьте "high".

Снятие бана

Бан мы выдали, это замечательно, но если в ходе обжалования выяснилось, что мы, или кто-либо другой из администрации, ошиблись?

Для этого прописываем команду

  • adminlogs login
  • Графа login - вставьте сикей игрока, чей бан нам нужно снять.

Перед нами откроется окно с заметками по данному игроку, там же будет информация о бане и ID-бана.

Как только мы узнали ID-бана, прописываем следующую команду:

  • pardon BanID (только вместо BanID ставим ID-бана).

Выдача ролебана

В разработке...

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

Снятие ролебана

Предположим, что выданный нами, или кем-либо другим из администрации, ролебан ошибочен?

В таком случае прописываем с вами команду

  • rolebanlist login
  • Графа login - вставьте сикей игрока, чей ролебан нам нужно снять.

В консоли появится список всех ролебанов данного игрока. Помните, что у ролебана каждой роли свой уникальный ID, потому и снимать их нужно все.

Найдя нужный нам ID-бана прописываем с вами команду:

  • roleunban RolebanID

Раунд

Настройка режима и карты

Следующая команда позволяет установить желаемую карту в следующем раунде:

  • forcemap MapName
  • Графа MapName - выберите одну из предложенных в консоли карт.

Следующая команда позволяет установить желаемый режим игры в следующем раунде:

  • setgamepreset NamePreset
  • Графа NamePreset - выберите один из предложенных в консоли режимов игры.

Следующая команда устанавливает режим и мгновенно запускает раунд:

  • forcegamepreset NamePreset

Старт, перезапуск, пауза

В разработке...


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

Кастомные голосования

Следующая команда позволяет создать кастомное голосование, которое будет видно как в лобби, так и в раунде:

  • customvote "вопрос" "ответ1" "ответ2"

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

Количество граф "ответов" относительно неограниченно, но старайтесь не создавать свыше 6 вариантов ответов.

Отыгрыш ЦК

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

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

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

ID кодов:

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

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

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

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

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

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

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 спавнит в рандомных местах Тарантулов.


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


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

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

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

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

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


Файл:Демонстрация команды addobjective.png

Логи

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

  • #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.

BQL

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

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

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