Восстановление Вырезанных Анимаций НПС. — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
ФеНиКс (обсуждение | вклад) |
|||
(не показаны 19 промежуточные версии 6 участников) | |||
Строка 1: | Строка 1: | ||
− | =Редактирование | + | =Редактирование и восстановление вырезанных анимаций NPC= |
− | '''Нус...Приступим=) | + | '''Нус... Приступим =)''' |
− | Мой | + | {| class="standart" |
− | __________________________________ | + | |- |
+ | |'''Мой урок, думаю, поможет новичкам!''' | ||
+ | |- | ||
+ | |__________________________________ | ||
+ | |- | ||
+ | |''Первые шаги...'' | ||
+ | |- | ||
+ | |''Что нам нужно???'' | ||
+ | |- | ||
+ | |''Для восстановления необходимо сначала посмотреть, что восстанавливать. Так ведь?'' | ||
+ | |- | ||
+ | |'''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''' ''-- не использовать.'' | ||
+ | |- | ||
− | + | |''Так же Объяснения от Замечательного человека Максим Р.'' | |
+ | |- | ||
+ | |'''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''' ''пишем левел и гейм вертексы.'' | ||
+ | |- | ||
+ | |''Всё Наш Чистильщик усажен на стул!=)'' | ||
+ | |- | ||
+ | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | {| 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] |