Todo sobre scripts

Todo sobre scripts

De Wahackpedia

beta2_html_m3ea62b05.png
Lo que debes saber...
Base

Ruby / FR

Este tutorial está escrita para que pueda servir de iniciación en los scripts, así que mezcla una pequeña introducción y algunos comandos comunes. Esta guía está separada en tres partes para que sea más fácil manejarla:

  1. Diccionario, con la explicación de las palabras básicas
  2. Empezar, que explica donde escribir el script y que escribir al principio del script.
  3. Comandos, que dice como escribir los comandos que más dudas originan: aplicar movimiento, dar pokemon, batalla salvaje, recibir un huevo y manejar flags

Para usar los comandos es necesario conocer los códigos o índices de los pokemon, objetos y movimientos, que se pueden encontrar en la página Códigos.

Contenido

Diccionario

Comandos
Son simples acciones que se ejecutan en el juego cuando haces funcionar el  script donde estos comandos están escritos. Para conocerlos lee el archivo Commands.html que hay en tu carpeta donde está el EliteMap o consulta la traducción de este archivo que hizo Baro para Wah.
Los comandos se escriben en hexadecimal en la rom.
Script
Está formado por comandos. Lo puedes ejecutar de muchas maneras distintas: como un evento, como una comportamiento que le das a un bloque, como un script de mapa, etc.
Evento
En los mapeados es lo que ejecuta un script.
Puede ser un muñeco(people, le pinchas y se ejecuta el script), un poste (signpost, le pinchas y se ejecuta el script), una gatillo (script, solo con pasar encima se ejecuta el script) o una salida (warp, pasas por encima y te lleva a otro lugar)puedes ejecutar el mismo script desde muchos eventos.Diccionario Hex
Byte
Dos números hexadecimales (0123456789ABCDEF) por ejemplo 6C, la rom está escrita con bytes, en total tiene FF FF FF bytes desde el 00 00 00 hasta el FF FF FF.
Dirección (Offset)
En el rom cada byte va numerado, así es la dirección es la posición del primer byte de un script, texto, sprite, casillero, paleta, etc.
Flag
Son dos bytes por ejemplo 20 4D, que actúan como un interruptor guardando un número. Puedes hacer que al hablar con cierta persona el interruptor se encienda (setflag 0x204C) y que otra persona cuando ese interruptor esté encendido (checkflag 0x204C 0x1) te dé un pokemon (givepokemon).

Empezar

Y tras haber leído esto ya tendréis una idea de cómo empezar, lo más “fácil” de usar es XSE.

Para hacer un script tienes, básicamente, que escribir una serie de comandos ordenados en una parte del rom, que puedes ser en una parte vacía o sobre un script ya existente (algo más fácil):

Sobre otro script:

  1. Abre XSE y carga tu rom.
  2. Carga un script ya existente para editar o busca un espacio vacío (lleno de FF) para hacer tu script.

Iniciar el script

#org 0x(dirección)     'SIEMPRE se comienza dirigiendo donde compilar:
end                    'Y se acaba con un comando de cierre (return o end)

El comando de cierre es el que indica que el script ha acabado, si en vez de poner ‘end’, pones ‘return’; el juego volverá al script que había llamado al que contenía el return, siempre que lo hubiese llamado con ‘call’ y no con ‘goto’

Comandos

Applymovement

Sirve para animar los minisprites en el juego.

Es simple: tienes que cargar una serie de movimientos para un minisprite, esta serie la tienes que guardar aparte con thingy.

  • Ejemplo:
#org 0x6b1010				' Dirección del script
checkflag 0x____			' Comprobar flag
if 0x1 call 0x004253			' Si ya está activada, dirigirse a otro script 
msgbox 0x816D51A 0x6			' "¡El barco se va ahora!" mensaje de texto
applymovement 0x2 0x81A0841		' Comando Applymovement
waitmovement 0x0			' Esperar que acabe el movimiento para continuar
setflag 0x____				' Activar flag
end					' Fin

Se escribe así:

c178d079ba9pg.png

applymovement 0xMinisprite 0xDirección

Esto significaría animar al minisprite 2 con el movimiento que empieza en 081A0841

¿El minisprite 2? Para saber el nº de mini en AM, mira la imagen de la derecha

En la dirección que hayas puesto tienes que poner los bytes del movimiento, por orden y en hexadecimal.

Para hacerlo con THINGY sigue estos pasos: En la ventana de escribir texto haz como si pusieses una arroba (alt+cntrol+2), te saldrá un cuadrito blanco en el que tienes q escribir por orden los bytes del movimiento. Pulsa intro y el byte se verá ya escrito en la rom.

Notas:

  1. Si pones FF como nº de mini, el movimiento lo realizará el protagonista.
  2. En la serie de movimientos que insertas debes indicar el final con el byte FE
  3. Para saber los bytes de cada movimiento descárgate la tabla de thingy

Givepokemon

Givepokemon sirve para que se te añada el pokemon que quieras a tu equipo

Tienes que especificar el índice (número del pokemon), nivel y si lleva algún objeto.

Ejemplo:

givepokemon 0x0177 0x1E 0x118 0x0 0x0 0x0                'Recibes Gorebyss, nivel 30 y lleva Meteorito.</pre>

Se escribe así: givepokemon 0xPk 0xNivel 0xObjeto 0x0 0x0 0x0

Pk- Los dos bytes del pokemon que quieras

Nivel- El nivel en hexadecimal del pokemon que te dan

Objeto- Los dos bytes del objeto que te lleva el pokemon, si no lleva ninguno sólo pon 0

Wildbattle

Wildbattle sirve para que el pokemon que quieras comience un combate.

En realidad más que un comando es la combinación de varios comandos, pero para escribirlo puedes usar esta fórmula simplificada. Ejemplo:

wildbattle 0x0027 0x05 0x0             'Luchar contra un Jigglipuff (00 27) de nivel 5

Se escribe así:

wildbattle 0xPk 0xNivel 0xEscenario

Pk- Los dos bytes del pokemon que quieras combatir Nivel- El nivel en hexadecimal del pokemon con el que vas a luchar Escenario- El byte del escenario en el que combates:0 Normal 1 Fuego (Groundon) 2 Hierba 3 Remolino

Recibir un huevo

Giveegg sirve para que un huevo del pokemon que quieras se añada a tu equipo.

Ejemplo:

#binary 7A E7 00         'Recibir un huevo de Phanpy (00 E7)</pre>

Se escribe así:

giveegg 0x

Encadenar scripts

Goto y call son simplemente un comandos que ejecutan otro script:

Ejemplo:

goto 0x6B20D2            'Cuando llegue aquí se ejecutará el script que comienza en 6B20D2</pre>

Se puede escribir:

goto 0xDirecciónDirección- El script que comenzará. Desde ese script no puedes volver a este

call 0xDirecciónDirección- El script que comenzará. Si ese script acaba en un ‘return’, entonces al llegar allí continuarás el script original donde lo habías dejado.

Usar flags

Se necesita insertar un comando que compruebe si la flag está o no activada, para que no se repitan los mismos scripts una y otra vez.

Se escribe:

  • setflag 0xFlag', para activar la flag
  • clearflag 0xFlag, para desactivar la flag
  • checkflag 0xFlag
  • if 0xValor goto 0xDirección, comprobar la flag para elegir camino

Flag- La flag a la que te refieras Valor- Puede ser 0 (falso) para desactivado ó 1 (verdadero) para activado Dirección- Camino al que te diriges si el valor de esa flag se cumple.

Ejemplo:

#org 0x15FC29		
faceplayer				' El mini que ejecuta el script te mira a la cara.	
checkflag 0x800				' Comprobar la flag 800	
if 0x1 call 0x004253			' Si la flag 800 ya está activada, ir al script 004253
					' para que no se repita. Si no está activada, continúa. 
givepokemon 0x9B 0x5 0x0 0x0 0x0 0x0	' Recibir un pokemon
setflag 0x800				' Activarse la flag 800</pre>

Este script hace que te den un pokemon solo una vez. Primero comprueba que la flag esté desactivada. Si lo está te da el Pokémon y activa la flag para que cuando se vuelva a ejecutar compruebe que está activada y te mande a otra dirección.

Dudas

helpc.png