Комната
Итак для начала нам нужна комната, размеры не важны, главное чтобы она состояла из block'ов (т.е. не из сфер или ещё чего-либо), ну и очень желательно, чтобы наша была как бы "герметична" т.е без дыр, но оставьте несколько (или хотя бы 1) прямоугольных отверстий для дверей. Я создал вот такую комнату: Дальше внутри нашей комнаты создаем квадрат, соприкасающийся со стенками комнаты и покрываем его текстурой tools/toolstrigger Далее привязываем к энтити (Tools->Tie to entity) и выбираем func_respawnroom Потом нужно изменить в свойствах (Edit->Properties) Name (любое, например, для удобства назовем red_respawn_01) и Team (например Red)
Теперь расставляем самих игроков четко внутри комнаты. Для этого используем энтитиinfo_player_teamspawn давать имя необязательно, но обязательно нужно указать в графе Team, в свойствах, принадлежность к той или иной команде. Расставили необходимое количество игроков красных в моем случае, двигаемся дальше.
Шкафчик
Он состоит из двух составляющих: динамической модельки шкафа, и прямоугольника, в который погрузим шкаф, с текстурой tools/toolstrigger
Сначала ставим prop_dynamic задаем ему World model (models/props_gameplay/resupply_locker.mdl) и задаем имя (например resup01)
Теперь как вы поняли, нужно погрузить шкафчик в прямоугольник с текстурой tools/toolstrigger c привязанной к нему энтитей func_regenerate Прописываем в Associated Model resup01 (или то что прописали в имени модели шкафа), ну и соответсвенно команду которой будет открываться шкаф (Red в моем случае) Только не делайте этот прямоугольник громадным, для того чтобы за километр от респа ничего не восстанавливалось :D .
После этих операций получаем что-то вроде этого: Двери
Теперь добавляем дверь :crazy: Ставим prop_dynamic задаем ему модель нужной нам двери, советую models/props_gameplay/door_slide_large_dynamic.mdl Называем нашу дверь как-нибудь (например prop_red_spawngate_01) .
Добавляем filter_activator_tfteam задаем в его свойствах соответсвие нужной нам команде, и называем, например, red_filter. Все теперь его не трогаем.
ВАЖНО!! Эта энтити ставится на карте только 1 раз для одной из команд, и второй раз для другой!
Теперь помещаем дверь в тот же самый tools/toolstrigger с энтитей trigger_multiple называем его например trigger_red_spawngate_2 Важно, чтобы этот триггер начинался в том месте где дверь будет сама открываться при приближении к ней игрока, ну и соответсвенно чуть подальше от самого ближнего к двери info_player_teamspawn , чтобы дверь не открывалась при появлении игрока автоматически.
Теперь создаем вплотную перед дверью небольшой железный пласт, повторяющий дверь по ширине и высоте, толщиной примерно 8.0, покрытый текстурой metal/ibeam001b например, и привязываем к нему func_door называем door_red_spawngate_3
Добавляем аутпуты:
My output named: OnClose
Targets entity named: prop_red_spawngate_01
Via this input: SetAnimation
With a parameter override of: close
After a delay in seconds of: 0.00
Возвращаемся к trigger_multiple и добавляем к нему аутпуты
Output OnEndTouchAll Target Entity door_red_spawngate_3 Via Input Close Delay0.00 Only Once No
Output OnStartTouchAll Target Entity door_red_spawngate_3 Via Input Open Delay 0.00Only OnceNo
Теперь ещё одна не мало важная деталь. Добавляем небольшую вставку толщиной 8.0 по центру двери высотой с дверь, а шириной 112.0, если вы взяли ту модель двери, которую предложил я. Покрываем текстурой tools/toolsnodraw, привязываем к func_respawnroomvisualizer имя можно не задавать, а вот Associated Respawn Room задайте red_respawn_01 (т.е. имя которое вписали в свойствах func_respawnroom)
Вид изнутри спавна: Собственно наш Respawn room готов! Осталось добавить различных "украшений", лампочек и.т.д. на вкус, думаю самое трудное рассказал на данную тему.
Если что-то неправильно/неполно сказал, прошу поправить.
P.S Это мой первый тутор, да и пост тоже, поэтому прошу не судить строго
