0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

JA анимации ч.2. Как приписать анимацию нпс

SoC. Анимации NPC

Материал из S.T.A.L.K.E.R. Inside Wiki

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

Содержание

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

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

В базовой ремарке мой чувак использует анимку Волка — 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

Итак, что делает НПС в этой ремарке. Сидит на заднице — sit_ass, орет — mil_guard_to_max – «макс, у нас тут проблема на хуторе нарисовалась, собирай народ…» В секции meet прописано отсутствие встречи, так как задано no_meet . Так что разговаривать с ГГ непись не будет. После отработки заданной звуковой темы идет переход к к ремарке remark@ raciya. Сделано это через строчку on_signal = sound_end| remark@raciya. Переведу: на сигнал «конец звуковой темы» переходим к схеме remark@raciya.

Анимка choose – ГГ что-то высматривает: оглядывается по сторонам, прикладывает руку ко лбу, так же как это делам мы, когда смотрим вдаль против солнца. Звуковая тема – что то там из реплик на арене. При встрече – смотрит в бинокль (если он у него есть) и издевательски базарит — «скоро ты будешь работать обедом для мутантов» (в этой теме реплик несколько). На 5 метрах достает рацию (если есть) — анимка guard_rac и базарит реплики из темы предателя Павлика на милитари «все чисто можете подходить». При угрозе стволом — анимка hide_rac («сидит с рацией»), базар — «это засада, уходим» Через 120 секунд — переход к следующей ремарке: on_timer = 120000| remark@work

Анимка caution – ГГ слегка согнувшись, что-то внимательно высматривает на земле, руки прикладывает к коленям. А затем радостно сообщает — «ребята у нас появилась работа». Видимо, что-то высмотрел интересное. Через 30 секунд — снова переход.

Анимка search — поиск, только более развернутый. ГГ встает на колени или на корточки и начинает что-то искать. Что он при этом произносит – узнаете, когда послушаете. Через 30 секунд переход к схеме зомби.

Анимка trans_zombied — падает на колени, головой двигает вверх-вниз. trans_1 — также стоит на коленях, только головой вращает по кругу. trans_0 – то же самое, только более энергичней. Или наоборот — извиняюсь если перепутал.

Схема «раненый». Тут все понятно.

wounded_heavy_3 – это анимка тяжелораненого. (есть еще и другие анимки раненого). Чувак скрючившись, грохнется на землю. Но на ней не остается, а тут же встает и бежит в сторону в денжере. Что и понятно – здоровье то у него норм. Остальные неписи видевшие как чувак упал, так же срываются в денжере с места. Ищут того, кто «стрелял». Не удивляйтесь, но так они запрограммированы.

sit_knee — чувак сидит на заднице, опираясь на руку. eat_bread, eat_kolbasa, eat_energy, eat_vodka — тут я думаю ничего объяснять не надо. Чувак хавает и пьет. Пригубив водки, произносит – «пусть земля тебе будет пухом» При отходе эктора на дистанцию больше 15 метров — переход к схеме динамит. Звуковая тема wait – это пауза, в которой непись ничего не говорит.

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

Анимка claim — НПС подзывает ГГ рукой. snd = esc_wolf_thanks — здесь НПС произносит фразу волка: «меченый теперь тебе проход в лагерь открыт, подходи».

Анимка refuse — непись пожимает плечами и произносит mil_collect_phrase5 — «не срать». probe_2 — судя по сопровождающим ее звукам (независимо от прописанной мной звуковой темы) – это анимка Круглова (его манипуляции с прибором, а может Сахарова — впрочем, это не важно). Если у вашего НПС будет в руках оружие — то смотреться она будет куда интереснее, так как выглядит будто непись проверяет свой ствол, совершая массу интересных движений. Фраза mil_collect_phrase6 — «опа – с нами новое мясо».

backoff — обычная анимка. Непись начинает махать стволом в разные стороны – типа убери ствол, меченый. Фраза — gar_dm_bandit_demand — «бабки артефакты гони», «ты че козел не врубаешься», «гони бабло или бошку отстрелим». Так как тема рандомная (с окончанием rnd в имени темы в файле sound_script – то и фраз несколько)

mode_shlem — анимка то ли Круглова, то ли Сахарова. Непись будет что то вертеть в руках. probe_1 – тоже самое что и probe_2 , только здесь он плечами вроде бы не дергает. suicide — самоубийство. Советую посмотреть – тем более с озвучкой mil_crazy. probe — укороченный вариант probe_2 и probe_1

probe_3 — интересная анимка (похоже что кругловская)- чувак срывается с места в панике, затем сгибается как будто от боли, хватается за голову. agr_doctor_1 — базар доктора в тайнике стрелка.

Теперь поясню строчки

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

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

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

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

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

Читать еще:  Saints Row: The Third "Tights and Stocking (Колготы и чулки)"

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)%.

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

Анимка – 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– пока остаются на стадии исследования. Так как с ними либо глючит, либо вылетает.

Добавление звуков в script_sound

Открываем файл script_sound.ltx и видим множество секций типа:

sleep_rnd — это имя секции, его то мы и будем писать в логику;
statessleepsleep_ — путь к звуковому файлу, который будем проигрывать ;
=1 — похоже это указывает на то что звук рандомный, так как реплики ключевых персонажей = 0

По такому принципу можно добавить свои звуки в логику, но они ОБЯЗАТЕЛЬНО должны соответствовать требованиям (формат OGG, т.д.)

Запускаем игру и видим, что при срабатывании звука у нас стабильный вылет.
Значит едем дальше: открываем файл scriptssound_theme.script,

спускаемся до строки:

Видим кучу секций вида:

Help — имя звука, если здесь оно такое то в script_sound должна быть секция help_seq, без этого мы вылет конечно не словим, но и звук не услышим.
min_snd = 3 — минимальное громкость звука, то есть слышим мы его на расстоянии 3 метра.
max_snd = 5 — аналогично, минимальному только максимальное расстояние, много ставить не стоит.
rnd = 100, prior = 5 -вероятно отвечают за вероятность проигрыша звука, но это пока не проверено.
Вот и все, в итоге мы должны получить в файле script_sound:

А в sound_theme:

В логике получается пишем название_seq

Анимации NPC

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

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

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

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

В базовой ремарке мой чувак использует анимку Волка — 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

Итак, что делает НПС в этой ремарке. Сидит на заднице — sit_ass, орет — mil_guard_to_max – «макс, у нас тут проблема на хуторе нарисовалась, собирай народ…» В секции meet прописано отсутствие встречи, так как задано no_meet . Так что разговаривать с ГГ непись не будет. После отработки заданной звуковой темы идет переход к к ремарке remark@ raciya. Сделано это через строчку on_signal = sound_end| remark@raciya. Переведу: на сигнал «конец звуковой темы» переходим к схеме remark@raciya.

Анимка choose – ГГ что-то высматривает: оглядывается по сторонам, прикладывает руку ко лбу, так же как это делам мы, когда смотрим вдаль против солнца. Звуковая тема – что то там из реплик на арене. При встрече – смотрит в бинокль (если он у него есть) и издевательски базарит — «скоро ты будешь работать обедом для мутантов» (в этой теме реплик несколько). На 5 метрах достает рацию (если есть) — анимка guard_rac и базарит реплики из темы предателя Павлика на милитари «все чисто можете подходить». При угрозе стволом — анимка hide_rac («сидит с рацией»), базар — «это засада, уходим» Через 120 секунд — переход к следующей ремарке: on_timer = 120000| remark@work

Анимка caution – ГГ слегка согнувшись, что-то внимательно высматривает на земле, руки прикладывает к коленям. А затем радостно сообщает — «ребята у нас появилась работа». Видимо, что-то высмотрел интересное. Через 30 секунд — снова переход.

Анимка search — поиск, только более развернутый. ГГ встает на колени или на корточки и начинает что-то искать. Что он при этом произносит – узнаете, когда послушаете. Через 30 секунд переход к схеме зомби.

Анимка trans_zombied — падает на колени, головой двигает вверх-вниз. trans_1 — также стоит на коленях, только головой вращает по кругу. trans_0 – то же самое, только более энергичней. Или наоборот — извиняюсь если перепутал.

Схема раненый. Тут все понятно.

wounded_heavy_3 – это анимка тяжелораненого. (есть еще и другие анимки раненого). Чувак скрючившись, грохнется на землю. Но на ней не остается, а тут же встает и бежит в сторону в денжере. Что и понятно – здоровье то у него норм. Остальные неписи видевшие как чувак упал, так же срываются в денжере с места. Ищут того, кто «стрелял». Не удивляйтесь, но так они запрограммированы.

sit_knee — чувак сидит на заднице, опираясь на руку. eat_bread, eat_kolbasa, eat_energy, eat_vodka — тут я думаю ничего объяснять не надо. Чувак хавает и пьет. Пригубив водки, произносит – «пусть земля тебе будет пухом» При отходе эктора на дистанцию больше 15 метров — переход к схеме динамит. Звуковая тема wait – это пауза, в которой непись ничего не говорит.

Читать еще:  Euro Truck Simulator 2 "Atomic Alloy CSGO for Scania RS Longline"

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

Анимка claim — НПС подзывает ГГ рукой. snd = esc_wolf_thanks — здесь НПС произносит фразу волка: «меченый теперь тебе проход в лагерь открыт, подходи».

Анимка refuse — непись пожимает плечами и произносит mil_collect_phrase5 — «не срать». probe_2 — судя по сопровождающим ее звукам (независимо от прописанной мной звуковой темы) – это анимка Круглова (его манипуляции с прибором, а может Сахарова — впрочем, это не важно). Если у вашего НПС будет в руках оружие — то смотреться она будет куда интереснее, так как выглядит будто непись проверяет свой ствол, совершая массу интересных движений. Фраза mil_collect_phrase6 — «опа – с нами новое мясо».

backoff — обычная анимка. Непись начинает махать стволом в разные стороны – типа убери ствол, меченый. Фраза — gar_dm_bandit_demand — «бабки артефакты гони», «ты че козел не врубаешься», «гони бабло или бошку отстрелим». Так как тема рандомная (с окончанием rnd в имени темы в файле sound_script – то и фраз несколько)

mode_shlem — анимка то ли Круглова, то ли Сахарова (точно не помню). Непись будет что то вертеть в руках. probe_1 – тоже самое что и probe_2 , только здесь он плечами вроде бы не дергает. suicide — самоубийство. Советую посмотреть – тем более с озвучкой mil_crazy. probe — укороченный вариант probe_2 и probe_1

probe_3 — интересная анимка ( похоже что кругловская)- чувак срывается с места в панике, затем сгибается как будто от боли, хватается за голову. agr_doctor_1 — базар доктора в тайнике стрелка.

Теперь поясню строчки

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

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

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

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

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)%.

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

Анимка – 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– пока остаются на стадии исследования. Так как с ними либо глючит, либо вылетает.

Анимация — Форум

Создал собственную анимацию. Установил, думал она будет тока на ГГ, но не там.Все были с такой анимацией.
Вопрос: Можно ли как нибудь установить анимацию только для ГГ?
Если да, то как?

P.S. может когда полностью доделаю анимации выложу, но не сейчас. Сейчас они сырые, и только 2 анимации.

Добавлено (07 Мая 2014, 13:05)
———————————————
А вот еще, могу ли я сделать анимацию не только на всю расу, а разделить их на женскую анимацию и мужскую?

Добавлено (07 Мая 2014, 14:17)
———————————————
Если да, то завтра же займусь созданием анимации.

Мда. и где же ты нашла такую «кнопочку» в СК? В самом СК в разделе Race можно только смотреть на установленные файлы анимации, а вот «берите и прописывайте, заменяйте, удаляйте и т.д. » это по определению невозможно, не морочь людям голову. Там можно только указать новый бехавиор файл, а уже в самом этом файле надо менять пути к базовому «половому» бехавиор файлу. А в том файле надо прописать всю используемую анимацию НПС данной расы, все файлы и пути к ним. И так же всё это надо внести в бехавиор мастер-файл.

Сам СК этого не может делать (!). Без FNIS по любому не обойтись, если только сможешь вручную «вскрыть» данные файлы и поменять там все пути, а потом правильно обратно «запаковать» эти файлы. (в теории это возможно, хоть и не так просто)

И более того, без FNIS можно только сменить файлы анимации на другие такие же файлы.
Добавлять новую анимацию без FNIS нельзя вообще (!). Ведь для запуска файла анимации необходимо сперва назначить этому файлу именное событие (ID), иначе его просто нечем будет запускать. Далее это событие надо прописать в бехавиор мастер-файле. И ещё это событие надо привязать к нужному действию.

СК не умеет добавлять и изменять эти события, а равно он не умеет изменять какие либо файлы вообще, кроме ESP. (файлы скриптов тоже не сам СК делает/изменяет, хоть управление идёт и из него тоже)

Т.е. как либо менять анимацию только через СК нельзя, об этом можно забыть.

******************
Пы.Сы. Последующие посты похожи на вариант Соловьёва — «Зверь, именуемый кот.»

IdleMarkers — От создания до расширения имеющихся

IdleMarker — что это такое, как создать новый и сделать модель поведения NPC в разное время суток.

Для работы ИИ (Искусственного интеллекта) в игре используется NavMesh. После создания навмешей для NPC требуются AI пакеты, которые сделают его «живым» (Вкладка AI Packages в меню Actor). Каждому NPC лучше прописывать определенный набор Default пакетов, наиболее важным из которых будет является Sandbox пакет (DefaultSandboxLocEditor1024 – например).

Читать еще:  Mario Bombman: Марио - человек-бомбаигры

Приписав персонажу пакет, вы увидите, как тот бродит с места на место, пьет и закусывает. Для того, чтобы как-то разнообразить жизнь актера, используется фурнитура (WorldObjects/Furniture/. ) и набор маркеров, таких как IdleMarkers.

Для начала разберемся, что за зверь такой этот IdleMarker. В словоблудии уже говорилось, что эти маркеры позволяют разнообразить поведение NPC в какой-либо локации. Более того, они позволяют, не прибегая к скриптам и сценам создавать модель поведения NPC в разное время суток, но это уже зависит от AI-пакетов.

Именно благодаря IdleМаркерам стражники патрулируют улицы городов, а Драконий Предел ежедневно очищается от пыли и мусора двумя безустанными служанками. Сами по себе IdleМаркеры наследуют анимации, заложенные для каждого NPC. К сожалению, не все анимации пригодны для использования в маркерах, но самое главное не это, а то, что десятки анимаций так и небыли использованы разработчиками игры. Теперь, когда дело сказано, можно приступить к поэтапному разбору и созданию IdleMarker’a.

Создание IdleMarker’a на основе доступных анимаций

Откроем ObjectWindow > раздел Miscellaneous > IdleMarker. Здесь мы видим список из уже доступных маркеров:

Жмем правой кнопкой мыши по этому пространству и создаем новый IdleMarker. Перед нами появляется окно IdleMarker:

Тут стоит остановиться на каждом из параметров окна:

  1. Поле Marker Model – его трогать не стоит. Модель маркера уже заложена и будет использоваться в окне рендера;
  2. Child Can Use – могут ли дети использовать маркер;
  3. Ignored By Sandbox – будет ли маркер игнорироваться актерами (применимо в ситуациях, когда маркер выполняет специальную анимацию для какой-либо сцены в каком-либо квесте;
  4. Do Once – маркер будет использован один раз;
  5. Поле Idle Timer Setting – настройка времени выполнения данного маркера. Не все маркеры могут быть настраиваемы этим параметром;
  6. Пункты Random и Run In Sequence отвечают за случайное или последовательное выполнение IdleАнимаций в случаях, когда ваш маркер содержит сразу несколько анимаций;
  7. Этими стрелочками можно регулировать порядок распределения маркеров в списке, соответственно изменять последовательность их выполнения (не забываем про пункт 6).

Разобравшись со свойствами окна, переходим к добавлению новой анимации в наш маркер. Нажимаем на пустое поле правой кнопкой мыши и выбираем New. Перед нам окно Select Idle. Мы видим список всех IdleАнимаций, доступных для использования в IdleМаркерах, кроме того есть поле выбора актера и окно просмотра:

Выберем себе актера, для которого нам нужно получить список анимаций. Обратите внимание, при смене актеров меняется и список. Вы можете упорядочить список по имени или ID. По умолчанию список упорядочен по дате:

Я выбрал Ульфрика Буревестника и получил список доступных анимаций. Обязательно учтите следующее:

  • Список анимаций идентичен для всех играбельных рас, в том числе детей. Для всех пауков, к примеру, будет одинаковый список состоящий из нуля доступных анимаций.
  • В данном списке содержатся где-то 250-300 анимаций. В IdleМаркерах применимы лишь 150. Как правило все они начинаются со слова Idle.
  • Многие анимации не будут проигрываться актерами. К этому нужно привыкнуть и смириться. Вероятно, это есть баг самой системы IdleМаркеров.
  • Все анимации добиваний (около 80) можно найти в этом списке. К сожалению при их исполнении актеры не используют оружие из инвентаря. Они просто машут руками.
  • Не возвращайте окно выбора Актера в позицию NONE – это приводит к вылету редактора.
  • Вероятно, в превью-окне должен был работать рендер самой анимации, дабы вы не включали по 100 раз игру для тестирования. Увы, что сломано, то сломано.
  • Некоторые анимации имеют начало, зацикленную часть выполнения и конец. Используйте либо начальную, либо срединную фазу (в названии анимации слова StartEnter и Instant).
  • Некоторые анимации наследуют объекты, такие как кинжалы, бутылки, чашки, метла. Добавлять их в инвентарь самому персонажу не нужно. Однако, например анимация чистки меча наследует оружие из инвентаря актера.

Для примера я выбрал анимацию IdleAstrid (Финальная миссия за Темное Братство, обгоревшее тело Астрид «распято» на полу). Далее жмем OK. И выбираем место для своего маркера:

По быстрому я собрал прототипную ячейку, не забыл про сетку путей, Ульфрика и сам маркер:

В результате Ульфрик подходит к маркеру и растягивается на полу:

Не находите это немного скучным и не обыгранным? Так давайте изменим окружение под этот маркер:

И вот сцена преобразилась, она уже может поведать какую-то историю. Ульфрик Буревестник стал жертвой имперского произвола, либо у Авентуса Аретино появились новые заказы для Темного Братства. Первый этап пройден.

Расширение списка доступных IdleАнимаций для использования их в системе IdleMarker

А что если нам мало стандартных анимаций? А есть ли другие анимации? Давайте разбираться. На верхней панели найдите Gameplay, далее Animations:

Перед нами окно Idle Animations. Здесь мы видим каталоги с анимациями для разных типов существ, в том числе для фурнитуры и активаторов:

Запомним это место. Теперь нам необходимо выбрать анимацию, которую мы хотим использовать в качестве IdleМаркера. Для этого откроем в окне Object Window наших NPC. (Actors > Actor):

Находим своего актера, открываем, переходим на вкладку Animation (список анимаций также доступен через Preview Window):

Тут работает рендер анимаций. Все, что нам нужно — это выбрать себе анимацию по вкусу. Естественно лучше искать среди анимаций, начинающихся со слова Idle. Изначально я выбрал анимацию шатающейся пьяной походки (А такая есть и нигде не используется, сюрприз да?), но она не сработала на IdleМаркере. Поэтому возьмем анимацию написания письма пером в сидячем положении (Два сюрприза за день – да вы везунчик!):

Теперь запомним ее название. В моем случае это IdleWriteTableChairIdle.hkx. Название нужного нам AnimEvent’a будет примерно таким же. Возвращаемся к окну Idle Animations. Итак, нам нужен набор анимаций для «разумных рас». Это каталог ActorsCharacterBehaviors_Master.hkx:

Тут мы видим много подкаталогов с различными действиями для игрока. Ничего не трогаем, листаем вниз до папки LOOSE:

Открыв эту папку, мы видим до боли знакомую картину – тот самый список анимаций, доступных при создании IdleМаркера (разве что сортировка алфавитная). Жмем куда-нибудь в это место правой кнопкой мыши > Insert Child. Получаем новую анимацию, без имени. (отображение вверху списка), придумываем ей ID:

В самом окне имеются дополнительные параметры:

  • Sequence, Blocking, No attacking не трогаем. Они не используются в данном разделе.
  • Looping Seconds используется для задания цикличности выполнения действия.
  • Replay Delay – задержка перед повторным выполнением анимации.
  • Conditions – пропишите условия для выполнения анимации. Тут вы ограничены только свей фантазией. Можно поставить зависимость от чего угодно (погода, пол, раса, уровень и еще десятки условий – все зависит от вас).
  • AnimEvent – само окно для выбора анимационного события:

Начинаем искать нашу анимацию. Мы видим действие IdleWriteTableChairEnterInstant. То, что нужно. Кстати, там еще есть анимации для разных типов кресел: будь то с левосторонним «входом» или правосторонним. Нам же не принципиально. Заметьте, название AnimEvent’a и Havok Анимации не совпадает, но очень похоже:

Выбираем нужную анимацию, нажимаем Close. Открываем свой IdleMarker. Нажимаем New. Получаем список доступных анимаций. Находим там свою IdleАнимацию:

Дважды кликаем по ней, сохраняем маркер и если он у вас уже где-то размещен – смотрим результат в игре:

И вот вроде бы все хорошо. У Ульфрика появилось письмо, он старательно выводит на нем пустоту что пишет. Но. Где стул? А где плавная анимация посадки на этот стул? Непорядок. Давайте разбираться:

Как видите, иногда приходится «помогать» IdleАнимациям нормально выглядеть. Можно было бы подставить какую-нибудь табуретку или камень для Ульфрика, но это не профессиональный подход.

Итак, нам нужно заставить Ульфрика проиграть IdleАнимацию тогда, когда он сядет за стул. Определенный стул, а не кровать или скамейку:

Для этого нам нужен сам Ульфрик. Открываем его как Reference самой локации, переходим на вкладку Scripts и создаем новый скрипт (Add > New > «Вводим название» > OK). Затем правой кнопкой по нему > Edit Source:

Открывается текстовое окно, там мы видим только: Scriptname (Имя вашего скрипта) extends ObjectReference

Сменяем ObjectReference на Actor и полный скрипт выглядит так:

В данном случае, как только Ульфрик использует фурнитуру (OnSit), при условии, что наша фурнитура — нами выбранное кресло (Chair), проигрывается наша IdleАнимация (AnimIdle). Нажимаем File > Save. Скрипт скомпилирован. Остается дать скрипту знать, какую фурнитуру ему нужно учитывать, и какую анимацию проигрывать:

Дважды кликаем левой кнопкой мыши по имени скрипта / правой кнопкой мыши по названию > Edit Properties. Выбираем наше AnimIdle. В окне Pick Object мы видим тот самый список анимаций, доступных только для IdleМаркеров, в который мы занесли новую. Затем в Chair выбираем наше кресло.

Проверим в игре:

Ульфрик садится в кресло, достает пергамент и начинает писать. Великолепно! Сцена обыграна логично (Стол выберете сами).

Гениальность системы искусственного интеллекта Скайрима в том, что он не станет заставлять NPC 100% выполнять вашу анимацию, если его не попросить. Как видите пока один Ульфрик пишет, второй закусывает, а третий запивает:

Минутка словоблудия

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

Вот небольшой список (далеко не полный) Havok Анимаций (просмотр во вкладке Actor), которые не найти в повседневном Скайриме, либо их использовали единожды (Даю начало названия, каждая анимация имеет два-три варианта или стадий исполнения):

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector