Registrarse

[RH - Scripting] hacer script para mapa de inicio(varias dudas)

Estado
Cerrado para nuevas respuestas.

NettGray

Pequeño saltamontes
Soy Nett,y recién estoy empezando con esto del ROM hacking y tengo algunas dudas :
por ejemplo,quisiera saber como hacer un script en un mapa para que ese sea mi mapa de inicio,y que esto sea en un ROM de pokemon ruby ,me puse a analizar el mapa de inicio que es el camión.
que en advance map es " INSIDE OF TRUCK(25.40)"
y supuse que en su script apareceria algo...
y aparece el siguiente script:

#dynamic 0x900000

'---------------
#org @start
setmaptile 0x4 0x1 0x208 0x0
setmaptile 0x4 0x2 0x210 0x0
setmaptile 0x4 0x3 0x218 0x0
end


y en tipo de script aparece
01 "setmaptile" script

primero que nada, no se casi nada sobre setmaptile y los scripts que puedes incluir en un mapa.
así que si alguien tiene algún tutorial o un texto en el que explique cada uno de los setmaptile,y uno en el que se explique los scripts que puedes hacer en cada uno.

me ayudaría mucho.

o si saben como hacer para establecer el punto de inicio de partida sin que sea con programas como intro manager o star map chooser advance.
ya que me resulta un poco difícil entenderlo.

También tengo una idea y quisiera ver si podrían ayudarme para ponerla en pie.
En pokemon versión ruby y esmeralda,después de elegir entre que tu personaje sea chico o chica apareces en un camion diferente segun tu elccion para que sea tu casa etc etc.

y quisiera hacer lo siguiente:
tengo dos personajes, al principio podrías elegir entre estos dos (como en cualquier juego de pokemon)y dependiendo del personaje que elijas apareceras en un mapa diferente.
ejemplo quiero que si elijes al "personaje 1" aparezcas en un mapa de "RUSTBORO CITY"
Y si elijes a "personaje 2" aparezcas en un mapa de "DEWFORD TOWN"

tengo algunas ideas muy inutiles por ahora ,yquisiera saber si alguien tiene o sabe como yo podría hacer esto








 

Hoennwalker

Usuario de platino
No necesitas un script para hacer un mapa de inicio, necesitas una herramienta que puedes descargar aquí que se llama GBA Intro Manager. Con ella puedes quitar la escena del camión y poner las coordenadas del mapa donde quieres empezar a jugar.

El setmaptile es un script que sea usa en los sript de nivel y con los refrescos de pantalla (ya sea porque lo provocas tú o al salir o entrar a un mapa) cuando una variable que elijas tome el valor deseado. Lo que hace es cambiar zonas del mapa por otras cuales sean.

Acerca de emepzar en lugares diferentes según el gender, no puedo ayudarte pero lo miraré porque me ha dado curiosidad.Si me entero volveré aquí a escribirte.
 

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
Ante todo, muy buenas.

Mapa de inicio
Tal y como te ha dicho Hoennwalker, el mapa inicial no está determinado por un script. El que tú nos copias aquí es un script de nivel, es decir, uno que se ejecuta cuando cargas el mapa teniendo en cuenta ciertas condiciones según el tipo.
¿Por qué no puedes definir el mapa inicial en un script de nivel? Como bien he dicho, un script de nivel es aquel que se ejecuta al cargar un mapa. Entonces, al momento de correr ese script, tienes que haber entrado ya en el mapa.

¿Es posible cambiar el mapa inicial? ¡Por supuesto! Puedes usar la herramienta GBA Intro Manager que te mencionaron o también podrías cambiar el banco y número de mapa directamente con un editor hexadecimal, suponiendo que encuentras dónde están.

Distintos mapas iniciales
Desconozco si en alguna de las roms existe lo que quieres hacer y puedes implementarlo. Sin embargo, te diré que NO es así como está implementada la parte que mencionas. Realmente hay un único mapa del camión de mudanza, no son dos distintos:


Fíjate en este fragmento de código C que se llama luego de la intro del profesor y notarás que no hay ningún condicional, siempre te lleva al mismo mapa:


¿Y entonces cómo puedo aparecer en dos sitios distintos?
¿Ves los warps que hay a la derecha? No son comunes y corrientes, funcionan de una forma un poco especial (que al parecer también usaron para los elevadores): están configurados sin mapa de destino (al menos así se ve en decomp, según SphericalIce en rh binario pareciera apuntar al mapa 127) y con un número de warp 127.


¿Me estás diciendo que hay 127 warps en Villa Raíz?
¡Si! Emmm... Digo: ¡NO! El 127 es un valor especial, lo que se llama un placeholder. Puedes usar un comando de scripting para que los warps configurados de esta manera especial te envíen a un mapa concreto. En el caso del camión, te envía al mismo mapa pero a una posición distinto según seas chico o chica. En el caso de los elevadores, te envían a mapas distintos según el piso que selecciones.

¡Genial! ¿Cómo puedo crear mis propios warps dinámicos?
Es sencillo. Primero, configuras el warp como acabo de comentarte: destino 127. Luego puedes modificar a dónde te envía con un script.
Vamos a verlo con el ejemplo del camión. Los scripts que se ejecutan son algo así (esto es en decomp pero en XSE se verían similares):

Como verás, configuran varias cosas según seas chico o chica. Para no perdernos en los detalles, iré directo a lo importante: el comando setdynamicwarp. Cualquier duda respecto al resto del script, puedes consultarla en otro tema o contactarme directamente.
Considerando que estás en rh binario (editando la ROM directamente) y usando XSE, le llamaremos setwarpplace. Es otro nombre, sí, pero se trata del mismo comando. Puedes ver algunos detalles en la guía de comandos de SphericalIce.

Su estructura es la siguiente: setwarpplace BANCO_MAPA NUMERO_MAPA NUMERO_WARP COORDENADA_X COORDENADA_Y
  • BANCO_MAPA: Es el número de grupo en que se encuentra el mapa al que quieres que te dirija el warp. Puedes ver esto en el A-Map, es el número a la izquierda del ".".
  • NUMERO_MAPA: Es el número de mapa dentro del banco (cada banco tiene numeración independinete). Puedes verlo en el A-Map, es el número a la derecha del ".".
  • NUMERO_WARP: Es el número de evento del warp al que quieres que te dirija. Puedes verlo en el A-Map en la pestaña de eventos. En el caso del script que usamos como ejemplo, verás que está puesto como 255 (o 0xFF). Esto no es porque lleve al número de warp 255 sino porque este valor le indica que en lugar de llevarte a un warp use las dos coordenadas siguientes.
  • COORDENADA_X: Obviamente dependerá de tu mapa. Si entras al A-Map, verás que al pasar tu cursor sobre los bloques, te dirá las coordenadas X e Y en la parte inferior izquierda.
  • COORDENADA_Y: Ídem a la coordenada X, puedes verla en A-Map.

En conclusión
  • ¿Puedo hacer warps que dependan de una condición para llevarme a uno u otro mapa? Sí, puedes.
  • ¿Cómo? Configuras el warp con destino 127 y luego usas el comando setwarpplace en tu script.
  • ¿De qué condición puede depender? Todo está en tu ingenio y creatividad al armar el script. Puedes hacer que te lleve a cuantos lugares quiera teniendo en cuenta: si eres chico o chica, si hay una determinada flag activa, el valor de una variable e incluso la combinación de éstas condiciones. Al warp solo le importa que ejecutes el comando, el resto está en ti.
  • ¿Puedo hacer que directamente desde la intro del profesor me lleve directamente a un mapa u otro? Por supuesto que puedes pero probablemente deberías editar el código ASM. Claro que tienes el método un poco chapuza de correr un script de nivel en tu mapa inicial y, chequeando una condición, hacer un warpmuted o algún comando similar.
Espero haber sido claro y que esta información te sea útil. Ante cualquier duda, no temas consultarme.
 

Xenovya

Usuario de plata
Me encuentro con el mismo problema, usé GBA Intro Manager para que aparezca en un mapa que yo cree pero no funciona, la pantalla se pone negra. No tengo problema en usar el mismo mapa de Pueblo paleta, el problema está en una conexión que tiene con la ruta 21, en la que hay una parte del mapa que no aparece ni en la ruta 21 o en Pueblo Paleta, por lo que me genera errores en mi mapa creado sobre el Pueblo Paleta original.

¿Qué puedo hacer?
 
Estado
Cerrado para nuevas respuestas.
Arriba