Registrarse

[DUDA] Problema gatillo

Estado
Cerrado para nuevas respuestas.
Hola quisiera hacer un Script gatillo, en el que al pasar el Jugador se active un diálogo o mensaje (dicho por otro personaje, pero es lo mismo) y a continuación que aparezca el mini de este personaje y que haga una serie de movimientos.

Como esto sucede en "la calle" de una ciudad, no quisiera que se viera el mini.
Seria parecida a la secuencia del inicio del juego de FireRed cuando el Jugador se mete en la hierba alta y el Prof. Oak interviene. Solo que he abierto ese script y no lo entiendo hay muchas variables que no sé para qué son.

Mi duda es como hacer invisible el mini hasta que se active el script gatillo.
Y si me podéis guiar un poco para las flags y las variables para que sólo suceda una vez.

Todos mis intentos han acabado bloqueando el juego... Así que como si no tuviera el Script.

Edit by Dafting: @ecoli18, las reglas dicen que el título del hack debe tener la palabra "[DUDA]" en el título para que todos sepan que se trata de una duda. Lo agrego por tí esta vez, pero sé más cuidadoso de aquí en más.
 
Última edición por un moderador:
Respuesta: Problema gatillo

Creo que eso se puede hacer facilmente con flags.
Si quieres que el mini no aparezca hasta que pises el Script de Gatillo, yo lo que haría sería activar un setflag en un script cualquiera antes de llegar a dicha zona usando una flag asignada para el mini que quieres que aparezca, para luego, cuando quieras hacer que el mini aparezca, uses un clearflag para que aparezca y se ejecute con normalidad el Script que quieres hacer. Luego, para volver a hacerlo desaparecer, volvería a usar un setflag con la misma flag asignada para el mini.
No sé, hace tiempo que no juego con Scripts, pero creo que era asi la cosa :p
En todo caso, si me equivoco, te sugiero visitar este tutorial para que te guies mejor.
Saludos.
 
Respuesta: Problema gatillo

Creo que eso se puede hacer facilmente con flags.
Si quieres que el mini no aparezca hasta que pises el Script de Gatillo, yo lo que haría sería activar un setflag en un script cualquiera antes de llegar a dicha zona usando una flag asignada para el mini que quieres que aparezca, para luego, cuando quieras hacer que el mini aparezca, uses un clearflag para que aparezca y se ejecute con normalidad el Script que quieres hacer. Luego, para volver a hacerlo desaparecer, volvería a usar un setflag con la misma flag asignada para el mini.
No sé, hace tiempo que no juego con Scripts, pero creo que era asi la cosa :p
En todo caso, si me equivoco, te sugiero visitar este tutorial para que te guies mejor.
Saludos.
Y el script del setflag para que aparezca el mini lo asocio al mini no? o en dónde lo pongo?
 
Respuesta: Problema gatillo

Y el script del setflag para que aparezca el mini lo asocio al mini no? o en dónde lo pongo?
Ehh, algo así. No asocias el Script en sí, si no la flag que utilizas en el comando "setflag" y "clearflag".
Es cosa de usar una flag libre asignándosela al "Person ID." del mini en cuestión via A-Map. Esta flag debe ser la misma que uses con "Setflag" y "Clearflag".
 
Respuesta: Problema gatillo

Ehh, algo así. No asocias el Script en sí, si no la flag que utilizas en el comando "setflag" y "clearflag".
Es cosa de usar una flag libre asignándosela al "Person ID." del mini en cuestión via A-Map. Esta flag debe ser la misma que uses con "Setflag" y "Clearflag".

Te he hecho caso y más o menos me funciona, con la salvedad de que se me queda calado. El mini hace el movimiento y el texto no se quita, por lo que se cala. Estoy intentándolo todo pero no sé que tengo mal...

Código:
'---------------
#org 0x86BB37
clearflag 0x2003
checkflag 0x2003
if 0x0 goto 0x886BB63
end

'---------------
#org 0x86BB63
checkflag 0x2004
if 0x0 goto 0x886BC7F
end

'---------------
#org 0x86BC7F
lock
special 0x174
preparemsg 0x886B956 '"bla bla bla"
waitmsg
showsprite 0x8
applymovement 0x8 0x886BC2E
waitmovement 0x0
hidesprite 0x8
closeonkeypress
setflag 0x2004
release
end


'---------
' Strings
'---------
#org 0x86B956
= bla bla bla


'-----------
' Movements
'-----------
#org 0x86BC2E
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
 

Javi4315

Babyface
Miembro de honor
Respuesta: Problema gatillo

Te he hecho caso y más o menos me funciona, con la salvedad de que se me queda calado. El mini hace el movimiento y el texto no se quita, por lo que se cala. Estoy intentándolo todo pero no sé que tengo mal...
A ver, vamos por partes:

Código:
'---------------
#org 0x86BB37
clearflag 0x2003
checkflag 0x2003
if 0x0 goto 0x886BB63
end
Esto es completamente innecesario, primero desactivas la flag y de paso compruebas si está desactivada. Evidentemente siempre va a estar desactivada porque la acabas de desactivar con el clearflag. Pero vamos, esa parte no sirve absolutamente para nada tal y como está.

Y las flags son demasiado altas, utiliza flags a partir de la 0x200.
Por cierto, ¿En qué tutorial has visto esas flags?

Código:
#org 0x86BB63
checkflag 0x2004
if 0x0 goto 0x886BC7F
end
Esto tampoco sirve. Esto lo has hecho para desactivar el script de gatillo una vez activada la flag. Es decir, comprueba la flag y, si está desactivada, te lleva al script, pero si está activada, se termina y no pasa nada.

Esta forma funciona, pero técnicamente recibe el nombre de "chapuza". Básicamente porque el script se sigue ejecutando, aunque a ojos del jugador no pase nada, se ejecuta y se nota una pequeña "pausa" al pasar por encima. Desactiva el script de gatillo con variables.

En resumen, esta parte también sobra.

Código:
#org 0x86BC7F
lock
special 0x174
preparemsg 0x886B956 '"bla bla bla"
waitmsg
showsprite 0x8
applymovement 0x8 0x886BC2E
waitmovement 0x0
hidesprite 0x8
closeonkeypress
setflag 0x2004
release
end
Lock no sirve para nada en un script de gatillo, al igual que realease. Estos comandos sirven para bloquear y liberar el movimiento del mini con el que se interactua, pero aquí estás interactuando con un script de gatillo, no con un mini, por lo tanto, no tendrá efecto. O no lo pones, o bloqueas todos los minis de la pantalla con lockall (y luego lo liberas con releaseall), depende de lo que requiera el script.

El special 0x174 no sé por qué lo has puesto, pero no le veo sentido, la verdad. Si lo has puesto por algo, vale, pero si no, quítalo.

Y respecto al preparemsg y al waitmsg, utiliza simplemente un msgbox.

Antes de hacer el showsprite, debes desactivar la flag que tenga asignada el mini para evitar que pueda desaparecer por arte de magia en mitad del script. Y al hacer que desaparezca, vuelves a activar la flag.

Código:
#org 0x86BC2E
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
Por último, la razón de que se te quede pillado es que no has finalizado los movimientos. Cuando utilizas un applymovement siempre debes cerrar con "#raw 0xFE". Es lo que te ha faltado ahí.

En resumen, el script quedaría más o menos así:

Código:
#org 0x86BC7F
lockall '(o nada)
msgbox 0x886B956 0x6
clearflag 0x(flag del mini)
showsprite 0x8
applymovement 0x8 0x886BC2E
waitmovement 0x0
hidesprite 0x8
setflag 0x(flag del mini)
setvar 0x(var) 0x(valor) 'variable que controla el script de gatillo
releaseall '(o nada)
end


'---------
' Strings
'---------
#org 0x86B956
= bla bla bla


'-----------
' Movements
'-----------
#org 0x86BC2E
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0xFE
Así es como quedaría tu scipt. Que deberás pulir porque va a tener un efecto raro, pero me he limitado a corregirte los errores.

A parte de todo esto, te dejo un vídeo mío en el que explico las variables y los scripts de gatillo:


Y en este otro vídeo explico un ejemplo que básicamente es lo que quieres hacer tú, que el mini venga desde atrás pero que antes del script de gatillo no puedas verlo:

 
Respuesta: Problema gatillo

Javi4315♪;328596 dijo:
A ver, vamos por partes:

Código:
'---------------
#org 0x86BB37
clearflag 0x2003
checkflag 0x2003
if 0x0 goto 0x886BB63
end
Esto es completamente innecesario, primero desactivas la flag y de paso compruebas si está desactivada. Evidentemente siempre va a estar desactivada porque la acabas de desactivar con el clearflag. Pero vamos, esa parte no sirve absolutamente para nada tal y como está.

Y las flags son demasiado altas, utiliza flags a partir de la 0x200.
Por cierto, ¿En qué tutorial has visto esas flags?

Código:
#org 0x86BB63
checkflag 0x2004
if 0x0 goto 0x886BC7F
end
Esto tampoco sirve. Esto lo has hecho para desactivar el script de gatillo una vez activada la flag. Es decir, comprueba la flag y, si está desactivada, te lleva al script, pero si está activada, se termina y no pasa nada.

Esta forma funciona, pero técnicamente recibe el nombre de "chapuza". Básicamente porque el script se sigue ejecutando, aunque a ojos del jugador no pase nada, se ejecuta y se nota una pequeña "pausa" al pasar por encima. Desactiva el script de gatillo con variables.

En resumen, esta parte también sobra.

Código:
#org 0x86BC7F
lock
special 0x174
preparemsg 0x886B956 '"bla bla bla"
waitmsg
showsprite 0x8
applymovement 0x8 0x886BC2E
waitmovement 0x0
hidesprite 0x8
closeonkeypress
setflag 0x2004
release
end
Lock no sirve para nada en un script de gatillo, al igual que realease. Estos comandos sirven para bloquear y liberar el movimiento del mini con el que se interactua, pero aquí estás interactuando con un script de gatillo, no con un mini, por lo tanto, no tendrá efecto. O no lo pones, o bloqueas todos los minis de la pantalla con lockall (y luego lo liberas con releaseall), depende de lo que requiera el script.

El special 0x174 no sé por qué lo has puesto, pero no le veo sentido, la verdad. Si lo has puesto por algo, vale, pero si no, quítalo.

Y respecto al preparemsg y al waitmsg, utiliza simplemente un msgbox.

Antes de hacer el showsprite, debes desactivar la flag que tenga asignada el mini para evitar que pueda desaparecer por arte de magia en mitad del script. Y al hacer que desaparezca, vuelves a activar la flag.

Código:
#org 0x86BC2E
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
Por último, la razón de que se te quede pillado es que no has finalizado los movimientos. Cuando utilizas un applymovement siempre debes cerrar con "#raw 0xFE". Es lo que te ha faltado ahí.

En resumen, el script quedaría más o menos así:

Código:
#org 0x86BC7F
lockall '(o nada)
msgbox 0x886B956 0x6
clearflag 0x(flag del mini)
showsprite 0x8
applymovement 0x8 0x886BC2E
waitmovement 0x0
hidesprite 0x8
setflag 0x(flag del mini)
setvar 0x(var) 0x(valor) 'variable que controla el script de gatillo
releaseall '(o nada)
end


'---------
' Strings
'---------
#org 0x86B956
= bla bla bla


'-----------
' Movements
'-----------
#org 0x86BC2E
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0xFE
Así es como quedaría tu scipt. Que deberás pulir porque va a tener un efecto raro, pero me he limitado a corregirte los errores.

A parte de todo esto, te dejo un vídeo mío en el que explico las variables y los scripts de gatillo:


Y en este otro vídeo explico un ejemplo que básicamente es lo que quieres hacer tú, que el mini venga desde atrás pero que antes del script de gatillo no puedas verlo:


Vale gracias, en mi defensa diré que las chapuzas la he ido añadiendo xq no me funcionaba al principio y al ir toqueteando pues veía que mejoraba:dodgy:
Y lo del setflag del principio es porque está en otro gatillo, si lo juntaba todo aquí me ahorraba tiempo en la comprobación del gatillo. Pensé que lo había quitado en el mensaje.

Las flags altas, no sé, lo vi en algún vídeo en youtube. No me acuerdo exactamente cúal.

Pero vaya, gracias de todo corazón que me has ahorrado mucho tiempo.
 
Respuesta: Problema gatillo

Ya lo resolví. Joder, vaya paranoia me monté al no poner la variable y olvidarme del raw end del movimiento.

¿Por cierto el special 0x174 para qué es? creí que era para que te saliera el mensaje aunque no interactuaras directamente con el mini... he probado con y sin él y no he notado cambios.
 

Javi4315

Babyface
Miembro de honor
Respuesta: Problema gatillo

Ya lo resolví. Joder, vaya paranoia me monté al no poner la variable y olvidarme del raw end del movimiento.

¿Por cierto el special 0x174 para qué es? creí que era para que te saliera el mensaje aunque no interactuaras directamente con el mini... he probado con y sin él y no he notado cambios.
Si no me equivoco, es un special que tiene que ver con el memorín (FR/LG).
 
Estado
Cerrado para nuevas respuestas.
Arriba