segunda-feira, 9 de março de 2009

Dash no pulo

Vou Ensinar Agora Como Fazer Dash no Alto. 

No CNS vc Faz o seguinte: 

[StateDef 108] 
type = A ; No Alto 
movetype= I; Idle Para o inimigo naum defender 
physics = N; Nulo 
velset = 0,0;Com a velocidade 0 
ctrl = 0; Sem Controle 
anim = 108;A Animação do Dash 
poweradd = -50;A quantidade de power Que Gasta 

[State 108,VelSet] 
type = VelSet;Sctrl Velset 
trigger1 = 1; Em todas as Animações 
x = 7 ; Adiciona 7 de velocidade por tick 

[State 108,AssertSpecial] 
type = AssertSpecial ; Sctrl Assertspecial 
trigger1 = 1 ; Em todas as animacões 
flag = Noautoturn ; Ele naum pode dar Turn 
flag2 = Nowalk ; E nem Andar 

[State 108, end] 
type = ChangeState ;Sctrl Changestate 
trigger1 = AnimTime = 0 ; Qdu a animação terminar 
value = 50 ; Ele vai para a Animação 50 
ctrl = 1 ; Com Controle 

Depois de fazer o statedef , do dash faça o CMD 

Comando eh Simples, No statedef-1 eh soh colocar isso: 

;DashAlto 
[State -1, Dash] 
type = ChangeState 
value = 108 ;Statedef Que vai ativar se usar o Comando 
triggerall = power >= 50 ; Se o power for maior ou igual a 50 
triggerall = command = "FF" ;Comando a ser usado 
trigger1 = statetype = A;Tem Que estar no Ar 
trigger1 = ctrl ;Com Controle 

Fazer Dash para tras eh nessa mesma Logica, So mude o Velset. 

E é Só isso , Qualquer erro ou Duvida Fale...

Criando um combo

como fazer um combo 

primeiramente quem fez o tuto fui eu naruto_MD o que te ensina a fazer os comandos e te cobra os creditos a 

cada ano ^^(brincadeira) 

primeiro saiba que para fazer um combo vc tem que ter feito pelo menos três golpes ao contrario de que todos 

pensam que combo é só fazer três ataques diretos com um botão só 
está completamente enganado combo é a quantidade de hits de cada sequencia feita com botões diferentes ou 
sendo os mesmos. 

esse combo que vou ensinar sera com botões iguais 

ex: 

meu combo tera 3 golpes 

o comando dele sera x 
mais para cada golpe sera um x 
se apertar x ele faz um soco 
se aperta em sequida outro x ele faz um soco diferente 
isso é a grande e complexa parte do combo 

no caso isso vc penssara então tenho que fazer um comando 
x,x ? 

claro que não, vc tera que fazer um comando apenas com x 
que provavelmente ja existe no fighter factory 

certo começaremos com os combos 

primeiro eu criei varios golpes 

ja que eu tenho os comandos, states, begins actions; 200,210 e 220 

eu vou aproveitar eles, vc poderia apenas fazer novos states mais eu sou prequiçoso e vou aproveitar os que 

vieram no ff 

neste caso eu tenho um golpe no 200 outro no 210 e outro no 220 farei só com esses 

va no CMD e logo ali do lado esquerdo onde tem um monte de comandos la, clique no 200 

vai aparecer o comando do state 200 

; Stand Light Punch 
[State -1, Stand Light Punch] 
type = ChangeState 
value = 200 
triggerall = command = "x" 
triggerall = command != "holddown" 
trigger1 = statetype = S 
trigger1 = ctrl 

veja que o comando éx 
logo os outros comandos dos outros states sera x 

veja como 

chamarei este comando de combo1 

;Combo1 
[State -1, Combo1] 
type = ChangeState 
value = 210;>>>>>>>>>>>>>>>>>numero do state do combo1 
triggerall = stateno = 200; >>>>>>>>>.isso significa que ele chamara no segundo x o comando (200) 
triggerall = command = "x"; >>>>>>>>>>veja que o comando é x 
trigger1 = statetype = S 
trigger1 = time >= 10;>>>>>>>>>>>>>. tempo determinado para chamar o combo anterior 

veja que o comando é x depois que vc fez esse comando ou copiou e colou no CMD 

teste no mugen, vera que no segundo x que vc clicar ele fara o golpe do state 210 

boa sorte com seu combo vc podera fazer um combo muito maior para isso é só add o comando 

;Combo2 ; mude o nome para combo2 
[State -1, Combo2] ;aki também precisa mudar o nome para combo dois 
type = ChangeState 
value = 220 ;numero do state do combo2 
triggerall = stateno = 210 ; isso significa que ele chamara no terceiro x o combo1 (210) 
triggerall = command = "x" ; veja que o comando é x 
trigger1 = statetype = S 
trigger1 = time >= 10 ; tempo determinado para chamar o combo anterior 

boa sorte agora vc tem três combos ^^ 
naruto_MD

power change

Basta um StateDef com qualquer valor pra criarmos o "Power Change"

Então Vamos lá...

[Statedef ???]
type = S
physics = S
movetype = I
anim = ???
ctrl = 0
velset = 0,0

;movetype = I ;indica que não é um ataque, isso evita que o inimigo trave na defesa
;anim = ??? ;Animacao Do p1 Aumentando o Power

[State ???, Explod]
type = Explod
trigger1 = AnimElem = ?
anim = ???
ID = ???
pos = ?,?
postype = p1
facing = 1
vfacing = 1
bindtime = 1
removetime = -2
sprpriority = 0
ontop = 1
ownpal = 1
removeongethit = 1

;trigger1 = AnimElem = ? ;N° do frame em que o explod ira aparecer
;anim = ??? ;Animacao do explod
;ID = ??? ;Para setar o remove explod, pode ser o mesmo valor do explod
;pos = ?,? ;posicao do explod
;postype = p1;aonde o explod vai aparecer
;ontop = 1 ;explod ficara sobre o P1
;removeongethit = 1 ;quando o p1 levar hit, o explod ira ser removido

[State ???, RemoveExplod]
type = RemoveExplod
trigger1 = Command != "segura_x"
trigger2 = Command != "segura_a"
id = ???

;trigger1 = Command != "segura_?" ;explod removido se soltar o botão "?"
;trigger2 = Command != "segura_?" ;explod removido se soltar o botão "?"

[State ???, PowerAdd]
type = PowerAdd
trigger1 = (command = "segura_?"&&command = "segura_?")
value = ?

;trigger1 = (command = "segura_?"&&command = "segura_?") ;enquanto vc segurar "?" e "?" ele irar aumentar...
;value = ? ;...aumenta ? de power por tick, lembrando que ? ticks = 1 segundo

[State ???, ChangeState]
type = ChangeState
trigger1 = (Command != "segura_?"||Command != "segura_?"||Power >= 3000)
value = 0
ctrl = 1

E pra completa a parte do CNS o ChangeState...
Ele muda para a stand (value = 0) quando vc soltar algum dos botoes ou encher o power até 3000...

Agora a Parte do CMD....
Primeiro os Comandos....
[Command]
name = "segura_?" ;Nome do 1° comando...
command = /? ;estar pressionando "?"

[Command]
name = "segura_?" ;Nome do 2° comando...
command = /? ;estar pressionando "?"


Depois o State -1...
[State -1, ???]
type = ChangeState
value = ???
trigger1 = (power < 3000) && (command = "segura_?" && command = "segura_?")
trigger1 = (statetype != A) && (command != "holddown") && (ctrl)

;value = ???;valor do statedef do power change
;trigger1 = (power < 3000) && (command = "segura_?" && command = "segura_?")
O power change so funcionara se seu poder for menor que 3000, e for executado o nome dos comandos "segura_?" e "segura_?"...
;trigger1 = (statetype != A) && (ctrl = 0)
Se o personagem nao estiver no Ar, e dexa o atake normal...

Espero que tenham gostado....e qualquer duvida só fala...
Ate+

utilizando multi chars

Introdução
=======
Multi-char, bem pode não ser nomeado assim mas é um personagem que possui mais de uma forma de apresentação (sprites diferentes). Um exemplo seria um MegaMan que possui a forma normal e uma forma com a super armadura. Cada forma possui animações e golpes próprios e tudo é controlado por uma variável que decide qual forma/estado o personagem se encontra. Usei isso no meu personagem MetaGang para fazer com que fosse permitido jogar com até 4 personagens diferentes 

Passo 1: Fazendo o Sff e Air
==================
Na hora de fazer o Sff use os sprites principais do jogador com os grupos padrões do mugen, os sprites extras devem ser postos em grupos separados.
É no Air que esta toda a manha, será adicionado uma nova animação para cada animação padrão do mugen.

Ex: Para exemplificar melhor vou usar aki o Air do MetaGang

;Meta-Trident actions
[Begin Action 0];stand <--- Animação padrão 0 = Posição em Pé
Clsn2default: 1
Clsn2[0] = -13,-18,8,-1
0,0, 0,0, 5
0,1, 0,0, 5

[Begin Action 1];stand <--- Nova Animação 1 = Posição em Pé da segunda forma
Clsn2default: 1
Clsn2[0] = -13,-18,8,-1
1,0, 0,0, 5
1,1, 0,0, 5

[Begin Action 2];stand <--- Nova Animação 2 = Posição em Pé da terceira forma
Clsn2default: 1
Clsn2[0] = -13,-18,8,-1
2,0, 0,0, 15
2,1, 0,0, 5


Para cada animação faz-se uma ou varias animações dependendo de quantas formas seu personagem possua.
É de total importancia que o número de sprites das diferentes formas sejam iguais.

Animação em Pé == Action 0 --> Action 1 --> Action 2
Animação andando para frente == Action 20 --> Action 21 --> Action 22
Animação andando para tras == Action 24 --> Action 25 --> Action 26
.
.
.

Você pode usar esse método para os ataques tambem

Passo 2: Editando o Common.cns
======================
Seu personagem deverá ter uma versão própria do common.cns, faça uma cópia do original que está na pasta data para a pasta do seu personagem. Pode renomear se quiser portanto que insira corretamente o nome no arquivo def
Ex:
[Files]
cmd=metag.cmd 
cns=meta1.cns
st=meta1.cns
st2=metast1.cns
st3=metast2.cns
st4=metast3.cns

stcommon=metam.cns <--- adicione esta linha (stcommon= *common.cns)

sprite=metag.sff
anim=metag.air 
sound=metag.snd 
pal1=metag1.act
pal2=metag2.act
pal3=metag3.act
pal4=metag4.act
pal5=metag5.act
pal6=metag6.act


Muita atenção na hora de editar o common pois ele controla todas as animações padrão do seu char.
Será preciso usar uma variavel para controlar o valor da forma atual do seu personagem, quando esse valor for modificado as animações mudaram automaticamente.
Ultilizando o MetaGang como exemplo eu usei a Var(58) para guardar esse valor já que a Var(59) estava reservada para a IA. Modificar o IntPersistIndex ou não vai depender de sua preferencia, se quiser que o char volte ao normal a cada round não altere, caso pretenda que fique transfomado até uma nova ordem sua diminuia o IntPersistIndex para uma valor abaixo da sua variavel Ex:57

Já no Common.cns vai ser preciso adicionar um código para auto-selecionar o número da animação da forma atual de seu personagem.
Os Statedefs básicos possuem esse esquema onde não é relacionado diretamente a animação usada, não existe "Anim = xxx", basta modificar ou criar o state para alterar a animação usada (ChangeAnim).
; Stand
[Statedef 0]
type = S
physics = S
sprpriority = 0
<--- Não informa a animação ...
velset=0,0

[State 0, 1]
type = ChangeAnim <--- State para troca de animação 
triggerall=Anim!=0+Var(58)
trigger1 = Anim != 0 && Anim != 5
trigger2 = Anim = 5 && AnimTime = 0 ;Turn anim over
value = 0+Var(58) <--- Lembra do que você fez no Air? é complementado aki 

-----------------------------------------------------------------
; Walk
[Statedef 20]
type = S
physics = S
sprpriority = 0

[State 20, 3]
type = ChangeAnim
triggerall=Anim!=20+Var(58)
triggerall = vel x > 0
trigger1 = Anim != 20 && Anim != 5
trigger2 = Anim = 5 && AnimTime = 0
value = 20+Var(58)

[State 20, 4]
type = ChangeAnim
triggerall=Anim!=24+Var(58)
triggerall = vel x < 0
trigger1 = Anim != 21 && Anim != 5
trigger2 = Anim = 5 && AnimTime = 0
value = 24+Var(58)

Para os outros States que direcionam a animação basta acresentar o seguinte código
; SGUARDHIT2 (knocked back)
[Statedef 151]
type = S
movetype= H
physics = S
anim = 150+Var(58) <--- "+Var(58)"

Continue modificando o common com muita atenção

Passo 3: Mudando a Forma!
==================
Aki fica por sua escolha, como seu personagem será transformado, trocado, modernizado... seilá 
pode escolher fazer um Statedef para trocar a forma em um super ou para ser ativado depois de atingir certo nivel de energia ou outra necessidade. Isso fica por sua escolha.

Ex:
Usando um comando

Arquivo CMD:

;------------------------- 
[State -1];Meta-Trident
type=ChangeState
trigger1=command="Fy" <--- comando para a troca
value=400

Arquivo Cns:

[Statedef 400];Seleciona
statetype=C
physics=S
anim=1
ctrl=0
velset=0,0

[State 400]
type=PlaySnd
trigger1=!Time
value=50,7

[State 400]
type=VarSet
trigger1=Time=1
v=58
value=1 <--------------Var(58) passa para o valor 1 => Animação da segunda forma 

[State 400]
type=ChangeState
trigger1=Time=2
ctrl=1
value=0


Perguntas??? Duvidas??? Traumas??? ... (Imitando meu prof de História )

Vlw aew

[kage Bushin] Jutsu Dos Clones

Olá pessoal.

esse tutorial serve mais para o pessoal que fan de naruto.
sei que o pessoal gostaria de saber como se faz para criar clones 
e tal, já que no anime naruto isso é muito comum.
bom, nesse tutorial, irei explicar como criar o jutsu Kage Bushin.

antes de mais nada, não irei só colocar a codificação. gostaria que você
aprendesse como fazer. vamos esquecer a função [Ctrl + C depois Ctrl + V].

# antes de começar o tutorial própriamente dito, irei explicar como criar helpers.
temos um state básico criado aqui. agora vamos indicar uma ação para esse state.
observe onde está [???] esse será o numero do state, dado por mim como exemplo.
é como se fosse um movimento comum já criado, soco ou chute.

[Passo 1]

[Statedef ???]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
anim = ???
ctrl = 0
sprpriority = 2
poweradd = -20

[State ???, ?]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

# agora, vamos determinar um valor para esse state.
vou usar o valor 200 como exemplo e também a animação
usarei o valor 200.

[Passo 2]

[Statedef 200]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
anim = 200
ctrl = 0
sprpriority = 2
poweradd = -20

[State 200, 1]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

# agora, vamos dizer que essa ação 200 tenha 4 frames de sprites.
e você quer que o helper, no caso, o clone, apareça no 3° frame da animação 200.
ficará assim.

[Passo 3]

[Statedef 200]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
anim = 200 <-- indica a animação 200
ctrl = 0
sprpriority = 2
poweradd = -20

# o helper entrará nessa parte. para criar um helper é muito simples, observe no FF
no painel, do lado direito, ele já te da estados, basta você indicar valores.

[State 200, 1]
type = helper
trigger1 = AnimElem = 3 <-- o helper irá aparecer no 3° frame da animação 200.
name = "clone" <-- nome do helper, mostrado no debug do mugen.
id = 201 <-- Id de remoção do helper.
pos = 0,0 <-- posição do helper na tela.
postype = p1 <-- indica que vai sair do player 1
stateno = 201 <-- estado do helper.
helpertype = normal <-- normal e diferente de player, se você usar player, o helper será como um jogador.
ownpal = 0

[State 200, 2]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

# ok, criamos a chamada do helper, agora iremos cria os states do helper
própriamente dito. observe, que iremos criar o state 201.
esse state será chamado pelo golpe 200 no 3° frame da animação 200.
a ação 201, será a ação do clone parado.

[Passo 4]

[Statedef 201]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
anim = 0 <-- observe que a animação 0 usada é a mesma animação 0 do seu char parado (stand).
ctrl = 0
sprpriority = 2
poweradd = 0

[State 201, 1]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

# até essa parte do tudorial, você já deve ter entendido como criar um helpers.
agora iremos passar para a parte de programação do helper, criando os states
dele andando, batendo e assim por diante.

Movimentação dos Clones

# observe que paramos no state que indicava a posição do helper
como stand, no caso o helper iria aparecer e ficar na animação 0.
só que eu não quero que o helper apareça e fique parado, he,he.
ok, então vamos fazer o helper andar.

[Passo 1]

[Statedef 201]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
anim = 0
ctrl = 0
sprpriority = 2
poweradd = 0

# nessa parte, iremos determinar um state para ele mudar
assim que ele aparecer. no caso ele mudará para o state 202.

[State 201, 1]
type = ChangeState
trigger1 = Animtime = 0
value = 202

# agora criaremos o state do helper andando.
bom, nesse caso, ele irá seguir o player 2.

[Passo 2]

[Statedef 202]
type = S
movetype = A
physics = S
anim = 20 <-- observe que a animação 20 é a mesma animação do seu char (andando).
ctrl = 0
velset = 0,0
sprpriority = 3

# agora vamos imaginar que a animação do seu char andando seja de 3 frames de sprites.
para fazer o helper andar você fará o seguinte:
iremos usar o comando velset.

[State 202, 1]
type = Velset
trigger1 = animelem = 1
trigger2 = animelem = 2
trigger3 = animelem = 3
x = ?? <-- determine o valor da velocidade do eixo x.

# observe como o seu char se movimenta.
para poder chegar em um valor exato.

# o comanto turn, fará que o helper sempre siga o player 2
mesmo o helper estando com o eixo x maior ou menor que o player 1.
os trigers indicam valores de tempos alternativos.

[State 202, 2]
type = turn
triggerall = P2BodyDist X < 0
trigger1 = time =10
trigger2 = time =30
trigger3 = time =50

# ok, agora eu não quero que o meu char fique andando infinitamente, he,he.
então vamos criar um state do helper batendo. para finalizar o state 202
faça o seguinte:

[State 202, 3]
type = ChangeState
trigger1 = P2BodyDist X < 18 <-- segnifica que, quando o player 2 estiver numa distancia menor que 18
trigger1 = time = 60 <-- e num tempo de 60
value = 203 <-- mudará para o state 203.

# sempre deixe 2 states que indique a finalização dos states dos helpers.
se ele estiver em um determinado por e não executar um ação ele sempre
executará outra asão mediante os states indicados por você.

[State 202, 4]
type = ChangeState
trigger1 = P2BodyDist X > 18 <-- segnifica que, quando o player 2 estiver numa distancia menor que 18
trigger1 = time = 20 <-- e num tempo de 20
value = 201 <-- mudará para o state 201.

# ele seguirá da seguinte maneira, se o helper estiver numa distancia menor que 18 do player 2
ele irá executar o state de ataque, que no caso seria o state 203.
se ele estiver diferente desse valor, ele irá executar o state 201 que no caso é a stand e assim por diante.

# agora vamos criar o state 203, esse state será o state em que o helper fará um golpe
tipo um soco ou chute. vamos usar como exemplo a animação 200 do seu char
que em todos os padrões seria um soco.

[Passo 3]

[Statedef 203]
type = S
movetype = A
physics = S
anim = 200 <-- observe que é a mesma animação do seu char (dando um soco).
ctrl = 0
velset = 4,0
sprpriority = 3

# você colocará o mesmo hitdef do state do soco nesse state.
vamos imaginar que o movimento do soco do seu char tenha 5 frames de animação
e que o dano está na animação 3

[State 203, 1]
type = HitDef
trigger1 = AnimElem = 3
attr = S, NA
damage = 30, 0
getpower = 0
givepower = 14
animtype = Light
guardflag = MA
hitflag = MAF
priority = 2, Hit
pausetime = 10, 10
sparkno = 0
sparkxy = -10, -20
hitsound = 5, 0
guardsound = 6, 0
ground.type = low
ground.slidetime = 10
ground.hittime = 10
ground.velocity = -4
airguard.velocity = -1.9,-.8
air.velocity = -1.4,-3
air.hittime = 12

# para finalizar esse state faça o seguinte:
indique para ele voltar para animação de stand que no caso é a animação 201.
para que assim ele sempre volte a repetir ambos os states.

[State 203, 2]
type = ChangeState
trigger1 = Animtime = 0
value = 201

# agora, eu gostaria que o helper morrece com um golpe.
tipo para ficar igual no desenho, he,he.
mediante a isso vamos criar um state de morte para o helper.

[Passo 4]

[Statedef 204]
type = S
movetype = I
physics = S
anim = 204
ctrl = 0
velset = 0,0
sprpriority = 3

[State 204, 1]
type = destroyself
trigger1 = time = 45 <-- tempo em que o helper irá sumir.

# não esqueça de indicar em todos os states do helper o seguinte:
quando você for colocar o HitOverride observe quantas animações
cada state de seu char terá, se tiver 5 animações, deixe como está no exemplo.
se tiver menas animações, diminue o numero de animelem.

[State 0, 1]
type = HitOverride
trigger1 = animelem = 1
trigger2 = animelem = 2
trigger3 = animelem = 3
trigger4 = animelem = 4
trigger5 = animelem = 5
attr = SCA, AA, AP, AT <-- acertos de ataque.
stateno = 204
time = 35

[State 0, 2]
type = changestate
triggerall = time >= 35
trigger1 = win
trigger2 = RoundState = 4
value = 204
ctrl = 0

# o HitOverride indica que o helper irá passar para o state 204
se ele for acertado mediante as animações indicadas em cada state.
já o changestate ele irá passar para o state 204
quando o round terminar no caso trigger1 = win e assim por diante.

# observe que eu criei apenas os movimentos do helper:
parado (stand), andando (Walking) e dando um soco (Punch) e a parte de morte.
mediante esse esquema e você tendo criatividade, você poderá inventar muito mais.

obrigado pela atenção.

super jump 2.0

fiz um novo tópico para não misturar com o código anterior, esse aqui é mais otimizado, mas se por acaso tiver algum problema em fvars, pode usar o antigo sussegado 

começemos...

) no CMD

;-| Super Jump |--------------------------------------------------------------
[command]
name = "DU"
command = ~$D,U
time = 15
[command]
name = "DUF"
command = ~$D,UF
time = 15
[command]
name = "DUB"
command = ~$D,UB
time = 15



cole isso na parte dos comandos de seu char (antes do statedef -1)

depois disso, vem a parte de efetuar o comando em si:

; Super Jump
;-------------------------
[state -1, superjump up, fwd and back]
type = changestate
triggerall = (command = "DU" || command = "DUF" || command = "DUB")
triggerall = statetype!= A
trigger1 = ctrl 
value = 900



entendeu bulhufas? então vamos entender:

type = changestate;quer dizer que você vai para o state em questão se...
triggerall = (command = "DU" || command = "DUF" || command = "DUB");efetuar um desses comandos...
triggerall = statetype!= A; não estiver no ar...
trigger1 = ctrl ; e tiver o controle do lutador
value = 900 ; e esse é o state para o qual você vai, o do pulo, duh =P

2)no CNS

; Super Jump
;-------------------------
;---[Starts]---
[statedef 900]
type = S
physics = S
anim = 40
ctrl = 0

[State 900, superjump dir]
type = varset
trigger1 = !time
fvar(19) = ifelse(command = "DUF", const(velocity.jump.fwd.x)+2, ifelse(command = "DUB", const(velocity.jump.back.x)-2,0))

[state 900, end]
type = changestate
trigger1 = animtime = 0
value = 901



amagad, wtf? calma, vamos desmembrar o bicho 


[statedef 900]
type = S
physics = S
anim = 40
ctrl = 0

simples, você tá no chão, não tá atacando ninguém e a anim disso é a 40, e não tens o controle do char 

[State 900, superjump dir]
type = varset
trigger1 = !time
fvar(19) = ifelse(command = "DUF", const(velocity.jump.fwd.x)+2, ifelse(command = "DUB", const(velocity.jump.back.x)-2,0))

aqui usamos um treco muito divertido chamado fvar, que nada mais é do que uma var que pode usar numeros quebrados mas por que eu não usei uma var então?
se usasse, estaria admitindo que os valores de const em questão são numeros inteiros, e usando fvar eles podem ser quebrados, entendeu? 

agora sendo bem simples, a fvar(19) definirá a direção do jump. eu poderia usar 3 varsets diferentes, mas prefiro usar o ifelse para simplificar. ifelse quer dizer "se, porém...", eu demoraria para explicar seu uso, mas o meu amigo kurai naito fez um tuto explicando sua função, vão no site dele e façam o dowload 

mas uma explicação rapida do treco: se você fizer o comando "DUF" a velocidade será a constante de velocidade pra frente durante o pulo mais 2, se apertar o comando "DUB" será a constante de velocidade para trás menos 2, se for qualquer outro comando, no caso "DU", o valor será 0, sem aceleração 

[state 900, end]
type = changestate
trigger1 = animtime = 0
value = 901
aqui muda para o state do pulo no ar, quando a anim 40 chegar ao fim, e 901 é o state dessa parte do código 

;---[Jump]---
[statedef 901]
type = A
physics = A
anim = 41
velset = fvar(19),const(velocity.jump.y)*1.125
ctrl = 1

[state 901, noturn]
type = assertspecial
trigger1 = 1
flag = noautoturn


esse é o state final do código, tá chegando ao fim essa epopéia do pulo 


;---[Jump]---
[statedef 901]
type = A
physics = A
anim = 41
velset = fvar(19),const(velocity.jump.y)*1.125
ctrl = 1

cê tá no ar, não tá atacando ninguém, a anim desse pulo é a 41, a velocidade x é o valor da fvar(19), e a velocidade y é a constante de velocidade y multiplicado por 1.125 (para diferenciar da altura do pulo normal, para ir mais alto aumente esse ultimo valor), e você têm o controle do bicho 

[state 901, noturn]
type = assertspecial
trigger1 = 1
flag = noautoturn
isso é para o seu char nao virar sozinho durante o pulo, quando passar pelo oponente 

e chegamos ao fim desse código, se você quer apelas copiar e colar essa bosta sem saber pra que serve cada coisa, acompanhe abaixo:

no CMD

;-| Super Jump |--------------------------------------------------------------
[command]
name = "DU"
command = ~$D,U
time = 15
[command]
name = "DUF"
command = ~$D,UF
time = 15
[command]
name = "DUB"
command = ~$D,UB
time = 15

; Super Jump
;-------------------------
[state -1, superjump up, fwd and back]
type = changestate
triggerall = (command = "DU" || command = "DUF" || command = "DUB")
triggerall = statetype!= A
trigger1 = ctrl 
value = 900

no CNS

; Super Jump
;-------------------------
;---[Starts]---
[statedef 900]
type = S
physics = S
anim = 40
ctrl = 0

[State 900, superjump dir]
type = varset
trigger1 = !time
fvar(19) = ifelse(command = "DUF", const(velocity.jump.fwd.x)+2, ifelse(command = "DUB", const(velocity.jump.back.x)-2,0))

[state 900, end]
type = changestate
trigger1 = animtime = 0
value = 901

;---[Jump]---
[statedef 901]
type = A
physics = A
anim = 41
velset = fvar(19),const(velocity.jump.y)*1.125
ctrl = 1

[state 901, noturn]
type = assertspecial
trigger1 = 1
flag = noautoturn



espero que entendam, tá super simples, mas eu que sou tosco e não sou bom professor mesmo 

Como fazer um screenpack

Como fazer um screenpack
tutorial básico abaixo
;---------------------------------------------------------------------------->
Antes de iniciar você deve saber como colocar chars no seu mugen...

Aqui você vai aprender a fazer seu próprio screen select para seu mugen.
Para começar você deve abrir o arquivo select.def na pasta data do 
seu mugen com o bloco de notas, procure onde está
escrito “Character select definition” será ai que você começara a modificar:
OBS: Lembre-se de salvar as configurações a cada passo realizado!!!

--------------------------------------------------------------------------------------------------------------------

1° passo- Quantos chars colocar.

Procure onde está escrito:

[Select Info]
rows = 2
columns = 5
wrapping = 0 ;1 to let cursor wrap around
pos = 90,170 ;Position to draw to
showemptyboxes = 0 ;1 to show empty boxes
moveoveremptyboxes = 0 ;1 to allow cursor to move over empty boxes
cell.size = 27,27 ;x,y size of each cell (in pixels)
cell.spacing = 2 ;Space between each cell
cell.bg.spr = 150,0 ;Note: Don't use animation for cells
cell.random.spr = 151,0 ;Icon for random select (don't use animation)
cell.random.switchtime = 4;Time to wait before changing to another random portrait

Modifique as linhas:

rows = 2
columns = 5

Para:

rows = X X= n° de chars em cada coluna
columns = Y Y= n° de chars em cada linha

EX:

rows = 3
columns = 10

O mugen ira multiplicar o 3 que é o n° de chars em cada coluna
por 10 que é o n° de chars em cada linha. Assim ira ter um screen select de 30 chars.
Depois abra o arquivo select.def também na pasta data do mugen, ache onde está escrito
[Characters] e coloque em baixo o número máximo que seu screen select vai ter de "kfm,"
(sem aspas e com a virgura)

EX: Se seu screenselect vai ter 40 chars no maximo você vai colocar 40 vezes
kfm, mas se você já tiver os chars tudo colocado nem coloque o kfm,

Salve o system.def e veja como ficou executando o jogo.

--------------------------------------------------------------------------------------------------------------------

2° passo- Tamanho dos quadrados dos chars.

Para corrigir o erro acima, abra o arquivo system.def e você deve achar onde está escrito:


random.move.snd.cancel = 0;*2001.04.01 NEW* 1 to have random move sound cancel itself when played repeatedly
stage.move.snd = 100,0 ;*2001.04.01 NEW*
stage.done.snd = 100,1 ;*2001.04.01 NEW*
cancel.snd = 100,2
portrait.offset = 0,0
portrait.scale = 1,1
title.offset = 159,13 ;Position of title (Arcade Mode, etc)
title.font = 3,0,0 ;Font of title (-1 for none)


mude a linha: 
portrait.scale = 1,1

para:

portrait.scale = X,X X= o tamanho dos quadrados do char tem que ser numero igual
ou com ponto EX: .45 1,20

Salve o system.def e veja como ficou executando o jogo.

--------------------------------------------------------------------------------------------------------------------

3° passo- Ajustando o espaços entre os quadrados.

Isso é simples basta você voltar ao começo do [Select Info] e achar a linha:

cell.size = 27,27 e muda-la para:

cell.size = X,Y X= o espaço entre os quadrados na horizontal
Y= o espaço entre os quadrados na vertical

Salve o system.def e veja como ficou executando o jogo.

--------------------------------------------------------------------------------------------------------------------

4° passo- Onde ficar os quadrados dos chars.

Volte no [Select Info] e ache a linha pos = e mude os numeros na frente. EX:

Esta:

pos = 90,170 

E mude para:

pos = X,Y X= quadrados na horizontal
Y= quadrados na vertical

Salve o system.def e veja como ficou executando o jogo.

--------------------------------------------------------------------------------------------------------------------

5° passo- nome foto do char e o select stage.

Esse é simples no [Select Info] procure onde tá escrito:

;Stage select
stage.pos = 160,237
stage.active.font = 3,0,0
stage.active2.font = 3,2 ;Second font color for blinking
stage.done.font = 3,0

E na linha stage.pos = mude de:

stage.pos = 160,237

para:

stage.pos = X,Y X= o Stageselect na horizontal
Y= o Stageselect na vertical

E o nome e a foto??? procure onde está escrito:

;Name
p1.name.offset = 10,162 ;Position to put name
p1.name.font = 3,4,1 ;Set to -1 for no display
p2.name.offset = 309,162
p2.name.font = 3,1,-1

E onde está escrito mude de:

p1.name.offset = 10,162
p2.name.offset = 309,162

para:

p1.name.offset = X,Y
p2.name.offset = X,Y

X= o nome na horizontal
Y= o nome na vertical

OBS: o Y tem que ser igual nos 2

E para a foto, procure onde está escrito:

;Big portraits
p1.face.offset = 18,13 ;Position to put big portrait
p1.face.scale = 1,1
p1.face.facing = 1 ;*2001.04.01 NEW*
p2.face.offset = 301,13
p2.face.scale = 1,1
p2.face.facing = -1

E mude de:

p1.face.offset = 18,13
p1.face.scale = 1,1
p2.face.offset = 301,13
p2.face.scale = 1,1

para:

p1.face.offset = X,Y
p1.face.scale = A,B
p2.face.offset = X,Y
p2.face.scale = A,B



X= a foto na horizontal
Y= a foto na vertical
A= Tamanho da foto na horizontal
B= Tamanho da foto na vertical

OBS: o Y, o B e o A tem que ser igual nos 2

Salve o system.def e veja como ficou executando o jogo.
--------------------------------------------------------------------------------------------------------------------

6° passo- Removendo o fundo azul e o quadrado em volta dos chars

Agora procure onde esta escrito:

[SelectBG 1] ;Dark box
type = normal
spriteno = 100,1
layerno = 0
start = 0, 166
delta = 0,0
tile = 1,0
trans = sub
window = 85,0, 235,239
velocity = -1, 0

e apague tudo isso ai salve o system.def e veja como ficou execultando o jogo.

E o quadrado??? procure onde tá escrito no [Select Info]:

cell.bg.spr = 150,0

E troque o 150 por 130 e salve o system.def e veja como ficou executando o jogo.

--------------------------------------------------------------------------------------------------------------------

Execute o jogo e veja como ficou caso contrario volte passos até ficar do seu jeito, ok???
até apróxima...