Настройка логики вертолёта
Содержание
Логика вертолёта[править]
Общие сведения:
- Вертолёт работает на «логике».
- На вертолёт реагируют аномалии.
- Вертолёт не обрабатывает столкновения с геометрией и физикой пока он не сбит.
- Попадания в область кабины, где сидит первый пилот, в десятки раз более болезненны для вертолёта.
- У вертолёта есть универсальная боевая схема на манер сталкеров.
- Пилоты вертолета реагируют репликами на события: хит, видит врага, поврежден (задымился), падает.
Схема heli_move[править]
Позволяет летать вертолёту по патрульному пути, регулировать скорость, зависать, стрелять по различным целям.
Для схемы должен быть задан path_move – путь, по которому будет летать вертолёт. Он может содержать одну вершину, если нужно, чтоб вертолёт висел на месте.
Можно (но не обязательно) задать path_look – путь, в вершины которого вертолет может смотреть.
Вершины этих путей могут быть поставлены где угодно в пределах ограничивающего бокса уровня. Они не зависят от ai-nodes.
По пути вертолёт летает без учёта связей между вершинами. Он летает от вершины к вершине в порядке возрастания их номера (т.е. в порядке, в котором их поставили на уровень).
Вертолёт старается летать точно по вершинам пути. При желании можно сделать ювелирный пролёт под мостом.
Вертолёт старается летать как можно быстрее. Пояснение: если ему задать, что в следующей вершине пути он должен иметь скорость 10 м/с, а его максимальная скорость установлена в 30 м/с, то он не станет сразу лететь 10 м/с. Он сначала будет разгоняться вплоть до 30 м/с и только на подлёте к целевой вершине начнёт тормозить с расчётом прибыть в неё имея 10 м/с.
Если в вершине пути path_move задан набор флажков, то вертолёт будет смотреть в любую из вершин path_look, в которых задан такой же набор флажков. Поворачиваться к этой точке вертолёт начнёт с предыдущей вершины пути. На данном этапе вертолет не может, зависнув в одном месте, смотреть поочередно в несколько точек path_look
Настройки[править]
; обязательные
path_move = <имя_пути> ; путь, по которому будет летать вертолёт
max_velocity = km/h ; максимально допустимая скорость, если возможно, он будет стремиться к ней. Если на пути вертолет промахивается по точкам, то следует уменьшить max_velocity
; необязательные
enemy = <nil/actor/StoryID> ; враг
fire_point = <имя_пути> ; путь из одной точки, в которую вертолёт будет вести огонь
min_mgun_attack_dist = <n> ; мин. расстояние (в метрах), при котором можно использовать пулемет
max_mgun_attack_dist = <n> ; макс. расстояние (в метрах), при котором можно использовать пулемет
min_rocket_attack_dist = <n> ; мин. расстояние (в метрах), при котором можно использовать ракеты
max_rocket_attack_dist = <n> ; макс. расстояние (в метрах), при котором можно использовать ракеты
use_rocket = <true/false> ; вкл./выкл. стрельбу ракетами. Если не задано, будет считаться true
use_mgun = <true/false> ; вкл./выкл. стрельбу с пулемета. Если не задано, будет считаться true
engine_sound = <true/false> ; вкл./выкл. звук двигателя вертолёта. Если не задано, будет считаться true
upd_vis = <n> ; время (в секундах), через которое проверяется видимость врага
stop_fire = <true/false> ; если увидит игрока, остановиться чтобы смотреть на него с позиции, и обстреляет, если игрок – враг. По умолчанию false
show_health = <true/false> ; отображает индикатор жизни вертолёта. По умолчанию false
fire_trail = <true/false> ; вкл./выкл. стрельбу линией (не в одну точку). По умолчанию false
invulnerable = <true/false> ; неуязвимость. Если true, вертолёт игнорирует все хиты. По умолчанию false
immortal = <true/false> ; бессмертие. Если true, вертолёт получает повреждения, но не умирает. По умолчанию false
mute = <true/false> ; отключает универсальные реплики пилотов вертолета. По умолчанию false
Универсальная боевая схема[править]
В универсальной боевой схеме вертолёт не привязан к путям.
Вертолёт не видит никого. Узнать о враге вертолёт может только при получении хита или из параметра в custom data.
Вертолёт стреляет по врагу, если видит его. Если не видит – ищет, облетая вокруг точки, где последний раз видел. Если долго не видит врага – забывает его. Если врага задали принудительно из текущей секции схемы поведения, то он не забудет его, пока находится в этой секции.
Настройки[править]
Отдельной секции для этой схемы поведения нет. Поэтому настройки производятся в секции текущей схемы поведения:
combat_ignore = true/false true означает игнорирование получения хита. Т.е. вертолёт не будет пытаться «отомстить» тому, от кого он получил хит.
combat_enemy = nil/actor/StoryID С помощью этого параметра можно задать вертолёту конкретного врага. nil – нету врага; actor – игрок; SID – числовое story id врага.
combat_use_rocket = true/false Можно ли вертолёту пользоваться рокетами.
combat_use_mgun = true/false Можно ли вертолёту пользоваться пулемётом.
combat_velocity = <число> Скорсть, с которой вертолет будет делать боевые заходы
combat_safe_altitude = <число> Высота, относительно самой высокой точки геометрии на уровне ниже которой вертолет не будет опускаться в боевой схеме (может быть отрицательным)
К вертолёту подключена схема xr_hit. Работает как у сталкеров. В xr_effects есть группа функций для работы с вертолётом из его custom data:
heli_set_enemy_actor - сделать актёра врагом вертолёту heli_start_flame - поджечь вертолёт heli_die - убить вертолёт
combat_velocity = - боевая скорость в этой секции указывается в м/с combat_safe_altitude = - высота боевая в метрах, может принимать отрицательные значения combat_use_rocket = - true/false использовать ли ракеты в этой секции combat_use_mgun = - true/false использовать ли пулемет в этой секции