Анимации NPC

Материал из Mod Wiki.

(Различия между версиями)
Перейти к: навигация, поиск
Версия 20:19, 15 июля 2009 (править)
Erlik (Обсуждение | вклад)
(Часть первая.)
← К предыдущему изменению
Текущая версия (15:24, 12 мая 2011) (править) (отменить)
ILdarKOrotkov (Обсуждение | вклад)

 
(30 промежуточных версий не показаны.)
Строка 1: Строка 1:
Недавно решил поэкспериментировать с анимками НПС, и теперь выкладываю результаты моих опытов над "людьми". Недавно решил поэкспериментировать с анимками НПС, и теперь выкладываю результаты моих опытов над "людьми".
-Разумеется, опытные модмейкеры все это давно знают – поэтому материал предназначен для тех, которые еще не освоил как прописывать неписям разные прикольные анимки, а заодно и озвучку через логику. Все анимки взяты из файла state_lib. script. Анимки, которые имеются в движке, но не вписаны в указанный файл, не рассматриваются. Это тема для отдельной статьи. Озвучка взята из файла sound_script (папка misc). Конечно, хотелось использовать и звуковые темы не вписанные в этот файл, но имеющиеся в папке sound - но с этим еще надо разобраться.+Разумеется, опытные модмейкеры все это давно знают – поэтому материал предназначен для тех, которые еще не освоил как прописывать неписям разные прикольные анимки, а заодно и озвучку через логику. Все анимки взяты из файла state_lib. script. Анимки, которые имеются в движке, но не вписаны в указанный файл, не рассматриваются. Это тема для отдельной статьи. Озвучка взята из файла sound_script (папка misc). Конечно, хотелось использовать и звуковые темы не вписанные в этот файл, но имеющиеся в папке sounds - но с этим еще надо разобраться.
Строка 6: Строка 6:
-Вся изложенная ниже схема является единым целым и ее можно ставить в файл ltx –ный логики любому вашему НПС целиком. Он будет зациклена и повторяться по кругу если кое-где поставить другие варианты перехода от одной схемы к другой.+Вся изложенная ниже схема является единым целым и ее можно ставить в ltx –ный файл логики любому вашему НПС целиком. Она будет зациклена и повторяться по кругу если кое-где поставить другие варианты перехода от одной ремарки к другой.
<pre>[logic] <pre>[logic]
Строка 39: Строка 39:
В моей схеме: «чего стоишь сталкер, подходи, будем разговаривать» (esc_bridge_soldiers) отдавая салют, и на второй дистанции - «разбежались сосунки и т.д». (esc_lager_killer) В моей схеме: «чего стоишь сталкер, подходи, будем разговаривать» (esc_bridge_soldiers) отдавая салют, и на второй дистанции - «разбежались сосунки и т.д». (esc_lager_killer)
В строчке meet_state_wpn - реакция НПС если эктор с пушкой в руках. У меня в этой схеме он встает в позу '''ward''' – руки за спиной, голова наклонена вниз. Словом поза тюремщика или надсмотрщика (ward примерно так и переводится). В строчке meet_state_wpn - реакция НПС если эктор с пушкой в руках. У меня в этой схеме он встает в позу '''ward''' – руки за спиной, голова наклонена вниз. Словом поза тюремщика или надсмотрщика (ward примерно так и переводится).
-В этой позе НПС на дистанции ближе 10 метров орет «а ты с мордой поцарапанной отойди к дальней стеночке…», а если ГГ подойдет еще ближе - «ты щас сдохнешь падла, понял…» и еще несколько рандомных фраз, которые заданы звуковой темой gar_bandits_seryi .+В этой позе НПС на дистанции ближе 10 метров орет «повторяю для тупых - отошел к дальней стене камеры…» (cit_base_guard_talk_to_actor2), а если ГГ подойдет еще ближе - «ты щас сдохнешь падла, понял…» (gar_bandits_seryi) и еще несколько рандомных фраз, которые заданы звуковой темой gar_bandits_seryi.
К начальной анимке также можно добавлять любую звуковую тему через строчку snd. В данной ремарке ее нет. К начальной анимке также можно добавлять любую звуковую тему через строчку snd. В данной ремарке ее нет.
Строка 67: Строка 67:
Следующая схема. Следующая схема.
-</pre>[remark@raciya]+<pre>[remark@raciya]
anim = choose anim = choose
snd = bar_arena_public snd = bar_arena_public
Строка 89: Строка 89:
Звуковая тема – что то там из реплик на арене. Звуковая тема – что то там из реплик на арене.
При встрече – смотрит в бинокль (если он у него есть) и издевательски базарит - «скоро ты будешь работать обедом для мутантов» (в этой теме реплик несколько). При встрече – смотрит в бинокль (если он у него есть) и издевательски базарит - «скоро ты будешь работать обедом для мутантов» (в этой теме реплик несколько).
-На 5 метрах достает рацию (если есть) и базарит реплики из темы предателя Павлика на милитари «все чисто можете подходить». +На 5 метрах достает рацию (если есть) - анимка '''guard_rac''' и базарит реплики из темы предателя Павлика на милитари «все чисто можете подходить».
-При угрозе стволом - анимка hide_rac («сидит с рацией»), базар - «это засада, уходим»+При угрозе стволом - анимка '''hide_rac''' («сидит с рацией»), базар - «это засада, уходим»
Через 120 секунд - переход к следующей ремарке: on_timer = 120000| remark@work Через 120 секунд - переход к следующей ремарке: on_timer = 120000| remark@work
Строка 114: Строка 114:
danger = danger_condition</pre> danger = danger_condition</pre>
-Анимка '''search''' - поиск, только более развернутый. ГГ встает на колени или на корточки и начинает что искать. Что он при этом произносит – узнаете, когда послушаете. +Анимка '''search''' - поиск, только более развернутый. ГГ встает на колени или на корточки и начинает что-то искать. Что он при этом произносит – узнаете, когда послушаете.
Через 30 секунд переход к схеме зомби. Через 30 секунд переход к схеме зомби.
Строка 133: Строка 133:
use = true use = true
use_wpn = true use_wpn = true
-meet_dialog = escape_lager_guard_start_dial</pre>+meet_dialog = escape_lager_guard_start_dialog</pre>
Анимка '''trans_zombied''' - падает на колени, головой двигает вверх-вниз. Анимка '''trans_zombied''' - падает на колени, головой двигает вверх-вниз.
'''trans_1''' - также стоит на коленях, только головой вращает по кругу. '''trans_1''' - также стоит на коленях, только головой вращает по кругу.
-'''trans_0''' – то же самое, только более энергичней. Или наоборот - извиняюь если перепутал.+'''trans_0''' – то же самое, только более энергичней. Или наоборот - извиняюсь если перепутал.
Схема раненый. Тут все понятно. Схема раненый. Тут все понятно.
Строка 147: Строка 147:
meet = no_meet meet = no_meet
on_timer = 30000| remark@dinner on_timer = 30000| remark@dinner
-danger = danger_condition<pre>+danger = danger_condition</pre>
Строка 165: Строка 165:
[meet@dinner] [meet@dinner]
-meet_state = 5|eat_bread@wait| 3|eat_energy@wait+meet_state = 5|eat_bread@wait| 3|eat_energy@wait
meet_state_wpn = 5|eat_kolbasa@wait| 3|eat_vodka@val_escort_dead meet_state_wpn = 5|eat_kolbasa@wait| 3|eat_vodka@val_escort_dead
victim = 8|actor victim = 8|actor
Строка 174: Строка 174:
'''sit_knee''' - чувак сидит на заднице, опираясь на руку. '''sit_knee''' - чувак сидит на заднице, опираясь на руку.
-[green]eat_bread, eat_kolbasa, eat_energy, eat_vodka [/green] - тут я думаю ничего объяснять не надо. Чувак хавает и пьет. Пригубив водки, произносит – «пуст земля тебе будет пухом»+'''eat_bread, eat_kolbasa, eat_energy, eat_vodka''' - тут я думаю ничего объяснять не надо. Чувак хавает и пьет. Пригубив водки, произносит – «пусть земля тебе будет пухом»
При отходе эктора на дистанцию больше 15 метров - переход к схеме динамит. При отходе эктора на дистанцию больше 15 метров - переход к схеме динамит.
Звуковая тема wait – это пауза, в которой непись ничего не говорит. Звуковая тема wait – это пауза, в которой непись ничего не говорит.
Строка 199: Строка 199:
Анимка '''claim''' - НПС подзывает ГГ рукой. Анимка '''claim''' - НПС подзывает ГГ рукой.
-snd = esc_wolf_thanks - здесь НПС произносит фразу волка: «меченый теперь тебе проход в лагерь открыт, подходи».+snd = esc_wolf_thanks - здесь НПС произносит
 +фразу волка: «меченый теперь тебе проход в лагерь открыт, подходи».
<pre>[meet@claim] <pre>[meet@claim]
-meet_state = 7|refuse@mil_collect_phrase5| 5|probe_2@mil_collect_phrase6 +meet_state = 7|refuse@mil_collect_phrase5| 5|probe_2@mil_collect_phrase6
meet_state_wpn = 7|backoff@gar_dm_bandit_demand meet_state_wpn = 7|backoff@gar_dm_bandit_demand
victim = 7|actor victim = 7|actor
Строка 212: Строка 213:
Анимка '''refuse''' - непись пожимает плечами и произносит mil_collect_phrase5 - «не срать». Анимка '''refuse''' - непись пожимает плечами и произносит mil_collect_phrase5 - «не срать».
-[green]probe_2 [/green] - судя по сопровождающим ее звукам (независимо от прописанной мной звуковой темы) – это анимка Круглова (его манипуляции с прибором). Если у вашего НПС будет в руках оружие - то смотреться она будет куда интереснее, так как это будет выглядеть как будто непись проверяет свой ствол, совершая массу интересных дивжений.+'''probe_2''' - судя по сопровождающим ее звукам (независимо от прописанной мной звуковой темы) – это анимка Круглова (его манипуляции с прибором, а может Сахарова - впрочем, это не важно). Если у вашего НПС будет в руках оружие - то смотреться она будет куда интереснее, так как выглядит будто непись проверяет свой ствол, совершая массу интересных движений.
Фраза mil_collect_phrase6 - «опа – с нами новое мясо». Фраза mil_collect_phrase6 - «опа – с нами новое мясо».
Строка 228: Строка 229:
[meet@story] [meet@story]
-meet_state = 10|probe@wait| 5|probe_1@hail +meet_state = 10|probe@wait| 5|probe_1@hail
meet_state_wpn = 10|probe_2@wait| 5|suicide@mil_crazy meet_state_wpn = 10|probe_2@wait| 5|suicide@mil_crazy
victim = 10|actor victim = 10|actor
Строка 237: Строка 238:
-'''mode_shlem''' - тоже анимка Круглова. Непись будет что вертеть в руках. +'''mode_shlem''' - анимка то ли Круглова, то ли Сахарова (точно не помню). Непись будет что то вертеть в руках.
'''probe_1''' – тоже самое что и probe_2 , только здесь он плечами вроде бы не дергает. '''probe_1''' – тоже самое что и probe_2 , только здесь он плечами вроде бы не дергает.
'''suicide''' - самоубийство. Советую посмотреть – тем более с озвучкой mil_crazy. '''suicide''' - самоубийство. Советую посмотреть – тем более с озвучкой mil_crazy.
Строка 255: Строка 256:
ignore_distance = 10</pre> ignore_distance = 10</pre>
-'''probe_3''' - интересная анимка - чувак срывается с места в панике, затем сгибается как будто от боли, хватается за голову. +'''probe_3''' - интересная анимка ( похоже что кругловская)- чувак срывается с места в панике, затем сгибается как будто от боли, хватается за голову.
 +agr_doctor_1 - базар доктора в тайнике стрелка.
Теперь поясню строчки Теперь поясню строчки
-on_actor_dist_ge = 30| %+passage_to_story_end%+<pre>on_actor_dist_ge = 30| %+passage_to_story_end%
-on_info = {+passage_to_story_end} remark@story_end+on_info = {+passage_to_story_end} remark@story_end</pre>
-Когда эктор отойдет от НПС дальше чем, 30 метров, неписю выдается инфопоршень passage_to_story_end. +Когда эктор отойдет от НПС дальше чем 30 метров, ГГ выдается инфопоршень passage_to_story_end.
После его получения - on_info - произойдет переход к базовой ремарке. После его получения - on_info - произойдет переход к базовой ремарке.
-Сам инфопоршень необходимо регистрировать в соответствующих файлах. Так как мой НПС находится на кордоне, то поршень я сунул в файл info_l01escape. +Сам инфопоршень необходимо регистрировать в соответствующих файлах. Так как мой НПС находится на кордоне, то поршень я сунул в файл info_l01escape. Сообственно инфопоршень в строчке on_actor_dist_ge писать не обязательно(я его использовал только для примера) - можно просто поставить имя следующей ремарки - и в нужный момент произойдет переход. Но инфопоршень может понадобиться для других случаев.
Как я уже говорил в начале, схему можно сделать полностью зацикленной. Нужно лишь в тех блоках, где идет переход к следующей схеме через on_signal поставить таймер или дистанцию. Как я уже говорил в начале, схему можно сделать полностью зацикленной. Нужно лишь в тех блоках, где идет переход к следующей схеме через on_signal поставить таймер или дистанцию.
-Почему так - не знаю. Но у меня по второму кругу схема стопорилась на тех блоках, где шел переход через on_signal = sound_end| . По таймеру же все прекрасно крутится. +Почему так - не знаю. Но у меня по второму кругу схема стопорилась на тех блоках, где шел переход через on_signal = sound_end|. По таймеру же все прекрасно крутится. Схема из второй части - как раз зацикленная.
-Схема из второй части - как раз зацикленная.+ 
 +P.S. : Кажется понял почему у меня стопорилась схема при использовании перехода on_signal = sound_end|. Дело в том, что если в имени звука, по завершении которого схема должна перейти к новому блоку стоит флажок seq, то он вроде как отыграется только один раз (если в этой теме нет дополнительных реплик). Следовательно по второму кругу он просто не будет срабатывать, а значит и схема застопорится. Так что для этого нужно ставить звук в имени которого в файле sound_script есть флажок rnd. Тема mil_guard_to_max как раз с флажком seq (и реплика только одна - без вариантов). Потому здесь (в схеме sit) она и будет стопориться на втором круге, если не заменить тему на другую.
 +Но это еще надо проверить.
 +Закоментированные строчки - пред которыми стоит ; - может смело выкидывать - это остатки проб разных вариантов.
== Часть вторая. == == Часть вторая. ==
Строка 288: Строка 293:
С первой ремаркой все понятно. Переход ко второй на дистанции ближе 2 метров. С первой ремаркой все понятно. Переход ко второй на дистанции ближе 2 метров.
-</pre>[remark@punch]+<pre>[remark@punch]
anim = punch anim = punch
snd = cit_jail_guard_sneer snd = cit_jail_guard_sneer
Строка 298: Строка 303:
[meet@punch] [meet@punch]
-meet_state = 5|hide_s_left@wait| 4|hide_s_right@wait+meet_state = 5|hide_s_left@wait| 4|hide_s_right@wait
meet_state_wpn = 5|backoff2@threat_back meet_state_wpn = 5|backoff2@threat_back
victim = 10|actor victim = 10|actor
Строка 306: Строка 311:
meet_dialog = escape_lager_guard_start_dialog</pre> meet_dialog = escape_lager_guard_start_dialog</pre>
-'''punch'''– анимка удара рукой. Так как я не специалист по боксу, то не скажу точно как именно называется этот удар с правой в челюсть.+'''punch'''– анимка удара рукой (или прикладом). Так как я не специалист по боксу, то не скажу точно
-'''hide_s_left''' и '''hide_s_right''' - непись присядет с разворотом ствола вправо или влево. +как именно называется этот удар с правой в челюсть. Если поставите ее в meet_state_wpn на дистанции 2 метра - ГГ получит реальный удар в морду прикладом ствола. Так как я эксперементировал на своем торговце - то он (будучи безоружным) бил чисто кулаком.
-'''backoff2''' - более веселая анимка backoff. НПС покажет ГГ что-то вроде фака, перед тем как помахать стволом.+А если вместо запуска анимации камеры '''%=run_cam_effector(fatigue)%''' поставите запуск функции '''%=killactor%''', то НПС кинется вас убивать.
 + 
 +'''hide_s_left''' и '''hide_s_right''' - непись присядет с разворотом
 +ствола вправо или влево.
 +'''backoff2''' - более веселая анимка backoff.
 +НПС покажет ГГ что-то вроде фака, перед тем как помахать стволом и при этом скажет что-то весьма нелицеприятное.
''' '''
-%=run_cam_effector(fatigue)%''' - это вызов анимации камеры их папки anims.+'''%=run_cam_effector(fatigue)%''' - это вызов анимации камеры ''fatigue'' из папки anims.
Земля уйдет из под ног ГГ. Ненадолго. Сработает сразу же после окончания фразы Земля уйдет из под ног ГГ. Ненадолго. Сработает сразу же после окончания фразы
-cit_jail_guard_sneer. А ровно через минуту от начала работы схемы – запуск постпроцесса+cit_jail_guard_sneer.
 +А ровно через минуту от начала работы схемы – запуск постпроцесса
'''%=run_postprocess(deadcity_wake:1777:false)%''' и переход к следующей схеме. '''%=run_postprocess(deadcity_wake:1777:false)%''' и переход к следующей схеме.
-'''deadcity_wake''' – это постпроцесс, который должен был использоваться в Мертвом городе, если бы разрабы МГ все таки доделали. Как он выглядит, я описывал в статье про постэффекты. +'''deadcity_wake''' – это постпроцесс, который должен был использоваться в Мертвом городе, если бы разрабы МГ все таки доделали.
 +Если не видели - обязательно посмотрите.Сначала черный экран, затем прояснение с раздвоением картинки и красным фоном.
В следующей схеме идет продолжение постпроцесса – первые 15 секунд. Потом его остановка: on_timer = 15000| %=stop_postprocess(1777)%. В следующей схеме идет продолжение постпроцесса – первые 15 секунд. Потом его остановка: on_timer = 15000| %=stop_postprocess(1777)%.
Строка 329: Строка 341:
[meet@doctor_wakeup] [meet@doctor_wakeup]
-meet_state = 3|sleep@cit_jail_guard_sleep| 2|sleep_sit@wait+meet_state = 3|sleep@cit_jail_guard_sleep| 2|sleep_sit@wait
meet_state_wpn = 3|wounded_zombie@wait meet_state_wpn = 3|wounded_zombie@wait
victim = 10|actor victim = 10|actor
Строка 353: Строка 365:
[meet@prisoner] [meet@prisoner]
-meet_state = 5|help_me@gar_dm_newbie_no_money+meet_state = 5|help_me@gar_dm_newbie_no_money
meet_state_wpn = 5|hands_up@agr_dont_shoot meet_state_wpn = 5|hands_up@agr_dont_shoot
victim = 10|actor victim = 10|actor
Строка 365: Строка 377:
-Анимка – '''prisoner''' – пленный. Помните Шустрого у бандитов? Вот это она и есть +Анимка – '''prisoner''' – пленный. Помните Шустрого у бандитов? Вот это она и есть.
Фраза - agr_krot_fear – не смотря на то, что в названии звуковой темы имя Крота, орет ее Шустрый: типа братцы я тут, спасите. Фраза - agr_krot_fear – не смотря на то, что в названии звуковой темы имя Крота, орет ее Шустрый: типа братцы я тут, спасите.
'''help_me''' - машет рукой сидя на одном колене и орет, что у него "нет денег" - gar_dm_newbie_no_money . '''help_me''' - машет рукой сидя на одном колене и орет, что у него "нет денег" - gar_dm_newbie_no_money .
-'''hands_up''' - руки кверху и орет "не убивай дяденька" - agr_dont_shoot. +'''hands_up''' - руки кверху и орет "не убивай дяденька" (или типа того) - agr_dont_shoot.
Через 60 секунд возврат к базовой ремарке. Через 60 секунд возврат к базовой ремарке.
Строка 376: Строка 388:
В файле state_lib – большая библиотека анимок. Я успел попробовать только часть. В файле state_lib – большая библиотека анимок. Я успел попробовать только часть.
-У одного бармена их 12. Правда, из пяти опробованных мной сработала только одна '''bar_sleep''' - НПС положит голову на руки и будет спать стоя. +У одного бармена их 12. Правда, из пяти опробованных мной сработала только одна '''bar_sleep''' - НПС положит голову на руки сложенные перед лицом и будет спать стоя.
Анимки - '''barman_talk_freу, barman_shock, barman_wait_danger, barman_walk_danger''' - никакого эффекта не дали. Видимо, они работают только на бармене. Остальные пробуйте сами. Анимки - '''barman_talk_freу, barman_shock, barman_wait_danger, barman_walk_danger''' - никакого эффекта не дали. Видимо, они работают только на бармене. Остальные пробуйте сами.
Строка 391: Строка 403:
'''erlik''' '''erlik'''
---- ----
 +[[Категория:Статьи участников]]

Текущая версия

Недавно решил поэкспериментировать с анимками НПС, и теперь выкладываю результаты моих опытов над "людьми". Разумеется, опытные модмейкеры все это давно знают – поэтому материал предназначен для тех, которые еще не освоил как прописывать неписям разные прикольные анимки, а заодно и озвучку через логику. Все анимки взяты из файла state_lib. script. Анимки, которые имеются в движке, но не вписаны в указанный файл, не рассматриваются. Это тема для отдельной статьи. Озвучка взята из файла sound_script (папка misc). Конечно, хотелось использовать и звуковые темы не вписанные в этот файл, но имеющиеся в папке sounds - но с этим еще надо разобраться.


Часть первая.

Вся изложенная ниже схема является единым целым и ее можно ставить в 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_dialog

sit_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_condition

dynamite – закладка динамита. Как это выглядит – помните долговца на милитари у стены с динамитом?


[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) она и будет стопориться на втором круге, если не заменить тему на другую. Но это еще надо проверить. Закоментированные строчки - пред которыми стоит ; - может смело выкидывать - это остатки проб разных вариантов.

Часть вторая.

Еще одна схема. На этот раз в нее добавлены еще постэффекты.

[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@punch
danger = danger_condition 

С первой ремаркой все понятно. Переход ко второй на дистанции ближе 2 метров.

[remark@punch]
anim = punch
snd = cit_jail_guard_sneer
meet = meet@punch
target = actor
on_signal = sound_end| %=run_cam_effector(fatigue)% 
on_timer = 60000| remark@doctor_wakeup  %=run_postprocess(deadcity_wake:1777:false)%   
danger = danger_condition 

[meet@punch]
meet_state	= 5|hide_s_left@wait| 4|hide_s_right@wait
meet_state_wpn	= 5|backoff2@threat_back
victim = 10|actor 
victim_wpn = 10|actor 
use = true 
use_wpn = true 
meet_dialog	= escape_lager_guard_start_dialog

punch– анимка удара рукой (или прикладом). Так как я не специалист по боксу, то не скажу точно как именно называется этот удар с правой в челюсть. Если поставите ее в meet_state_wpn на дистанции 2 метра - ГГ получит реальный удар в морду прикладом ствола. Так как я эксперементировал на своем торговце - то он (будучи безоружным) бил чисто кулаком. А если вместо запуска анимации камеры %=run_cam_effector(fatigue)% поставите запуск функции %=killactor%, то НПС кинется вас убивать.

hide_s_left и hide_s_right - непись присядет с разворотом ствола вправо или влево. backoff2 - более веселая анимка backoff. НПС покажет ГГ что-то вроде фака, перед тем как помахать стволом и при этом скажет что-то весьма нелицеприятное. %=run_cam_effector(fatigue)% - это вызов анимации камеры fatigue из папки anims. Земля уйдет из под ног ГГ. Ненадолго. Сработает сразу же после окончания фразы cit_jail_guard_sneer. А ровно через минуту от начала работы схемы – запуск постпроцесса %=run_postprocess(deadcity_wake:1777:false)% и переход к следующей схеме.

deadcity_wake – это постпроцесс, который должен был использоваться в Мертвом городе, если бы разрабы МГ все таки доделали. Если не видели - обязательно посмотрите.Сначала черный экран, затем прояснение с раздвоением картинки и красным фоном.

В следующей схеме идет продолжение постпроцесса – первые 15 секунд. Потом его остановка: on_timer = 15000| %=stop_postprocess(1777)%.

[remark@doctor_wakeup]
anim = doctor_wakeup
snd = cit_doctor_start_dlg
meet = meet@doctor_wakeup
target = actor
on_timer = 15000| %=stop_postprocess(1777)%
on_timer2 = 180000| remark@prisoner 
danger = danger_condition 

[meet@doctor_wakeup]
meet_state	= 3|sleep@cit_jail_guard_sleep| 2|sleep_sit@wait
meet_state_wpn	= 3|wounded_zombie@wait
victim = 10|actor 
victim_wpn = 10|actor 
use = true 
use_wpn = true 
meet_dialog	= escape_lager_guard_start_dialog

Начальная анимация - doctor_wakeup – доктор в мертвом городе. НПС склонится вниз – как будто над чьим то телом (по задумке – над меченым) и начнет базарить. Но совсем не то, что стоит у меня в строчке snd. Видимо, данная анимка завязана со звуком, и иначе не идет. Фразу прописанную мною - cit_doctor_start_dlg – нпс произнесет потом. Обе озвучки длинные – та, что идет с анимкой – монолог доктора в подземелье агропрома в тайнике Стрелка – типа, «что ж ты меченый в растяжку полез, сам же придумал эту хрень…» Моя озвучка - cit_doctor_start_dlg – неиспользованный монолог доктора в мертвом городе. Через 180 секунд – завершение схемы и переход к следующей.


Схема – пленный.

[remark@prisoner]
anim = prisoner
snd = agr_krot_fear
meet = meet@prisoner
target = actor
on_timer = 60000| remark@base
danger = danger_condition

[meet@prisoner]
meet_state	= 5|help_me@gar_dm_newbie_no_money
meet_state_wpn	= 5|hands_up@agr_dont_shoot
victim = 10|actor 
victim_wpn = 10|actor 
use = true 
use_wpn = true 
meet_dialog	= escape_lager_guard_start_dialog

[danger_condition]
ignore_distance = 10


Анимка – prisoner – пленный. Помните Шустрого у бандитов? Вот это она и есть. Фраза - agr_krot_fear – не смотря на то, что в названии звуковой темы имя Крота, орет ее Шустрый: типа братцы я тут, спасите.

help_me - машет рукой сидя на одном колене и орет, что у него "нет денег" - gar_dm_newbie_no_money . hands_up - руки кверху и орет "не убивай дяденька" (или типа того) - agr_dont_shoot.

Через 60 секунд возврат к базовой ремарке.

Часть третья.

В файле state_lib – большая библиотека анимок. Я успел попробовать только часть. У одного бармена их 12. Правда, из пяти опробованных мной сработала только одна bar_sleep - НПС положит голову на руки сложенные перед лицом и будет спать стоя.

Анимки - barman_talk_freу, barman_shock, barman_wait_danger, barman_walk_danger - никакого эффекта не дали. Видимо, они работают только на бармене. Остальные пробуйте сами.

Анимка psy_pain – пораженный пси-излучением. Чувак сядет на колени, начнет трясти головой и бить себе руками по голове.

psycho_pain – вроде бы тоже самое, только чувак обхватывает голову руками и так сидит.


Анимки psy_shoot, psy_armed, psycho_pain, psycho_shoot– пока остаются на стадии исследования. Так как с ними либо глючит, либо вылетает.



erlik


Личные инструменты