Mugen Full
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Tutorial Vars

Ir para baixo

Tutorial Vars Empty Tutorial Vars

Mensagem por Headmastercello Sex 18 Fev 2011, 10:16 pm

Tutorial Vars
Feito por Duende Macabro

Ok, esse é um 'pequeno' tutorial que eu tinha feito faz algum tempo, a pedido de um amigo meu, sobre as variáveis, popularmente conhecidas por 'vars'.É uma parada que sempre assusta todos os novatos, mas depois que se aprende a usar direito, não se para mais, é uma mão na roda, e tem até que cuidar para não usar demais.

Alias, o Incas fez um tuto de vars uma vez. Então, podem usar esse em vez do outro e vice-versa, fica a disposição de quem preferir.

Let's get started.


1 - O que são vars?

São valores que variam (ooooh gênio gênio gênio Tutorial Vars 400057693).
Uma variável é um valor 'x', a definir pela pessoa que está usando ela. E esse valor pode ser o que você quiser. Esses valores podem ser valores inteiros (1,2,3,4,...), ou valores 'quebrados' (1.2,2.3,3.4,...).

Existem 2 tipos de vars: as vars [var(x)], que trabalham com os valores inteiros, e as fvars [fvar(x)] que trabalham com esses números quebrados. É importante saber disso, pois dependendo do caso é melhor trabalhar com um tipo ou com o outro. Outra coisa importante: as vars não são infinitas. Se lembra do que eu disse lá em cima sobre o perigo de começar a usar vars e não parar mais? É exatamente isso: começar a usar variáveis para
coisas que não necessariamente precisam, e quando se precisa usar uma var, não tem nenhuma sobrando.

Então, no MUGEN, pode-se usar até 60 var(x), [de var(0) até var(59)] e 40 fvar(x) [de fvar(0) até fvar(39)]. Outra coisa importante: por padrão nos chars, o MUGEN identifica as
últimas 10 vars, ou seja, de var(50) a var(59), como sendo vars que não se resetam durante as lutas. Isso pode ser modificado nos parâmetros de data dos chars. Então, tome cuidado usando essas vars.

Sendo assim, vars sempre serão números inteiros e não poderão ter nenhuma fracionalidade, e fvars sempre serão números fracionados:

QUOTE
certo
[state 15, var]
type = varset
trigger1 = 1
var(5) = 2

errado
[state 90 var]
type = varset
trigger1 = time = 50
var(40) = 2.0

certo
[state 2000, var]
type = varset
trigger1 = 1
fvar(12) = 3.0

errado
[state 1500 var]
type = varset
trigger1 = time = 50
fvar(10) = 6


Ainda existe um terceiro tipo de var, as sysvars (literalmente, variáveis de sistema), que podem daí ser sysvars ou sysfvars. Essas são especificamente para questões do common1.cns, ou seja, para os padrões da engine. Então a não ser que vá fazer um fullgame ou modificar os
padrões, deixe essas sysvars de lado.

E uma coisa importante: as vars não se resetam sozinhas durante a luta. Elas só vão mudar de valor se forem setadas novamente, de alguma forma. Se eu setar uma var(10) = 500 durante um state, e esse state terminar, essa var(10) vai ser 500 até o fim do round.

E elas ainda podem não se resetar durante os rounds, como eu ja disse antes.

2 - Como eu posso usar as vars?

Agora que você sabe o que é, você precisa saber comofas pra usar. De grosso modo, uma var vai estocar um valor e tomar para si. Veja no exemplo:

QUOTE
[state 1000, var]
type = varset
trigger1 = time = 0
var(0) = 10


No exemplo, a var(0) ganhou o valor '10'. Ou seja, ela é a mesma coisa que 10. E assim eu atribuí um valor qualquer pra ela, como eu disse. Isso não parece muito surpreendente, mas olhe nesse exemplo:

QUOTE
[state 1000, var]
type = varset
trigger1 = time = 0
var(1) = (10 + var(0)*time/3) + (25*time/2 + (var(10)/3))


Entenderam? No exemplo acima, a var(1) quer dizer o mesmo que '(10 + var(0)*time/3)
+ (25*time/2 + (var(10)/3))'. E sempre que eu precisar usar '(10 + var(0)*time/3) + (25*time/2 + (var(10)/3))', eu posso simplesmente escrever 'var(1)', pq quer dizer a mesma coisa. Essa é a grande mágica das vars.

Outro exemplo:

QUOTE
[state 1000, var]
type = varset
trigger1 = stateno = 300
trigger1 = Anim = 200
trigger1 = animelem = 3
var(1) = 2


No exemplo acima, quando estiver no state 300, na anim 200 e no animelem 3, a var(1) = 2. Eu não preciso repetir tuuuuudo isso de state anim animelem, se eu precisar usar a mesma coisa, pq a var(1) = 2 quer dizer tudo isso, de maneira mais simples.

Assim, as vars podem ser usadas como delimitadores dentro de um state, para definir que algo só será feito se tal var tiver tal valor, por exemplo:

QUOTE
[state 1000, var]
type = changestate
trigger1 = var(1) = 2
value = 301


Entenderam? Elas podem ser usadas dessa forma. As vars são as coisas mais versáteis
dentro do MUGEN, eu acho, podem ser usadas em quase tudo. Também, podem ter várias outras expressões, como >, <, >=, etc. Por exemplo, 'var(2)>3', 'var(10)

Além disso, como triggers, as vars podem tomar expressões como qualquer outro trigger. Exemplo: ceil, floor, root, parent, enemy.

O 'ceil' serve para arredondar qualquer valor para cima (exemplo: ceil(fvar(10)=5.4) é o mesmo que fvar(10)=6,0, pq arredondou para cima) enquanto o 'floor' serve para arredondar para baixo.

O 'root' é um parâmetro exclusivo de helpers, que faz com que se identifique com a sua raiz, no caso o player. Exemplo:trigger1 = root, var(10) = 2. Nesse exemplo de trigger dentro de um
helper, ele considera a var(10) do player, e não do próprio helper. O root é necessário nesses casos pq os helpers têm suas próprias vars, independentes das vars dos seus 'roots'.

O 'parent' é outro comando exclusivo de helpers, mas diferentemente do 'root', ele procura as vars do helper que gerou ele. Ou seja, o 'parent' de um helper é o helper que gerou ele, no caso. O uso dele é como no 'root'.

3 - State Controls específicos das vars

Agora que você ja sabe para que servem as vars e tem idéia do modo com o qual elas são utilizadas, é hora de aprender a ativar elas usando os sctrls específicos para isso.

a) varadd

Como o nome diz, aqui tu vai adcionar um valor à variável.

Exemplo:

QUOTE
[state 100, var]
type = varadd
trigger1 = time = 0
var(10) = 1


No
exemplo acima, eu adcionei +1 ao valor que a var(10) já tinha; se o valor era 0, passou para 1; se o valor era 100, passou para 101; se o valor era -1, passou para 0.
Outro exemplo, agora usando uma fvar.

QUOTE
[state 100, var]
type = varadd
trigger1 = animelem = 3
fvar(25) = -5.35


No exemplo acima, no animelem 3 da animação atual do state, a fvar(25) perde 5.35 do valor que ela tiver.

A montagem do sctrl (e isso vale para todos os outros também), pode ser tanto da maneira descrita acima, quanto dessa que vou mostrar agora:

QUOTE
[state 100, var]
type = varadd
trigger1 = animelem = 3
v = 25
value = 10


Seria o mesmo que colocar var(25)=10, dá no mesmo. Isso tb pode ser feito para as fvars, apenas substituindo o 'v' por 'fv'.

varset

Diferentemente do varadd, o varset define o valor de uma var, independente do valor que ela tiver antes.Exemplo:

QUOTE
[state 305, var]
type = varset
trigger1 = time = 50
var(5) = 2


Quando o time chegar a 50, a var(5) assume o valor 2, independente do valor anterior a ela.
Outro exemplo, usando uma fvar:

QUOTE
[state 305, var]
type = varset
trigger1 = statetype = A
fvar(8) = 1.256


Quando o char estiver no ar (statetype = A), a fvar(8) assume o valor 1.256, independentemente do valor anterior.

Uma outra maneira pouco peculiar de setar as varsets, é como um trigger, usando a expressão ':=', que significa que aquele valor após o sinal de igualdade é atribuido no mesmo instante. Por exemplo:

QUOTE
[state 200, fim]
type = changestate
trigger1 = Animtime = 0
trigger1 = var(10) := 5
value = 201


Aparentemente é um state normal de mudança para outro state, mas aquele 'var(10) :=
5' como trigger define que quando esse sctrl for ativado, a var(10) automaticamente ganha o valor '5', como se fosse ativada por um varset.

Sabendo da parada acima, eu vou dar um truque para ativar mais de uma var ao mesmo tempo, usando o sctrl 'null'. Antes que diga que o 'null' não serve para nada, sim, ele não ativa nada, mas isso não quer dizer que os triggers nesse sctrl não sejam ativados ou verdadeiros, entendeu?

Então, no exemplo:

QUOTE
[state -2, lolq]
type = null
trigger1 = stateno = 200
trigger1 = var(10) := 2
trigger2 = stateno = 201
trigger2 = var(10) := 3


Eu ativei a mesma var duas vezes. No state 200, a var(10) ganha o valor 2, mas no state 201, a var(10) ganha o valor 3. Atentem o fato de que o exemplo diz que o sctrl tá no statedef -2, onde tudo que é colocado ali prevalece pelo round todo. Então, cuidado ao usar isso, e use apenas se souber como fazer com certeza.


c)varrandom

Regula um valor aleartório para a var. Apenas números inteiros, ou seja, esse não vale para as fvars.


Exemplo:

QUOTE
[state 200, var]
type = varset
trigger1 = statetype = C
v = 8
range = 0,10


Quando o char estiver abaixado (statetype = C), a var(8) vai assumir um valor aleartório entre 0 e 10. O parâmetro 'range' funciona assim: o primeiro valor é sempre o mínimo, e o segundo sempre o máximo.

d)VarRangeSet

Serve para zerar todas as vars dentro do 'range'.

Exemplo:

QUOTE
[State 1000, 3]
type = VarRangeSet
trigger1 = time = 0
value = 0
first = 0
last = 59


'value'
é o valor da var. Para fvars, use 'fvalue'. 'First' e 'last' são a delimitação das vars, respectivamente, de 0 a 59 para vars e 0 a 39 para
fvars (você viu pq, meh);

No exemplo, todas as vars ganham o valor 0.
Headmastercello
Headmastercello

Tutorial Vars Admini13

Mensagens : 387
Reputação : 17

Localização : BA

Interesse Mugen One Piece

Desde : 05/10/2010

https://mugenfull.forumeiros.com

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos