[Scripting] GBA | Scripts de Gatillo, Flags y Variables [Básico]

Avisos


Ver Resultados de encuesta:
0 0%
Votantes: 0. No puedes votar en esta encuesta

Like Tree19Gracias
Respuesta
 
Herramientas Desplegado
  #1  
18/02/2011
Predeterminado GBA | Scripts de Gatillo, Flags y Variables [Básico]
Buenas... después de pensarlo mucho me he decidido por hacer este tutorial sobre scripts de gatillo que, como dijo Rey Boo parecería que les tienen miedo por aquí....


Bueno empecemos...

Quizás algunos no sepan que son los Script de Gatillo así que aquí mi definición:

Script de Gatillo: son esos eventos que son una "S" verde (imagen) que nos encontramos en AMap y que se activan al pisarlos (si se cumple una determinada función)...


Imagen




Si crean uno de estos Script sin ponerle ningún offset, cuando lo pisen pasará exactamente lo mismo que cuando dejas una persona sin offset y le hablas (con personas me refiero a los scripts que son una "P" o que tienen el sprite)es decir, se congelará el juego...

Si creas un Script común (es decir de "P" o "S" NARANJA) y se lo asignas a un Script de Gatillo seguirá sucediendo lo mismo...

Para que no suceda, tienes que cambiar unos valores en AM:

1. Donde dice "Desconocido" SIEMPRE pones eso (0003)

2.Aquí hay que poner un nº de variable para asignarle al SG (SG = Script de Gatillo)

3. Aquí el Valor que tiene que tener la variable para que el SG Funcione (entre 0000 y FFFF)

Imagen




Bueno al poner en Amap estos números, nuestro SG debería andar bien...


Flags y Variables


Flags



Las Flags: tienen solo dos valores 0 (o desactivada) y 1 (o activada)
son como el interruptor de la luz... para un lado apaga y para el otro enciende
se activan mediante 1 comando setflag... así si la flag estaba desactivada al usar el setflag se activa, en cambio si ya estaba activa debemos usar un clearflag para desactivarla (es como nuestro dedo intentando quemar el foco de la luz prendiendo y apagándola)

También está el comando checkflag que se fijará si X flag está activada o no

Ejemplo


'---------------
#org 0xE3D9F4
lock 'Bloquea el personaje
checkflag 0x4050 'se fija si la flag está o no activada (si se a usado previamente setflag, estará activada y si se a usado clearflag, desactivada)
if 0x1 call 0x8E3DA44 'si esta en 0x1(activada), osea si se a usado setflag previamente, irá a la dirección E3DA44 y si no seguirá con el script.
msgbox 0x8E3DA94 MSG_FACE '"Hola [player] cuanto tiempo sin ve..."un msgbox común y corriente (dialogo para el que no lo sabe)
giveitem 0x44 0x1 MSG_OBTAIN 'Este comando hace que te den un caramelo raro
setflag 0x4050 'ESTO ACTIVA LA FLAG 4050
release 'para sacar el efecto del "lock" es decir permitir que el personaje se mueva de nuevo
end 'Termina el script

'---------------
#org 0xE3DA44
msgbox 0x8E3DD04 MSG_FACE '"Hola ... \n¿que? no, no tengo nada..." un msgbox común y corriente (dialogo para el que no lo sabe)
release 'para sacar el efecto del "lock" es decir permitir que el personaje se mueva de nuevo
end 'Termina el script


'---------
' Strings
'---------
#org 0xE3DA94
= Hola [player] cuanto tiempo sin verte\ntengo un Carameloraro para ti\lten te lo envía tu madre

#org 0xE3DD04
= Hola ... \n¿que? no, no tengo nada mas para ti


Lo que hacemos con este ejemplo es que: una vez que hablamos con quien nos dé el carameloraro luego de dárnoslo se activará la flag 4050 con lo que al chequearla al principio saltará a otro script evitándonos un molesto loop en el script... (en otras palabras,sin el uso de las flags, nos daría un caramelo cada vez que le hablemos)


Variables


Las variables son como alcancías con candado (no como esas que se rompen) (?), puedes abrirlas y ponerle dinero o puedes sacarle el dinero que ya le pusiste... pero no podrás sacarle dinero si nunca le has puesto y nunca podrás ponerle mas dinero si ya no tienes lugar

Las variables no están activadas o desactivadas, sino que tienen un valor (entre 0000 y FFFF)
para cambiar ese valor usamos los comandos:
addvar 0x(variable) 0x(valor a añadir) y subvar 0x(variable) 0x(valor a substraer). Los comandos addvar y subvar no ponen un valor determinado, sino que suman o restan, respectivamente, al valor que ya teníamos antes

Por ejemplo:

Tenemos la variable A3E5 con el valor 3 y en un comando usamos addvar 0xA3E5 0x2 esto hará que la variable tenga valor 5 (3 + 2) y si en otro comando queremos que pase a tener el valor 1 pues subvar 0xA3E5 0x4

Luego tenemos los comandos: Compare (Compare 0x(Variable A) 0x(valor a comparar con el de A) que compara el valor de una variable con un determinado valor o con un LASTRESULT (ultimo resultado) de algún valor anterior. (El LASTRESULT puede ser obtenido de otro comando dentro de un mismo script)

Comparevars 0x(variable A) 0x(Variable B) compara los valores entre la variable A y la variable B por lo general siempre sigue un comando "if" luego del if se usan los siguientes valores:
0x0 el valor de A es menor que B
0x1 el valor de A es igual que B
0x2 el valor de A es mayor que B
0x3 el valor de A es menor o igual que B
0x4 el valor de A es mayor o igual que B
0x5 el valor de A es distinto que B

También tenemos:

Copyvar 0x(Variable A) 0x(Variable B) Lo que hará este comando será copiar el valor que tiene la variable A y asignárselo a la Variable B

Copyvarifnotzero 0x(Variable A) 0x (Variable B) Este comando hará exactamente lo mismo que el anterior con una excepción: no funcionará si el valor de la variable A es 0

setvar 0x(variable) 0x(valor a asignar)

Este comando hace que una variable X tenga un valor Y. Aunque tenga que sumar o restar valores, la variable quedará con el valor asignado




Recordar... cada SG,al tener una variable con un valor asignado es como si al principio del script tuviese un "Checkvar", este comando no existe, pero es como si existiera ya que esta chequeando que la Variable "Y" tenga el valor "X" (en mi caso que la variable 4051 tenga el valor 0) si tiene mas de ese valor el script dejara de ejecutarse, y si tiene menos también


*nota: mi script no puede tener menos ya que está en 0

Variables Disponibles


Ruby: 5000 - 6FFF (Créditos Garfiuld)

Rojo Fuego: 40FF hacia abajo (Según javi4315) 5000 - 7FFF (Según Garfiuld)

Esmeralda: 5000 - 7FFF (Créditos Garfiuld)

*nota: Rom bases en ingles
*nota2: No eh comprobado que estas variables estén libres
*nota3: Si alguien las sabe mejor porfa un Pm editare y pondré créditos



Aquí finaliza mi 2º tutorial... Espero que les aya ayudado Les deseo Buena Suerte y...

Salu2
  #2  
18/02/2011
Predeterminado RE: Scripts de Gatillo [Básico]
Muchísimas gracias por el tutorial =D Yo aún estoy aprendiendo a hacer scripts, y de momento siempre había usado flags, pero ahora que he leído tu explicación me doy cuenta de que usar variables es igual de fácil y, en muchos casos, mucho más útil.

Pero a ver si acabo de entenderlo... ¿el juego sólo tiene un "recipiente" general para guardar el "dinero"? Es decir... la variable (a la que le sumas o le restas valor) ¿es la misma y general para todos los scripts, o cada script tiene su propio "recipiente"? Imagino que es general, y que a medida que vas poniendo scripts uno tras otro, vas sumando y sumando para que, por ejemplo, el script 2 sólo fucione si se ha activado el 1, y el script 3 sólo fucione si se ha activado el 2, etc. ¿Es así?

De nuevo, muchas gracias por el tutorial =) Cuando pueda lo pondré en práctica. Había leído otros tutoriales sobre esto, pero hasta ahora no los había entendido tan bien.
  #3  
18/02/2011
Predeterminado RE: Scripts de Gatillo [Básico]
Dicho por Ray Laé Àlfori
Muchísimas gracias por el tutorial =D Yo aún estoy aprendiendo a hacer scripts, y de momento siempre había usado flags, pero ahora que he leído tu explicación me doy cuenta de que usar variables es igual de fácil y, en muchos casos, mucho más útil.

Me alegro que te aya servido

Pero a ver si acabo de entenderlo... ¿el juego sólo tiene un "recipiente" general para guardar el "dinero"? Es decir... la variable (a la que le sumas o le restas valor) ¿es la misma y general para todos los scripts, o cada script tiene su propio "recipiente"? Imagino que es general, y que a medida que vas poniendo scripts uno tras otro, vas sumando y sumando para que, por ejemplo, el script 2 sólo fucione si se ha activado el 1, y el script 3 sólo fucione si se ha activado el 2, etc. ¿Es así?

A ver una variable = a un recipiente 1 valor = 1$ osea cada variable es independiente de otra si a la variable 4050 le sumas 4 no afectará en nada a la variable (por ejemplo) 3020 ni a ninguna otra

De nuevo, muchas gracias por el tutorial =) Cuando pueda lo pondré en práctica. Había leído otros tutoriales sobre esto, pero hasta ahora no los había entendido tan bien.

=D Muchas gracias a ti por comentar Salu2
Gracias: Max
  #4  
19/02/2011
Predeterminado RE: Scripts de Gatillo [Básico]
mmm, no entendi tengo varias cositas que no me quedaron en claro:
1) ¿Para que le sumas? es decir, tenes tu variable con valor 3 y le sumas 2 para que te de 5.. ¿por qué queres que tenga valor 5?
2)No entendi eso de compare y LASTRESULT.
3)Tampoco se como quedaria el script ¿me podrias mostras un ejemplo simple?
No se si entendes mis preguntas.
Gracias, saludos.

PDerdona pero soy de esas personas a las que a veces hay que hacerle un dibujo para que entiendan xD..

EDITO: lo volvi a leer y creo que respondi mi duda 1, me decis si es asi por favor?:
1) Le sumas para que no se active una y otra vez ¿no? y si qeres qe se vuelva a activar le restas para que qude en el valor original?.. ejemplo: la variable tiene el valor 2, y despues de ejecutarse, se le sums 1 para que se transforme en un 3 y asi, al volver a pisar el SG no se active nuevamente.Ahora, si yo quiero que se vuelva a activar, le resto 1 otra vez para que vuelva al valor original que seria 2. ¿es asi?
  #5  
19/02/2011
Predeterminado RE: Scripts de Gatillo [Básico]
Dicho por erre-
mmm, no entendi :XD: tengo varias cositas que no me quedaron en claro:
1) ¿Para que le sumas? es decir, tenes tu variable con valor 3 y le sumas 2 para que te de 5.. ¿por qué queres que tenga valor 5?
2)No entendi eso de compare y LASTRESULT.
3)Tampoco se como quedaria el script ¿me podrias mostras un ejemplo simple?
No se si entendes mis preguntas.
Gracias, saludos.

PD:perdona pero soy de esas personas a las que a veces hay que hacerle un dibujo para que entiendan xD..

EDITO: lo volvi a leer y creo que respondi mi duda 1, me decis si es asi por favor?:
1) Le sumas para que no se active una y otra vez ¿no? y si qeres qe se vuelva a activar le restas para que qude en el valor original?.. ejemplo: la variable tiene el valor 2, y despues de ejecutarse, se le sums 1 para que se transforme en un 3 y asi, al volver a pisar el SG no se active nuevamente.Ahora, si yo quiero que se vuelva a activar, le resto 1 otra vez para que vuelva al valor original que seria 2. ¿es asi?
1. Si, es exactamente así :XD:

2. Bueno, aver... Hay comandos en los scripts, como por ejemplo los msgbox YES_NO que guardan un resultado de su accion... el YES_NO (que muestra las opciones sino en un dialogo) al preguntarte si o no tu le respondes... si le dices si, guarda el valor 0x1 en el rom (es decir en el LASTRESULT) y si le respondes que no guardara el valor 0x0 (Tambien en el LASTRESULT).
El compare compara dos variables entre si o un LASTRESULT con una variable.... Un ejemplo aplicando ambas cosas:

Código:
#org 0xE3D1DC
lock
msgbox 0x8E3D12C MSG_YESNO '"[player]: ¡Una pokebola! ¿me la llevo?"'Si respondes si el valor del LASTRESULT será 0x1 y no será 0x0
compare LASTRESULT 0x1 'aquí compara si el LASTRESULT es 0x1 o 0x0 (en otras palabras si dijiste Si o No)
if 0x0 goto 0x8E3D09C 'En caso que el LASTRESULT sea igual a 0x1 (ya que esta comparando con 0x1) no saltará al script 0xE3D09C sino que seguirá hacia abajo pero si el LASTRESULT NO era igual a 0x1 saltará al script 0xE3D09C
closeonkeypress
givepokemon 0x85 0x3 0xD 0x0 0x0 0x0
release
end


#org 0xE3D09C
closeonkeypress
release
end
PD: Voy a Editar el post de arriba, me olvide un comando de variable jejeje

cualquier cosa me avisan salu2
Gracias: Mr-Link y Max
  #6  
19/02/2011
Predeterminado RE: Scripts de Gatillo [Básico]
Ahora si, listo gracias por el tuto y por aclararme mis dudas
Nos vemos
  #7  
19/02/2011
Predeterminado RE: Scripts de Gatillo [Básico]
Hola, ya era hora de encontrar un manual de scripts de gatillo actualizado, me gustaría comentar diversas cosas (si no te importa):

1º Fui yo el que dije eso de los manuales. Hay que decirlo, la forma explicada hasta ahora de hacer scripts de gatillo estaba en la Edad de Piedra.

2º Este manual no está nada mal, aunque deberías tener en cuenta estas dos cosas que te diré a continuación:

- Podrías poner ejemplos en los que emplees los comandos, puede ser confuso para los nuevos.
- Tu manual está explicado bastante bien, aunque podrías usar las negritas y/o las fuentes de mayor tamaño para dividir el manual en apartados (se hace más digerible el tutorial en cuestión).
- No explicaste el comando subvar, funciona de esta forma: subvar 0x(variable) 0x(valor a substraer).

3º Te doy mi más profundo agradecimiento por la creación de este manual. Sinceramente, creo que hacía mucha falta (ya ves que usando las variables todo es más sencillo, puesto que puedes re-utilizar una variable para muchos scripts de gatillo; reservando, dicho sea de paso, las tan valiosas flags, bueno, yo puedo prescindir de ellas casi completamente de ellas, pero en algunas situaciones te hacen el scripteo más fácil).

Saludos.
  #8  
20/02/2011
Predeterminado RE: Scripts de Gatillo [Básico]
Gracias por todo, espero que les guste la nueva version del tuto estoy trabajando en un ejemplo de variables

Errores de ortografía corregidos

Buena Suerte y salu2
  #9  
01/03/2011
Predeterminado RE: Scripts de Gatillo, Flags y Variables [Básico]
gracias, este es el tutorial que andaba buscando para seguir mejorandome (no se si fuiste tu el que me dijo que aprendiera esto despues de aprender a programar preguntas de Si o No)
  #10  
06/03/2011
Predeterminado RE: Scripts de Gatillo, Flags y Variables [Básico]
hola me podrian enseñar como hago q yo en mi hack salte de un mapa a el cuarto como en ligh platinium y en crono XD y el comando para que te den las zapatillas para correr a y otra cosa como le hago para q mi personaje se esconda y que salte a otro osea lo que quiero es hacer como en lisg platinium que salga un pokemon volando
yo solo se que edito el mapa como cielo pero para que se mueva el pokemon otro mini en vez del mio ?? disculpe las molestias
Respuesta

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado


Temas similares
Tema Autor Foro Resp. Último mensaje
Duda sobre flags y variables Sayer301! ROM Hacking 11 12/02/2013 12:30
Duda con flags en script basico. SoDeep Rikudō ROM Hacking 3 11/02/2013 01:25
problema con scripts de gatillo Hack-roms edi ROM Hacking 9 18/10/2012 23:40
Problemas con scripts y flags diego256 ROM Hacking 4 13/04/2012 15:08
¿Flags como variables? Kuroneko ROM Hacking 2 14/02/2011 23:57


Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 11:48.