Восстановление Вырезанных Анимаций НПС. — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
ФеНиКс (обсуждение | вклад) |
|||
| (не показаны 13 промежуточные версии 6 участников) | |||
| Строка 1: | Строка 1: | ||
| − | =Редактирование | + | =Редактирование и восстановление вырезанных анимаций NPC= |
| − | '''Нус...Приступим=) | + | '''Нус... Приступим =)''' |
{| class="standart" | {| class="standart" | ||
| − | |||
| − | |||
| − | |||
|- | |- | ||
| − | |Первые | + | |'''Мой урок, думаю, поможет новичкам!''' |
| + | |- | ||
| + | |__________________________________ | ||
| + | |- | ||
| + | |''Первые шаги...'' | ||
| + | |- | ||
| + | |''Что нам нужно???'' | ||
| + | |- | ||
| + | |''Для восстановления необходимо сначала посмотреть, что восстанавливать. Так ведь?'' | ||
|- | |- | ||
| − | | | + | |'''1. SDK''' |
|- | |- | ||
| − | | | + | |'''2. Конвертер от бардака!''' |
|- | |- | ||
| − | | | + | | '''Ну и естественно хоть чуть-чуть умения в обращении с этими вещами!''' |
|- | |- | ||
| − | | | + | |''Просмотр анимаций...'' |
|- | |- | ||
| − | | | + | |''Делаем батник (''файл с расширением .bat, создается в блокноте. прим. Provod[Nik]'' ) для конвертации модели из'' '''ogf''' в '''object'''. |
|- | |- | ||
| − | | | + | |''Ну, возьмем модельку Наёмника!'' |
|- | |- | ||
| − | | | + | |''Название:'' |
| − | + | ||
| − | + | ||
|- | |- | ||
|'''stalker_ki_mask.ogf ''' | |'''stalker_ki_mask.ogf ''' | ||
|- | |- | ||
| − | |Путь: | + | |''Путь:'' |
|- ''\gamedata\meshes\actors\killer'' | |- ''\gamedata\meshes\actors\killer'' | ||
| − | |Теперь очередь | + | |''Теперь очередь батника!'' |
|- | |- | ||
| − | | | + | |''батник:'' |
|- | |- | ||
|''converter -ogf -object stalker_ki_mask.ogf | |''converter -ogf -object stalker_ki_mask.ogf | ||
|- | |- | ||
| − | |pause'' | + | |''pause'' |
|- | |- | ||
| − | | | + | |_____________________ |
|- | |- | ||
| − | | Всё запускаем | + | | ''Всё запускаем батник и появляется файл:'' |
|- | |- | ||
|'''stalker_ki_mask.object''' | |'''stalker_ki_mask.object''' | ||
|- | |- | ||
| − | |Открываем его в '''SDK''' и кликаем на три точки в ''motion reference'' , и снимаем все галочки! | + | |''Открываем его в'' '''SDK''' ''и кликаем на три точки в'' '''motion reference''' , ''и снимаем все галочки!'' |
|- | |- | ||
| − | |Дальше нажимаем кнопку ''append'' и загружаем '''.skls''' файл! | + | |''Дальше нажимаем кнопку '' '''append''' ''и загружаем'' '''.skls''' ''файл!'' |
|- | |- | ||
| − | |чтобы получить '''.skls''' файл нам нужно создать опять же | + | |''чтобы получить'' '''.skls''' ''файл нам нужно создать опять же батник и файл с анимациями!'' |
|- | |- | ||
| − | |Мы возьмём файл со сталкерскими анимациями! | + | |''Мы возьмём файл со сталкерскими анимациями!'' |
|- | |- | ||
| − | |Название: | + | |''Название:'' |
|- | |- | ||
| − | | | + | |'''stalker_animation.omf''' |
|- | |- | ||
| − | |Путь: | + | |''Путь:'' |
|- | |- | ||
|''\gamedata\meshes\actors'' | |''\gamedata\meshes\actors'' | ||
|- | |- | ||
| − | | | + | |''батник:'' |
|- | |- | ||
| − | | ''converter -omf -skls stalker_animation.omf | + | | ''converter -omf -skls stalker_animation.omf'' |
|- | |- | ||
| − | | pause'' | + | | ''pause'' |
|- | |- | ||
| − | |Всё, запускаем | + | |''Всё, запускаем батник и перед нами файл'' '''stalker_animation.skls''' |
|- | |- | ||
| − | | | + | |_____________________________ |
|- | |- | ||
| − | |Выбор анимации... | + | |''Выбор анимации...'' |
|- | |- | ||
| − | |В SDK нажимаем на Motion и перед нами появляется список анимаций! | + | |''В SDK нажимаем на Motion и перед нами появляется список анимаций!'' |
|- | |- | ||
| − | |Я нашёл вырезанную анимацию чистки ствола! | + | |''Я нашёл вырезанную анимацию чистки ствола!'' |
|- | |- | ||
| − | | Название: | + | |''Название:'' |
|- | |- | ||
|'''chistit ruje_1''' | |'''chistit ruje_1''' | ||
|- | |- | ||
| − | + | |_____________________________ | |
|- | |- | ||
| − | |Восстановление... | + | |''Восстановление...'' |
|- | |- | ||
| − | |Для этого нужно два файла: | + | |''Для этого нужно два файла:'' |
|- | |- | ||
| − | | | + | |'''state_mgr_animation_list.script''' |
|- | |- | ||
|'''state_lib.script''' | |'''state_lib.script''' | ||
|- | |- | ||
| − | |В первом прописываем нашу анимку вот так: | + | |''В первом прописываем нашу анимку вот так:'' |
|- | |- | ||
| − | |''stulik = { prop = { maxidle = 1, | + | |''stulik = { prop = { maxidle = 1,'' |
|- | |- | ||
| − | |sumidle = 1, | + | |''sumidle = 1,'' |
|- | |- | ||
| − | |rnd = 100 }, | + | |''rnd = 100 },'' |
|- | |- | ||
| − | |into = { [0] = {"chistit ruje_1", {a="wpn_sig220"}, "chistit ruje_1"} }, | + | |''into = { [0] = {"chistit ruje_1", {a="wpn_sig220"}, "chistit ruje_1"} },'' |
|- | |- | ||
| − | |out = nil, | + | |''out = nil,'' |
|- | |- | ||
| − | |idle = { [0] = "chistit ruje_1" }, | + | |''idle = { [0] = "chistit ruje_1" },'' |
|- | |- | ||
| − | |rnd = nil },'' | + | |''rnd = nil },'' |
|- | |- | ||
| − | | | + | | |
|- | |- | ||
| − | |Разъяснение: | + | |'''Разъяснение:''' |
|- | |- | ||
| − | |Толком я не понял что за что отвечает, но что-то я всё же понял... | + | |''Толком я не понял что за что отвечает, но что-то я всё же понял...'' |
|- | |- | ||
| − | |''stulik'' -- Здесь можно писать что угодно это название анимки которое будет использоваться при | + | |'''stulik''' ''-- Здесь можно писать что угодно это название анимки которое будет использоваться при '' |
|- | |- | ||
| − | |запись в Логику... | + | |''запись в Логику...'' |
|- | |- | ||
| − | |''into'' -- использовать | + | |'''into''' ''-- использовать'' |
|- | |- | ||
| − | |''out'' -- выкинуть | + | |'''out''' ''-- выкинуть'' |
|- | |- | ||
| − | |''idle'' -- идловые анимки. | + | |'''idle''' ''-- идловые анимки.'' |
|- | |- | ||
| − | |''rnd'' -- используется для групповых анимаций, типа повернулся влево вправо встал сел... | + | |'''rnd''' ''-- используется для групповых анимаций, типа повернулся влево вправо встал сел...'' |
|- | |- | ||
| − | |''nil'' -- не использовать. | + | |'''nil''' ''-- не использовать.'' |
|- | |- | ||
| − | |Так же Объяснения от Замечательного человека Максим Р. | + | |''Так же Объяснения от Замечательного человека Максим Р.'' |
|- | |- | ||
| − | |''into'' - входная анимация (начальная); | + | |'''into''' ''- входная анимация (начальная);'' |
|- | |- | ||
| − | |''out'' - выходная анимация (конечная); | + | |'''out''' ''- выходная анимация (конечная);'' |
|- | |- | ||
| − | |''idle'' - анимация между into и out; | + | |'''idle''' ''- анимация между into и out;'' |
|- | |- | ||
| − | |''rnd'' - случайная анимация, которая будет отыгрываться во время idle случайным образом. | + | |'''rnd''' ''- случайная анимация, которая будет отыгрываться во время idle случайным образом.'' |
|- | |- | ||
| − | |'''chistit ruje_1''' -- тут думаю понятно! (сама анимка) | + | |'''chistit ruje_1''' ''-- тут думаю понятно! (сама анимка)'' |
|- | |- | ||
| − | |Т.к. я до конца не разобрался врать не буду, что-то может и не так разъяснил то за что отвечает! | + | |''Т.к. я до конца не разобрался врать не буду, что-то может и не так разъяснил то за что отвечает!'' |
|- | |- | ||
| − | |В '''state_lib.script''' пишем следующее: | + | |''В'' '''state_lib.script''' ''пишем следующее:'' |
|- | |- | ||
| − | |''stulik= {weapon = "unstrapped", | + | |'''stulik= {weapon = "unstrapped",''' |
|- | |- | ||
| − | |movement = nil, | + | |'''movement = nil,''' |
|- | |- | ||
| − | |mental = nil, | + | |'''mental = nil,''' |
|- | |- | ||
| − | |bodystate = nil, | + | |'''bodystate = nil,''' |
|- | |- | ||
| − | |animstate = nil, | + | |'''animstate = nil,''' |
|- | |- | ||
| − | |animation = "stulik" | + | |'''animation = "stulik"''' |
|- | |- | ||
| − | |},'' | + | |''' },''' |
|- | |- | ||
| − | |Здесь разъяснять без толку, т.к. тут и всё понятно! | + | |''Здесь разъяснять без толку, т.к. тут и всё понятно!'' |
|- | |- | ||
| − | |НО есть формальности из-за которых у меня и была ошибка( не появлялось оружие в руках) | + | |''НО есть формальности из-за которых у меня и была ошибка( не появлялось оружие в руках)'' |
|- | |- | ||
| − | |Поясняю: | + | |'''Поясняю:''' |
|- | |- | ||
| − | |''strapped'' - оружие на спине | + | |'''strapped''' ''- оружие на спине'' |
|- | |- | ||
| − | |''unstrapped'' - оружие в руках | + | |'''unstrapped''' ''- оружие в руках'' |
|- | |- | ||
| − | |''none'' - убрать вообще | + | |'''none''' ''- убрать вообще'' |
|- | |- | ||
| − | |''drop'' - бросить | + | |'''drop''' ''- бросить'' |
|- | |- | ||
| − | |''fire'' - стрелять | + | |''fire''' ''- стрелять'' |
|- | |- | ||
| − | |все в | + | |''все в логике НПСа пишем:'' |
|- | |- | ||
| − | |'''[logic] | + | |'''[logic]''' |
|- | |- | ||
| − | |active = remark | + | |'''active = remark''' |
|- | |- | ||
| − | |[remark] | + | |'''[remark]'' |
| + | |- | ||
| + | |'''anim = stulik''' | ||
| + | |- | ||
| + | |________________________ | ||
| + | |- | ||
| + | |''Вот и всё анимация восстановлена!=)'' | ||
| + | |- | ||
| + | |''Ну теперь спауним для нашего Чистильщика стул!'' | ||
| + | |- | ||
| + | |''Создаёшь файл в папке'' '''creatures''' | ||
| + | |- | ||
| + | |''Ну допустим назовём файл'' '''taburetka.ltx''' | ||
| + | |- | ||
| + | |''и в него конфинги:'' | ||
| + | |- | ||
| + | |'''[table]:identity_immunities'' | ||
| + | |- | ||
| + | |'''GroupControlSection = spawn_group'' | ||
| + | |- | ||
| + | |'''discovery_dependency =''' | ||
| + | |- | ||
| + | |'''$spawn = "taburetka\table"''' ''-- тут указывается файл и секция (понадобится для спауна)'' | ||
| + | |- | ||
| + | |''';$prefetch = 32''' | ||
| + | |- | ||
| + | |'''class = II_ATTCH''' | ||
| + | |- | ||
| + | |'''cform = skeleton''' | ||
| + | |- | ||
| + | |'''visual = physics\stol\stol_obedenniy.ogf ''' ''-- визуал стола'' | ||
| + | |- | ||
| + | |'''radius = 1''' | ||
| + | |- | ||
| + | |''';script_binding = bind_physic_object.init''' | ||
| + | |- | ||
| + | |'''description = inventory_sakbox_01_desc''' | ||
| + | |- | ||
| + | |'''inv_name =''' | ||
| + | |- | ||
| + | |'''inv_name_short =''' | ||
| + | |- | ||
| + | |'''inv_weight = 10''' | ||
| + | |- | ||
| + | |'''inv_grid_width = 3''' | ||
| + | |- | ||
| + | |'''inv_grid_height = 3''' | ||
| + | |- | ||
| + | |'''inv_grid_x = 22''' | ||
| + | |- | ||
| + | |'''inv_grid_y = 29''' | ||
| + | |- | ||
| + | |'''cost = 0''' | ||
| + | |- | ||
| + | |'''can_take = false''' | ||
|- | |- | ||
| − | |||
| − | |||
| − | |||
| + | |'''[table_2]:table''' | ||
| + | |- | ||
| + | |'''GroupControlSection = spawn_group''' | ||
| + | |- | ||
| + | |'''discovery_dependency =''' | ||
| + | |- | ||
| + | |'''$spawn = "taburetka\table_2"''' | ||
| + | |- | ||
| + | |'''visual = physics\stol\stol_4.ogf''' ''-- тот же стол но с другим визуалом'' | ||
| + | |- | ||
| − | + | |'''[table_3]:table''' | |
| + | |- | ||
| + | |'''GroupControlSection = spawn_group''' | ||
| + | |- | ||
| + | |'''discovery_dependency =''' | ||
| + | |- | ||
| + | |'''$spawn = "taburetka\table_3"''' | ||
| + | |- | ||
| + | |'''visual = physics\stol\stol_7.ogf''' ''-- аналогично'' | ||
| + | |- | ||
| − | + | |'''[stul]:table''' | |
| − | + | |- | |
| − | + | |'''GroupControlSection = spawn_group''' | |
| − | '' | + | |- |
| − | + | |'''discovery_dependency =''' | |
| − | discovery_dependency = | + | |- |
| − | $spawn = "taburetka\ | + | |'''$spawn = "taburetka\stul"''' |
| − | + | |- | |
| − | + | |'''visual = physics\stul\stul_1a.ogf''' ''-- стул'' | |
| − | + | |- | |
| − | visual = physics\ | + | |''Ах да! чуть не забыл!=)'' |
| − | + | |- | |
| − | + | |''Нужно прописать наш файл в'' '''system.ltx''' ''чтобы спаун работал!=)'' | |
| − | + | |- | |
| − | + | |''куда-нибудь в начало пихаем вот это:'' | |
| − | + | |- | |
| − | + | |''' #include "creatures\taburetka.ltx" '''' | |
| − | + | |- | |
| − | + | |''Всё сохраняем!'' | |
| − | + | |- | |
| − | + | |''Очередь спауна:'' | |
| − | + | |- | |
| − | + | |''Cоздаём файл в папке '' '''gamedata\scripts''' | |
| + | |- | ||
| + | |''Назовём его'' '''esc_stul.script''' | ||
| + | |- | ||
| + | |''в нём пишем:'' | ||
| + | |- | ||
| + | |'''function esc_stul ()''' | ||
| + | |- | ||
| + | |'''alife():create("stul",vector():set(-X,Y,Z),l_v,g_v)''' | ||
| + | |- | ||
| + | |'''end''' | ||
| + | |- | ||
| + | |''где '''XYZ''' ''пишем координаты места'' | ||
| + | |- | ||
| + | |''где'' '''l_v g_v''' ''пишем левел и гейм вертексы.'' | ||
| + | |- | ||
| + | |''Всё Наш Чистильщик усажен на стул!=)'' | ||
| + | |- | ||
| + | |} | ||
| + | {| class="standart" | ||
| + | |Поправил текстовые и лексические ошибки. '''Provod[Nik]''' | ||
| + | |} | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | [ | + | [[Категория:Незаконченные_статьи]] |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | [ | + | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
Текущая версия на 16:00, 10 мая 2011
Редактирование и восстановление вырезанных анимаций NPC
Нус... Приступим =)
| Мой урок, думаю, поможет новичкам! |
| __________________________________ |
| Первые шаги... |
| Что нам нужно??? |
| Для восстановления необходимо сначала посмотреть, что восстанавливать. Так ведь? |
| 1. SDK |
| 2. Конвертер от бардака! |
| Ну и естественно хоть чуть-чуть умения в обращении с этими вещами! |
| Просмотр анимаций... |
| Делаем батник (файл с расширением .bat, создается в блокноте. прим. Provod[Nik] ) для конвертации модели из ogf в object. |
| Ну, возьмем модельку Наёмника! |
| Название: |
| stalker_ki_mask.ogf |
| Путь: |
| Теперь очередь батника! |
| батник: |
| converter -ogf -object stalker_ki_mask.ogf |
| pause |
| _____________________ |
| Всё запускаем батник и появляется файл: |
| stalker_ki_mask.object |
| Открываем его в SDK и кликаем на три точки в motion reference , и снимаем все галочки! |
| Дальше нажимаем кнопку append и загружаем .skls файл! |
| чтобы получить .skls файл нам нужно создать опять же батник и файл с анимациями! |
| Мы возьмём файл со сталкерскими анимациями! |
| Название: |
| stalker_animation.omf |
| Путь: |
| \gamedata\meshes\actors |
| батник: |
| converter -omf -skls stalker_animation.omf |
| pause |
| Всё, запускаем батник и перед нами файл stalker_animation.skls |
| _____________________________ |
| Выбор анимации... |
| В SDK нажимаем на Motion и перед нами появляется список анимаций! |
| Я нашёл вырезанную анимацию чистки ствола! |
| Название: |
| chistit ruje_1 |
| _____________________________ |
| Восстановление... |
| Для этого нужно два файла: |
| state_mgr_animation_list.script |
| state_lib.script |
| В первом прописываем нашу анимку вот так: |
| stulik = { prop = { maxidle = 1, |
| sumidle = 1, |
| rnd = 100 }, |
| into = { [0] = {"chistit ruje_1", {a="wpn_sig220"}, "chistit ruje_1"} }, |
| out = nil, |
| idle = { [0] = "chistit ruje_1" }, |
| rnd = nil }, |
| Разъяснение: |
| Толком я не понял что за что отвечает, но что-то я всё же понял... |
| stulik -- Здесь можно писать что угодно это название анимки которое будет использоваться при |
| запись в Логику... |
| into -- использовать |
| out -- выкинуть |
| idle -- идловые анимки. |
| rnd -- используется для групповых анимаций, типа повернулся влево вправо встал сел... |
| nil -- не использовать. |
| Так же Объяснения от Замечательного человека Максим Р. |
| into - входная анимация (начальная); |
| out - выходная анимация (конечная); |
| idle - анимация между into и out; |
| rnd - случайная анимация, которая будет отыгрываться во время idle случайным образом. |
| chistit ruje_1 -- тут думаю понятно! (сама анимка) |
| Т.к. я до конца не разобрался врать не буду, что-то может и не так разъяснил то за что отвечает! |
| В state_lib.script пишем следующее: |
| stulik= {weapon = "unstrapped", |
| movement = nil, |
| mental = nil, |
| bodystate = nil, |
| animstate = nil, |
| animation = "stulik" |
| }, |
| Здесь разъяснять без толку, т.к. тут и всё понятно! |
| НО есть формальности из-за которых у меня и была ошибка( не появлялось оружие в руках) |
| Поясняю: |
| strapped - оружие на спине |
| unstrapped - оружие в руках |
| none - убрать вообще |
| drop - бросить |
| fire' - стрелять |
| все в логике НПСа пишем: |
| [logic] |
| active = remark |
| '[remark] |
| anim = stulik |
| ________________________ |
| Вот и всё анимация восстановлена!=) |
| Ну теперь спауним для нашего Чистильщика стул! |
| Создаёшь файл в папке creatures |
| Ну допустим назовём файл taburetka.ltx |
| и в него конфинги: |
| '[table]:identity_immunities |
| 'GroupControlSection = spawn_group |
| discovery_dependency = |
| $spawn = "taburetka\table" -- тут указывается файл и секция (понадобится для спауна) |
| ;$prefetch = 32 |
| class = II_ATTCH |
| cform = skeleton |
| visual = physics\stol\stol_obedenniy.ogf -- визуал стола |
| radius = 1 |
| ;script_binding = bind_physic_object.init |
| description = inventory_sakbox_01_desc |
| inv_name = |
| inv_name_short = |
| inv_weight = 10 |
| inv_grid_width = 3 |
| inv_grid_height = 3 |
| inv_grid_x = 22 |
| inv_grid_y = 29 |
| cost = 0 |
| can_take = false |
| [table_2]:table |
| GroupControlSection = spawn_group |
| discovery_dependency = |
| $spawn = "taburetka\table_2" |
| visual = physics\stol\stol_4.ogf -- тот же стол но с другим визуалом |
| [table_3]:table |
| GroupControlSection = spawn_group |
| discovery_dependency = |
| $spawn = "taburetka\table_3" |
| visual = physics\stol\stol_7.ogf -- аналогично |
| [stul]:table |
| GroupControlSection = spawn_group |
| discovery_dependency = |
| $spawn = "taburetka\stul" |
| visual = physics\stul\stul_1a.ogf -- стул |
| Ах да! чуть не забыл!=) |
| Нужно прописать наш файл в system.ltx чтобы спаун работал!=) |
| куда-нибудь в начало пихаем вот это: |
| #include "creatures\taburetka.ltx" ' |
| Всё сохраняем! |
| Очередь спауна: |
| Cоздаём файл в папке gamedata\scripts |
| Назовём его esc_stul.script |
| в нём пишем: |
| function esc_stul () |
| alife():create("stul",vector():set(-X,Y,Z),l_v,g_v) |
| end |
| где XYZ пишем координаты места |
| где l_v g_v пишем левел и гейм вертексы. |
| Всё Наш Чистильщик усажен на стул!=) |
| Поправил текстовые и лексические ошибки. Provod[Nik] |