Примеры Toolshed

Это руководство охватывает несколько примеров команд Toolshed. Обратите внимание, что некоторые из этих команд и упомянутых типов C# относятся конкретно к SS14, но они всё же дают хороший обзор того, как использовать Toolshed в других играх.

Взаимодействие с сущностями

Большую часть времени при взаимодействии с Toolshed вы так или иначе манипулируете сущностями.

Основы

ent — это команда Toolshed, которая позволяет нам вернуть сущность с указанным ENTID. Передавая вывод команды по конвейеру, мы можем использовать его для разных действий над сущностью. Некоторые примеры:

> ent 12345 delete

Удалит указанную сущность.

> ent 12345 replace PlushieBee

Заменит сущность указанным прототипом, например превратит её в плюшевую пчелу.

> ent 12345 comp:ensure Mindshield comp:rm Electrified comp:rm Airtight

Проверит, есть ли у сущности компонент “Mindshield”, и добавит его при необходимости, затем удалит компоненты Electrified и Airtight.

Нацеливание на себя

Команда self всегда возвращает сущность, которой вы сейчас управляете. Как вариант, вы также можете использовать переменную $self.

> self rejuvenate / Will heal your character

Запросы и фильтры сущностей

entities и nearby возвращают либо все сущности, существующие на сервере, либо сущности в пределах указанного радиуса в тайлах от входной сущности. Имейте в виду, что для них требуется разрешение QUERY.

> entities

Вернёт список всех сущностей на сервере.

> self nearby 20

Вернёт все сущности в радиусе 20 тайлов от вашего персонажа.

> ent 12345 nearby 3

Вернёт все сущности в радиусе 3 тайлов от сущности 12345.

> entities with ZombifyOnDeath visualize

Откроет интерфейс со всеми заражёнными людьми на станции, из которого вы можете либо перейти в VV, либо телепортироваться к ним.

> self nearby 20 replace PlushieBee

Заменит каждую сущность в радиусе 20 тайлов указанным прототипом (в данном случае PlushieBee).

> entities prototyped CableApcExtension delete

Удалит все НВ-кабели питания на сервере.

Наиболее важные команды для фильтрации вывода следующие:

named "STRING"

Принимает список сущностей и фильтрует сущности по их имени; эта команда совместима с подстановочным знаком .*.

> entities named ".*cable"

Вернёт все сущности, имя которых заканчивается строкой “cable”.

> entities named ".*power.*"

Вернёт все сущности, имя которых содержит строку “power”.

with [component]

Принимает список сущностей и возвращает только сущности с указанным компонентом.

> entities with MobState

Вернёт всех мобов на сервере.

actor:controlled

Принимает список сущностей и возвращает все сущности, которыми в данный момент управляет игрок.

> entities actor:controlled tp:to $self

Выше переменная $self используется как аргумент команды — это телепортирует всех игроков в ваше местоположение.

select [N]

Принимает список сущностей и случайным образом выбирает n сущностей из ввода.

select [N%]

Принимает список сущностей и выбирает процент от ввода.

Объединяя фильтры вместе, можно сделать так:

> entities actor:controlled select 5 tp:to $self

Телепортирует 5 случайно выбранных игроков к сущности, которой вы сейчас управляете.

Забавные команды

ПЧЁЛЫ БУДУТ ПРОДОЛЖАТЬ, ПОКА МОРАЛЬ НЕ УЛУЧШИТСЯ:

> self rep 10 spawn:on "MobAngryBee" nearby 10 prototyped MobAngryBee select 1 tag:add "DoorBumpOpener" do "makeghostrole $ID \"Queen Bee\" \"Lead the bees!\"" do "rename $ID \"Queen Bee\"" nearby 10 protoyped MobAngryBee not with GhostRole do "makeghostrole $ID \"Angry Bee\" \"You are an angry bee and you want some pizza.\""

Эту команду можно разбить на несколько частей для более лёгкого понимания:

  • Мы начинаем с получения нашего текущего персонажа с помощью self.
  • Затем для этого персонажа мы выполняем команду spawn:on 10 раз: rep 10 spawn:on "MobAngryBee".
    • Часть rep 10 повторяет команду десять раз, а команда spawn:on создаст указанный прототип MobAngryBee на указанной сущности — здесь это self.
  • Затем мы хотим получить всё в радиусе десяти тайлов и отфильтровать пчёл, которых мы создали, с помощью nearby 10 prototyped MobAngryBee.
  • Как только у нас есть все наши пчёлы, мы выбираем одну из них с помощью select 1 и добавляем тег DoorBumpOpener с помощью команды tag:add.
    • Теги — это как компоненты, не содержащие данных; DoorBumpOpener позволяет открывать шлюзы, входя в них, точно так же, как это сделал бы игрок.
  • Далее для той же одной пчелы мы выполняем устаревшую команду makeghostrole — первый аргумент — это ID, второй — имя, третий — описание. Важно использовать символ \ перед кавычкой, чтобы она была правильно экранирована.
  • Наконец, мы переименовываем нашу пчелу в “Queen Bee”.
  • Затем мы получаем всех остальных девять пчёл и также превращаем их в роли призрака, точно так же, как мы сделали с Queen Bee.

Теперь, гораздо более эффективным способом сделать это было бы иметь две отдельные команды: одну для Queen Bee и одну для Angry Bees. Это просто демонстрация того, насколько сложным может быть Toolshed.

ПРИЗРАКУЛЯРНОСТЬ:

> entities with Singularity comp:ensure MobState comp:ensure MovementIgnoreGravity comp:ensure InputMover comp:ensure MobMover do "makeghostrole $ID \"Singularity\" \"FUCK\""

Эта команда превратит все сингулярности на сервере в управляемые игроком роли призрака.

Плюшевая пчела-граната

Вы когда-нибудь хотели гранату в виде плюшевой пчелы? С этой простой командой она у вас будет!

> self spawn:on "GrenadeStinger" do "rename $ID \"bee plushie grenade\"" do "vvwrite /entity/$ID/ClusterGrenade/FillPrototype \"PlushieBee\""

Вы можете заменить FillPrototype кластерных гранат на любой допустимый прототип. Имейте в виду, что любые взрывчатые вещества, созданные таким образом, будут активированы по умолчанию, так что, возможно, вы не захотите использовать это для создания тридцати Святых ручных гранат.

Ввести станцию в долги

Утилизаторы всё ещё пауэргеймят? Введите станцию в долги с помощью этого простого решения!

> stations:get do "vvwrite /entity/$ID/StationBankAccount/Balance 1000"

Не забудьте заменить 1000 на баланс, который хотите установить.

Как вариант, вы можете перейти в F7 > Objects > Stations, проверить ENTID станции и затем выполнить:

vv /entity/ENTID/StationBankAccount

Скрипты и вы

Скрипты можно использовать для автоматизации определённых задач или команд. Чтобы создать новый скрипт, вам нужно создать новый файл в каталоге данных клиента Space Station 14.

Имя файла может быть любым, каким вы хотите назвать скрипт. Вы можете редактировать его в любом текстовом редакторе, только убедитесь, что сохраняете его как файл без расширения.

У администраторов часто есть скрипт для настройки своих призраков. Вот пример такого скрипта:

> self not prototyped AdminObserver do "aghost"
> self comp:ensure ShowCriminalRecordIcons comp:ensure ShowJobIcons comp:ensure ShowMindShieldIcons comp:ensure ShowSyndicateIcons comp:ensure Grammar comp:ensure Identity
> self do "vvwrite entity/$ID/Ghost/color '#00D2AD'"
> self do "vvwrite entity/$ID/Description \"GHOST GANG!!\""
> self do "vvwrite entity/$ID/Grammar/Attributes[gender] Male"
  • Первая строка проверяет, что вы являетесь админ-наблюдателем.
  • Затем мы при необходимости добавляем любые компоненты, полезные для администрирования. Они отображают иконки профессий, иконки антагонистов и щиты разума. Компоненты Grammar и Identity позже используются для настройки aghost.
  • Третья и четвёртая строки задают цвет и описание призрака с помощью vvwrite с путём и значением.
  • Последняя строка меняет местоимения так, чтобы они отображались как He, когда кто-либо осматривает призрака.

Когда вы захотите запустить скрипт в игре, всё, что нужно сделать — использовать команду exec. Если вы назвали приведённый выше скрипт “admin”, вы запустили бы команду exec /admin.

Subpages