Примеры 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:on10 раз: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.