Registrarse

[Scripting] [FR] Activar menú "Pokémon"

Max_Multi

RH inexperto
Hoooolaaa scripters soy Max, el Capo para los amigos y bueno como ya sabrán este es mi primer tutorial, eso quiere decir que obvio encontrarán errores que si me notifican un error lo tomaré en cuenta y editaré el tutorial como es debido :9.
Como supongo yo que habrán leído en el título vamos a activar el menú pokémon mediante un script OJO tampoco es que voy a hacer el script de Oak que te lleva a el lab y esa wea es tan fácil como abrir el XSE y cargar nuestra rom
Pero antes imagínate que eliminaste el script de Oak o te lo saltaste... bueno necesitarás el script de menú pokémon y aquí estoy yo :3

Bueno una vez abierta la rom harán un script común y corriente como todos
Código:
#dynamic 0x0

#org @inicio
lock
faceplayer
Postdata: en mi personal prefiero en vez de usar #dynamic 0x800000 o el #dynamic 0x700000 usar el #dynamic 0x0 porque se supone que busca espacio libre dependiendo del peso del script en la rom a partir de la dirección que le diste entonces si le das de dirección 0x0 buscará espacio libre desde el principio de la rom... no sé, solo yo creo eso?
Bueno, ahora para los que no sepan usaremos mis amadas Flags Sí, soy amante de las flags cuando scripteo 🤪 y la flag que usaremos será nada más y nada menos que nuestra flag 828 (0x828) que es la flag perteneciente al menú pokémon, prosigamos al hacer el script...
1585951636149.png
Bueno, así terminaría la primera parte del script, ahora explico, después del lock y el faceplayer que supongo que ya deben saber para qué son bueno, el checkflag 0x828 checará o se asegurará de ver si la flag 0x828 está activada o no, como es de esperarse no estará activada por lo que el if 0x1 todavía OJO todavía no se usará, porque es una condición y es que si la flag está activada te mandará a la dirección que le indicaste en mi caso @yalotienes y dirás: ¿Y como sé yo cuando quiero condicionarlo a que cuando esté activo, bueno me estoy enrollando mucho y es que 0x1 es sí/activado/habilitado/fijado/encendida mientras que 0x0 es todo lo contrario, es decir, No/inhabilitado/desfijado/apagada y bueno continuemos con el script que ya llevo medio año explicando lo de las flags el msgbox 0x5 es el que te abre una cajita de sí y no, ahí viene el compare lastresult o compare 0x800D 0x1 (El 0x1 no sé que hace ahí pero en todos los compare lastresult que he hecho lleva al final 0x1) si elegiste la opción "sí" se activará la condición y nos llevará a @tomaps pero si le damos a que "no" seguirá ejecutandose el script lo que hará que se ejecute el último msgbox de la primera parte que es msgbox 0x4 que significa que hasta que no presiones el botón "A" no se cerrará, para eso el closeonkeypress aunque no es necesario que sea 0x4 puede ser 0x6 normal... release libera al player de el lock y el end acaba el script...
Bien continuamos con la segunda parte y es donde llega la acción 😁

Código:
#org @yalotienes
msgbox @yakrnal 0x6
end

#org @tomaps
setflag 0x828
givepokemon 0x19 0xF 0x1 0x0 0x0 0x0
fanfare 0x13F
msgbox @conseguido 0x4
closeonkeypress
end
Terminamos con la segunda parte y la más interesante... explicando el #org @yalotienes es el que posee la dirección de la condición que hicimos al principio... ¿Recuerdan? bueno esa parte no tiene mucha relevancia pero si lo que tiene #org @tomaps aquí desde el principio también puede ser al final activamos la flag del menú pokémon con el setflag 0x828, seguido de este viene el givepokemon, el givepokemon si no sabes inglés es lo que te da el pokémon que elijas... el primer 0x es el que decide cual pokémon es OJO necesitas tener el número del pokémon en hexadecimal... si nos fijamos bien hay una calculadora que arriba de los números hay unas casillas "Hex" y "Dec" esta última significa los números normales, es decir, Pikachu es el número 25 en la pokédex de Kanto y la nacional entonces seleccionamos la casilla "Dec" y colocamos con los números 25 y sin borrar o cambiar nada vamos y seleccionamos la otra casilla la de "Hex" y les da el número 19 ese es el que usaremos el segundo 0x es el nivel del pokémon como la otra vez y como tienes que hacer siempre en el romhacking o en la mayoría de veces es usar números en hexadecimal y bueno F en hexadecimal es 15 o sea nuestro pikachu tendrá nivel 15 y el tercer 0x es del objeto que llevará, yo puse 1 eso quiere decir que nuestro Pikachu de nivel 15 tendrá una masterball de objeto... si no sabes muy bien de esto el XSE viene con unos archivos que son unos que dicen stdpoke, stditems, std y stdattack esos te ayudarán mucho y los otros tres 0x0 siempre OJO SIEMPRE deben quedarse en 0x0 es como decir relleno... después de eso reproduciremos la fanfare 13F que es si no mal recuerdo la de cuando atrapas un pokémon, normalmente se utiliza el 13E pero yo soy remenso y uso la 13F después el mensaje de recibido el closeonkeypress Repito no es obligatorio que utilices el msgbox Keepopen yo lo uso porque como ya dije soy remenso... después vendrían los stringes o los diálogos, textos llamalos como quiera eso ya es a su placer y bueno estos son los míos
1585954258413.png
Oigan si no ven la calculadora Hexadecima/decimal que estaba a la derecha no se preocupen es que no se veía una parte de un diálogo y pues para que lo vieran...
Captura.PNG
Dato extra 😁😝: Si no sabes como poner el texto de manera perfecta y eficaz seleccionas la línea donde quieres que se inserte el texto como se ve en la imagen, luego le das a Ctrl + T y se abre la pestaña esa que dice Ajustes de Línea en la casilla grande deben de poner el texto que quieras que digan y después que lo tengan le dan a convertir y por último insertar...

Ahora vamos a insertarle a un mini el script... pero claro antes debemos compilarlo para ello le das al engranaje que dirá compilar y si todo está bien como te enseñé no habría ningún problema al compilar pero claro cuando compilen les saldrá otra ventana donde abajo de ella están nuestra etiquetas dinámicas como el @inicio y claro esta es la que elegiremos seleccionamos los números que están al lado de la etiqueta @inicio en mi caso fue: 3FA2F3... bueno ahora copiamos esa dirección y nos preparamos para abrir nuestra rom con el Advance-Map, después que lo tenemos abierto seleccionamos la ciudad, pueblo, ruta o donde quieran poner al portador del script, yo usaré a pueblo paleta
1585955078676.png
Antes que la parte 1 o 2 vamos ha abrir nuestro mapa y vamos a donde dice ver eventos... ahora si:
Número 1: En pueblo paleta solo hay 3 personas y nosotros vamos a ponerla en 4
Número 2: Una vez hecho el primer paso vamos a darle a cambiar eventos, les debería salir una ventana así
1585955431767.png
Luego le damos a Ok y les saldrá unas direcciones, eligen la que quieran y luego van a re-point y les saldrá un Red en la esquina superior izquierda del mapa y ese lo ruedan a donde quieran luego seleccionan al Red y donde dice Script offset pegan la dirección que les dio el XSE, debería de verse así
1585955806435.png
Ahora tranquilamente guardan los cambios y se dirigen a abrir su emulador de GBA, cargan su rom y lo prueban... yo les dejaré unas fotos de como me fue a mi 😄
1585957003783.png
1585957590672.png

1585957331987.png
1586022328248.png
Bien por razones que desconozco no puedo añadir más de 10 imágenes, se habrán dado cuenta de que esa rom está modificada :3 y ps :p pero bueno, El script final sería este

Código:
#dynamic 0x0
#org @inicio
lock
faceplayer
checkflag 0x828
if 0x1 goto @yalotienes
msgbox @siono 0x5
compare lastresult 0x1
if 0x1 goto @tomaps
msgbox @pendej* 0x4
closeonkeypress
release
end

#org @yalotienes
msgbox @yakrnal 0x6
end

#org @tomaps
setflag 0x828
givepokemon 0x19 0xF 0x1 0x0 0x0 0x0
fanfare 0x13F
msgbox @conseguido 0x4
closeonkeypress
end

#org @pendej*
= Trainer: Si eres tonto, cuando te\ndecidas me avisas...

#org @siono
= Trainer: ¡Hola Chico!, ¿Quieres\neste Pikachu?

#org @yakrnal
= Trainer ¡Qué Tío! Tú ya tienes el\nMenú Pokémon Activado qué más\lquieres!!

#org @conseguido
= ¡[player] ha conseguido un Pikachu!
Créditos a: Nacho por una duda :3
Hay que decirles que esto es más que simplemente activar el menú pokémon que simplemente se activa con un: "Setflag 0x828" pero quería explicar algo más allá y matar dos pájaros de un tiro xD
Espero que les haya servido el tutorial espero que les guste y tal vez les enseñe a activar el menú pokédex... aunque es lo mismo :3.
SOY MAX MULTI MEJOR CONOCIDO COMO EL CAPO y recuerda: Cueste lo que cueste... El que persevera vence 😄🤪🤪
 
Última edición:

Nachoius

Caminante del cielo
me gusta esa motivacion, aunque sea un tutorial simple, Eso si pon imagenes pequeñas y porfavor ponla en spoiler si no queda todo muy desordenado. todo entra por la vista así que procura ordenar el tuto. Esto es mas que activar el menu, que solo se activa con la flag. Deja en claro eso tambien.
 

Max_Multi

RH inexperto
me gusta esa motivacion, aunque sea un tutorial simple, Eso si pon imagenes pequeñas y porfavor ponla en spoiler si no queda todo muy desordenado. todo entra por la vista así que procura ordenar el tuto. Esto es mas que activar el menu, que solo se activa con la flag. Deja en claro eso tambien.
Perfecto, gracias nacho ya lo edité... 😄
 

Dragonite

But where's your heart
Lamento criticar tu tutorial, pero NUNCA DEBES USAR #dynamic 0x0 y paso a explicar porqué:

En el RH binario, hay muchas cosas que pueden estar compuestas de FF, ya sea espacio libre, una paleta totalmente blanca, o bien lugar que deba estar en blanco a propósito (para delimitar algo, cumplir una función de "nop" o algo similar)

Por lo cual, algunos scripts pueden llegar a caber en dicho espacio y causarte problemas a nivel general que serán muy complejos de solucionar (sobre todo si no llevas respaldo de los scripts que has insertado, lo cual la mayoría no hace)

Siempre el #dynamic debe ser 0x800000 o más porque a partir de ahí, Game Freak ya no agregó nada crítico y puedes usar ese espacio libremente.

Si deseas usar un espacio en blanco en medio del ROM, te sugeriría que elimines el #dynamic y en vez de #org @inicio pongas #org (la dirección donde quieras poner el script) pero debes asegurarte de que hay suficiente espacio, o sobreescribirá todo a su paso.
 

Cero37

Baneado
Que buena guía... simple y cumple con el objetivo, decidí utilizar mejor 0x800000 puesto que en 0x0 me dió un error , dejando eso de un lado... Me sirvió y aclaro todas mis dudas ya que soy novato en scripts, sigue así bro mil gracias.
 
Arriba