TF2/Team-Specific Doors:ru

From Valve Developer Community
< TF2
Revision as of 06:43, 2 May 2012 by Mehiller (talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
English

Двери для определенной команды открываются только для какой-либо одной команды, и чаще всего помещаются перед респауном.

Создание Двери респауна

В этом примере мы будем делать дверь для респауна красной команды, которая откроется только для нее.

Энтити filter_activator_tfteam

Для начала, создадим энтити (Shift+E) filter_activator_tfteam. Эта энтити (фильтр) определит, какая команда может открыть дверь. В его свойствах (Alt+Enter) нужно будет присвоить значения Team (т.е. команды), Name (имя) и Filter mode (способ фильтра) соответствующей команде. В нашем примере Team - Red (красная команда), Filter Mode - Allow entities that match criteria, Name - red_filter (название может быть любым, но советую не мудрить с ним, ибо оно нам еще понадобится).

На одну команду нужен только один filter_activator_tfteam (т.е. всего 2: для красной и синей команды). Все ваши какие-либо ограничения (фильтры) могут быть связаны с этими 2-мя filter_activator_tfteam. Месторасположение этих энтити может быть любое (в игре вы их не увидите), но хорошо было бы поместить эти фильтры в местах, в которых вы их не потеряете. Так что поместите наш готовый filter_activator_tfteam в область респауна команды.

Энтити prop_dynamic

Энтити prop_dynamic, которая служит дверью для респауна.

Идем дальше, создайте энтити (Shift+E) prop_dynamic, откройте его свойства Edit -> Properties (Alt+Enter). Жмем двойным щелчком по World Model, далее выделяем вкладку props_gameplay, там находим модель двери door_slide_large_door.mdl жмем ОК - дверь готова.

Энтити func_door

Примерно так должна выглядить func_door.

У нас есть дверь, теперь нужно заставить ее открываться и закрываться. С этим нам поможет func_door - браш-энтити. Для создания этой энтити рисуем браш длиной/высотой/шириной примерно в нашу дверь (ну ширину можно чуть побольше сделать). Красим этот браш в текстуру tools/toolsnodraw (для удобства, введите это в Filter в окне выбора текстур), т.к. это будет невидимая преграда в игре. Превращаем браш в энтитю - Tools -> Tie to Entity (Ctrl+T), выбираем в свойсвах func_door. Но это еще не все. Теперь нам нужно покопаться в свойствах (Alt+Enter) func_door:

Свойство Описание Значение
Name Это имя, для удобства оно не должно быть слишком сложным и большим, оно нужно для взаимодействия с другим объектом. door_red_spawn_01
Speed Это скорость, с которой дверь будет открываться/закрываться. Обычно она колеблится около 400-500. 450
Move direction Это свойство определяет, в каком направлении дверь будет открываться, в нашем случае дверь должна двигаться вверх. Up
Lip Эта опция определяет, сколько юнитов отступа (единицы измерения Hammer) делает дверь при открытии. 3
Delay Before Reset Это значение ставьте -1, чтобы дверь не закрылась, когда кто-либо находится в дверном проеме. Иначе вся команда может просто тупо застрять в дверях респауна или вообще заблокировать дверь. -1

Далее, все в тех же свойствах перейдите во вкладочку Flags func_door. И обязательно уберите галочку с Touch Opens, иначе члены другой команды смогут заходить на вражеский респаун.

Теперь мы должны связать наш func_door с моделью двери. Выберите prop_dynamic модель двери, и в ее свойствах (Alt+Enter) установите в значение Parent имя func_door. В нашем случае, это - door_red_spawn_01.

Энтити trigger_multiple

Зона активации двери и собственно сам активатор - trigger_multiple.

Третья и последняя часть двери - trigger_multiple. С помощью этой браш-энтити дверь будет открываться, когда игрок красной (в нашем случае) команды будет ее касаться и закрываться, когда будет выходить из нее. Получается некая "зона активации двери".

Эта энтити должна быть достаточно большой, чтобы дверь успевала открыться, прежде чем игрок дойдет до нее, иначе возможно то, что он будет в нее врезаться. Высота и ширина этой энтити должна быть размерами примерно с дверь, длину установите побольше, но не злоупотребляйте. Для создания браш-энтити рисуем браш, далее Tools -> Tie To Entity (Ctrl+T), выбираем нужную нам trigger_multiple, далее красим ее текстурой tools/toolstrigger (Shift+A). Задаем свойства этой энтити: Edit -> Properties или Alt+Enter (убедитесь, что вы выделили только что созданную trigger_multiple и меняете ее свойства). Там открываем вкладку Outputs. Советую для начала ознакомиться с этим замысловатым, но простым инструментом (что то типа написания скриптов), вот небольшая статейка на русском - http://source-inside.ru/index.php?id=94 Хотя, здесь от вас понадобится ввести только значения, указанные в таблице ниже.


My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnEndTouchAll door_red_spawn_01 Close <none> 0.00 No
Io11.png OnStartTouchAll door_red_spawn_01 Open <none> 0.00 No


Теперь вернемся во вкладку Class Info свойствах trigger_multiple. В опции Name filter (имя фильтра) должно быть имя вашего filter_activator_tfteam, чтобы дверь открывалась для определенной команды. В нашем случае, это - red_filter.

Это все, теперь мы имеем дверь респануа для красной команды.

Download the demo map here: (no link yet)

Теория Дизайна

Размещение

По идее, двери для респауна могут быть помещены в любое место на карте, т.е. вы можете ограничивать доступ в какое-либо место какой-либо команде. Но будьте осторожны, ибо это может очень сильно повлиять на баланс.

Столкновение

Двери на официальных картах - энтити prop_dynamic в свойствах обязательно имееет значение Collisions - Not Solid.

Здания

Можно также добавить func_nobuild браш-энтити в дверной проем. Для чего? Чтобы инженеры не могли строить свои "башни" в дверном проеме. Это опять же дисбаланс и возможные глюки с открытием/закрытием двери.

См. Также..

‹‹ Назад к Создание уровня в Team Fortress 2