viernes, 3 de abril de 2009

Todo sobre scripts

Lo que debes saber...

    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:

    Applymove, givepokemon, wildbattle, recibir un huevo y manejar flags

Los comandos requieren saber los códigos o índices de los pokemon, objetos y movimientos que están contenidos en la sección de códigos.

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)
end
SIEMPRE se comienza dirigiendo donde compilar:
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
checkflag 0x____
if 0x1 call 0x004253
msgbox 0x816D51A 0x6
applymovement 0x2 0x81A0841
waitmovement 0x0
setflag 0x____
end
Dirección del script
Comprobar flag
Si ya está activada dirigirse a otro script
"¡El barco se va ahora!" mensaje de texto
Comando Applymovement
Activar flag
Fin

Se escribe así:

script pokemon gba

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

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

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

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:
Luchar contra un Jigglipuff (00 27) de nivel 5
wildbattle 0x0027 0x05 0x0

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

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)

Se escribe así:

giveegg 0x

Encadenar scripts

Esto es simplemente un comando que ejecuta otro script:

Ejemplo:
Goto 0x6B20D2
Cuando llegue aquí se ejecutará el script que comienza en 6B20D2

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 esta 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 refierasValor- Puede ser 0 (falso) para desactivado ó 1 (verdadero) para activadoDirección- Camino al que te diriges si el valor de esa flag se cumple.

Ejemplo:
'-----------------------
#org 0x15FC29
faceplayer
checkflag 0x800
if 0x1 call 0x004253
givepokemon 0x9B 0x5 0x0 0x0 0x0 0x0
setflag 0x800

El mini que ejecuta el script te mira a la cara.
Comprobar la flag 800
Si la flag 800 ya está activada, ir al script 004253
para que no se repita. Si no lo está, continúa.
Recibir un pokemon
Activarse la flag 800

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.

No hay comentarios: