РУБИЛЬНИКИ И КНОПКИ

Рубильники (Switch) и кнопки (Button) – специальные объекты, которые используются во многих случаях создания эффектов. Они порождают сигналы ControlDevice.

Кнопки порождают однотипный сигнал ControlDevice, полезный для активирования ‘односторонних’ эффектов, таких как сигнализация, или DestroyTraps (Ловушка-Уничтожение).

Рубильники используют двусторонние сигналы ControlDevice (вкл/выкл), которые полезны для вещей, которые могут быть включены И отключены. Например, двери или свет.

ControlDevice – это сложная тема, но я попытаюсь рассказать вам все, что смогу об этом.

Я знаю следующие скрипты, порождающие сигналы ControlDevice

StdLever Вкл/Выкл – Двустороннее действие (по умолчанию для рубильников)
StdButton Вкл - Одностороннее Действие (по умолчанию для кнопок)
TrigSlain Вызывает одностороннее действие, когда кого-то убили.
TrigUnlock Вызывает вкл/выкл, основанное на состоянии замка (открыт/закрыт)
TrigDoorOpen Вызывает вкл/выкл, когда дверь открыта/закрыта
TrigRoomPlayer Срабатывает, когда игрок входит в комнату
TrigRoomCreature Срабатывает, когда кто-то входит в комнату

Также вы можете использовать реакции тревоги (alert responses) и разговоров (сonversations), чтобы заставить сработать ControlDevice, но это будет обсуждаться позже! И помните, вкл/выкл ControlDevice также может, в теории, обрабатывать односторонние объекты. Например, рычаг может вызвать DestroyTrap (Уничтожение объекта) при первом использовании, а дальше будет бесполезен.

Совет: если вам нужно фроббировать (использовать) объект дважды, прежде чем он сработает, попробуйте связать рычаг с инвертером (inverter), а инвертер – с целевым (конечным) объектом(ами). Инвертер меняет смысл связи в обратную сторону.
(Jerk: Предлагаю более легкий и интересный вариант. Выберите рычаг, зайдите в его свойства, выберите Tweq->JointsState, нажмите “Edit”, и измените AnimS с “[None]” на “Reverse”. Теперь для того, чтобы дверь, связанная с рубильником, открылась, вам нужно дважды дернуть за рубильник.)

Помните, если вы используете рычаг для того, чтобы открыть/закрыть дверь, и при этом хотите, чтобы игрок не мог открыть ее обычным способом, сделайте следующее: в свойствах двери добавьте FrobInfo, в котором в пункте WorldAction выберите “Script, Ignore”. Теперь в игре дверь можно будет открыть только при помощи рычага.

Также помните, что состояние рычага может быть изменено при помощи связанного с ним ControlDevice. Например, если вы хотите, чтобы один рычаг был в том же положении, что и другой, свяжите их между собой (один управляет вторым, а второй – первым), любой из них свяжите с управляемым объектом. Можете использовать несколько рычагов, если хотите!

Вы можете обратить рычаг так, чтобы он во включенном состоянии посылал ‘выключено’ по умолчанию. Для этого откройте свойства рычага, выберите Tweq->JointsState, нажмите “Edit”, и измените AnimS с “[None]” на “On”.


Jerk: Поскольку автор полностью опустил практическую часть, то придется писать самому…

Начнем с самого простого – свяжем рубильник с дверью. Рубильники находятся в Gizmo->Switches->Levers. Допустим, Up/Down Switch. Связываем его с дверью. Добавляем связь: Flavor: ControlDevice; From: НомерРубильника; To: НомерДвери. Запускаем DromEd и убеждаемся, что дверь открывается и закрывается.

О том, как сделать, чтобы дверь нельзя было непосредственно открыть, а использовать для этого рычаг, инвертировать рычаг (чтобы дверь была по умолчанию открыта) – читай выше.

Займемся наиболее сложной темой – скриптами. StdLever и StdButton я пропускаю по тем причинам, что это наиболее известные скрипты, и применять их надо по принципу и подобию – рассмотрите любую кнопку/рычаг.

  • TrigSlain
Этот скрипт необходимо установить на жертву :). Создаем любое создание. В свойствах добавляем ему скрипт (S->Scripts) и в любую пустую строку прописываем “TrigSlain”. Теперь мы должны связать эту ходячую бомбу с чем-то ControlDevice-связью. Например, с рычагом – это наименее болезненный вариант. В свою очередь рычаг связывайте с тем, что нужно. Например, можете телепортировать страже подмогу, натравить на Гаррета пару бомб, провалить задание игры и т.д.

  • TrigUnlock
Этот скрипт пригодится, когда вы вскрываете дверь отмычками и, наконец, достигли своей цели – открыли замок (или закрыли ключом). Как и DromEd, он немного баговый, но работает. Создаете дверь, делаете так, чтобы ее можно было открыть ключом/отмычками. Добавляете ей скрипт TrigUnlock и даете ей связь ControlDevice с рычагом. Теперь если вы в игре будете открывать/закрывать дверь ключом, то рычаг будет на это реагировать. Недостаток: дверь не удается открыть вручную (когда она уже открыта).

  • TrigDoorOpen
Этот скрипт похож на предыдущий, но еще более баговый :). Срабатывает тогда, когда игрок открывает дверь. Создаете дверь, добавляете ей скрипт TrigDoorOpen и даете ей связь ControlDevice с рычагом. Теперь если вы в игре будете открывать/закрывать дверь ключом, то рычаг будет на это реагировать. Недостатки: как и в предыдущем случае дверь частенько не удается открыть ручками, а только при помощи ключика. А частенько удается, но дверь ‘уезжает’ в сторону. Spike14 сказал по этому поводу, чтобы я не мучался – такие проблемы у всех.

  • TrigRoomPlayer
Этот скрипт действует, когда Гаррет входит в комнату. Выбираем любую комнатную кисть (room brush). По умолчанию они являются копиями друг друга. Нам нужно выделить ту самую, где будет отслеживаться появление игрока. Выбираем ее, нажимаем ‘Create’(Создать) посреди экрана внизу. В появившемся окне “Room Hierarchy” (Иерархия Комнат) нажимаем ‘Add’(Добавить). В появившемся окне вводим имя комнаты. Что-то типа ‘Taget’. Жмем ОК и нажимаем ‘Create’ в окне “Room Hierarchy”. Все, наша комната оригинальна. Выбираем ее и нажимаем ‘Edit’(Редактировать). В ее свойства добавляем скрипты (S->Scripts) и вводим там “TrigRoomPlayer”. На последок жмем кнопку 'Compile' (что в главном окне DromEd). Теперь известным способом создаем ControlDevice связь с рычагом.
Да! Не забывайте, что для этих вещей необходимо загрузить convict!

  • TrigRoomCreature
В отличие от TrigRoomPlayer этот скрипт срабатывает, когда любое существо находится в комнате. Используется аналогично.


Tutorial by Spike14.
Translated by Jerk.
Хостинг от uCoz