S1.SCTRL – ChangeAnim
O SCtrl ChangeAnim é usado para trocas de animações num StateDef específico.
Há vários exemplos de como o usar, e para quê o usar.
Esse Sctrl tem apenas dois “comandos” abaixo do trigger, que são os Value e Elem.
O Value indica a animação do Air para qual o StateDef irá.
O Elem indica qual AnimElem (que será melhor visto ao decorrer do tutorial) da animação, irá começar a mesma.
ERRO: Quando for usar o SCtrl ChangeAnim, certifique-se que a animação em que você se refere, realmente exista.
Caso contrário o char retornará um erro no Debug do Mugen, e repetirá a ultima animação, até que o char entre numa
animação que realmente exista.
S2.SCTRL – ChangeAnim2
O Sctrl ChangeAnim2 age de forma parecida com o ChangeAnim, mas tem uma única diferença:
- O ChangeAnim procura pela animação do personagem, enquanto o ChangeAnim2 procura pelos sprites do oponente
(em custom states) que fazem essa animação.
O ChangeAnim2 iria procurar esses grupos de sprites no oponente, e refazer a animação com os sprites do oponente.
OBS.: Se o oponente não tiver algum(ns) dos sprites, esse(s) sprite(s) “faltante(s)” não aparecerá(am) na execução da
animação.
ERRO: Se você usar o Sctrl ChangeAnim2 num custom state, sempre o ajuste para usar os sprites que qualquer outro
char possa ter (como por exemplo, as get hits requeridas), para a animação ser executada corretamente. Ou então,
limite no cns, para apenas alguns chars que você tenha certeza que terão os sprites requeridos pela sua animação.
S3.SCTRL – ChangeState
Assim como o ChangeAnim foi feito para trocar de animação, o ChangeState foi feito para trocar de StateDef.
Esse Sctrl tem apenas dois “comandos” abaixo do trigger, que são os Value e Ctrl.
O Value indica a qual StateDef do CNS, o char irá.
O Ctrl indica que quando o char for para tal StateDef, se ele vai ser controle sobre si mesmo ou não (muito útil para que
quando você queira fazer um StateDef, sem que outros StateDefs atrapalhem a execução do mesmo).
ERRO: Ao usar o SCtrl ChangeState, tenha certeza de indicar a ele, um StateDef que realmente exista. Caso contrário
será retornado um erro no Debug, e o char continuará no StateDef anterior.
T1.TRIGGER – Time
Esse trigger foi usado nos exemplos de SCRTLs: ChangeAnim e ChangeState.
E o mesmo, tem a utilidade de fazer qualquer SCtrl ser executado dependendo do tick* exato de um StateDef (definido
pelo char maker**).
*Quadros por segundo (por padrão o mugen tem 60 ticks num segundo).
**A pessoa que programa chars para o mugen.
Vamos usar um exemplo, no qual o SCtrl Null seria executado no 6º tick do StateDef:
[State 200, Null]
type = Null
trigger1 = time = 5
Como você pode ver, quando quisermos fazer um SCtrl ser chamado no 6º tick, botamos time = 5.
“Porque?”
Por que o esquema de time do mugen é assim:
time = tempo em tick -1
Figura T1.1
Tabela de tempo comparativo de ticks.
Onde N seria um numero qualquer.
Lembrando que pode-se usar os sinais > (maior que), < (menor que), >= (maior ou igual), <= (menor ou igual), e
!= (diferente de).
Obs: Se você quiser que algo seja executado no primeiro tick, seria time = 0, ou simplesmente, !time.
Quando você usa o !time, indica que o time não existe, sendo assim ele é falso, e sendo falso, ele é igual a zero.
(informe-se sobre valores Booleanos (http://pt.wikipedia.org/wiki/Booleano)).
T2.TRIGGER – Anim
Esse trigger, tem a utilidade de fazer um SCtrl ser executado, se a Anim que o char maker indicou, seja verdadeira.
Exemplo:
[State 200, ChangeAnim]
type = ChangeAnim
trigger1 = Anim = 230
value = 210
elem = 1
Esse exemplo diz, que se a Animação do char for 230, o StateDef irá para a Anim 210.
T3.TRIGGER – AnimTime
O trigger AnimTime, serve para informar, quando o tempo total da animação, estiver acabado.
[State 200, ChangeAnim]
type = ChangeAnim
trigger1 = !AnimTime ; Ou AnimTime = 0
value = 210
elem = 1
Aqui diz, que se a animação do StateDef estiver acabado, vai para a Anim 210.
Se AnimTime, for maior que zero, como por exemplo AnimTime = 5, ele fará o Sctrl ser executado depois de 5 ticks a
mais no final da animação.
Lembrando que aqui também pode-se usar os sinais >, <, >=, <= e !=.
T4.TRIGGER – AnimElem
Esse trigger, é um dos mais usados quando se fala sobre “Quadros de Animação e o Tempo dos mesmos”.
Caso você não tenha entendido, o AnimElem serve para fazer um SCtrl ser executado, se o Quadro de Animação for o
que o char maker queira.
Figura T4.1
Quadro de AnimElem, onde o primeiro sprite da animação é sempre o AnimElem 1.
Exemplo:
[State 200, ChangeState]
type = ChangeState
trigger1 = AnimElem = 3
value = 235
ctrl = 1
Esse trecho de código, diz que quando a Animação estiver no seu 3º quadro de animação, o char irá para o
StateDef 235.
O AnimElem tem a opção além de fazer com que algo seja executado num exato quadro, também seja num exato tick
de um quadro de animação.
Exemplo:
[State 210, ChangeState]
type = ChangeState
trigger1 = AnimElem = 5,= 2
value = 215
ctrl = 1
OBS.: Quando time não existir, ele será igual a 0 (primeiro tick).
Lembrando que no time do AnimElem pode-se usar os sinais >, <, >=, <= e !=.
Se no AnimElem é assim:
AnimElem = 3, =2
No AnimElemTime é assim:
AnimElemTime(3) = 2
Ou seja:
AnimElemTime(Quadro da Animação) = (time)
Não temos muito o que aprender sobre esse trigger, por que ele é muito semelhante ao AnimElem comum.
Código:
[State 0, ChangeAnim]
type = ChangeAnim
triggerall = SelfAnimExist(5325)
trigger1 = !time
value = 5325
Esse código é simples, ele apenas checa no char se a animação existe, se ela existir, o SCtrl ChangeAnim será
executado e mudará a animação do char para a animação 5325.
Um exemplo do uso dele, no StateDef -2 (mas que pode ser usado nos -1 e -3 também):
[state -2, VarSet]
type = VarSet
trigger1 = StateNo = 1200
var(10) = 5
Aqui nesse exemplo, se o char estiver no StateDef 1200, a var(10) será igual a 5.
Lembrando que pode-se usar os sinais > (maior que), < (menor que), >= (maior ou igual), <= (menor ou igual), e
!= (diferente de).
ERRO: Se você por algum descuido, deixar algum trigger com o StateNo igual a um StateDef não existente, o SCtrl não
executará, pelo motivo que esse StateDef não será executado, se ele não existir.
T8. TRIGGER – PrevStateNo
O PrevStateNo, é similar ao trigger StateNo, mas retorna o StateDef anterior ao o que está sendo executado.
Exemplo:
[state 210, VarSet]
type = VarSet
trigger1 = PrevStateNo = 200
var(10) = 2
Neste exemplo, o SCtrl está no StateDef 210, e diz que a var(10) será igual a 2, se o StateDef anterior tiver sido o
StateDef 200.
Lembrando que pode-se usar os sinais > (maior que), < (menor que), >= (maior ou igual), <= (menor ou igual), e
!= (diferente de).
ERRO: Assim como no trigger StateNo, ao ser confirido um PrevStateNo onde um StateDef não exista, o SCtrl não
será executado, pelo motivo em que esse StateDef nunca será o anterior, por que o mesmo não existe.
Espero que você que leu esse tutorial, tenha entendido os princípios e usos dos SCTRLS:
ChangeAnim, ChangeAnim2 e ChangeState.
E dos triggers que os auxiliam:
Time, Anim, AnimTime, AnimElem, AnimElemTime, StateNo e PrevStateNo.