Rubycode es el lenguage que utiliza Scripted y sus precursores Rubikon y Diamond Cutter. Entender este lenguaje es el primer paso para poder hacer un buen script, así que lo he traducido a español. Entre paréntesis está la traducción el nombre del comando, aunque tienes que usar el nombre en inglés.
Debajo del nombre aparece su formato. Luego su descripción y después un ejemplo.
Ahora que sabeis que significan, un consejo: leed los scripts como si fueran textos.
Por ejemplo:
#org 0x800000
faceplayer
message 0x800100
boxset 0x06
end
“Empieza a escribir en 0x800000, encara el sprite al jugador y muestra el mensaje escrito en 800100, según el parámetro 0x06 (cerrar al pulsar A)
Comandos de RubiKode
Está altamente recomendado escribir los comandos en minúsculas y cualquier cosa "#definida" en mayúsculas.
Comandos de preprograma
Son comandos que no se compilan, pero que coordinan el funcionamiento del programa
#include (#incluye)
#include nombredelarchivo
Incluye otro archivo en el proceso de compilación. Las comillas se quitan automáticamente.
Ejemplo:
#include "misconfiguraciones.rbh"
#include stdpoke.rbh
#define (#define)
#define nombre_simbolo índice_número Te permite definir símbolos para reemplazar números. Solo se permiten números pero pueden ser de cualquier tamaño de byte a dword. Es recomendable usar mayúsculas para el nombre del símbolo. Ejemplo:
#define MASTERBALL 1 'Entonces, cada vez que
escribas MASTERBALL, Scripted
compilará un “1” (cabe añadir que la
masterball es el primer objeto de la
lista)
#org
Indica un cursor para el compilador, a un sitio específico del rom (indica donde empieza a escribir el guión)
Ejemplo:
#org 0x605040 'continúa (o empieza) a
escribir en el offset 0x605040
#autobank (#autobanco)
#autobank on #autobank off
Algunos prefieren hacerlo manualmente, otros no. Autobank inserta en los punteros un 08 automáticamente. Solo #org no está afectado )porque, como archivo, el rom empieza en el offset 0x000000)
Autobank, por defecto (porque se incluye #autobank on en std.rbh) está activo, asíq eu no te preocupes por el.
Ejemplo:
#autobank on
message 0x604020 'se vuelve 0F00 08604020
#autobank off
message 0x604020 'se vuelve 0F00 00604020,
Lo cual no es bueno.
#raw
Aliados: #binary #raw aLot
Inserta una carga de datos raw en el ROM. Puede ser usado para comandos defectuosos o no soportados así como para los datos de movimiento. Para determinar que tipo de datos usar, escribelo antes de los números. Por defecto es byte. Puedes usar los prefijos hexadecimales 0x o &H, pero no son necesarios
- Los tipos de datos pueden ser:
- byte (tambien char)
- word (tambien int o integer)
- dword (tambien long)
- pointer (tambien ptr)
Ejemplo:
#raw 12 69 word 1234 dword
12345678 pointer 0xABCDEF
Este ejemplo insertaría dos bytes, un word, un dword y un puntero. Ten en cuenta que el puntero es afectado por Autobank y Dword no
=
= texto
Inserta un texto basado en una tabla hecha por los creadores de Elitemap
Ejemplo:
= ¡Hola, soy tan feliz y estúpido!
\feliz feliz feliz...
Comandos generales
nop (00, 01) (no)
nop
Absolutamente NADA.
end (02) (fin)
end
Termina la ejecución del script.
return (03) (volver)
return
Vuelve a donde has sido llamado (call o #org). Como el sistema GOSUB...RETURN de Basic
call (04) (llamar)
call puntero
Llama a otro script. Puedes volver a ahí mediante return.
Ejemplo:
call JUMP_BAGISFULL
goto (05) (ir a)
goto punteroobjetivo
Continúa la ejecución desde el putnero objetivo. Return no está permitido.
if (06) (si)
if valorcondicional acción punteroobjetivo
Si la última comparación devolvió un valor concreto, saltar o ir a otro script. Las acciones pueden ser goto o call. Si no se especifica, se presume call por loq ue return puede ser usado.
Los valores condicionales son: 00 – Menor/falso (<<), tb FALSE 01 – Igual/verdadero (==), tb TRUE 02 - Mayor (>>) 03 – Menor o igual (>=) 04 – Mayor o igual (<=) 05 – Desigual (!=)
Ejemplo:
compare LASTRESULT 0x4
if TRUE goto JUMP_BAGISFULL
boxset (09) (determinar la caja)
Aliases: callstd
boxset valor
Llama a una función standart. En general se usa para mostrar la caja de diálogo con los parámetros 0x04 o 0x06, o usar 0x05 para preguntas de si/no (la cual, además, mete un valor en LASTRESULT.
Ejemplo:
message 0x604000 'texto normal
boxset 4 'no cerrarse despues de pulsar A
message 0x604020 'pregunta
boxset BOXSET_YESNO '(= 0x05)
if NO 0x600020 'ir a la rama "no"
'la rama “si” va aquí
...
end
#org 0x600020
'la rama “no” va aquí
...
end
message (0F) (mensaje)
message punterodelmensaje
Prepara un puntero para usar por comandos como boxset. Se usa para los textos.
Ejemplo:
message 0x604020
boxset 0x06 'cerrar al puslar A
setvar (16) (determinar variable)
Alias: setvar1
setvar indicevariable numerovalor
Determina una variable a un valor concreto.
Analogo a A = 4 de Basic
copyvar (19) (copiar variable)
Alias: setvar2
copyvar indicevariable indicevariable
Copia el valor de una variable a otra.
Analogo al A = B de Basic.
copyvarifnotzero (1A) (copiar variable si no es 0)
Alias: setvar3
copyvarifnotzero variable variable
Copia el valor de una variable a otra, si esta no tiene como valor 0.
Analogo al IF B > 0 THEN A = B de Basic.
compare (21) (comparar)
compare variable valor
Compara una variable con un valor. Usado en conjunción con if y mayormente.
con LASTRESULT como valor.
Compares a variable with a value. Used in conjunction with if and mostly with LASTRESULT as a parameter.
Ejemplo:
compare LASTRESULT 0x4
if TRUE JUMP_BAGISFULL
special (25) (especial)
special indicedeevento
Activa un evento especial
Ejemplo:
special SPECIAL_WALLYCATCH 'Reproduce la película de
Wally cazando al Ralts
*NOTA DE BARO: estaría bien probar los especiales, quizás encontrais algo que os guste.
special2 (26) (especial2)
special2 variable indice
¿Comprueba cosas especiales? Se usa en revanchas y otras situaciones especiales.
pause (28) (pausa)
pause itiempo
setflag (29) (poner bandera)
setflag numeroflag
Activa un flag.
Ejemplo:
setflag 0x64
checkflag 0x64
compare LASTRESULT YES
if 1 0x600020 'ir a la rama “si”
'rama “no” va aquí
...
end
#org 0x600020
'rama “si” va aquí
...
end
clearflag (2A) (limpiar bandera)
clearflag numero flag
Desactiva un flag.
checkflag (2B) (comprueba flag)
checkflag numeroflag
comprueba si el flag está activado (ver ejemplo en setflag)
cry (30) (grito)
cry indiceespecies
Reproduce el grito de la especie indicada.
Ejemplo:
cry PKMN_PIKACHU
fanfare (31) (himno)
fanfare indicecanción
Reproduce una canción de fondo.
waitfanfare (32) (espera himno)
waitfanfare
Espera por el sonido de fanfare para acabar.
playsound (33) (tocar canción)
playsound indicecanción
Cambia abruptamente a otra canción.
fadedefault (35) (aparece por defecto)
fadedefault
Suavemente cambia a la canción por defecto del mapa
fadesound (36) (aparece canción)
fadesound indicecanción
Suavemente cambia a la canción con el indice indicado.
fadeout (37) (desaparece)
fadeout
Suavemente apaga la canción sonando
fadein (38) (aparece)
fadein
Suavemente aparece la canción que estaba sonando antes.
warp (39) (teletransporte)
warp bancodelmapa numerodelnivel numerodelasalida
checkitem (47) (comprobar objeto)
checkitem indiceobjeto
Comprueba si el jugador lleva como mínimo una unidad del objeto mencionado.
Ejemplo:
checkitem ITEM_MAXPOTION
compare LASTRESULT YES
if TRUE 0x604020
applymovement (4F) (aplicar movimiento)
applymovement Spriteafectado punterodelmovimiento
Aplica el movimiento descrito en el puntero.
Ejemplo:
applymovement
0x5 0x604020
pause 0x0 'espera a que el movimiento se complete
movesprite (57) (mueve minisprite)
movesprite indice ejeX ejeY
faceplayer (5A) (encarar sprite)
faceplayer
Gira el minisprite hacia el jugador
trainerbattle (5C) (batalla de entrenador)
trainerbattle tipo batalla punterodeltextointro
punterodeltextovencido
Empieza un combate de entrenador
El tipo es 0x00 para batallas normales, 0x04 para 2 contra 2 y 0x05 para revanchas. Para batallas 2 contra 2 o para gimnasios, añade otro parámetro, punteroespecial.
Las batallas 2-2 requieren punteroespecial para mostrar un mensaje si el jugador solo tiene un pokémon.
Los líderes de gimnasio te darán regalos como medallas en la continuación de la batalla. Mira tu lider favorito en scripted para ver un ejemplo.
Ejemplo:
trainerbattle 0 TEXTOINTRO TEXTOALVENCER
message TEXTO DE DESPUES
boxset 4
jingle (69) (sonidillo)
jingle
Se supone que reproduce un sonido, pero no hace nada.
lock (6A) (bloquear)
lock
Bloquea el movimiento del sprite que llama
release (6C) (liberar)
release
Devuelve el movimiento bloqueado con lock
multi (6F) (multiple)
multi posizquierda posarriba indicelista Cancelar
Pone una lista de opciones para que escoja el jugador. Las opciones dependen de la lista (indicelista). Cancelar indica si el último elemento es Cancelar o no. (si sí, 0x01, si no, 0x00) La respuesta se almacena en LASTRESULT
Ejemplo:
message 0x604020 '”que ciudad te gusta más?”
choice 2 2 13 0 'las opciones son littlerrot,
slateport y lilycove
compare LASTRESULT 1
if 0 0x600030 'rama de littleroot
if 1 0x600050 'rama de slateport
'aquí va la rama de lilycove.
No se necesita “il lastresult 3”
givepokemon (79) (dar pokémon)
givepokemon indiceespecie nivel Item
Le da al jugador un pokémon de un determinado nivel y con un determinado objeto, si item > 0.
pokemart (86) (poketienda)
pokemart punterolistadeobjetos
Inicia el sistema de compra de pokemart con los objetos/precios que se encuentran en punterolistadeobjetos.
fadescreen (97) (fundido en negro)
fadescreen in/out
Fundido en negro hacia dentro/fuera
checkgender (A0) (comprueba sexo)
checkgender
Pone un 1 en LASTRESULT si el jugador es una chica o 0 si es un chico.
setmaptile (A2) (poner bloque en el mapa)
setmaptile ejeX ejeY numerodebloque movpermitido
Pone un tile en el mapa. Tienes que refrescar de algún modo esa parte, alejando la vista y volviendo, o llamar este comando desde el script del nivel.
setweather (A4) (determinar clima)
setweather valorclima
Prepara un clima para ser activado por doweather
Los valores son
00 - Nada
03 - Lluvia
04 – copos de nieve (Breve)
05 - Tormenta
06 - Niebla
07 – Ceniza
08 – Tormenta arena
09 – Otra niebla
0A – niebla clara
0B – Oscuridad (nocturno!!)
0C - Sofoco
0D – Tormenta 2
0E - Submarino
0F - Nada
doweather (A5) (hacer clima)
doweather
Activa el clima preparado por setweather.
Construídos (comandos complejos)
wildbattle (batalla salvaje)
wildbattle indiceespecie nivel estilo
Originalmente un verdadero comando, ahora un construído.
El estilo puede ser
0 normal
1 movimiento en zigzag, tierra
2 movimiento en zigzag, hierba
3 movimiento en torbellino
Ejemplo:
wildbattle 0x196 70 3 'lucha
contra un RAYQUAZA NIVEL 70!
giveitem (dar objeto)
giveitem objeto cantidad
Da un objeto
Este construído combina dos setvarifnotzero
Ejemplo:
giveitem ITEM_SODAPOP 1
Comandos chungos
jumpstd (08) (salta std)
jumpstd bValue
Salta a una función estándar. Del estilo de BoxSet, pero con una lógica ligeramente diferente, como comparar en Basic's GOSUB con GOTO.
comparevars (1B)
(compara variables)
comparevars variable variable
comparevartobyte (1C)
(compara variable con byte)
comparevartobyte variable valorbyte
comparevartofarbyte (1D)
(compara variable con byte lejano)
comparevartofarbyte variable puntero
Byte lejano = byte localizado en un puntero.
comparefarbytetovar (1E) (
compara byte lejano con variable)
comparefarbytetovar puntero variable
Compares a byte at some location with a variable.
comparefarbytetobyte (1F)
(compara byte lejano con byte)
comparefarbytetobyte puntero valorbyte
Compares a byte at some location with a byte value.
comparefarbytetofarbyte (20)
(compara byte lejano con byte lejano)
comparefarbytetofarbyte puntero puntero
Variables predefinidas y constantes en STD.RBH
B_YES, B_NO, B_TRUE, B_FALSE, B_BOY y B_GIRL
(SI, NO, VERDADERO, FALSO, CHICO, CHICA)
Me gustan las booleanas (kyoufu Kawa). Son fáciles de #definir.
B_<<, B_==, B_>>, B_<=, B_>= y B_!=
Como B_TRUE y B_FALSE arriba, pero con todo el poder lógico para los más expertos.
BOXSET_DONTCLOSE, BOXSET_YESNO y BOXSET_NORMAL
Parámetros de Boxset más normales.
MENU_PARTY, MENU_POKEDEX y MENU_NAVIGATOR
Parámetros de Setflag para cada uno d elos tres elementos del menu (equipo, pokedex y navegador). Se peude usar, por ejemplo, para que el TEAM te robe tu material.
0x800D – LASTRESULT (ultimo resultado)
Casi siempre que algo se comprueba, la información se mete en esta variable: LASTRESULT.
SPRITEMOVE_INDEX
SPRITEMOVE_NEWXPOS
SPRITEMOVE_NEWYPOS
Combinados con Setvar, los mueves a cierta posición en el mapa. Se usa en littleroot para mover a la madre dependiendo del sexo del jugador.
APPLYMOVE_PLAYER (aplicarmovimiento al jugador)
Porque tiene más sentido que “0xFF” en applymovement. Ponlo como el indice del sprite para que el afectado sea el jugador. Aunque es más corto el típico "0xFF"
JUMP_BAGISFULL (saltar a “si la mochila está llena”)
No hay comentarios:
Publicar un comentario