Author Id: 17082 Author Name: Sonicarvalho Post Content: Hola gente! Saludos de Portugal e de Dark Rayquaza de la antiga myustu. :D Como no he tenido clases de español, yo no sé hablar-lo bien, entonces me perdonen cualquier error de gramática o sintaxis. ----------------------------------------------- En primer lugar, yo también lo sé que es mucho mas fácil escribir un script que haga lo Warp para nuestro mapa. Pero este método es "legal" pues la información de DIVE esta presente en FireRed e con este método las coordenadas del player permanecen las mismas quando el player es "warpeado". Es verdad. La información de DIVE está presente en Rojo Fuego, e además son meros scripts. E en esos scripts no está nadie relacionado con el Warp, pero yo les voy explicar eso mas adelante. Entonces, como lo hacemos? Bien, primer hay un certo numero de requisitos para que el dive funcione. El mapa que está bajo el agua tiene que ter como Type (En advance-map, en el cabezazo del mapa) Underwater [05]. El mapa que es el exterior deve ter como Type ??? [06]. El mapa underwater debe tener una conexion como, por ejemplo, esta: [IMG]http://img855.imageshack.us/img855/8553/divetut3.png[/IMG] El mapa Overworld debe tener una conexión como, por ejemplo, esta: [IMG]http://img98.imageshack.us/img98/1229/divetut2.png[/IMG] Ahora estamos listos para los scripts. En realidad los scripts están presentes en la rom. El script que deve ser llamado cuando se está fuera de agua (OverWorld) está localizado en el offset 1BE38B El script: '--------------- #org 0x1BE38B lockall checkattack ATK_DIVE compare LASTRESULT 0x6 if 0x1 goto 0x81BE3CA bufferpartypokemon 0x0 LASTRESULT setanimation 0x0 LASTRESULT setanimation 0x1 0x1 msgbox 0x81BE469 MSG_YESNO '"The sea is deep here.\nWould you l..." compare LASTRESULT 0x0 if 0x1 goto 0x81BE3D2 msgbox 0x81BE49B MSG_KEEPOPEN '" used DIVE." doanimation 0x2C goto 0x81BE3D2 '--------------- #org 0x1BE3CA msgbox 0x81BE42B MSG_KEEPOPEN '"The sea is deep here. A POKéMON\nm..." releaseall end '--------------- #org 0x1BE3D2 releaseall end '--------- ' Strings '--------- #org 0x1BE469 = The sea is deep here.\nWould you like to use DIVE? #org 0x1BE49B = used DIVE. #org 0x1BE42B = The sea is deep here. A POKéMON\nmay be able to go underwater. Para el script que deve ser llamado quando estamos bajo el agua (Underwater), el offset es: 1BE3D4 y el script es: '--------------- #org 0x1BE3D4 lockall checkattack ATK_DIVE compare LASTRESULT 0x6 if 0x1 goto 0x81BE412 bufferpartypokemon 0x0 LASTRESULT setanimation 0x0 LASTRESULT setanimation 0x1 0x1 msgbox 0x81BE4EF MSG_YESNO '"Light is filtering down from above..." compare LASTRESULT 0x0 if 0x1 goto 0x81BE429 msgbox 0x81BE49B MSG_KEEPOPEN '" used DIVE." doanimation 0x2C goto 0x81BE429 '--------------- #org 0x1BE412 lockall msgbox 0x81BE4A9 MSG_KEEPOPEN '"Light is filtering down from above..." goto 0x81BE429 '--------------- #org 0x1BE429 releaseall end '--------- ' Strings '--------- #org 0x1BE4EF = Light is filtering down from above.\nWould you like to use DIVE? #org 0x1BE49B = used DIVE. #org 0x1BE4A9 = Light is filtering down from above.\nA POKéMON may be able to surface. Ahora vamos a analizar los scripts. A primera vista, parece que no hay warps. La verdad es, no hay mismo. Lo comando que trata de todo es el "doanimation 0x2C". Si todos los requerimientos para que dive funcione están presentes en los dos mapas conectados por dive/emerger , y se ejecutan un script solo con ese comando, veréis que eso vos teleporta para lo otro mapa usando dive. Tcharan! Ahora tienen un DIVE funcional en RojoFuego!!:D Se alguno de vosotros no funciona, entonces tienten la solución presente en este spoiler: [spoiler=Pulsa para desplegar este spoiler]Pero se nos depara otro problema. Si uséis el script de Underwater, ele funciona correctamente pero si useis el script de dive, ele apenas muestra la animación de lo pokemon haciendo dive y en seguida trava el Juego. Porque esto acontece?¿:. Simples: Los comandos son rutinas ASM, y todas tienen sus funciones e diferencias. Pero el comando Doanimation utiliza su propio lenguaje de scripts, y ese comando tiene "checks" (verificaciones de ciertas cosas necesarias para el normal funcionamiento dese comando. ) y como esto es Rojo Fuego e no Ruby, hay ciertas cosas que no trabajan bien. Pero como estamos entrando en la área de ASM, y vosotros (una buena parte) no comprenden ahora, me voy limitar a pedir-vos que en offset 06DF82, donde esta 15D1 pongan 0000.[/SPOILER] Noten que necesitan poner los scripts como signposts en la agua escura o entonces assignar los scripts a behaviour bytes Creditos a Knizz pela pesquisa. Aquí esta un vídeo de Dive [URL=http://www.youtube.com/watch?v=pZiSs0r9yHI]YouTube Video[/URL] Eso es todo. Espero ter ayudado publicando esta información aqui en Wah!