Documente Academic
Documente Profesional
Documente Cultură
WIKI HACKROM
-----------------------------------------------------------------------------------
----------------------------------------------------
Abre el Advance Map y ve a Options > Choose Script Editor. Luego ve a la carpeta
donde tengas el XSE y haz doble click. Te aparecerá un mensajito, clickea en "Yes"
(o "Sí").
Sencillo, ¿no? Hasta el más novato de los novatos sabría hacerlo. Incluso Hitler.
Ahora viene la parte que me gusta, la parte de nuestro querido XSE, un
programa imprescindible para el rom hacking. Vamos a abrir nuestro ROM con el XSE.
Archivo > Abrir > Selecciona tu ROM (Forma más rápida: Ctrl + O > Selecciona tu
ROM)
Bien, ahora ya tenemos asignado el XSE al Advance Map y abierto nuestro ROM con
XSE. En el capítulo 1 enseñaré como crear un script, cómo compilarlo, y algunos
comandos básicos. Con lo que vamos ahora será con...
La creación de un script
Bien, comencemos.
Código:
#dynamic 0x800000
¿Y qué es compilar?
Código:
#dynamic 0x800000 #org @inicio
Vaya, ahora hemos añadido una cosa desconocida para mí, se llama #org @inicio. ¿Qué
significa?
Eso es una cosa que deberás colocar también en TODOS LOS SCRIPTS. Sin el #dynamic y
el #org @inicio no funcionará tu script, pero repito que el XSE te avisará.
Bueno, yo lo he puesto así porque es la costumbre, pero sin embargo puedes poner lo
que tu quieras, siempre y cuando sea UNA SOLA PALABRA
Cita:
Iniciado por Ejemplos
#org @inicio
#org @hola
#org @meaburro
¿Ha quedado claro? Una sola palabra, repito, una sola palabra. ¿Me estoy repitiendo
mucho? Lo siento, pero este suele ser un fallo muy común.
Estos dos comandos son opcionales, y no tienes por qué ponerlos, pero dependiendo
del script sí deben ponerse (para que quede bien). En ningún caso es obligatorio
para que funcione el script, pero sí para que no dé algunos errores...
Código:
lock: se usa para bloquear un mini (si en el Advance Map tenías puesto que
estuviese mirando alrededor, sin este comando seguirá mirando al mismo tiempo que
habla contigo)
faceplayer: se usa para que, al hablar con un mini, éste te mire a la cara (si le
tenías puesto que estuviese mirando hacia arriba y le hablas por abajo, se girará
para mirarte)
Bien, ahora que creo que eso ya ha quedado aclarado (no os quedéis con la duda,
preguntadme si hay algo que no entendéis, no me molestáis, al contrario, me gusta
la participación), procederemos con la explicación del conocido msgbox.
Código:
Muy bien, el msgbox es bien fácil de utilizar... sin embargo, ahí hay algo que
falta, pero ¡no te preocupes! ¡Cada cosa a su tiempo! Para empezar, procederé a
explicar ese "0x6".
El 0x6 es uno de los parámetros del msgbox. Ahora procederé a explicar todos y cada
uno de ellos.
0x0: Mensaje de cuando te dan un objeto (se usa para el giveitem, ya lo explicaré)
0x1: Este es parecido al 0x0, pero es cuando te encuentras una de esas Pokéball
tiradas por el suelo que contienen algo.
0x2: Este es igual al 0x6, la única diferencia es que este tiene el faceplayer
"incluído". Es decir, el 0x6 es un mensaje normal y corriente, pero si usas el 0x2
no necesitarás poner el faceplayer, ya que el mini te mirará automáticamente.
0x3: Este se usa para un script de un cartel (por ejemplo, en el cartel donde pone
"Casa de <<jugador>>", se usaría un msgbox 0x3)
0x4: Éste creo que abre una msgbox normal, pero que no se cierra hasta que pulses A
0x5: Este es fácil de hacer, abre un YES/NO box (ya lo explicaremos más adelante,
no será difícil de aprender)
0x6: Este es uno de los más usados, es como el 0x2 pero sin el faceplayer incluído.
Es una caja de texto normal.
0xA: Este se usa sólo en Pokémon Esmeralda, y es para ejecutar una llamada del
Pokénavegador.
Código:
¿Qué es lo que falta? ¿No lo notas? Bueno, hemos puesto @frase, pero... ¿dónde está
la frase que queremos mostrar? Muy simple.
Código:
#dynamic 0x800000 #org @inicio lock faceplayer msgbox @frase 0x6 #org @frase Aquí
iría nuestro texto. ¿Cómo lo introducimos? Muuuuy fácil, pulsa Ctrl + T y se te
abrirá un cuadro donde podrás escribir.
Sí, sólo nos faltaba eso. Definir la frase que queríamos poner. Recuerda pulsar
Ctrl + T para escribir tu texto, del otro modo también es posible, pero muy
difícil.
Bueno, hasta ahora ha sido muy sencillo nuestro primer script, ¿no? Y supongo que
me habré explicado bien. Ahora vamos a finallizar nuestro script.
Código:
release end
Como puedes ver, son comandos sencillos. Aquí la explicación.
release: permite a los minis volver a moverse (debes ponerlo SÓLO si pusiste el
comando lock, sino gastarás bytes inútilmente)
end: su nombre lo indica todo. "Final". Cierra el script, se acaba todo. Se pone
SIEMPRE.
Aquí tenéis una muestra de lo que sería un script básico (al lado de cada comando
(los comandos son msgbox, release, end, etc.) he puesto un ' y un comentario,
después de ' lo que se ponga no se incluye en el script, es para comentar)
Código:
#dynamic 0x800000 ' Dynamic busca una dirección a partir de 0x800000. #org @inicio
' El puntero inicial lock 'Bloquea el mini faceplayer ' Mira al protagonista msgbox
@frase 0x6 ' Abre una caja de mensaje y muestra lo que hayamos puesto en @frase
release ' Sólo si se puso lock, para permitir que el mini se siga moviendo end '
Finaliza el script #org @frase ' Aquí está el puntero de la frase = Ciro: ¡Guau,
aquí hay mucha fruta,\nincluso hay 5 manzanas!\lCreo que me comeré una.\pMamá:
Claro hijo, cómete las que\nquieras. ' Y ésta es la tan ansiada frase
Bien. ¿Veis en el XSE un icono de dos tuercas unidas? Sí, sí, ese icono:
Pues vale, hacemos click en él, y se nos abrirá una ventanita nueva.
Muy bien, pues lo que está remarcado en azul es el offset principal, el offset que
contiene los datos de todo el script. Luego haces click en "Copiar" (SIEMPRE con el
primer puntero marcado de azulito), y luego a "Cerrar" (habremos terminado con el
XSE)
A continuación, vais al Advance Map, y en "Ver eventos" hacéis click encima del
mini. En la barra de la derecha, buscad donde dice "Script offset" y lo sustituís
por lo que hayáis copiado antes (manteniendo siempre el $).
-----------------------------------------------------------------------------------
-------------------------------------------------
Código:
#dynamic 0x800000 #org @inicio lock faceplayer msgbox @frase 0x6 givepokemon 0x0
0x0 0x0 0x0 0x0 0x0 release end #org @frase = Aquí iría nuestro\nquerido texto
givepokemon: Muy simple. Te regala un Pokémon. El que quieras, al nivel que quieras
y con el objeto que quieras.
El primer 0x0: Número del Pokémon que quieras recibir. Tiene que ser el nº de la
Pokédex nacional y ha de estar en hex (el XSE tiene calculadora)
Segundo 0x0: Nivel del Pokémon que quieras recibir, también en hex.
Tercer 0x0: Pulsa Ctrl + N para abrir una nueva pestaña en el XSE, y pulsa Ctrl +
O. Luego ve a la carpeta donde tengas el XSE, y abre el archivo "stditems". Ahí
tienes los números de los objetos.
¿Y qué hago yo con todos esos códigos que no sé para que sirven? Ah, pues eso es
muy sencillo.
Pulsa Ctrl + F y en "Buscar" pones el nombre (en inglés y, si son varias palabras,
juntarlas, ejemplo: Restura todo = FULLRESTORE), luego pulsas en "Buscar
siguiente".
Copiamos lo que va después del 0x, en mi caso sería 13, es el número del objeto.
Volvemos al givepokemon y en el tercer 0x0, el del objeto, pegamos ese número
(0x13)
Cuarto, quinto y sexto 0x0: Esos serán siempre 0x0, no los toques.
Bien, como con todo script, hay que poner un ejemplo. Supongamos que queremos
recibir un Pidgey al nivel 12 con un Restaura todo equipado.
Código:
#dynamic 0x800000 #org @inicio lock faceplayer msgbox @frase 0x6 givepokemon 0x10
0xC 0x13 0x0 0x0 0x0 release end #org @frase = Aquí iría nuestro\nquerido texto
Bueno, y aquí terminamos con el givepokemon. Ahora vamos con otros comandos que son
mucho más sencillos.
NOTA IMPORTANTE: Al final de tu script, debes activar una flag (está explicado
abajo, tú ponlo) para que el Pokémon se vea en el menú. En Ruby debes usar setflag
0x800, en FR setflag 0x828, en Esmeralda setflag 0x860.
¿Recuerdas el archivo que abrimos antes, donde el restaura todo era el número 13?
Muy bien, todos esos números los usaremos también para el giveitem.
Código:
#dynamic 0x800000 #org @inicio lock faceplayer giveitem 0x0 0x0 0x0 release end
#org @frase = Aquí iría nuestro\nquerido texto
Bien, antes de explicar nada del giveitem quiero preguntaros algo. ¿No habéis
notado algo distinto en el script? Sí, no he puesto el msgbox. ¿Recuerdas los tipos
de msgbox que expliqué antes? Pues eso usaremos en el giveitem.
Primer 0x0: Aquí introduce el número del objeto a recibir, ya expliqué antes como
mirarlo.
Tercer 0x0: Tipo de mensaje. Debes poner 0x1 si es para encontrar una Pokéball
tirada por ahí y 0x0 si es alguien el que te da el objeto.
Código:
#dynamic 0x800000 #org @inicio lock faceplayer msgbox @frase 0x6 giveegg 0x0
release end #org @frase = Aquí iría nuestro\nquerido texto
"Y qué corto es", dirás tú. Pues sí, es un comando muy corto, de un único y simple
parámetro, el mismo que el primer 0x0 del givepokemon.
Primer y único 0x0: Número de la Pokédex nacional en hex del Pokémon a recibir en
huevo.
Código:
#dynamic 0x800000 #org @inicio lock faceplayer msgbox @frase 0x6 givemoney 0x0 0x0
release end #org @frase = Aquí iría nuestro\nquerido texto
Si alguien se pensaba que tenía algo que ver con el dinero, estaba equivocado.
Bueno, en realidad, sí tiene que ver. Se refiere a las fichas del casino, las
cuales se compran con dinero, ¿no?
Código:
#dynamic 0x800000 #org @inicio lock faceplayer msgbox @frase 0x6 givecoins 0x0
release end #org @frase = Aquí iría nuestro\nquerido texto
Código:
#dynamic 0x800000 #org @inicio lock faceplayer msgbox @frase 0x6 removecoins 0x0
release end #org @frase = Aquí iría nuestro\nquerido texto
Principales Editores
Comentarios (40)
Categorías
EXPLORAR PRODUCTOS
Fandom
Gamepedia
D&D Beyond
Muthead
Futhead
SÍGUENOS
VISTA GENERAL
Acerca de
Empleo
Prensa
Contactar
Términos de uso
Política de privacidad
Comunidad Central
Soporte
Ayuda
PUBLICIDAD
Kit de medios
APPS DE FANDOM
D&D Beyond