tuts_gba
Thread Id: 8641
Thread Name: GBA | Scripting | ¡Hablemos de VARIABLES!
#0
~Red 12280
¡Hola amigos!
A muchos, en cuanto les hablan de variables, se les va la cabeza por las nubes no? Pues bien eso era lo que me pasaba a mi,
hasta que me centré u poco y me di cuenta de que era muy facil.



Comandos a usar
compare 0x---- 0x-
addvar 0x---- 0x-

Script de explicación

Primer script:


#DYNAMIC 0x800000

#org @start
compare 0x435A 0x2
if 0x1 goto @ready
lock
faceplayer
msgbox @msg1 0x6
release
end

#org @ready
lock
msgbox @msg2 0x6
applymovement 0x- @movement
release
end

#org @msg1
= Lo siento, no puedes pasar.

#org @msg2
= Puedes pasar
#org @movement
#raw 0x-
#raw 0xFE


Segundo script.

#DYNAMIC 0x800000

#org @start
lock
faceplayer
msgbox @msg3 0x6
addvar 0x435A 0x2
release
end

#org @msg3
= Ahora ya puedes pasar por la\npuerta bloqueada

Explicación

El primer script se lo hemos aplicado al mini X, y el segundo al mini Y
Que pasara si hablamos primero con el X?
Que seguira el script normal, y no se movera.
Porqué? Porque compara que la variable 435A tenga el valor 2. Si es una variable limpia, tendra valor 0.
Si hablamos con el Y, su funcion es añadirle el valor 2 a la variable [addvar 0x435A 0x2].
Si volvemos a hablar con el X, como la variable tendrá valor 2, iremos a @ready, y el mini se movera y te dejará pasar.
Simple no?
Si tienen dudas, no duden en preguntar!
#1
Doctor Juanjo 12932
Está muy explicado, pero te digo que el "addvar" lo que hace es agregarle a la variable el valor que le pones adelante, si la variable 435A tiene el valor 0, con el addvar 0x435A 0x2 su valor es 2, pero si esta variable tiene el valor, digamos 1, al ponerle al addvar le sumamos, entonces:

addvar 0x435A 0x2

La variable quedaría con valor 3 (1 + 2 =3)

Por eso es mejor usar el "setvar" ya que este si te pone el valor que es de la variable.

Espero haberme hecho entender y cambia la Addvar por la Setvar.

Att:

Juanjo

Suerte con el tuto :P
#2
LnX 14145
Gracias, entendi bien (:

Seria parecido a las flags ¿No?, solo que pueden usarse mas veces al tener valores:
Var...Val

40FF 1
40FF 2
40FF 3

Genial :blush:, entonces, el comando "compare" es como el checkflag, compara si esta activada la variable, el comando addvar suma el valor de la variable, como si tenia antes la variable 2, usamos addvar con uno al final es 3 de valor (como juanjo dijo arriba), al igual que setvar que activa la variable con un valor independiente si la var estaba activada.

Me sirvio de ayuda (:, solo te preguntaba como funciona el comando "copybar", supongo que copia el valor de la variable, pero la verdad no se xD
#3
Loony Boo♪ 12263
Bien, analicemos el script:

1º ¿Dónde está el waitmovement?
2º ¿No crees que es mejor poner el lock y el faceplayer antes del compare? Así quedaría el script más bonito más profesional y no tendrías que volver a poner otra vez los comandos de lock y faceplayer en el offset alternativo.
3º En el segundo script, creo que sería más conveniente un setvar, ya que la condición establecida en el primero es que el valor establecido en la variable sea el 2, imagínate que ya estuviera establecido el valor 1, pues el nuevo valor no sería el 2 sino el 3. Hay que tener mucho cuidado con eso, el addvar añade, no establece.

Iniciado por ~LanXe~

Gracias, entendi bien (:

Seria parecido a las flags ¿No?, solo que pueden usarse mas veces al tener valores:
Var...Val

40FF 1
40FF 2
40FF 3

Genial :blush:, entonces, el comando "compare" es como el checkflag, compara si esta activada la variable, el comando addvar suma el valor de la variable, como si tenia antes la variable 2, usamos addvar con uno al final es 3 de valor (como juanjo dijo arriba), al igual que setvar que activa la variable con un valor independiente si la var estaba activada.

Me sirvio de ayuda (:, solo te preguntaba como funciona el comando "copybar", supongo que copia el valor de la variable, pero la verdad no se xD


Mmmm... noto cierto cacao mental por aquí, vamos a pulir esos términos:

1º El comando compare no compara si la variable está activada, salvo las variables booleanas (flags), las variables "normales" no funcionan a modo de interruptor, sino como "caja numérica" (le vas añadiendo, estableciendo, copiando o restando valores). El comando compare comprueba para una variable (llamémosla X) un determinado valor numérico (llamémoslo Y).

2º Mmm... no es muy buena expresión que digamos. Querrás decir que a la variable (X) le añades un cierto valor hexadecimal ("Y", puede ser 0, como 1, como 1A, como BB, etc.).

He puesto mucho énfasis en analizar tus enunciados para animar a la gente a aprovechar al máximo las variables, esconden un gran abanico de posibilidades y, para proceder a ello, antes hay que conocer correctamente los comandos.

Saludos.