Вы вошли как: Гость      
[ Новые сообщения · Участники · Правила форума · Поиск]
  • Страница 1 из 1
  • 1
СОЗДАНИЕ FATALITY (FINISHERS.ST)
ScorpionДата: Четверг, 05.04.2012, 22:04 | Сообщение # 1
Профессионал
Группа: Главный Администратор - Сайта
Сообщений: 126
Статус: Не в сети
Разберем самое простое фаталити, Джонни Кейжда
Сначала правим 1.cmd и находим там вот это ...
Code

[Command]  ; это секция команды     
name = "fatal"  ; имя команды     
command = F,F,D,U    ; комбинация, как можно догадаться - стандартная :)))     
time = 35  ; время за которое комбинацию надо набрать, вполне приемлимое вермя ...

и после этого еще вот что :
Code
[State -1,fatal]     
type = ChangeState  ; тип - изменения состояния     
value = 3000   ; значение - номер состояния     
triggerall = p2bodydist X < 15    ; триггер общий, расстояние от тела противника до игрока не более 15 точек     
triggerall = command = "fatal"    ; проверка названия команды     
triggerall = p2stateno = 9010    ; состояние противника должно быть под номером 9010 - это состояния Dizzy     
trigger1 = statetype = S  ; тип нашего состояния - S - стоя на земле     
trigger1 = ctrl = 1  ; мы можем контролировать движение     
triggerall = command != "run"    ; не выполнять комбинацию при команеде Run - то есть на бегу


Вот то что пишется в файлах Finishers.st, это и есть те самые действия что выполняет во время фаталити наш персонаж.

Вот он исходник из того самого файла:

Code


[Statedef 3000]     
type    = S     
movetype= A     
physics = S     
juggle  = 1     
anim = 0     
Velset = 0, 0     
ctrl = 0     

[State 430, 31sdaa]     
type = changeanim     
trigger1 = Time = 60     
value = 660     

[State 9130, SetFatal]     
type = Varset     
trigger1 = movehit     
V = 4     
value = 1     

[State 1200, BoltFat]     
type = Hitdef     
trigger1 = AnimElem = 7     
trigger1 = Anim = 660     
velocity = 8, 0      
remvelocity = 0, 0     
attr = S, NT     
animtype = Hard     
air.animtype = Back     
air.fall = 1     
fall.recover = 0     
guardflag = HL     
pausetime = 0,0     
sparkno = 16     
sparkxy = -20,-125     
p2stateno = 6003;661     
guard.sparkno = -1     
hitsound   = 5,0     
ground.type = High     
kill       = (Var(9) = 0)     
fall.kill  = (Var(9) = 0)     
guard.kill = (Var(9) = 0)     

[State 200, 7]     
type = changestate     
trigger1 = Anim = 660     
trigger1 = AnimTime = 0     
value = 0     
ctrl = 1     

Теперь всё по порядку:

Code
[Statedef 3000]  ; стэйтдэф, определение общих параметров всего движения. Номер важен (3000). Это то что мы указали в секциях файла 1.cmd    
type    = S  ; тип состояния (S - stand, стоя на земле)    
movetype= A  ; тип самого движения (A - attack, атака)    
physics = S  ; физика движения (S - стоя на земле)    
juggle  = 1  ; жонглирование, то есть если это движение может являтся, иил явлается частью атаки состоящей из нескольких мелки (тобишь комбо), для любой атаки желательно установить в 1    
anim = 0  ; номер анимации которая связана с этим движением, в данном случае тут не надо сразу ставить ту, что мы запрограммировали, ибо она окажется одна, на всё фаталити точ не всегда допустимо, лучше всего установить нужную анимацию в процессе программирования    
Velset = 0, 0  ; скорость персонажа во время движения, по оси х и у соответстсвенно ...     
ctrl = 0   ; возможность управлять движением (это не к чему, зачем же прерывать такое зрелище

Собственно у нас получилось обычное движение, с физикой "на земле", стоя на месте. Это великолепно! Продолжим разбор полетов...

Далее идет первая часть действия, команда, если можно так назвать. А вообще дословно переводится как "состояние".
Code
[State 430, name]    ; Определения стейта, собствено номер не очень важен, мне на моей практике не встречалось его использовать, как собственон и имя, то что идет после запятой    
type = changeanim    ; тип действия - ChangeAnim - сменить анимацию. По константам этой опции существует целый раздел в официальной документации. (все быстренько RTMFить ... <img src="http://src.ucoz.net/sm/1/wink.gif" border="0" align="absmiddle" alt="wink"> )    
trigger1 = Time = 60    ; первый триггер Time(по ним тоже дока есть). означает, что через 60 милисекунд произойдет требуемое действие    
value = 660  ; значение, собственно тут это значение - номер анимации на которую следует переклчюится (660)

Пока что всё просто ... Можем в FF или MCM посмотреть эту анимацию ... да, так и есть. Это то самое классическое фаталити, что потом в Ультимэйте Эрмаку отдали :))) (Обратите внимание на красные и синие Cloosion Boxes, пригодится)

Далее идет очень спецефичная именно для MKP опция, установка определенной переменной.
Code
[State 9130, SetFatal]    
type = Varset  ;собственно тип действия - установить значение переменной    
trigger1 = movehit    ;тирггер, логического типа (да/нет), получает значение 1 если первый игрок при атаке таки попал во второго <img src="http://src.ucoz.net/sm/1/smile.gif" border="0" align="absmiddle" alt="smile">    
V = 4   ; номер переменной в которую пишется значение    
value = 1  ; собственно значение

Code
Это специфично для MKP потому что таким образом мы обозначаем какого типа добивание производится    
Эксперементально я накопал что эту переменную надо установить в 1 во время фаталити, 5 при бруталити. При френдшипе почуму-то ничего устанавливать не надо о_О (до конца пока не понял).    


Далее основное действие:
Code
[State 1200, BoltFat]    
type = Hitdef   ; тип hitdef - отвечает за нанесение удара    
trigger1 = AnimElem = 7  ; триггер, указывает на номер кадра (элемента) в анимации, при котором состоится действие    
trigger1 = Anim = 660  ; триггер, соответетсенно проверяет номер анимции (бдительные испанцы <img src="http://src.ucoz.net/sm/1/smile.gif" border="0" align="absmiddle" alt="smile"> )    
attr = S, NT   ; атрибуты атаки ---  S - так же как в Statedef тип атаки, стоя на земеле, NT - тоже тип атаки, дополнительные параметры N - normal (обычная атака), T - throw (бросок, хотя тут бы A надо поставить, обычную атаку)    
animtype = Hard  ; тип воздействия удара на противника - hard - догадайтесь сами (в документации много чего интересного)    
air.animtype = Back  ; тип воздействия если противник окажется в воздухе .... непонял нафига оно тут, но собвстенно back - притивника заносит за персонажа (как при броске)    
air.fall = 1   ; при этом противник после броска, переходит в состояние Fall - педение     
fall.recover = 0   ; не позволяет противнику вернутся из состояния fall до окончания его действия (бкувально, перекувыркнуться и встать на ноги)    
guardflag = HL   ; указывает насколько противник может защитится от атаки. HL (экв. M) - средняя степень защиты (очевидно что тут это уже не надо)    
pausetime = 0,0   ; время задержки после удара, как в Страит-файтерх всяких, первое число - время для нашего игрока, второе - противника    
sparkno = 16   ; номер "искры" при ударе, то есть эффект который заложен в основах, в файлах FIGHTFX.AIR и FIGHTFX.SFF. 16 - брызги крови , кому интересно смотрим через MCM или FF.    
sparkxy = -20,-125  ; координаты места, где будет появлятся "искра"    
p2stateno = 6003  ; номер состояния в которое переходит пртивник после удара (6003 - имерть от отскания головы, заранее запрограммировано для каждого)    
guard.sparkno = -1  ; номер "искры" у противника ... не требуется    
hitsound   = 5,0   ; номер группы, звука в SND файле, при ударе    
ground.type = High  ; тип "падения" противника ...     
kill       = (Var(9) = 0)  ; тут я не совсем разобрался, но это надо    
fall.kill  = (Var(9) = 0)    
guard.kill = (Var(9) = 0)

И в довершение :
Code
[State 200, 7]    
type = changestate  ; сменить состояние    
trigger1 = Anim = 660  ; если анимация 660    
trigger1 = AnimTime = 0   ; и время её вышло, то есть цикл завершился ...    
value = 0   ; то переходим в сотстояние 0 - нормальная стойка     
ctrl = 1    ; мы можем контроллировать движния ....

Вот и всё ... А есть добивания и положней, так что дерзаем! smile
Автор: armand
Ссылка на оригинал: http://mkp.ucoz.ru/forum/13-14-1



 
GodzillaДата: Вторник, 10.04.2012, 09:24 | Сообщение # 2
Новенький
Группа: Заслуженный
Сообщений: 1
Статус: Не в сети
Scorpion, Супер всё получилось... СПАСИБО..
 
ScorpionДата: Вторник, 10.04.2012, 21:34 | Сообщение # 3
Профессионал
Группа: Главный Администратор - Сайта
Сообщений: 126
Статус: Не в сети
Gadzilla, незачто!


 
  • Страница 1 из 1
  • 1
Поиск:

Сайт создан в системе uCoz