Ru/L4D Level Design/Elevators

Left 4 Dead имеет уникальную систему для создания лифтов, которые помогают Выжившим перемещаться вверх и\или вниз. Nav-сетка должна быть полностью соединена на всей карте, начиная от того места, где игроки начинают играть и вплоть до того места, куда им надо прийти. Поэтому для лифтов области nav-сетки необходимо соединять вертикально.
Для создания лифта используется браш-энтити, которая называется func_elevator. Вы также можете использовать модельку лифта, parent’ом, которой будет невидимый func_elevator или модельку с собственной анимацией, которая также будет связана с невидимым func_elevator.
Пример func_elevator есть в карте tutorial_standards.vmf.
== Создайте брашевый лифт ==
Создайте браш или несколько брашей, которые будут энтитей func_elevator. 
Выделите их и нажмите + чтобы превратить их в энити. Выберите "func_elevator" из выпадающего списка.
Поменяйте имя на желаемое вами. (поле Name)
Поменяйте 3-ю цифру в Bottom floor position , это будет нижняя точка спуска лифта, а так же в Top floor position на любое значение – соответственно, это верхняя точка (В окне проекции Front или Side есть специальные вспомогательные «указатели», потянув за которые, вы легко можете изменить эту 3-ю цифру).
Измените значение скорости (Speed) (unit’ы в секунду).
== Добавляем этажи для лифта ==
Для того чтобы указать точки остановки лифта, вам потребуется разместить энити info_elevator_floor.
Выберите Entity Tool на панели слева от окон проекции и выберите "info_elevator_floor" из выпадающего списка Objects справа. 
Поместите два экземпляра в окне проекции Camera прямо под лифтом. 
С помощью окон проекции Side или Front, поместите их так, чтобы один был в том месте, где находится Top floor position энтити func_elevator, а второй – там, где Bottom floor position той же энтити func_elevator.
Откройте окно свойств нижнего info_elevator_floor, нажав +.
Поменяйте поле Name на "bottom". 
Выделите верхний info_elevator_floor, и поменяйте Name на "top".
== Контролируем перемещение лифта ==
Теперь нужно кое-что добавить в инпут нашего func_elevator, чтобы заставить его перемещаться.
На карте tutorial_standards, это func_button которую выжившие могут нажимать.
Чтобы создать func_button, создайте браш и нажмите + чтобы преобразовать его в энтити. Выберите "func_button" из выпадающего списка.
Также можно настроить несколько свойств нашей кнопки, чтобы заставить ее работать как надо, но просто давайте пока оставим их по-умолчанию и впишем в поле Name "button".
Перейдите на вкладку Flags в меню свойств и поставьте галочки напротив следующих пунктов: 
* Don't move
* Use Activates
Это означает, что Выжившие могут нажимать ее и использовать, и клавиша не будет перемещаться, когда ее нажмут.
Теперь переключитесь на вкладку Outputs.
Добавьте новый аутпут кликнув по кнопке Add... Кнопка расположена ближе к левому нижнему углу окна. 
* Выберите в поле My output значение "OnPressed".
* Выберите в поле Target entities значение "elevator_down_relay". 
* Измените значение Via this input на "Trigger".
Сейчас нам потребуется создать энтити elevator_down_relay, которая будет выполнять те действия, которые будут происходить после нажатия кнопки..
Выберите Entity Tool, и найдите "logic_relay" в выпадающем списке Objects (справа). 
Разместите logic_relay рядом с func_button. 
Откройте свойства при помощи +.
Поменяйте имя на "elevator_down_relay" которое понадобится нам для создания аутпута в func_button.
Переключитесь на вкладку Outputs и добавьте новый аутпут со следующими полями: 
* My output named: OnTrigger
* Targets entities named: elevator
* Via this input: MoveToFloor
* With a parameter override of: bottom
* After a delay in seconds of: 0
Это заставит лифт спуститься, когда активируется logic_relay, которое в свою очередь, активировано нажатием кнопки. 
В зависимости от настроек вашего лифта, вы можете «приказать» лифту двигаться в другое место. Обратите внимание func_button на func_elevator на карте tutorial_standards.vmf.
Редактирование nav для func_elevator требует чтобы вы поместили лифт в каждое положение в котором это возможно, вставляя nav_mark_walkable () на него и построения навигационной сетки ().
Всё! Лифт готов!