M
Miembro eliminado 28262
Invitado
HEY! Qué pedo cachorros?!
En esta ocasión os traigo un tutorial muy bonico para crear Infinitas Cajas de múltiple selección con desplazamiento vertical . Este sistema está creado por FBI, podeis ver el post oficial haciendo click aquí.
PRÓLOGO
Esta rutina, se basa en el 'special 0x158' pero, ¿Qué hace originalmente este special?
Este special, es usado en un NPC de Ciudad Celeste, el cual nos habla sobre las medallas, mostrandonos una multichoice box bastante extensa, igual con otro caso similar con el tio del polvo de bayas.

Las multichoice box, naturalmente no pueden mostrar más que 8 opciones (aprox) y una de éstas, debe ser obligatoriamente la de 'CERRAR' debido a como se debe configurar en el script..
No tocaré este tema ya que compete más la parte 'Scripting' e imagino que los que sigan este tutorial tendrán al menos un nivel Intermedio-Avanzado sobre ello, así que pasemos a lo que hace.
En esta rutina, FBI, quita los limitadores que tiene ese special, además de modificar el código para que se pueda almacenar en una variable, haciendolo verdaderamente sencillo.
Ahora bien, ¿Cómo se inserta?
PASO 1
Antes que nada vamos a armar nuestra tabla, esto podría resultar algo confuso, así que para que os enredeis os dejo un ejemplo gráfico:
#1: Puntero general de nuestra tabla
Este puntero es el más importante, y debeis guardarlo pues la rutina lo utiliza para guiarse y estructurar la tabla de las multichoice.
En este paso, debéis dejar 4 bytes por cada entrada en la tabla que quierais usar.
Yo en mi caso he dejado 60 bytes, para así tener espacio para 20 tablas:


Si sabes algo de scripting, dominarás esto en simples pasos, no tiene mucho misterio, simplemente son los nombres de las opciones escritas en hexadecimal

Para hacer esto, simplemente debeis copiar la offset que os tira XSE en el modo dinámico y permutarlo, en caso de que no sepais como permutar o tengais flojera de hacerlo, os podeis ahorrar toda esa pesada labor gracias al Permutador de nuestro colega @Naren Jr.


Cada tabla tiene sus multichoice, es decir la cantidad de opciones que se mostrarán en la textbox, aquí debéis poner los punteros (offset invertido) de los nombres de las opciones de vuestro multichoice.
Yo en mi caso he hecho una enciclopedia de Bayas, así que lo he ordenado así:


PASO 2
Una vez que hayais configurado vuestras tablas, lo que teneis que hacer es insertar la siguiente rutina (Compilada para ahorrarles el trabajo):
PASO 3
Finalmente van a 0x0CB94C e insertais los siguientes bytes:
00 49 08 47 XX+1 XX XX 08
Dónde XX+1 XX XX es el puntero donde insertásteis la rutina anterior +1
También vais a 0x0CBB84 y sobreescribis los siguientes 4 bytes por 00 00 00 00
Listo!
Todo bien? Todo correcto? ¡Y yo que me alegro!
A USARLO!
Esta rutina usa los siguientes parámetros de variable para su uso:
(Script de muestra, NO USAR)
Les debería quedar una cosa masomenos así:

_____ _____ _____ _____ _____ _____ _____
Y eso ha sido todo, espero que os haya servido.
No olvideis dejar algo de repu
¡Saludos y Buenas vibras!
#SeichCapriccola
En esta ocasión os traigo un tutorial muy bonico para crear Infinitas Cajas de múltiple selección con desplazamiento vertical . Este sistema está creado por FBI, podeis ver el post oficial haciendo click aquí.
IMPORTANTE: apuntar bien las direcciones de donde insertais los siguientes bytes. Recordad insertarlos en cualquier dirección con suficiente espacio y que comience con 0, 4, 8 ó C
PRÓLOGO
Esta rutina, se basa en el 'special 0x158' pero, ¿Qué hace originalmente este special?
Este special, es usado en un NPC de Ciudad Celeste, el cual nos habla sobre las medallas, mostrandonos una multichoice box bastante extensa, igual con otro caso similar con el tio del polvo de bayas.


Las multichoice box, naturalmente no pueden mostrar más que 8 opciones (aprox) y una de éstas, debe ser obligatoriamente la de 'CERRAR' debido a como se debe configurar en el script..
No tocaré este tema ya que compete más la parte 'Scripting' e imagino que los que sigan este tutorial tendrán al menos un nivel Intermedio-Avanzado sobre ello, así que pasemos a lo que hace.
En esta rutina, FBI, quita los limitadores que tiene ese special, además de modificar el código para que se pueda almacenar en una variable, haciendolo verdaderamente sencillo.
Ahora bien, ¿Cómo se inserta?
PASO 1
Antes que nada vamos a armar nuestra tabla, esto podría resultar algo confuso, así que para que os enredeis os dejo un ejemplo gráfico:

#1: Puntero general de nuestra tabla
Este puntero es el más importante, y debeis guardarlo pues la rutina lo utiliza para guiarse y estructurar la tabla de las multichoice.
En este paso, debéis dejar 4 bytes por cada entrada en la tabla que quierais usar.
Yo en mi caso he dejado 60 bytes, para así tener espacio para 20 tablas:


#2. Nombres de las OpcionesIMPORTANTE: En caso de que quierais apartar espacio para más tablas, os recomiendo rellenar el resto con
'00 00 00 08', de esta manera no se buscará espacio en esa parte de la ROM cuando hackeeis normalmente y podreis reconocer inmediatamente que se trata de una tabla
Si sabes algo de scripting, dominarás esto en simples pasos, no tiene mucho misterio, simplemente son los nombres de las opciones escritas en hexadecimal

Para hacer esto, simplemente debeis copiar la offset que os tira XSE en el modo dinámico y permutarlo, en caso de que no sepais como permutar o tengais flojera de hacerlo, os podeis ahorrar toda esa pesada labor gracias al Permutador de nuestro colega @Naren Jr.


#3: Opciones de X TablaIMPORTANTE: Si eres de los que no tiene tiempo, o suele cerrar por error el XSE, Es muuy recomendable Guardar el 'log' que os da el mismo programa y guardarlo en formato .txt para más tarde ^^
Cada tabla tiene sus multichoice, es decir la cantidad de opciones que se mostrarán en la textbox, aquí debéis poner los punteros (offset invertido) de los nombres de las opciones de vuestro multichoice.
Yo en mi caso he hecho una enciclopedia de Bayas, así que lo he ordenado así:


PASO 2
Una vez que hayais configurado vuestras tablas, lo que teneis que hacer es insertar la siguiente rutina (Compilada para ahorrarles el trabajo):
Dónde XX XX XX es el inicio de la Tabla Madre que vimos en el PASO 1.14 4C 24 88 0A 21 6C 52 68 5E C0 00 0F 4A 00 F0 1A F8 11 4C 20 60 0E 4A 00 F0 15 F8 00 26 00 24 0A 22 A8 5E BB 00 9A 46 06 A9 89 46 86 42 08 DA 05 4A 0A 49 09 88 89 00 52 18 12 68 90 46 08 48 00 47 08 48 00 47 10 47 XX XX XX 08 B1 2B 00 08 7D BA 0C 08 BA 70 03 02 14 9A 03 02 B8 70 03 02 75 B9 0C 08 AF B9 0C 08
PASO 3
Finalmente van a 0x0CB94C e insertais los siguientes bytes:
00 49 08 47 XX+1 XX XX 08
Dónde XX+1 XX XX es el puntero donde insertásteis la rutina anterior +1
También vais a 0x0CBB84 y sobreescribis los siguientes 4 bytes por 00 00 00 00
Listo!
Todo bien? Todo correcto? ¡Y yo que me alegro!
A USARLO!
Esta rutina usa los siguientes parámetros de variable para su uso:
De modo que en un Script se vería masomenos así:setvar 0x8000 0xX 'numero de tabla de multichoice'
setvar 0x8001 0x# 'número de opciones que se mostrarán (en Hex)'
setvar 0x8004 0x0 ' 'standard'
(Script de muestra, NO USAR)
Código:
#dynamic 0x990000
'---------------
#org @start
faceplayer
lockall
msgbox @Linea1 MSG_YESNO '"Es un libro que habla sobre las\nb..."
compare LASTRESULT 0x1
if 0x0 goto @snippet1
msgbox @Linea2 MSG_FACE '"¿Sobre qué artículo te interesa\ns..."
call @snippet2
'---------------
#org @Linea1
msgbox @Linea3 MSG_SIGN '"[player] devolvió el libro a\nsu s..."
closeonkeypress
releaseall
end
'---------------
#org @Linea2
setvar 0x8000 0x0
setvar 0x8001 0xC
setvar 0x8004 0x0
special 0x158
waitstate
copyvar 0x8004 0x800D
compare 0X800D 0x0
if 0x1 goto @snippet3
compare LASTRESULT 0x1
if 0x1 goto @snippet4
compare lastresult 0x2
if 0x1 goto @caki
compare lastresult 0x3
if 0x1 goto @meloc
compare lastresult 0x4
if 0x1 goto @perasi
compare lastresult 0x5
if 0x1 goto @safre
compare lastresult 0x6
if 0x1 goto @ziuela
compare lastresult 0x7
if 0x1 goto @zidra
compare lastresult 0x8
if 0x1 goto @zana
compare lastresult 0x9
if 0x1 goto @zreza
compare lastresult 0xA
if 0x1 goto @eni
compare lastresult 0xb
if 0x1 goto @nada
releaseall
end
...
.
..
.
Les debería quedar una cosa masomenos así:

_____ _____ _____ _____ _____ _____ _____
Y eso ha sido todo, espero que os haya servido.
No olvideis dejar algo de repu
¡Saludos y Buenas vibras!
#SeichCapriccola

Última edición por un moderador: