Registrarse

Script para evitar la hierba. ¿Mejoras?

Estado
Cerrado para nuevas respuestas.

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

#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
 
Última edición:

Sayer301!

UnityLord!
Miembro de honor
Para mejorarlo dependería de la distribución del mapa, pero veo muy complicado el hacer comparaciones de pulsar teclas, cuando claramente sería mas facil comparar hacia donde esta mirando el personaje, así te ahorras el problema de los bucles.

La variable que determina hacia donde miras es la 800C
siendo esta:
0x1 abajo
0x2 arriba
0x3 izquierda
0x4 derecha


por otr lado para lo del código que mencionas, en el editor de texto avanzado tienes una almohadilla "#" que sería para abrir los BBcode del código, aunque también puedes hacerlo a mano poniendo:
[code*][/code*] (sin asteriscos)

Espero que te ayude :)
 

Skyflyer

Creador de Pokémon Zenit
Para mejorarlo dependería de la distribución del mapa, pero veo muy complicado el hacer comparaciones de pulsar teclas, cuando claramente sería mas facil comparar hacia donde esta mirando el personaje, así te ahorras el problema de los bucles.

La variable que determina hacia donde miras es la 800C
siendo esta:
0x1 abajo
0x2 arriba
0x3 izquierda
0x4 derecha


por otr lado para lo del código que mencionas, en el editor de texto avanzado tienes una almohadilla "#" que sería para abrir los BBcode del código, aunque también puedes hacerlo a mano poniendo:
[code*][/code*] (sin asteriscos)

Espero que te ayude :)
Gracias por lo del código, ya tenía ganas de saberlo xD En cuanto al script como tal el problema que le veo a eso es que nada más entrar en el bloque se va a mover en función de a dónde mire, y yo al proponer recibir la dirección que se pulse doy como más libertad y no a atravesar el bloque perpendicularmente. Por ejemplo, entro en el bloque por la izquierda y decido bajar. Con lo que tú me propones nada más entrar en el bloque el mini avanzará al siguiente bloque a la derecha directamente no? No teniendo la posibilidad de quedarse quieto en el bloque si lo desea (otra cosa en la que caigo es que tampoco se puede pulsar start en este momento, no sé si se podría hacer que si se pulsa start dentro del bucle se abra el start y si se cierra sigas dentro del script, molaría mucho).
 

Cheve

MoonLover~
Miembro de honor
¿? Si lo que quieres es que no entre a la hierba alta haces un "borde" de Scripts de Gatillos (SG) para que se corra al costado apenas entre a la hierba alta.

Explicación Gráfica:



___

Edito: Ups, me pasé con el tamaño xD Perdon jajajaja
 

Skyflyer

Creador de Pokémon Zenit
¿? Si lo que quieres es que no entre a la hierba alta haces un "borde" de Scripts de Gatillos (SG) para que se corra al costado apenas entre a la hierba alta.

Explicación Gráfica:



___

Edito: Ups, me pasé con el tamaño xD Perdon jajajaja
Lol pero eso se puede hacer? Es decir, el script se ejecuta antes de la posibilidad de que te salga un pokémon salvaje? Porque no estaba considerando la opción xD
 

Dani_SR_17

¡Pokémon LionHeart!
Siempre tienes la opción de hacer un setmaptile y cambiar todos los tiles de hierba alta por otros tiles de hierba alta sin salvajes.
 
Estado
Cerrado para nuevas respuestas.
Arriba