Восстановление Вырезанных Анимаций НПС. — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Восстановление Вырезанных Анимаций НПС. — различия между версиями

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

Перейти к: навигация, поиск
(Редактирование Восстановление Вырезанных Анимаций НПС)
 
(не показаны 17 промежуточные версии 6 участников)
Строка 1: Строка 1:
=Редактирование Восстановление Вырезанных Анимаций НПС=
+
=Редактирование и восстановление вырезанных анимаций NPC=
'''Нус...Приступим=)
+
'''Нус... Приступим =)'''
 
{| class="standart"
 
{| class="standart"
Мой Тутор думаю поможет новичкам!'''
 
<br>__________________________________<br />
 
 
 
|-
 
|-
|Первые Шаги...
+
|'''Мой урок, думаю, поможет новичкам!'''
 +
|-
 +
|__________________________________
 +
|-
 +
|''Первые шаги...''
 
|-  
 
|-  
|Что нам нужно???
+
|''Что нам нужно???''
|Для восстановления Нам нужно сначала посмотреть что нужно восстанавливать! Так ведь?
+
|-
 +
|''Для восстановления необходимо сначала посмотреть, что восстанавливать. Так ведь?''
 +
|-
 +
|'''1. SDK'''
 +
|-
 +
|'''2. Конвертер от бардака!'''
 +
|-
 +
| '''Ну и естественно хоть чуть-чуть умения в обращении с этими вещами!'''
 +
|-
 +
|''Просмотр анимаций...''
 +
|-
 +
|''Делаем батник (''файл с расширением .bat, создается в блокноте. прим. Provod[Nik]'' ) для конвертации модели из'' '''ogf''' в '''object'''.
 +
|-
 +
|''Ну, возьмем модельку Наёмника!''
 +
|-
 +
|''Название:''
 +
|-
 +
|'''stalker_ki_mask.ogf '''
 +
|-
 +
|''Путь:''
 +
|- ''\gamedata\meshes\actors\killer''
 +
|''Теперь очередь батника!''
 +
|-
 +
|''батник:''
 +
|-
 +
|''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''' ''-- не использовать.''
 +
|-
  
|1. SDK
+
|''Так же Объяснения от Замечательного человека Максим Р.''
|2. Конвертер от бардака!
+
|-
 +
|'''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'''
 +
|-
  
Просмотр Анимаций...
 
  
Делаем бантик для конвертации модели из '''ogf''' в '''object'''.
+
|'''[table_2]:table'''
ну возьмем Модельку Наёмника!
+
|-
Название:
+
|'''GroupControlSection = spawn_group'''
'''stalker_ki_mask.ogf '''
+
|-
Путь:
+
|'''discovery_dependency ='''
''\gamedata\meshes\actors\killer''
+
|-
Теперь очередь Бантика!
+
|'''$spawn = "taburetka\table_2"'''
Бантик:
+
|-
''converter -ogf -object stalker_ki_mask.ogf
+
|'''visual = physics\stol\stol_4.ogf''' ''-- тот же стол но с другим визуалом''
pause''
+
|-
<br>______________________<br />
+
Всё запускаем бантик и появляется файл:
+
'''stalker_ki_mask.object'''
+
  
Открываем его в '''SDK''' и кликаем на три точки в ''motion reference'' , и снимаем все галочки!
+
|'''[table_3]:table'''
Дальше нажимаем кнопку ''append'' и загружаем '''.skls''' файл!
+
|-
чтобы получить '''.skls''' файл нам нужно создать опять же бантик и файл с анимациями!
+
|'''GroupControlSection = spawn_group'''
Мы возьмём файл со сталкерскими анимациями!
+
|-
Название:
+
|'''discovery_dependency ='''
<br>'''stalker_animation.omf'''
+
|-
Путь:
+
|'''$spawn = "taburetka\table_3"'''
''\gamedata\meshes\actors''
+
|-
Бантик:
+
|'''visual = physics\stol\stol_7.ogf''' ''-- аналогично''
''converter -omf -skls stalker_animation.omf
+
|-
pause''
+
Всё, запускаем бантик и перед нами файл '''stalker_animation.skls'''<br />
+
<br>_____________________________<br />
+
  
Выбор анимации...
+
|'''[stul]:table'''
 
+
|-
В SDK нажимаем на Motion и перед нами появляется список анимаций!
+
|'''GroupControlSection = spawn_group'''
Я нашёл вырезанную анимацию чистки ствола!
+
|-
Название:
+
|'''discovery_dependency ='''
'''chistit ruje_1'''
+
|-
____________________
+
|'''$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''' ''пишем левел и гейм вертексы.''
 +
|-
 +
|''Всё Наш Чистильщик усажен на стул!=)''
 +
|-
 +
|}
  
для этого нужно два файла:
 
<br />'''state_mgr_animation_list.script'''
 
'''state_lib.script'''
 
  
В первом прописываем нашу анимку вот так:
+
{| class="standart"
''stulik = { prop = { maxidle = 1,
+
|Поправил текстовые и лексические ошибки. '''Provod[Nik]'''                            
sumidle = 1,
+
|}
rnd = 100 },
+
into = { [0] = {"chistit ruje_1", {a="wpn_sig220"}, "chistit ruje_1"} },
+
out = nil,
+
idle = { [0] = "chistit ruje_1" },
+
rnd = nil },''
+
<br />
+
 
+
Разъяснение:
+
Толком я не понял что за что отвечает, но что-то я всё же понял...
+
''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 = 10000
+
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" ''''
+
Всё сохраняем!
+
Очередь спавна:
+
  
Создаём файл в папке '' 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'' пишем левел и гейм вертексы.
 
Всё Наш Чистильщик усажен на стул!=)
 
  
[[Участник:ФеНиКс|ФеНиКс]]
+
[[Категория:Незаконченные_статьи]]

Текущая версия на 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]
Другие места
LANGUAGE