elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Media
| |-+  Juegos y Consolas (Moderador: Randomize)
| | |-+  Proyecto - "Descifrar" los campos de las bases de datos del WoW
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Proyecto - "Descifrar" los campos de las bases de datos del WoW  (Leído 2,859 veces)
Ariath


Desconectado Desconectado

Mensajes: 2.099


Ver Perfil WWW
Proyecto - "Descifrar" los campos de las bases de datos del WoW
« en: 10 Julio 2008, 17:23 pm »

Hola a todos :)

Quería daros a conocer un proyecto que estoy llevando a cabo en solitario, el cual es descubrir que son y que hacen los distintos campos de las bases de datos en MySQL del World of Warcraft.

En principio, lo estaba haciendo solo para crear un editor de personajes cómodo en PHP, en el cual te podrías conectar a la base de datos y, mediante listas desplegables y otras historias, ver qué tiene puesto el personaje en cuestión que estés mirando y poder cambiarle partes del equipo e incluso objetos del inventario seleccionando de las listas directamente los nombres de los objetos (nada de andar mirando IDs).

La forma en que estoy haciendo esto es, pues la única que hay (pienso yo), hacer pequeños cambios en la base de datos, y ver qué partes del juego resultan afectadas, y cómo.

De momento, como me interesa hacer el editor de personajes, estoy solamente con la tabla de "playeritems", la cual, almacena TODOS los objetos que poseen los personajes, tanto lo que tienen equipado como lo que tienen en el inventario.

Me gustaría, que si alguno de vosotros sabe del siginificado de los campos de alguna o varias de las tablas del juego, que me lo pusiese aquí.

Quien sabe... quizá podría dar lugar a un editor sencillo pero potente del juego completo  ;)

Aquí os dejo, de momento lo que llevo sacado de la tabla "playeritems", para que veais como lo estoy haciendo. Estoy usando el emulador ArcEmu y la base de datos WhyDB, que, de momento salvo alguna que otra "cosilla", me está llendo bien.

--------------------------------------------------------------------------------------------

Tabla "Playeritems"
------------------------------------
En esta tabla se encuentran los objetos que actualmente posee el jugador. Posee las siguientes columnas:

ownerguid, guid, entry, wrapped_item_id, wrapped_creator, creator, count, charges, flags, randomprop, randomsuffix, itemtext, durability, containerslot, slot, enchantments

A continuación, se indica a qué hace referencia cada columna:
---------------------------------------------------------------------------------------------
ownerguid: Ésta columna, indica cual es el personaje que posee el objeto. Está relacionada con la columna "guid" de la tabla "characters", es decir, si queremos saber a qué personaje pertenece un objeto concreto, solo tenemos que mirar esta columna, y buscar en la tabla "characters" un personaje cuyo "guid" coincida con el "ownerguid" del objeto del cual queremos obtener su actual dueño. (ownerguid vendría a significar algo como "guid del propietario" (propietario = owner)).

guid: Así como la columna "guid" en la tabla "characters" identifica cada entrada de dicha tabla, esta columna identifica cada entrada de la tabla "playeritems", por lo cual es clave primaria (el "índice de la tabla" por así decirlo).

entry: Éste campo está relacionado con el campo del mismo nombre en la tabla "items" localizada en la base de datos del mundo ("ascent-world", "world", "mundo" o como quiera que la hayamos denominado en nuestra base de datos MySQL). Entry, es la clave primaria de la tabla "items", por lo que identifica cada item (objeto) del mundo. Para "darle" un objeto determinado a un personaje, una de las cosas que tenemos que hacer es escribir en esta columna el valor apropiado del "entry" de la tabla "items" del objeto que queramos darle.

wrapped_item_id: <PENDIENTE DE DESCUBRIR>

wrapped_creator: <PENDIENTE DE DESCUBRIR>

creator: Este valor, indica el personaje que ha creado el objeto (en el caso de los objetos manufacuturados por un personaje). Se corresponde con el GUID del personaje que lo creó.

count: Éste valor indica el número de objetos que tenemos apilados de este objeto. Si esta entrada corresponde, por ejemplo, a una pila de 200 flechas, en este campo figurará 200.

charges: <PENDIENTE DE DESCUBRIR>

flags: <PENDIENTE DE DESCUBRIR: Pista :: Con las pruebas realizadas, dependiendo del valor que tome este campo, el objeto gana ciertas propiedades: 0 = Objeto normal y corriente; 1 = Objeto ligado al alma del personaje>

randomprop: <PENDIENTE DE DESCUBRIR>

ramdomsuffix: En los objetos que en el juego aparecen con un encantamiento al azar (tipo "...del mono", "... del aguila", etc...), determina el tipo de encantamiento asignado. Para ver la lista de encantamientos y los valores que les corresponden, ver archivo "Encantamientos aleatorios". (NOTA: "Encantamientos aleatorios", es un documento de Excel que editaré cuando proceda, con las listas de encantamientos y el valor correspondiente que hay que poner aquí. He probado a ponerle un valor de estos a un objeto normal y corriente, y, aunque adquiría el encantamiento (ponía "...de protección de Escarcha", las estadísticas que se ganan en este caso (aguante y resistencia a la escarcha) aparecían vacías, es decir, +0, con lo que puede que dependa también del objeto en sí)

itemtext: <PENDIENTE DE DESCUBRIR>

durability: Éste valor representa la durabilidad del objeto. Cuando vemos que una pieza de armadura tiene por ejemplo una durabilidad de 14/14, el primer número, es el que figura aquí. Si lo disminuimos, observaremos como la durabilidad del objeto en el juego disminuye, si lo reducimos a 0, el objeto estará "roto". Este valor, nunca puede ser mayor que la durabilidad máxima del objeto, es decir, si el objeto de antes, probamos a ponerle de durabilidad 30 (recordemos que el objeto tenía de durabilidad 14/14 (es decir, 14 era la máxima)), en el juego, el objeto tendrá la durabilidad a 14/14, es decir, el primer valor no puede nunca superar al primero, y, en caso de que lo editemos para que lo supere, el juego representará el objeto con su durabilidad máxima.

containerslot: <PENDIENTE DE DESCUBRIR: Pista :: Podría corresponder a cada una de las 5 bolsas que se pueden llevar>

slot: <PENDIENTE DE DESCUBRIR: Pista :: PARECE corresponder a cada una de las casillas del interior de una bolsa, aunque falta por determinar si los valores son siempre los mismos cambiando el "containerslot" o si varían>

enchantments: <PENDIENTE DE DESCUBRIR>
------------------------------------------------------------------------------------

Como veis, hay muchas cosas todavía por descubrir que son y como van, pero tiempo al tiempo :)

Salu2


« Última modificación: 10 Julio 2008, 21:11 pm por Ariath » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Descarga] 14 mil dolares en Bases de Datos, del proyecto del contador PHP
Desarrollo Web
Graphixx 9 5,881 Último mensaje 19 Agosto 2014, 13:07 pm
por Graphixx
Campos o "cajas de texto" en C
Programación C/C++
nicolas2013alcubo 0 1,133 Último mensaje 5 Mayo 2013, 04:58 am
por nicolas2013alcubo
[Proyecto]PyDB - "Bases de Datos" fáciles en Python :: JaAViEr | 0x5d
Scripting
0x5d 0 1,881 Último mensaje 23 Julio 2013, 14:35 pm
por 0x5d
descifrar librerias formato ".a"
Programación C/C++
DarkProgrammer 3 1,938 Último mensaje 3 Julio 2014, 14:41 pm
por flony
descifrar AES "Rijndael"
Ingeniería Inversa
Geovane 1 2,578 Último mensaje 4 Marzo 2017, 05:00 am
por tincopasan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines