Registrarse

[pokeruby - pokeemerald] Mover el textbox

Samu

Miembro insignia
Miembro insignia
Bueno, os voy a explicar como mover el textbox de los scripts a la posición que queráis dentro del eje y (arriba-abajo). Es bastante sencillo la verdad, pero supongo que este tipo de cosas son las que faltan para que la gente se anime con decomp.
PD: Existen formas bastante más correctas de hacer esto en decomp, pero este método es bastante rápido y me daba pereza mirarme todas las funciones relacionadas con los msgbox.

Para poder mover el textbox a la posición que queramos en un script (en el eje y) vamos a crear una nueva función a la que llamaremos "SetFieldMessageBoxYPosition". Esta función la podéis crear en cualquier archivo, pero lo normal y lo más lógico es que sea en "src/field_message_box.c". En cualquier caso, es importante que en el fichero que vayáis a crear el método os aseguréis de que está incluido "gpu_regs.h", en caso contrario os dirigís a la parte superior del fichero y añadís:
Código:
#include "gpu_regs.h"

El código de la función es el siguiente:
Código:
void SetMessageBoxYPosition(u16 pos_y)
{
    SetGpuReg(REG_OFFSET_BG0VOFS, pos_y);
}

Por último es necesario que declaréis la función en "include/field_message_box.h" añadiendo la siguiente línea:
Código:
void SetMessageBoxYPosition(u16 pos_y);

Diría que es bastante obvio, pero os pongo un ejemplo de uso de esta función:
Código:
---- //Includes del fichero
#include "field_message_box.h"

---//código anterior
SetMessageBoxYPostion(0x40); //Posiciona el messagebox en la mitad de la pantalla
--//código posterior
El resultado obtenido sería algo similar a esto:




Supongo que habrá personas interesadas en usar esto directamente desde un script, por lo que voy a ser bueno y os dejo una versión fácil de llamar desde un script.
Código:
void SetMessageBoxYPositionFromScript()
{
    SetGpuReg(REG_OFFSET_BG0VOFS, VarGet(VAR_RESULT));
}
Para llamarlo desde un script tendréis que usar el comando callnative y almacenar en la variable 0x800D (VAR_RESULT) la posición del textbox.
Código:
----
setvar VAR_RESULT 0x40
callnative SetMessageBoxYPositionFromScript
----
 
Arriba