Как убрать вертолет в сталкере

Обновлено: 05.07.2024

Нигде в интернете не видел нормального тутора по созданию вейпоитов и логике. В основном все расплывчато, официально, перекопировано с других сайтов и зачастую с ошибками. Поэтому, покопавшись в текстах игры, испытав на практике, решил написать свой. Надеюсь кому нибудь тутор окажется полезен.

Waypoins или вейпоинты - пути передвижения сталкеров, мутантов, техники в игре. Путь состоит из точек. Точка может быть одна или несколько, тут все зависит от результата, который нужно получить.
Вейпоинты создаются в файле all.spawn
После распаковки оного, получается куча файлов:
1 часть - секции (alife_название_локации.ltx),
2 часть - пути (way_название_локации.ltx).

Стоит задача - вертолет должен прилететь в определенную точку и начать обстреливать, например здание (все мы помним Янтарь, ЧАЭС).

Для начала разберемся с логикой, в нашем случае, она будет выглядеть так:

Разберем каждый параметр:

active = heli_move@idle --- делает активной определенную секцию логики, в нашем случае, это секция heli_move@idle
path_move = esc_heli_move --- название точки, в которую вертолет прибудет сразу после появления в симуляции (или другими словами, как только заспавнится)
path_look = esc_heli_look --- название точки, в которую наш вертолет будет смотреть и при указании определенных параметров в секции точки, стрелять по ней
engine_sound = true --- звук вертолета (true/false)
combat_use_rocket = true --- использовать ли рокеты (true/false)
combat_use_mgun = true --- использовать ли миниган (true/false)
rocket_delay = 3000 --- интервалы между пуском ракет по цели
combat_safe_altitude = -50 --- высота вертолета
mute = true --- переговоры пилотов (лично у себя, услышал их всего один раз - при крушении вертолета, позже, сколько не пытался, разговорить пилотов не получилось)

Итак, открываем файл way_l01_escape.ltx и в самом низу (А вообще, это не важно - вверху, внизу, в середине - кому как удобнее. Главное не писать свои секции, внутри других) пишем следующее:

Разберем каждый параметр:

[esc_heli_move] --- название секции, которое мы прпоисывали в path_move
points --- список используемых точек
p0:name --- название точки. Не менять, иначе получим вылет.
p0:flags --- подробнее расскажу чуть позже
p0:position --- координаты точки (Х, Y, Z)
p0:game_vertex_id --- гейм вертекс
p0:level_vertex_id --- левел вертекс

На практике, комбинирование параметров описанных выше, позволяет создать довольно интересные сценки с вертолетами.

Теперь настало время параметра p0:flags. Если своими словами, то это флажок, благодаря которому можно "синхронизировать" определенные действия.
Пример:

Как только написали все нужные пути, запаковываем all.spawn, спавним вертолет и наблюдаем за его действиями.

Обращу внимание, что при добавлении путей в all.spawn, НИ не нужна!

Некоторые параметры логики:




Флажок ВСЕГДА начинается со значения 0x1. Известные значения мне: (0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80. ), однако всречал примеры, где заданы значения 0x400, 0x800 и т.д Откуда значение берется и четкие его рамки, кроме четности (почему тогда не используется 0x6 ?) мне не известны.
Сегодня(делал логику и пути вертолетов) столкнулся с таким явлением: При установке флажка flags = 0x6 по прибытии вертолета в точку с этим флагом - ловил стабильный вылет "бад_аргумент3". При замене этого флага на flags = 0x8 вылет прекратился. Вот поэтому наверное и не используются флаги с таким значением. Хотя почему именно "06" - мне неизвестно.





Делаем квест с вертолётом. Задача: Сбить вертолёт выстрелом с гранатомёта.

Причём вертолёт после получения хита начинает гореть, затем пикировать, пилоты пытаются выравнить вертолёт, кричат в эфире, но вертушка не слушается, при

столкновении с землёй разваливается на части и происходит взрыв. На месте падения пожар и два тела пилотов.

Всё это делается в логике вертолёта.

Подготовим функцию, которая будет проверять насенение хита из РПГ и запишем её в файл xr_conditions.script.

function actor_active_rpg(actor, npc)
local rpg_section = "wpn_rpg7"
local actor_weapon = actor:active_item ()
return (actor_weapon

= nil) and actor_weapon:section() == rpg_section
end

Также в этом файле должна быть активна функция

function heli_see_actor(actor, obj)
return actor

= nil and obj:get_helicopter():isVisible( actor )
end

В файле xr_effects.script должны быть следующие функции.

Функция, поджигающая вертушку

function heli_start_flame(actor, npc)
bind_heli.heli_start_flame( npc )
end

Функция, разрушающая вертушку

function heli_die(actor, npc)
bind_heli.heli_die( npc )
end

Функция, отыгрывающая анимацию на месте падения ( взрыв и пожар )

Функция, спавна мёртвых пилотов

Дальше сделаем две секции спавна пилотов например [pilot_1] и [pilot_2]. Соответственно присвоим им класс и пропишем в character_desc_. Т.е. делаем всё,

как для спавна НПС через скрипт.

Установим звук, который будет слышен при падении вертушки. Например aes_choper_crush из ТЧ.
Соответственно звук должен быть прописан в конфигурационном файле script_sound.ltx, а в файле xr_effects.script должна быть функция для проигрывания звука.

Например для ЗП - это функция play_sound. Для ТЧ функция может быть другой.

Здесь нужно понимать, что вертушка не привязана к AI-сетке и как следствие "не видит" геометрию локации, пока не будет разрушена.

Прописываем начальную точку вертушки (можно прописать прямо под точкой атаки, опустив вертушку под локацию метров на 30).

Пусть это точка heli_wait_quest_move

Вписываем точку на которой будет висеть вертушка при её атаке. Лучше сделать повыше - метров 40, чтобы лучше пикировала. Назовём точку heli_attack_gg_move

Дальше выбираем точку падения вертушки ( лучше брать какой-нибудь косогор или здание, чтобы создать эффект столкновения ) и точку куда будет направлен нос

Рядом с точкой падения heli_crash_move ( метрах в трёх от неё ) сделаем две точки, на которых будут лежать тела пилотов. Например pilot_1_way и pilot_2_way.

Сигналом к началу квеста будет выдача инфопоршион start_quest.

С подготовкой закончили теперь сама логика вертушки.

[logic]
active = heli_move@idle
on_hit = hit

[hit]
on_info = %+black_hawk_down% ;если получен хит из РПГ - начинать гореть и падать

;
;Сидим тихо, никого не трогаем под локацией. Мы, как бы, ещё не прилетели.
;

[heli_move@idle]
path_move = heli_wait_quest_move ;отличается от heli_attack_gg_move по оси Y на 70 метров вниз
path_look = actor
max_velocity = 20
upd_vis = 3
engine_sound = false
immortal = true
invulnerable = true
enemy = nil
use_mgun = false
use_rocket = false
on_info = heli_move@find_gg ;Квест начался, включаем звук моторов, взлетаем и занимаем исходную позицию.

;
;Режим ожидания.
;Если мы ГГ не видим - боезапас не расходуем. Ждём когда появится или вылезет из укрытия.
;
;
[heli_move@find_gg]
path_move = heli_attack_gg_move
path_look = actor
max_velocity = 20
upd_vis = 3
engine_sound = true
immortal = true
invulnerable = true
enemy = actor
use_mgun = false ;запрещаем использовать пулемёт
use_rocket = false ;Запрещаем использовать ракеты
;
on_info = heli_move@crash %=heli_start_flame% ;Получили хит из гранатомёта, начинаем падать и гореть.
on_info2 = heli_move@attack ;Увидели ГГ начинаем атаковать

;
;Атакуем ГГ. Если потеряли ГГ из виду, то снова переходим в режим ожидания
;

[heli_move@attack]
path_move = heli_attack_gg_move ;Путь на котором висит вертушка
path_look = actor ;Направление носа вертушки
max_velocity = 20 ;Скорость полёта
upd_vis = 3 ;Время повторного поиска цели при потере её видимости ( если не нашли через 3 секунды - ищем новую цель).
engine_sound = true ;Звук двигателя включён
immortal = true ;Отключаем разрушение вертолёта, даже если потеря "здоровья" вертушки равна 100%
invulnerable = true ;Включена неуязвимость вертолёта
enemy = actor ;Атаковать только Главного Героя
use_mgun = true ;Разрешаем использовать пулемёт
use_rocket = false ;Запрещаем использовать ракеты
;
on_info = heli_move@crash %=heli_start_flame% ;Получили хит из гранатомёта, начинаем падать и гореть.
on_info2 = heli_move@find_gg ;Потеряли ГГ из виду - переходим в режим ожидания

;
;Нас сбили начинаем падать
;


мод AMK 1.3.1. спецзадание сидрыча принести документы военных. БТРы близко не подпускают , но если стоять за деревьями и стрелять с оптики вырубаешь вояк на раз два , но потом прилетает вертушка и делает полный пипец , спастись можно только в деревеньке в погребах или у сидрыча , но это не решает проблему , так как эта сволочь не улетает а кружит над деревней и ждет пока ты выйдешь. гранатомет его не берет . кто как решал проблему с верталетом?




я вот тоже с этим столкнулся и ничего не помогло, тока сейв до задания :( просто недароботка мода (наверное)


чюваки я прошел ето нескажу что легко. но всетаки я когда 1 БТР разбомбил прилетела вертушка я быро побежал на крышу в деревне там де тип стоит залез вертушка летала надомной потом нашел дыру в крыше приметил вертушку прицелился с подствольника начял бомбить правда до етого меня самого трясло попадал часто в доски. бомбил до тех пор пока ети чето по радио сморозили и улетели потом больше ниприлетали. вот так я их задолбал. попробуете отпишитесь как получилось или нет.

Жутко бесит, эти вояки такие тупые, что даже СЕМЕРО человек против одной плоти "не справляются" и вызывают вертолёт, а потом вертолёт агрится на меня и я тупо свою броню за 18 просираю.
Как быть?
Если попытаться уничтожить вертолёт стрельбой, то он тупо поднимется вверх и станет бессмертным, при этом он продолжит стрелять.
(Если что, вертолёт на кордоне)

Окей, перефразирую вопрос.
В таком случае, могу ли я от маленьких (из мода) вертолётов спрятаться в кустах?
Как-то попытался один раз, не проканало

Никак, прикол в хардкоре, что мешает взять рпг и вынести вертолет к такой-то бабушке?

Вот тебе пример.
Беру задание.
Бегу.
Встретил плоть и военных.
Военные против плоти вызывают вертолёт.
Беги, не беги, а бронику хана.

Да ладно, если прятаться от его стрельбы, то его легко взорвать. Кстати, прятаться можно даже в кустах

Это другие ветролёты, маленькие такие.
Я знаю, что оригинальные на изи взорвать, а вот с маленькими баг какой-то

- Профи (756) Хм, ещё не встречал таких. А в какой локации они?

Я про вертолёты из мода.
Их я тупо не могу сбить, они поднимаются вверх и всё, больше не взорвать.
А от туда палят куда хотят, а я их не вижу.

хм. в настройках, Ж вкладка ИГРА есть функция "Спаун вертолета" я всё сказал)

Ребят, а при игре за военных как вертолет вызывать на помощь ?!

в опциях в разделе игра есть опция спаун вертолета на вкл. чтобы верты не появлялись надо его вырубить

Прикол в том, что вертак можно к х*ям снести, используя Гаусс, но если его нету, то придётся пытаться целиться с РПГ, что гораздо геморойнее. Лучше потерпи до Гаусс-Пушки, а потом сбивай гниду. Я пробовал, он потом падает за пределы карты и там лопается, но рано или поздно прилетает новый.

я из aug просто растреливал его на любой высоте он не бесмертен просто патроны твои не долетали вот и всё

Спрятаться в кустах можно на низких уровнях сложности ( точно не знаю на каких можно, но на мастере тебя палят ). Убрать вертолет в настройках игры. там в самом низу будут дополнительные настройки по игре. надеюсь помог

НС от 19.04.2010 АМК 1.4.1 + дополнение 14.08.10 + патч 3.09.10 + DMX. 1.3.4 Из правок - только патроны из инвентаря.

На локации АТП стали случаться безлоговые вылеты. После поиска проблемы на форумах нашел подсказку - из-за вертолет а с торговцем, если тот не улетел. Проверил. Действительно не улетел и, похоже не собирается. Можно ли убрать с локации эти объекты: вертолет и торговца (можно насовсем). Либо есть ли способ "шевельнуть" скрипт, дабы вертуха убралась туда, откуда прилетела?
Благодарю заранее.


MSI Z77 MPower, Core i5-3570K 3.40GHz, NVIDIA GeForce GTX 780 (драйвер 332.21), SSD Plextor 256 Гб, ОЗУ 16 Гб, Windows 7 Ultimate (64-bit), АОС 1680*1050




Добавлено (16.07.2013, 23:58)
---------------------------------------------
Вспомнил, что в момент моего вылета, в оригинальной игре актору приходила смска от сталкеров и звук, что то вроде этого: "Нас зажали военные на фабрике, все кто меня слышит, просим о помощи, мы долго не продержимся"

Читайте также: