Skyflyer
Creador de Pokémon Zenit
Buenas, estaba diseñando un script de gatillo para evitar entrar en la hierba de una ruta antes de conseguir un pokémon, ya que quiero que se pueda avanzar libremente por ella hasta llegar a un sitio que forma parte del prólogo.
En este caso os muestro el script que he diseñado usando el comando que detecta la tecla que se pulsa, de lo cual me enteré gracias a un vídeo de Inmortal Kaktus (no sé cómo se llama por aquí xD). El único problema que le veo es que si se está pulsando el botón "B" (la gente suele tener la manía de tenerlo pulsado ya sea por correr o por pasar más rápido los textos) este comando falla ya que lo que detecta es el boton B antes que cualquiera de los de dirección. Para no liaros, como os decía en este caso pongamos de ejemplo que encima de la posición en la que está el script de gatillo que os presento hay hierba que al pisarla podría salir un pokémon salvaje causando un posible bug al no tener pokémon (y es que queda fatal que pase esto xD). Lo explico por si acaso, fallar no es que falle, la cosa es que hasta que no sueltes el botón B no vas a salir del bucle ni vas a poder hacer nada. De momento el script funciona bien, pero puestos a mejorar...
Este script lo que pretendo es que si avanzas en cualquier dirección que resulte en una casilla/bloque/tile (no sé el término exacto que se utiliza) en el que no haya hierba te deje moverte (al pulsar esa dirección el script te empujará, ya que como está recibiendo comandos la primera vez que pulsas en esa dirección no te mueves, y al forzar con el script el movimiento queda más natural). En cambio si pulsamos en dirección a la hierba aparecerá una msgbox que dirá que no debemos hacerlo, y seguiremos en el bucle que detecta movimientos hasta salir del script.
Para no liaros más, vamos allá con el script y lo dicho, es tanto una ayuda para los que puedan/quieran usarlo así o de otra manera y al mismo tiempo es una llamada a aquellos que puedan ayudarme a mejorarlo (es cortito así que no se tarda en ver).
PD: Cómo hago para poner códigos como hace la gente en plan no un spoiler sino un cuadro negro con encabezado verde? No sé si me entendéis xD
En este caso os muestro el script que he diseñado usando el comando que detecta la tecla que se pulsa, de lo cual me enteré gracias a un vídeo de Inmortal Kaktus (no sé cómo se llama por aquí xD). El único problema que le veo es que si se está pulsando el botón "B" (la gente suele tener la manía de tenerlo pulsado ya sea por correr o por pasar más rápido los textos) este comando falla ya que lo que detecta es el boton B antes que cualquiera de los de dirección. Para no liaros, como os decía en este caso pongamos de ejemplo que encima de la posición en la que está el script de gatillo que os presento hay hierba que al pisarla podría salir un pokémon salvaje causando un posible bug al no tener pokémon (y es que queda fatal que pase esto xD). Lo explico por si acaso, fallar no es que falle, la cosa es que hasta que no sueltes el botón B no vas a salir del bucle ni vas a poder hacer nada. De momento el script funciona bien, pero puestos a mejorar...
Este script lo que pretendo es que si avanzas en cualquier dirección que resulte en una casilla/bloque/tile (no sé el término exacto que se utiliza) en el que no haya hierba te deje moverte (al pulsar esa dirección el script te empujará, ya que como está recibiendo comandos la primera vez que pulsas en esa dirección no te mueves, y al forzar con el script el movimiento queda más natural). En cambio si pulsamos en dirección a la hierba aparecerá una msgbox que dirá que no debemos hacerlo, y seguiremos en el bucle que detecta movimientos hasta salir del script.
Para no liaros más, vamos allá con el script y lo dicho, es tanto una ayuda para los que puedan/quieran usarlo así o de otra manera y al mismo tiempo es una llamada a aquellos que puedan ayudarme a mejorarlo (es cortito así que no se tarda en ver).
PD: Cómo hago para poner códigos como hace la gente en plan no un spoiler sino un cuadro negro con encabezado verde? No sé si me entendéis xD
#dynamic 0x800000
#org @start
compare 0x40FE 0x0 ' Esta variable pasará a 0x1 en cuanto tengamos
pokémon, "desactivando" el script
if 0x1 goto @snippet1
end
'---------------
#org @snippet1
comparefarbytetobyte 0x4000130 0xBF ' Detecta si pulsas ARRIBA
if 0x1 goto @snippet2
comparefarbytetobyte 0x4000130 0x7F ' Detecta si pulsas ABAJO
if 0x1 goto @snippet3
comparefarbytetobyte 0x4000130 0xDF ' Detecta si pulsas IZQUIERDA
if 0x1 goto @snippet4
comparefarbytetobyte 0x4000130 0xEF ' Detecta si pulsas DERECHA
if 0x1 goto @snippet5
goto @snippet1 ' en caso de no pulsar nada te devuelve al comienzo de este
bloque, entrando en bucle.
end
'---------------
#org @snippet2
callasm 0x895C7C1 ' Para poner msgboxes transparentes (ignoradlo)
msgbox @String1 MSG_NORMAL '"Meterse por la hierba no parece un..."
callasm 0x895C8D1 ' Para quitar la msgbox transparente (ignorar de nuevo)
goto @snippet1 ' Tras mostrar el mensaje volvemos al bucle de detectar
movimientos
'---------------
#org @snippet3 ' Si pulsamos una dirección a la que podemos ir estos
snippets nos desplazarán a donde pulsemos.
applymovement MOVE_PLAYER @move1
waitmovement 0x0
end
'---------------
#org @snippet4
applymovement MOVE_PLAYER @move2
waitmovement 0x0
end
#org @snippet5
applymovement MOVE_PLAYER @move3
waitmovement 0x0
end
'---------
' Strings
'---------
#org @String1
= No debería meterme en la\nhierba.
'-----------
' Movements
'-----------
#org @move1
#raw 0x10 'Step Down (Normal)
#raw 0xFE 'End of Movements
#org @move2
#raw 0x12 'Step Left (Normal)
#raw 0xFE 'End of Movements
#org @move3
#raw 0x13 'Step Right (Normal)
#raw 0xFE 'End of Movements
#org @start
compare 0x40FE 0x0 ' Esta variable pasará a 0x1 en cuanto tengamos
pokémon, "desactivando" el script
if 0x1 goto @snippet1
end
'---------------
#org @snippet1
comparefarbytetobyte 0x4000130 0xBF ' Detecta si pulsas ARRIBA
if 0x1 goto @snippet2
comparefarbytetobyte 0x4000130 0x7F ' Detecta si pulsas ABAJO
if 0x1 goto @snippet3
comparefarbytetobyte 0x4000130 0xDF ' Detecta si pulsas IZQUIERDA
if 0x1 goto @snippet4
comparefarbytetobyte 0x4000130 0xEF ' Detecta si pulsas DERECHA
if 0x1 goto @snippet5
goto @snippet1 ' en caso de no pulsar nada te devuelve al comienzo de este
bloque, entrando en bucle.
end
'---------------
#org @snippet2
callasm 0x895C7C1 ' Para poner msgboxes transparentes (ignoradlo)
msgbox @String1 MSG_NORMAL '"Meterse por la hierba no parece un..."
callasm 0x895C8D1 ' Para quitar la msgbox transparente (ignorar de nuevo)
goto @snippet1 ' Tras mostrar el mensaje volvemos al bucle de detectar
movimientos
'---------------
#org @snippet3 ' Si pulsamos una dirección a la que podemos ir estos
snippets nos desplazarán a donde pulsemos.
applymovement MOVE_PLAYER @move1
waitmovement 0x0
end
'---------------
#org @snippet4
applymovement MOVE_PLAYER @move2
waitmovement 0x0
end
#org @snippet5
applymovement MOVE_PLAYER @move3
waitmovement 0x0
end
'---------
' Strings
'---------
#org @String1
= No debería meterme en la\nhierba.
'-----------
' Movements
'-----------
#org @move1
#raw 0x10 'Step Down (Normal)
#raw 0xFE 'End of Movements
#org @move2
#raw 0x12 'Step Left (Normal)
#raw 0xFE 'End of Movements
#org @move3
#raw 0x13 'Step Right (Normal)
#raw 0xFE 'End of Movements
Última edición: