Вертолёт

Материал из xrWiki
Версия от 02:07, 17 ноября 2017; RedPython (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Логика вертолёта[править]

Общие сведения:

  • Вертолёт работает на «логике».
  • На вертолёт реагируют аномалии.
  • Вертолёт не обрабатывает столкновения с геометрией и физикой пока он не сбит.
  • Попадания в область кабины, где сидит первый пилот, в десятки раз более болезненны для вертолёта.
  • У вертолёта есть универсальная боевая схема на манер сталкеров.
  • Пилоты вертолета реагируют репликами на события: хит, видит врага, поврежден (задымился), падает.

Схема 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 использовать ли пулемет в этой секции