EasyRPG Forums

Versión Completa: Lectura de los datos del RPGMAKER 2000/2003
Actualmente estas viendo una versión simplificada de nuestro contenido. Para ver la versión completa en el formato correcto, dale click aquí
Pues eso ,aquí quisiera discutir todo lo referente a la lectura de datos como ldb lmu lsd y lmt, comenzare por poner un programa que lee todo el lmt, funciona con base a las librerías que puso sue en su pagina, lee lo documentado en nuestro wiki, que con las excepciones de 5 bytes, es lo que contiene el archivo lmt.

también incluye otras cosas pero de momento solo el lmt esta completo.
Es para windows.
Descarga

Mmmm... esta muy bien... De todas formas, por el calibre que esta tomando esta parte (y que tomará si se quiere añadir formatos propios), y dado que se debe poner tanto en el editor como en el interprete... ¿No sería mejor hacer una libreria estatica que se usara en ambas partes y así menos problemas??? No se es solo una idea... Porque mas vale eso que no tener todo duplicado o amontonado...

Por cierto... si el lmt lo lee completo.. es un avance pero a la hora de imlementarlo en el interprete ¿Que sería mejor usar estructuras y clases que estén siempre cargadas en memoria (mas rapido en procesador, pero mas uso en memoria) o iréis leyendo y creandolas conforme se necesite (mas lento en procesador y menos uso de memoria)?

Bueno! Saludos y Animo!
Genial trabajo, solo vi el problemita ese que se ve en la imagen del offset incorrecto para las Strings, que apuntan hacia la posición de su array en vez del comienzo de la cadena en sí.

Lo pude probar en Wine pero no lo pude compilar porque hay código no portable, como bien dijiste era para Windows. Concretamente se incluye <io.h> que sí que se soporta en MinGW y que está plagado de funciones precedidas con underscores, tan típicas de Win32 y VC++, como _open, _close, _read, _write y demás funciones en fnctl que no están soportadas. Por aquí tenía <sys/io.h> pero no tiene mucha relación, fnctl.h tampoco soporta varias de las constantes de macro que hay, ni quitando la _ de delante de _O_BINARY, que sí está definido en los includes de MinGW... en definitiva, requerirá modificar CBasicStream para que use un tratamiento de ficheros portable, o bien ya utilizar las propias funciones de SDL, en su caso.

Solo pude encontrar ese par de problemitas, por lo demás he mirado cómo preparaste la clase para el LMT y funcionó bien, intentaré probarlo en wxWidgets para testarlo en el editor si (tengo tiempo porque este fin de semana estaré fuera y sin el PC)Smile.

P.D.: ¿5 bytes desconocidos? ¿En qué posición están o qué valores tienen, son cambiantes, etc.? Así te ayudo a intentar averiguar de qué son si se desconocen, a base de pruebas.

Cita:
P.D.: ¿5 bytes desconocidos? ¿En qué posición están o qué valores tienen, son cambiantes, etc.? Así te ayudo a intentar averiguar de qué son si se desconocen, a base de pruebas.

en realidad estaba equivocado esos 5 bytes no son 5, son variables dependen del numero de hojas del árbol. [/quote]

He decidido cancelar la lectura de archivos con las librerías de sue, ¿por que me preguntaran..? . pues bien considero que en realidad no ayudan demasiado en la lectura de los archivos ocupan demasiado espacio, y aun cuando tienen su ventajas como poner un buffer directamente en ram, no las considero indispensables.

Y como para muestra vasta un botón aquí les traigo la lectura del lmt, usando solo dos archivo, uno consta de parte de lo que tiene el tools del easy, y otro mas para la lectura en si.

Disfrutenlo!.

Esta compilado tanto en linux como windows.

descarga

Al lector de lmu actual solo le hace falta la lectura de los eventos....
Mientras que de la base de datos ya la tengo a medio terminar....

Conseguí con algo de tiempo libre mejorar el estado de la lectura de la base de datos y los eventos de los mapas, ya tengo la lectura de la estructura de ambos, espero pronto crear una forma de guardar los datos en ram de manera dinámica y que permita su fácil acceso.

Pero si accidentalmente muero o algo parecido, aquí dejo los links para que alguien mas pueda continuar mi trabajo.

ldb download

map download
Hey, no había visto el mensaje del día 8, ahora los foros deberían ir algo mejor tras la migración del día 10.
He probado los 3, compilaron bien (por algún motivo con g++ tuve que cambiar <string> y ponerle .h para que no diera error, siempre me ha pasado eso con el compilador de gnu)

Sobre problemas con la lectura tan solo he detectado en la zona del vocabulario, cuando aparecen 4 "nombre poeta" seguidos, la siguiente línea devuelve nombre y los bytes 01 02 09 01, que supongo que son chunks de datos que no son de texto. A continuación aparece nombre Atacar y los demás textos de los mensajes de batalla.

Gracias por el upload, iré refrescando los repositorios y haciendo más pruebas, especialmente con el lmt, que ya parece completoSmile. Saludos!
Esa parte en particular es de la base de datos del 2003, no esta documentada, y tuve un buen de problemas para poder leerla, "nombre poeta" es el nombre de un common event, asi que todo es correcto, solo hace falta encontrar el sentido de los chunks de datos.
No sé si habrá diferencias entre la base de datos de 2000 y 2003 funcionan diferente en la sección de eventos comunes. Al menos sue445 indica que los eventos comunes se estructuran así:

Array 2 dimensiones:
- Col: ID
- Row: Ver el recuadro siguiente

Número de array: 0x01
Contenido: Nombre
Formato: String
Valor predeterminado: "\0"
Detalles: Máximo 10 caracteres
Clasificación(?): Común

Número de array: 0x0B
Contenido: Condiciones de inicio del evento
Formato: Entero
Valor predeterminado: 5
Detalles: 3:Inicio automático, 4:Inicio automático paralelo, 5:Solo cuando se le llame
Clasificación: Común

Número de array: 0x0C
Contenido: Indica si la casilla de interruptor de comienzo esta activada o desactivada
Formato: Flag
Valor inicial: 0
Detalles:
Clasificación: Común

Número de array: 0x0D
Contenido: Numero de interruptor de comienzo seleccionado
Formato: Entero
Valor inicial: 1
Detalles:
Clasificación: Común

Número de array: 0x15
Contenido: Datos del evento: tamaño de los datos
Formato: Entero
Valor inicial:
Detalles:
Clasificación: Común

Número de array: 0x16
Contenido: Datos del evento: Datos
Formato: Formato de enum de eventos (el mismo usado en los mapas)
Valor inicial:
Detalles:
Clasificación: Común


¿Los datos distintos del 2003 se refieren a esta tabla? Tal vez te basaste en la documentación de WhoopA o en la de RM Collegial, es lo malo de tener 3 documentaciones distintas, cada una descubre cosas distintas, puesto que fueron investigaciones independientes. Esta es la del wiki de sue445, que tiene bastante más información que la que tenía el SDK
Saludos!
A qui hay una enorme confusión, no tengo problemas con los eventos comunes

CHUNK_Event1= 0x1A,//Eventos espesiales
CHUNK_Event2= 0x1B,//Eventos espesiales
CHUNK_Event3= 0x1C,//Eventos espesiales
CHUNK_Comand= 0x1D,//Comandos de combate
CHUNK_Profession= 0x1E,//Profession
CHUNK_Profession2= 0x1F,//Profession
CHUNK_Fightanim= 0x20, // Fighting animation 2

En estos indices de aquí desde el 0x1A al 0x20 solo aparecen en la base de datos de juegos hechos en rpgmaker2003, o de bases de datos del 2000 convertidas a de 2003.

Lo que falla es el 1D Comandos de combate, sue445 lo documenta como un simple array bidimencional, peor no es así , ademas de que tiene mas datos de los que el documenta.

según sue445 combat command solo tiene

Row
ID combat command
Col
See figure below.

0x01 Name String "\0" "\ 0" 10 characters max.
0x02 Usage Integer

Al ver el archivo en hexadecimal , no concuerda.

lo contenido en 0x01 no es un nombre, y en 0x0C hay algo que se asemeja a lo que sue documenta, como un array dentro de otro.

Cita:
la siguiente línea devuelve nombre y los bytes 01 02 09 01, que supongo que son chunks de datos que no son de texto.

Aun asi despliego el contenido de 0x01 como texto y es eso lo que se ve.[/quote]

Mmmm... Esto avanza mucho... Por cierto, varias cosas, en nombre de musica:
- Carita-Trebol<OFF> Para mi que ahi hay dos bytes que no cuadran o que son? (mira el primer msg).

Sobre el combat command, es algo muy diferente en el mker 2k que en el 2k3, asi que puede que la documentacion de sue sea para la otra version...

Aun asi... No he estado mucho en este tema, la verdad, pero bueno, son solo suposiciones...
Páginas: 1 2 3
URLs de Referencia