Thunder Mugen - Bloqueando F1 e F2 no seu char
Quarta-feira, 22/03/2017, 8:09 PM
Bem vindo Visitante | RSS
Menu
Chat
Globo de Vísitas
Estatísticas
Total Online: 1
Visitantes: 1
Usuários: 0
Login
Esse tutorial vai ensinar a vcs como bloquear as teclas F1, F2 e infelizmente o Espaço

Primeiramente você precisa ter o StateDef -2 no seu char, caso não tenha, apenas adicione a seguinte linha no seu char:

Code
[StateDef -2]

Agora vou explicar mais ou menos como funciona o code.
Iremos criar um helper, esse helper vai ser idêntico ao char e será controlado pelo jogador, enquanto mandamos o char pra um State com animação invisível, ou seja, o Player irá controlar o helper ao invés do char.
Usaremos também variáveis para controlar a vida do char para ficar igual a vida do helper, e é ai q fica o segredo! Como F1, F2 e Espaço não afetam helpers, essas teclas não conseguiram mexer na vida do char, q será igual a do helper ^^

Vamos então chamar nosso helper:

Code
[State -2, Helper]
Type = Helper ;<-- Chama o Helper
TriggerAll = NumHelper(9000) = 0 ;<-- Se não tiver nenhum outro helper igual a esse
Trigger1 = RoundState = 1 ;<-- E também se estiver na introdução da luta
Trigger1 = Var(43) = 0 ;<-- Pequena correção de bug xD
HelperType = Player ;<-- Vai ser um helper considerado como Jogador
Name = "Char" ;<-- Nome do helper
ID = 9000 ;<-- ID do helper
StateNo = 191 ;<-- O Helper vai para a introdução do char
Pos = 0,0 ;<-- Posição do helper
PosType = P1 ;<-- Posição em relação ao P1
Facing = 1 ;<-- Olhando pra mesma direção do char
KeyCtrl = 1 ;<-- O Player poderá controlar o helper
OwnPal = 1 ;<-- O helper terá paleta própria

[State -2, Helper 2]
Type = Helper
TriggerAll = NumHelper(9000) = 0
Trigger1 = RoundState = 2 ;<-- Se o player tiver pulado a intro, vai chamar o helper também
Trigger1 = Var(43) = 0 ;<-- Pequena correção de bug xD
HelperType = Player
Name = "Char"
ID = 9000
StateNo = 0 ;<-- Mas direto na stand
Pos = 0,0
PosType = P1
Facing = 1
KeyCtrl = 1
OwnPal = 1

Agora vamos usar alguns controles no Helper para ele não bugar:


Code
[State -2, Turn]
Type = Turn ;<-- Isso fará o helper virar
Trigger1 = IsHelper(9000) ;<-- Se for o helper
Trigger1 = StateNo = 0 ;<-- E ele estiver na Stand
Trigger1 = P2Dist X < 0 ;<-- E o P2 tiver passado por ele

[State -2, LifeSet]
Type = LifeSet ;<-- Isso vai definir a quantidade de vida do Helper
Trigger1 = IsHelper(9000)
Trigger1 = Life > 1000 ;<-- Se o helper tiver mais do que 1000 de vida (obs: Helpers entram em cena com muuuuuuuita vida)
Value = 1000 ;<-- Vida do helper

[State -2, CtrlSet]
Type = CtrlSet ;<-- Irá definir o controle do Helper
Trigger1 = IsHelper(9000)
Trigger1 = RoundState = 2 ;<-- Quando estiver no momento da luta
Trigger1 = PrevStateNo = 191 ;<-- E se o state anterior for a Intro
Value = 1 ;<-- Controle

[State -2, StopSnd]
Type = StopSnd ;<-- Para o som
TriggerAll = IsHelper(9000)
Trigger1 = Life = 0 ;<-- Quando o helper morrer
Trigger2 = Win ;<-- Ou vencer
Trigger3 = Lose ;<-- Ou perder
Trigger4 = DrawGame ;<-- Ou empatar
Channel = 0 ;<-- Canal do som

[State -2, DestroySelf]
Type = DestroySelf ;<--  Irá fazer o helper sumir
TriggerAll = IsHelper(9000)
Trigger1 = Life = 0
Trigger2 = Win
Trigger3 = Lose
Trigger4 = DrawGame

Agora usaremos Variáveis para definir guardar a posição do helper e fazer o char seguir o helper:


Code
[State -2, ParentVarSet]
Type = ParentVarSet ;<-- Seta uma var do "Pai" do helper
Trigger1 = IsHelper(9000)
Trigger1 = Root,Var(40) != Floor(Pos X) ;<-- Quando a var(40) do char for diferente da posição X arredondada do helper (obs: Posição tem valores arredondados)
V = 40 ;<-- Vai usar a var 40
Value = Floor(Pos X) ;<-- A var 40 vai valer a posição X arredondada do helper

[State -2, ParentVarSet 2]
Type = ParentVarSet ;<-- Mesma coisa do de cima
Trigger1 = IsHelper(9000)
Trigger1 = Root,Var(41) != Floor(Pos Y) ;<-- Mas com a posição Y
V = 41 ;<-- E usando a var 41
Value = Floor(Pos Y)

Agora vamos usar mais duas variáveis, uma para ativar quando o Helper estiver com 1000 de vida e outra para guardar a vida do Helper:


Code
[State -2, ParentVarSet 3]
Type = ParentVarSet
Trigger1 = IsHelper(9000)
V = 42 ;<-- Vamos usar a Var 42
Value = Life ;<-- Para armazenar a vida do helper

[State -2, ParentVarSet 4]
Type = ParentVarSet
Trigger1 = IsHelper(9000)
Trigger1 = Life = 1000 ;<-- Quando o helper estiver com 1000 de vida
V = 43 ;<-- A var 43
Value = 1 ;<-- Será "ativada"

Agora vamos mandar o char para um State com animação invisível:


Code
[State -2, ChangeState]
Type = ChangeState ;<-- Vai mandar para outro state
Trigger1 = !IsHelper(9000) ;<-- Se não for o helper (ou seja, se for o char)
Trigger1 = NumHelper(9000) = 1 ;<-- E se o helper já estiver na tela
Trigger1 = StateNo != 7000 ;<-- E também se o char já não estiver no state
Trigger1 = Life > 0 ;<-- E somente se o char estiver vivo
Value = 7000 ;<-- Valor do state
Ctrl = 0 ;<-- O Player não poderá controlar o char, só o helper

Agora vamos criar uma animação invisível, eu vou usar a animação 7000, é só criar uma Begin Action e usar a Imagem -1 do grupo -1 q fica invisível, caso saiba mexer no air pelo bloco de notas, é só adicionar esse code:


Code
; Char invisível
[Begin Action 7000]
-1,-1, 0,0, 1,

Agora vamos criar o State 7000 e programa-lo:


Code
[StateDef 7000]
MoveType = I ;<-- O Char não está atacando e nem levando Hit
Physics = N ;<-- Física nula
Anim = 7000 ;<-- Animação invisível
Ctrl = 0 ;<-- Sem controle do char

[State 7000, StateTypeSet]
Type = StateTypeSet ;<-- Muda o Tipo do state
Trigger1 = Pos Y < 0 ;<-- Se o char estiver acima do chão
Trigger1 = StateType != A ;<-- E já não estiver no Tipo "Air"
StateType = A ;<-- Muda para "Air"

[State 7000, StateTypeSet 2]
Type = StateTypeSet
Trigger1 = Pos Y >= 0 ;<-- Se  char estiver no chão
Trigger1 = StateType != S ;<-- E já não estiver no Tipo "Stand"
StateType = S ;<-- Muda para "Stand"

[State 7000, NotHitBy]
Type = NotHitBy ;<-- Impede que o char seja atingido
Trigger1 = 1 ;<-- O tempo todo
Value = SCA ;<-- Por qualquer golpe
Time = 1 ;<-- Duração (obs: como o code será ativado o tempo todo, a duração pode ser 1 mesmo)

[State 7000, AssertSpecial]
Type = AssertSpecial ;<-- Define uma utilidade especial para o char
Trigger1 = 1
Flag = Invisible ;<-- O char ficará Invisível

[State 7000, PosSet]
Type = PosSet ;<-- Define a posição do char
Trigger1 = Var(40) != Floor(Pos X) ;<-- Caso a posição X seja diferente da Var 40
X = Var(40) ;<-- A posição X será a var 40 q o helper definiu no char

[State 7000, PosSet 2]
Type = PosSet ;<-- Mesma coisa do de cima
Trigger1 = Var(41) != Floor(Pos Y) ;<-- Mas com a posição Y
Y = Var(41) ;<-- E var 41

[State 7000, LifeSet]
Type = LifeSet ;<-- Irá definir a vida do char
Trigger1 = RoundState = 2 ;<-- Se já estiver no período de luta
Trigger1 = Var(43) = 1 ;<-- Caso a var 43 já esteja ativada
Trigger1 = Life != Var(42) ;<-- E a vida do char for diferente da Var 42
Value = Var(42) ;<-- A vida do char terá o mesmo valor da Var 42 definida pelo helper

[State 7000, LifeSet 2]
Type = LifeSet ;<-- Code para corrigir um pequeno Bug xD
Trigger1 = NumHelper(9000) = 0
Value = 0

[State 7000, ChangeState]
Type = ChangeState ;<-- Muda o state do char
Trigger1 = Win ;<-- Caso o char vença a partida
Trigger2 = Lose ;<-- Ou perca a partida
Trigger3 = DrawGame ;<-- Ou Empate a partida
Value = 0 ;<-- O char volta para o stand
Ctrl = 1 ;<-- E o Player reganha o controle do char

E é isso!
O State 7000 pode ser outro de sua preferência, assim como a animação e as variáveis ^^
Espero que vocês entendam e gostem do tuto o/

Flws ^^

Pesquisar
Hospedagem
Deseja ter seu trabalho hospedado aqui?
Clique aqui.
Calendário
«  Março 2017  »
STQQSSD
  12345
6789101112
13141516171819
20212223242526
2728293031
Link Us
Clique na imagem para ver o código.
Thunder Mugen
Thunder Mugen
Parceiros

Valeuzão Deus
Mugen Full
Kazushi
Lab's Mugen

Copyright MyCorp © 2017Thunderbert