Вся изложенная ниже схема является единым целым и ее можно ставить в ltx –ный файл логики любому вашему НПС
целиком. Она будет зациклена и повторяться по кругу если кое-где поставить другие варианты перехода от одной
ремарки к другой.
Код
[logic]
active = remark@base
danger = danger_condition
meet = meet
[remark@base]
anim = hello_wpn
no_move = true
target = actor
meet = meet
on_actor_dist_le = 2| remark@sit
[meet]
meet_state = 10|salut@esc_bridge_soldiers| 5|salut_free@esc_lager_killer
meet_state_wpn = 10|ward@cit_base_guard_talk_to_actor2| 5|probe_2@gar_bandits_seryi
victim = 10|actor
victim_wpn = 10|actor
use = true
use_wpn = true
meet_dialog = escape_lager_guard_start_dialog
В базовой ремарке мой чувак использует анимку Волка - hello_wpn – одной рукой машет ГГ, другой держит ствол. Это начальная анимка, которая будет отрабатываться НПС, пока ГГ не подойдет на дистанцию встречи. В секции meet задается схема реагирования НПС при подходе к нему актера. В строчке meet_state – реакция при подходе безоружного ГГ. На расстоянии 10 метров НПС отдает честь, затем встает в позицию «смирно» - руки по швам. Это анимка salut. Ближе 5 метров – тоже самое, дальше переходит в позицию «вольно». Это анимка salut_free. В секции meet можно
задавать и то, что НПС будет базарить при виде эктора. В моей схеме: «чего стоишь сталкер, подходи, будем разговаривать» (esc_bridge_soldiers) отдавая салют, и на второй дистанции - «разбежались сосунки и т.д».
(esc_lager_killer) В строчке meet_state_wpn - реакция НПС если эктор с пушкой в руках. У меня в этой схеме он встает в позу ward – руки за спиной, голова наклонена вниз. Словом поза тюремщика или надсмотрщика (ward примерно так и переводится). В этой позе НПС на дистанции ближе 10 метров орет «повторяю для тупых - отошел к дальней стене камеры…» (cit_base_guard_talk_to_actor2), а если ГГ подойдет еще ближе - «ты щас сдохнешь падла, понял…» (gar_bandits_seryi) и еще несколько рандомных фраз, которые заданы звуковой темой gar_bandits_seryi. К начальной анимке также можно добавлять любую звуковую тему через строчку snd. В данной ремарке ее нет.
Переходим к следующей схеме. Так как все эти схему у меня завязаны вместе, то переход ко второй ремарке
произойдет, когда ГГ подойдет к НПС на дистанцию ближе двух метров. Прописано этой в строчке
on_actor_dist_le = 2| remark@sit
Код
[remark@sit]
anim = sit_ass
snd = mil_guard_to_max
no_move = true
target = actor
meet = no_meet
;on_actor_dist_le = 2| remark@raciya
;on_timer = 30000| remark@ raciya
on_signal = sound_end| remark@raciya
danger = danger_condition
Итак, что делает НПС в этой ремарке. Сидит на заднице - sit_ass, орет - mil_guard_to_max – «макс, у нас тут проблема на хуторе нарисовалась, собирай народ…» В секции meet прописано отсутствие встречи, так как задано no_meet . Так что разговаривать с ГГ непись не будет. После отработки заданной звуковой темы
идет переход к к ремарке remark@ raciya. Сделано это через строчку
Код
on_signal = sound_end| remark@raciya
Переведу: на сигнал «конец звуковой темы» переходим к схеме remark@raciya.
Следующая схема.
Код
[remark@raciya]
anim = choose
snd = bar_arena_public
no_move = true
target = actor
meet = meet@raciya
on_timer = 120000| remark@work
;on_actor_dist_ge = 35| remark@work
danger = danger_condition
[meet@raciya]
meet_state = 7|binocular@val_escort_guards| 5|guard_rac@mil_pavlik_to_ara
meet_state_wpn = 7|hide_rac@mil_ara_ambush
victim = 7|actor
victim_wpn = 7|actor
use = true
use_wpn = true
meet_dialog = escape_lager_guard_start_dialog
Анимка choose – ГГ что-то высматривает: оглядывается по сторонам, прикладывает руку ко лбу, так же как это делам мы, когда смотрим вдаль против солнца. Звуковая
тема – что то там из реплик на арене. При встрече – смотрит в бинокль (если он у него есть) и издевательски базарит - «скоро ты будешь работать обедом для мутантов» (в этой теме реплик несколько). На 5 метрах достает рацию (если есть) - анимка guard_rac и базарит реплики из темы предателя Павлика на милитари «все чисто можете подходить». При угрозе стволом - анимка hide_rac («сидит с рацией»), базар - «это засада, уходим» Через 120 секунд - переход к следующей ремарке: on_timer = 120000| remark@work
Код
[remark@work]
anim = caution
no_move = true
snd = mil_max_before_collect
target = actor
on_timer = 30000| remark@work2
meet = no_meet
danger = danger_condition
Анимка caution – ГГ слегка согнувшись, что-то внимательно высматривает на земле,
руки прикладывает к коленям. А затем радостно сообщает - «ребята у нас появилась работа». Видимо, что-то высмотрел интересное. Через 30 секунд - снова переход.
Код
[remark@work2]
anim = search
no_move = true
snd = mil_collect_phrase3
target = actor
on_timer = 30000| remark@zombied
meet = no_meet
danger = danger_condition
Анимка search - поиск, только более развернутый. ГГ встает на колени или на корточки и начинает что-то искать. Что он при этом произносит – узнаете, когда послушаете. Через 30 секунд переход к схеме зомби.
Код
[remark@zombied]
anim = trans_zombied
snd = pri_followers_leader_phrase1_1
no_move = true
target = actor
on_timer = 60000| remark@wounded
meet = meet@zombied
danger = danger_condition
[meet@zombied]
meet_state = 5|trans_0@hail
meet_state_wpn = 5|trans_1@hail
victim = 5|actor
victim_wpn = 5|actor
use = true
use_wpn = true
meet_dialog = escape_lager_guard_start_dialog
Анимка trans_zombied - падает на колени, головой двигает вверх-вниз. trans_1 - также стоит на коленях, только головой вращает по кругу. trans_0 – то же самое, только более энергичней. Или наоборот - извиняюсь если перепутал.
Схема раненый. Тут все понятно.
Код
[remark@wounded]
anim = wounded_heavy_3
snd = help_heavy
target = actor
meet = no_meet
on_timer = 30000| remark@dinner
danger = danger_condition
wounded_heavy_3 – это анимка тяжелораненого. (есть еще и другие анимки раненого). Чувак скрючившись, грохнется на землю. Но на ней не остается, а тут же встает и бежит в сторону в денжере. Что и понятно – здоровье то у него норм. Остальные неписи видевшие как чувак упал, так же срываются в денжере с места.
Ищут того, кто «стрелял». Не удивляйтесь, но так они запрограммированы.
Схема обед.
Код
[remark@dinner]
anim = sit_knee
no_move = true
target = actor
meet = meet@dinner
danger = danger_condition
on_actor_dist_ge = 15| remark@dynamite
[meet@dinner]
meet_state = 5|eat_bread@wait| 3|eat_energy@wait
meet_state_wpn = 5|eat_kolbasa@wait| 3|eat_vodka@val_escort_dead
victim = 8|actor
victim_wpn = 8|actor
use = true
use_wpn = true
meet_dialog = escape_lager_guard_start_dialogsit_knee
Чувак сидит на заднице, опираясь на руку.
eat_bread, eat_kolbasa, eat_energy, eat_vodka - тут я думаю ничего объяснять не надо. Чувак хавает и пьет.
Пригубив водки, произносит – «пусть земля тебе будет пухом» При отходе эктора на дистанцию больше 15 метров - переход к схеме динамит. Звуковая тема wait – это пауза, в которой непись ничего не говорит.
Код
[remark@dynamite]
anim = dynamite
no_move = true
target = actor
meet = no_meet
on_timer = 30000| remark@claim
danger = danger_conditiondynamite
Закладка динамита. Как это выглядит – помните долговца на милитари у стены
с динамитом?
Код
[remark@claim]
anim = claim
snd = esc_wolf_thanks
target = actor
meet = meet@claim
danger = danger_condition
on_timer = 60000| remark@story
Анимка claim - НПС подзывает ГГ рукой. snd = esc_wolf_thanks - здесь НПС произносит фразу волка:
«меченый теперь тебе проход в лагерь открыт, подходи».
Код
[meet@claim]
meet_state = 7|refuse@mil_collect_phrase5| 5|probe_2@mil_collect_phrase6
meet_state_wpn = 7|backoff@gar_dm_bandit_demand
victim = 7|actor
victim_wpn = 7|actor
use = true
use_wpn = true
meet_dialog = escape_lager_guard_start_dialog
Анимка refuse - непись пожимает плечами и произносит mil_collect_phrase5 - «не срать».
probe_2 - судя по сопровождающим ее звукам (независимо от прописанной мной звуковой темы) – это анимка Круглова (его манипуляции с прибором, а может Сахарова - впрочем, это не важно).
Если у вашего НПС будет в руках оружие - то смотреться она будет куда интереснее, так как выглядит будто непись проверяет свой ствол, совершая массу интересных движений. Фраза mil_collect_phrase6 - «опа – с нами новое мясо».
backoff - обычная анимка. Непись начинает махать стволом в разные стороны – типа убери ствол, меченый. Фраза - gar_dm_bandit_demand - «бабки артефакты гони», «ты че козел не врубаешься», «гони бабло или бошку отстрелим».
Так как тема рандомная (с окончанием rnd в имени темы в файле sound_script – то и фраз несколько)
Код
[remark@story]
anim = mode_shlem
no_move = true
target = actor
meet = meet@story
danger = danger_condition
on_actor_dist_ge = 30| %+passage_to_story_end%
on_info = {+passage_to_story_end} remark@story_end
[meet@story]
meet_state = 10|probe@wait| 5|probe_1@hail
meet_state_wpn = 10|probe_2@wait| 5|suicide@mil_crazy
victim = 10|actor
victim_wpn = 10|actor
use = true
use_wpn = true
meet_dialog = escape_lager_guard_start_dialog
mode_shlem - анимка то ли Круглова, то ли Сахарова. Непись будет что то вертеть в руках. probe_1 – тоже самое что и probe_2 , только здесь он плечами вроде бы не дергает. suicide - самоубийство. Советую посмотреть – тем более с озвучкой mil_crazy. probe - укороченный вариант probe_2 и probe_1
Код
[remark@story_end]
anim = probe_3
no_move = true
snd = agr_doctor_1
target = actor
on_signal = sound_end| remark@base
;on_timer = 180000| remark@ base
meet = no_meet
danger = danger_condition
[danger_condition]
ignore_distance = 10
probe_3 - интересная анимка (похоже что кругловская)- чувак срывается с места в панике, затем сгибается как будто от боли, хватается за голову. agr_doctor_1 - базар доктора в тайнике стрелка.
Теперь поясню строчки
Код
on_actor_dist_ge = 30| %+passage_to_story_end%
on_info = {+passage_to_story_end} remark@story_end
Когда ГГ отойдет от НПС дальше чем 30 метров, ГГ выдается инфопоршень passage_to_story_end. После его получения - on_info - произойдет переход к базовой ремарке. Сам инфопоршень необходимо регистрировать в соответствующих файлах. Так как мой НПС находится на кордоне, то поршень я сунул в файл info_l01escape. Сообственно инфопоршень в строчке on_actor_dist_ge писать не обязательно (я его использовал только для примера) - можно просто поставить имя следующей ремарки - и в нужный момент произойдет переход. Но инфопоршень может понадобиться для других случаев.
Как я уже говорил в начале, схему можно сделать полностью зацикленной. Нужно лишь в тех блоках, где идет переход к следующей схеме через on_signal поставить таймер или дистанцию. Почему так - не знаю. Но у меня по второму кругу схема стопорилась на тех блоках, где шел переход через on_signal = sound_end|. По таймеру же все прекрасно крутится. Схема из второй части - как раз зацикленная.
P.S. : Кажется понял почему у меня стопорилась схема при использовании перехода on_signal = sound_end|. Дело в том, что если в имени звука, по завершении которого схема должна перейти к новому блоку стоит флажок seq, то он вроде как отыграется только один раз (если в этой теме нет дополнительных реплик). Следовательно по второму кругу он просто не будет срабатывать, а значит и схема застопорится. Так что для этого нужно ставить звук в имени которого в файле sound_script есть флажок rnd. Тема mil_guard_to_max как раз с флажком seq (и реплика только одна - без вариантов). Потому здесь (в схеме sit) она и будет стопориться на втором круге, если не заменить тему на другую. Но это еще надо проверить. Закоментированные строчки - пред которыми стоит ; - может смело выкидывать - это остатки проб разных вариантов.