Создание комнат возрождения
Создание вашей комнаты
Для начала выберите место, в котором будет располагаться ваша комната. Она должна быть достаточно большой, чтобы в ней поместилось много info_player_teamspawn энтити, причём они не должны сталкиваться. Также должна быть дыра в стене, в которую впоследствии будет вставляться дверь. Комната должна быть стилизована под соответствующую ей команду. На приведённом изображении показана комната для команды Красных.
Создание комнаты появления (репауна)
Также читай Создание области респауна
Помещение игроков в комнату
Для начала создайте info_player_teamspawn и измените команду появления на Красных. Сделайте 15 копий этой энтити, а также убедитесь в том, что у каждой есть достаточное пространство. Назовите все энтити одним именем, к примеру team_red_player_01.
Добавление шкафчика с припасами
В комнату возрождения можно добавить ресапплай. Он состоит из двух энтити:
- prop_dynamic который будет представлять из себя запирающийся шкафчик
- func_regenerate который, собственно, и будет придавать функциональность месту (перезарядка патронов и мгновенное пополнение здоровья)
Создайте в комнате prop_dynamic и выберите для него модель models/props_gameplay/resupply_locker.mdl
, после чего как назовите его, допустим resupply_red_1. После чего создайте
func_regenerate, brush-based энтити (установите материал tools/toolstrigger
) и измените её размер так, чтобы она окружала шкафчик. Убедитесь, что энтити занимает достаточное место вокруг шкафчика. Тем не менее размер этой области не должен создавать хитростей для игроков (эксплойтов). Например при ошибке игрок сможет мгновенно лечиться за пределами комнаты.
Установите имя нашего шкафчика (resupply_red_1) в параметр энтити Associated Model, и выберите команду Красных.
Позволить игрокам менять класс без самоубийства
Создайте в комнате func_respawnroom brush-based энтити с материалом tools/toolstrigger и разместите её так, чтобы она содержала в себе point-based энтити - точки появления игроков, которые были созданы ранее (info_player_teamspawn). Кроме того эта энтити должна касаться пола и быть хотя бы 96 пунктов в высоту. Назовите её, к примеру, respawnroom_red_01, в зависимости от того, как много таких комнат вы хотите сделать.
Не пускаем задир на респаун
Смотри также: Барьеры для определённой команды
Некоторые игроки любят сидеть на респауне и убивать только что появившихся игроков. Тем не менее существует простое решение этой проблемы - создание барьеров, через которые не могут проходить игроки одной определённой команды (в данном случае команды противников).
Создайте func_respawnroomvisualizer, brush-based энтити с материалом tools/toolsnodraw
. Примените материал overlays/no_entry
к брашу со стороны, внешней от респауна (т.е. та сторона, которая будет видна противникам). Убедитесь, что вы правильно поставили параметр Associated Respawn Room
.
Создание двери
Завершающий шаг в создании респауна это установка двери, которая защищает комнату от большей части вражеского огня. Сначала разместите prop_dynamic
и дверном проёме и установите её модель как models/props_gameplay/door_slide_large_door.mdl
.
Затем создайте func_door энтити. Следует поизменять размеры браша энтити, чтобы она точно совпадала с моделью двери по размерам. Назовите её по своему усмотрению, желательно как-то связать имя с именем текущего респа, чтобы не создавать путаницы, к примеру door_spawnroom_red_01 (первый респаун красных). Так как эта энтити будет лишь схемой движения для пропа двери текстурируйте её структурой nodraw
.
func_door
имеет множество параметров, которые можно менять для создания спецефического поведения двери.
- Speed: Данный параметр изменяет сторость открывания и закрывания двери. Обычно в ТФ2 используется значение 400 для быстрых дверей. Если вы хотите, чтобы дверь открывалась медленней, поставьте меньшее значение.
- Delay Before Reset: Время, через которое дверь закроется, после действия триггера. Установите это значение в -1 для того, чтобы дверь никогда не закрывалась автоматически (а только по триггеру). Любое другое значение кроме -1 может привести к тому, что один игрок может заблокировать всю команду на респауне.
- Lip: Указывает на сколько единиц дверь входит в окружающую структуру (в единицах Хаммера). Для данного учебника это значение 3.
- Move direction: Этот последний параметр - самый важный для создания двери. Он указывает направление открытия двери. Мы хотим, чтобы дверь открывалась вверх, так что здесь мы должны указать значение "вверх". Можно, конечно, указывать и другие значения, главное, чтобы игроки могли нормально выходить. Также существуют вращающиеся двери func_door_rotating.
Также уберите флажок Touch Opens, чтобы команда противников не смогла открывать дверь, просто к касаясь её.
Теперь выделите проп двери и установите её родителя в имя func_door
которую создали.
Затем создадите filter_activator_tfteam и назовите её каким-нибудь подходящим образом (здесь filter_redteam). Затем установите фильтр команды в RED, чтобы триггер активировался только вслучае если в зону открытия двери попадал красный игрок. Для респауна команды Синих этот параметр должен быть установлен в BLU.
Наконец создадим trigger_multiple, который будет сообщать двери когда ей открываться и закрываться. Эта brush-based энтити должна быть больше размера игрока, а также игрок должен достигать двери в её зоне (т.е. чтобы дверь не захлопывалась перед носом у игрока), можно например растянуть браш этой энтити, чтобы он был доступен по обе стороны двери. Правильно установите фильтр (filter_redteam).
Теперь отредактируем инпуты и аутпуты. Изображение показывает, как они должны выглядеть. Единственное, что меняется - это имена энтити, которые участвуют в обработке процесса открытия двери (поле Target Entity).
Имена аутпутов, показывают, по какому действию они будут выполняться. К примеру OnStartTouchAll аутпут активируется, если игрок одной из команд войдёт в зону энтити. На приведённом изображении двери подаётся команда открытия, если игрок входит в зону энтити - и закрытия, когда он покидает её.
Теперь можно сказать, что вы закончили с созданием функциональной стороны комнаты респауна: мы создали точки, появления, зону, в которой можно менять класс без самоубийства, ресапплай, двери и барьеры для команды противника. Осталось только оформить комнату подобающим образом. Кроме того вам возможно понадобиться создать несколько таких комнат, в зависимости от игровой задачи.
Значение комнаты респауна
Комната респауна является не только местом появления игроков. Это также зона абсолютной безопасности, которую можно использовать для передышки. На многих паблик-серверах устанавливается длительное время респауна (от 10 до 20 секунд), поэтому вы должны быть уверены, что игрок не будет случайно уничтожен, только появившись на респауне, ведь это вынудит его ждать ещё 20 секунд. Создавайте респаун с умом. Помните, что игроки могут и будут использовать дыры в ваших картах и дизайне.
Спаункемпинг всё равно будет присутствовать на карте, но его эффект можно свести к минимуму благодаря следующим советам:
- Размещайте
info_player_teamspawn
на достаточном расстоянии от выхода, чтобы избежать попаданий в появляющихся игроков при открытой двери - Шкафчики пополнения должны располагаться недалеко от выхода, чтобы сделать процесс ресапплая максимально простым для игроков
- Выходы с респаунов должны иметь ширину в три человеческих, чтобы избежать простого прицельного огня спаункемперов
- Избегайте помещения выхода с респауна на открытые пространства и длинные коридоры, создавайте дополнительные выходы, что позволит игрокам выбирать один из них. Оставляйте возможности избежать вражеского огня при выходе с респауна.
- Избегайте создания окон на респаун, которые позволят противникам вовремя перезаряжаться.
- Если предполагается, что респаун будет иметь два выхода, организуйте их таким образом, чтобы один противник не мог держать в поле зрения обе двери одновременно.
‹‹ Назад к Создание уровня Team Fortress 2