25074-GBA_|_Scripting_|_El_maravilloso_comando_setmapfooter
#0
Doctor Juanjo 12932
Doctor Juanjo Orgullosamente presenta:

¡EL MARAVILLOSO COMANDO SETMAPFOOTER!

INTRODUCCIÓN
Bueno, muchos de ustedes tal vez recordarán cuando jugaban Zelda Ocarina of Time y viajaban al futuro ¡Se encontraban con que el Castillo de Hyrule ¡Se había transformado en un escenario post-apocaliptico con zombies y el castillo de Gannon!



Algunos de ustedes dirán. Bien eso en ¿Qué me afecta? Y bien, aquí viene la respuesta:

¿Nunca han soñado en congelar un pueblo, inundar una caverna, destruir una ciudad? ¿Nunca han pensado poner un pueblo en construcción para después poder entrar en en él?

Bueno, si de verdad querían hacerlo fijo ya lo habrían intentado. No se, tal vez con un setmaptile, o hacer dos mapas y organizar las conexiones y eventos.

Las soluciones anteriores son algo elegantes pero tienen sus peros:

-Un setmaptile es la mejor opción porque literalmente te cambia solo los tiles manteniendo los eventos, conexiones, posiciones de vuelo, etc. Pero es limitado con respecto a que tienes que hacer 10000 setmaptile para cambiar un pedazo de ciudad y además te limita a únicamente los tiles del tileset.

-Hacer otro mapa es otra buena idea. Puedes tener un nuevo tileset, mapear es más fácil. Pero tu problema ahora son mantener los eventos originales, organizar los warps (Incluyendo casas adentro) y al final te vas a enredar con flags y sin poder organizar correctamente las conexiones ni poder llegar volando.

Así que ¿Existe una verdadera opción de hacer esto de manera fácil, cómoda y que realmente te cambie el mapa? ¡Y la respuesta es que si! ¡Con ustedes el comando....

SETMAPFOOTER

Los que hackeen Ruby (O lo hayan hecho) no si si alguna vez por casualidad han intentado ver el mapa de Cave of Origen y se topan con esto:



¿Por qué en Pokémon Ruby esta el mapa del agua? ¿No debería ser lava?.

Bien la respuesta es más simple de lo que parece:
Ambos mapas existen en ambas versiones [Ruby-Zafiro], con un comando especial debe ser posible cambiar el mapeado del mapa. ¡Y si que existe!

El comando es el setmapfooter 0x__ y permite carga directamente el mapeado de otro mapa (Incluyendo su tileset). Sin cambiar el Header del propio mapa.

DEFINICIÓN:

setmapfooter: set[Establecer] map[mapa] footer[Pie] (Establecer pie de mapa)

Pero ¿Qué es el pie de mapa? ¿O más bien que espero encontrar en él?



En el pie de mapa encontramos: el borderblock, el mapeado y los tileset.

En el pie de mapa no encontramos: Los eventos, scritps, posiciones de vuelo, conexiones con otros mapas y el Header.

APLICACIÓN:

Simplemente con un script de nivel tipo 03 o un setmaptile script funcionara, (NO FUNCIONA EN UN SCRIPT DE GATILLO).

Sencillamente cuando entres al mapa original cambiara todo el mapeado y todos los tiles [Dejando scripts de nivel y eventos como minis y objetos] ¡A que es una maravilla!

Ejemplo:

Supongamos que vamos a hacer que una ciudad sea cubierta de nieve. Necesitaremos:

-La ciudad normal (Con todos sus warps, eventos, scripts, conexiones etc).

-La ciudad nevada (No necesita ningún script ni cabezal, solo el mapeado y tileset)

En un script de nivel (Tipo 03 o 'setmaptile' 01) ponemos el siguiente código:

#dynamic 0x712345

#org @script
compare 0x4FF 0x0
if 0x1 goto @no_nieve
setmapfooter 0x123 [Aquí está el número de mapa que quieren insertar]
end

#org @no_nieve
end

En este caso, al encontrar la variable 0x4FF distinta de cero cargará el mapa nevado, de resto cargará la ciudad normalmente.

¡Pero donde encuentro los números de mapa!

¡Y la mejor respuesta de toda!...

¡NO LO SE!

¿Pero hey, que pasa?

No se preocupen, tengo una solución, realmente 2:

1) Si son pacientes pueden hacer un banco de datos escribiendo setmapfooter 0x0 [Petalburg City]... setamapfooter 0x1 , setmapfooter 0xDA ....

2) Un truco mucho más fácil, genial y brillante es el siguiente:

-Creen el mapa con el que van a reemplazar.

-Vallan allí directamente en el juego.

-En el VBA vallan a "Tools -> Memmory Viewer"

Dependiendo si juegan Ruby o FireRed ingresen la siguiente dirección:

Ruby: 0x2025766

FireRed: 0x2036E0E



Si todo va bien fíjense en esos 2 bytes (Están permutados)

Así que, si queremos insertar ese mapa en otro basta con un script de nivel y un setmapfooter 0x1B

Supongamos que lo insertamos en el script de nivel de Littleroot Town (Cuando bajas del camión y tu madre te saluda)



¡Woola! ¡Hemos convertido un pueblo en la ruta 111! [Tengan en cuenta los tamaños a la hora de hacer conexiones]

¿SABÍAS QUÉ?

Este script hace que se cargue la Mirage Island.

También explica el cambio de la marea de la Shoal Cave.

¡Así que usen sabiamente este viejo y útil comando!

Att:
Doctor Juanjo