Registrarse

[Scripting] Scripts de Gatillo, Flags y Variables

Cheve

MoonLover~
Miembro de honor
Buenas... después de pensarlo mucho me he decidido por hacer este tutorial sobre scripts de gatillo que, como dijo Rey Boo :XD: parecería que les tienen miedo por aquí.... :D


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)...




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... :dodgy:

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)



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


[align=center]Flags y Variables[/align]

[align=center]Flags[/align]


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

'---------------
#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)


[align=center]Variables[/align]

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

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 :blush:
 
R

Ray Laé Àlfori

Invitado
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.
 

Cheve

MoonLover~
Miembro de honor
RE: Scripts de Gatillo [Básico]

Ray Laé Àlfori dijo:
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 :D

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 :D Salu2
 
RE: Scripts de Gatillo [Básico]

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?
 

Cheve

MoonLover~
Miembro de honor
RE: Scripts de Gatillo [Básico]

erre- dijo:
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
 

H.B.P

Emperador Kaktiácero
Miembro de honor
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.
 

Cheve

MoonLover~
Miembro de honor
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 :blush:
 
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)
 
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
 

Cheve

MoonLover~
Miembro de honor
RE: Scripts de Gatillo, Flags y Variables [Básico]

jesus.aos dijo:
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
Bueno... Supongo que con un comando warp o warpmuted

jesus.aos dijo:
y el comando para que te den las zapatillas para correr
Mmm pues es así: en Ruby o Safiro: setflag 0x860

En FR: Setflag 0x82F

En emerald: Setflag 0x8C0

jesus.aos dijo:
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
Con ASM de lo cual, desgraciadamente, no se CASI nada...

Buena Suerte, Salu2...

PD: La proxima vex estaría bueno que lo preguntes en la seccion de dudas asi hay mas gente que te pueda responder... ;)
 
RE: Scripts de Gatillo, Flags y Variables [Básico]

Gran tutorial muchas gracias por crearlo, ando un poco verde en flags y variables, así que esto me viene de perlas.:D

Gracias +1, espero más tutos.;)
 
RE: Scripts de Gatillo, Flags y Variables [Básico]

Hola man, primero, gracias por este incríble tutorial, ahora...

- La única manera de que me funcione un script de gatillo es poniendo "Var number: 4051" Entonces... ¿cómo le hago para por ejemplo usar la Var 5050?

Te agradecería mucho que aclares mi duda.
Saludos.
 

yo soy Yo

Traducir es aburrido...
RE: Scripts de Gatillo, Flags y Variables [Básico]

Gracias a tu tutorial me he dado cuenta de lo fácil que es usar variables (comparado con lo que yo me pensaba). Lo mínimo que puedo darte son las gracias.
 
RE: Scripts de Gatillo, Flags y Variables [Básico]

huuummm bueno hola primero que nada gracias por el tutorial pero... aunque(creo)hago todo lo que dices no puedo activar ningun script de gatillo: pongo el var number en digamos 5000 y el ''desconocido sobre el a 3 ademas no creo que mi codigo ete mal (pero talvez sean distintos los codigos de gatillo y de persona(si si lo pongo en un overworld si funciona) asi que ¿estara mal?)bueno te pongo aqui el codigo por si lo quieres ver aver si me ayudas(o quien sea...)
PD:El codigo esta incompleto (pense: si no lo voy a poder usar entonces para que completarlo ¿no?).
Bueno... aqui el codigo...:
'-----------------------
#org 0x6B2240
applymovement MOVE_PLAYER 0x86B1F40
waitmovement 0x0
msgbox 0x86B2040 '"[player]:Hu? where is this?"
callstd 0x2
end


'-----------
' Movements
'-----------
#org 0x6B1F40
#raw 57 'Question Mark (?)
#raw 0 'Face Down
#raw 0 'Face Down
#raw 0 'Face Down
#raw 0 'Face Down
#raw 0 'Face Down
#raw 0 'Face Down
#raw 0 'Face Down
#raw 0 'Face Down
#raw 0 'Face Down
#raw 0 'Face Down
#raw 2 'Face Left
#raw 2 'Face Left
#raw 2 'Face Left
#raw 2 'Face Left
#raw 2 'Face Left
#raw 2 'Face Left
#raw 2 'Face Left
#raw 2 'Face Left
#raw 2 'Face Left
#raw 2 'Face Left
#raw 3 'Face Right
#raw 3 'Face Right
#raw 3 'Face Right
#raw 3 'Face Right
#raw 3 'Face Right
#raw 3 'Face Right
#raw 3 'Face Right
#raw 3 'Face Right
#raw 3 'Face Right
#raw 3 'Face Right
#raw 3 'Face Right
#raw 1 'Face Up
#raw 0x0 'Mirar Abajo
#raw FE 'End of Movements


'---------
' Strings
'---------
#org 0x6B2040
= [player]:Hu? where is this?

Bueno ojala me respondas (o quien sea)
 

Jaizu

Usuario mítico
RE: Scripts de Gatillo, Flags y Variables [Básico]

Gracias por el tutorial bro, siempre es bueno repasar y recordar todo lo que puedes hacer con el tutorial, que parece que está bastante bien hecho, al menos explicado :awesome:
 
RE: Scripts de Gatillo, Flags y Variables [Básico]

Buenisimo! Ayuda bastante mi historia, GRANDE!!!!


Te daria un +gracias... pero no encuentro la forma a traves de la aplicacion movil :S
 

Braxpok

Usuario de Platino
Respuesta: Scripts de Gatillo, Flags y Variables [Básico]

Muy Buen Tutorial, Me Sirve Muchisimo para Guiarme en mis Primeros Pasos del Hack Rom.
Gracias, Excelente Aporte!!
 
Respuesta: GBA | Scripting | Scripts de Gatillo, Flags y Variables [Básico]

Hola te quiero agradecer por hacer este tipo de tutoriales ya que me confunden un poco me gustaria que me explicaras mejor sobre las variables por ejemplo si quiero hacer que no puedas entrar a un lugar hasta que hables con cierta persona.
Espero tu respuesta
 
Arriba