Тутор повествует о том, как можно построить мортиру из ориганала ХЛ2, установленную на крыше Нексуса Патруля.
Как выразился по ее поводу Барни: «Устройство подавления будет.. ээ.. «подавлять» проходящих, пока его не отключишь»
Первый делом разместим на карте две энтити prop_static, выбрав для них модели models/props_combine/combine_mortar01a.mdl и mortar01b.mdl соответственно.
Расположение моделей можно увидеть на скриншоте.
Основой конструкции служит func_tankmortal. Для его создания нужно к брашу произвольной формы (желательно кубической и небольших размеров) применить Tie to Entity и в списке выбрать func_tankmortar. Поместить его нужно вглубь нашей конструкции. Примерное расположение указано на рисунке.
Перед «подавителем» нужно установить npc_enemyfinder, этот npc-энтити служит для поиска противников и передачи целевой энтити самой пушке.
*Важным моментом является направление «взгляда» этой энтити. Он должен быть направлен в сторону появления противника, иначе «радар» просто не заметит подходящего врага.
В любом месте карты (а лучше непосредственно над пушкой, для большей упорядоченности) нужно разместить еще две энтити – logic_relay и ai_relationship.
Рядом с пушкой нужно установить ambient_generic. Первая энтитя устанавливает параметры активации мортиры, скорость и режим стрельбы, а также указывает на то, что мортира активируется по триггеру.
«Радар» npc_enemyfinder дефолтно нейтрален ко всем другим npc, и поэтому приходится дополнительно объяснять ему, где враг. Этим как раз и занимается энтитя ai_relatioship.
Ambient_generic при выстреле пушки будет издавать соответствующих звук. Зададим ей сразу имя mortar_fire_wav
Теперь, когда все элементы «подавителя» установлены, нужно заняться настройкой самих энтитей, их аутпутов и инпутов.
func_tankmortar (самая муторная в настройках часть)
Name: tank_mortar
Yaw rate: 360
Yaw range: 360
Yaw tolerance: 15
Pitch rate: 100
Pitch range: 0
Pitch tolerance: 180
Barrel Length: 15 (длина предполагаемого «дула» пушки)
Barrel Horizontal: 0
Barrel Vertical: 64
Flash Sprite: sprites/redglow1.vmt (спрайт вспышки при выстреле)
Sprite Scale: 6
Rate of Fire: 22 (интенсивность огня)
Bullet accuracy: small cone (относительно высокая точность, малый разброс)
Minimum: 500
Maximum: 5000 (максимальный и минимальный радиус действия пушки)
Shell travel time: 1.5 (время, проходящее после выстрела и до попадания в цель. Сек)
Incomming Shell Sound: Weapon_Mortar.Incomming (не самый приятный звук на открытом пространстве ;) )
Единственный аутпут этой энтити:
OnFire – mortar_fire_wav – PlaySound
При выстреле будет звучать звук, заложенный в настройках ambient_generic.
-----
npc_enemyfinder (радар)
Name: tank_mortar_enemyfinder
Min Search Dist: 500
Max Search Dist: 4500 (думаю, все ясно из названия параметров)
Start On: Yes
Аутпуты:
OnFoundEnemy – tank_mortar – SetTargetEntity
OnLostEnemy – tank_mortar – ClearTargetEntity
OnLostEnemyLOS – tank_mortar – ClearTargetEntity
Мы описали условия поиска врагов нашим радаром. В случае, если противник будет замечен, радар обозначит его как энтитю-цель для пушки. Если противник потеряется из виду, вакансия цели будет очищена.
-----
Ai_relationship (поведенческие правила %))
Subject: npc_enemyfinder
Target: !player
Disposition: Hate
Start Active: yes
Теперь радар «ненавидит» игрока и считает его противником.
-----
Ambient_generic
Name: mortar_fire_wav (как уже установили выше)
Sound Name: Streetwar.d3_c17_10a_fire (звук выстрела из мортиры)
Volume: 10
Осталось расписать условия стрельбы.
logic_relay
name: relay (к черту оригинальность)
Start Disabled: no
Аутпуты:
OnTrigger – tank_mortar – SetFireRate - .22 (Parameter)
OnTrigger - tank_mortar – Activate – delay (3.95)
OnTrigger - tank_mortar - FireAtWill – delay (4.05)
Тут мы настроили частоту стрельбы (.22) и время, которое будет проходить после активации подавителя до непосредственной атаки.
Теперь недалеко от точки старта игрока разместим браш, и переведем его в trigger_once.
В аутпутах триггера пропишем:
OnTrigger – relay – Trigger
На этом построение механизма подавителя полностью завершено.
Принцип его действия следующий: игрок, проходя через триггер, активирует реле (logic_relay) чем «настраивает» и активирует Подавитель.
Сразу со стартом карты мортира уже нацелена на игрока, в этом ей помогает ai_relationship, работающий в связке с радаром-наводчиком npc_enemyfinder. Как только игрок окажется в зоне действия Подавителя, по нему будет открыт огонь.
Исходник и компилл прилагается
[HL2] Подавитель Альянса
- giant_lizard
- Маппер
- Сообщения: 364
- Зарегистрирован: 12.10.2007
- Откуда: ЗОНА 51
сам писал? молодец, уважаю таких :Bravo:
пс: добавьте в туторы
пс: добавьте в туторы
Все что не попало ниже, т.е. ничего
-
- Маппер
- Сообщения: 1748
- Зарегистрирован: 18.02.2008
- Откуда: <удалено>
Отлично!
Завязываю с играми
Мну в Xbox LIVE
Угнетай! Подавляй! Классный туториал!
I rule, therefore i am.®
Fully resurrected now!
Happy legacy Garry's Mod, Team Fortress 2 and Left 4 Dead user!
ಥ_ಥ кое-кто class update!
Happy legacy Garry's Mod, Team Fortress 2 and Left 4 Dead user!
- giant_lizard
- Маппер
- Сообщения: 364
- Зарегистрирован: 12.10.2007
- Откуда: ЗОНА 51
что такое Yaw tolerance?
Все что не попало ниже, т.е. ничего
- giant_lizard
- Маппер
- Сообщения: 364
- Зарегистрирован: 12.10.2007
- Откуда: ЗОНА 51
пасиб :)Crush писал(а):Определяет погрешноть отклонения снаряда
Все что не попало ниже, т.е. ничего