Tabla `characters`
La tabla contiene información estática vital para cada personaje. Su función radica en crear los objetos respectivos del jugador dentro del propio juego.
Estructura
| Field | Type | Attributes | Key | Null | Default | Extra | Comment |
|---|---|---|---|---|---|---|---|
| guid | INT | UNSIGNED | PRI | NO | 0 | Unique | Global Unique Identifier |
| account | INT | UNSIGNED | NO | 0 | Account Identifier | ||
| name | VARCHAR(12) | SIGNED | NO | ||||
| race | TINYINT | UNSIGNED | NO | 0 | |||
| class | TINYINT | UNSIGNED | NO | 0 | |||
| gender | TINYINT | UNSIGNED | NO | 0 | |||
| level | TINYINT | UNSIGNED | NO | 0 | |||
| xp | INT | UNSIGNED | NO | 0 | |||
| money | INT | UNSIGNED | NO | 0 | |||
| skin | TINYINT | UNSIGNED | NO | 0 | |||
| face | TINYINT | UNSIGNED | NO | 0 | |||
| hairStyle | TINYINT | UNSIGNED | NO | 0 | |||
| hairColor | TINYINT | UNSIGNED | NO | 0 | |||
| facialStyle | TINYINT | UNSIGNED | NO | 0 | |||
| bankSlots | TINYINT | UNSIGNED | NO | 0 | |||
| restState | TINYINT | UNSIGNED | NO | 0 | |||
| playerflags | INT | UNSIGNED | NO | 0 | |||
| position_x | FLOAT | SIGNED | NO | 0 | |||
| position_y | FLOAT | SIGNED | NO | 0 | |||
| position_z | FLOAT | SIGNED | NO | 0 | |||
| map | SMALLINT | UNSIGNED | NO | 0 | Map Identifier | ||
| instance_id | INT | UNSIGNED | NO | 0 | |||
| instance_mode_mask | TINYINT | UNSIGNED | NO | 0 | |||
| orientation | FLOAT | SIGNED | NO | 0 | |||
| taximask | TEXT | SIGNED | NO | ||||
| online | TINYINT | UNSIGNED | NO | 0 | |||
| cinematic | TINYINT | UNSIGNED | NO | 0 | |||
| totaltime | INT | UNSIGNED | NO | 0 | |||
| leveltime | INT | UNSIGNED | NO | 0 | |||
| logout_time | INT | UNSIGNED | NO | 0 | |||
| is_logout_resting | TINYINT | UNSIGNED | NO | 0 | |||
| rest_bonus | FLOAT | SIGNED | NO | 0 | |||
| resettalents_cost | INT | UNSIGNED | NO | 0 | |||
| resettalents_time | INT | UNSIGNED | NO | 0 | |||
| trans_x | FLOAT | SIGNED | NO | 0 | |||
| trans_y | FLOAT | SIGNED | NO | 0 | |||
| trans_z | FLOAT | SIGNED | NO | 0 | |||
| trans_o | FLOAT | SIGNED | NO | 0 | |||
| transguid | MEDIUMINT | SIGNED | NO | 0 | |||
| extra_flags | SMALLINT | UNSIGNED | NO | 0 | |||
| stable_slots | TINYINT | UNSIGNED | NO | 0 | |||
| at_login | SMALLINT | UNSIGNED | NO | 0 | |||
| zone | SMALLINT | UNSIGNED | NO | 0 | |||
| death_expire_time | INT | UNSIGNED | NO | 0 | |||
| taxi_path | TEXT | SIGNED | YES | ||||
| arenaPoints | INT | UNSIGNED | NO | 0 | |||
| totalHonorPoints | INT | UNSIGNED | NO | 0 | |||
| todayHonorPoints | INT | UNSIGNED | NO | 0 | |||
| yesterdayHonorPoints | INT | UNSIGNED | NO | 0 | |||
| totalKills | INT | UNSIGNED | NO | 0 | |||
| todayKills | SMALLINT | UNSIGNED | NO | 0 | |||
| yesterdayKills | SMALLINT | UNSIGNED | NO | 0 | |||
| chosenTitle | INT | UNSIGNED | NO | 0 | |||
| knownCurrencies | BIGINT | UNSIGNED | NO | 0 | |||
| watchedFaction | INT | UNSIGNED | NO | 0 | |||
| drunk | TINYINT | UNSIGNED | NO | 0 | |||
| health | INT | UNSIGNED | NO | 0 | |||
| power1 | INT | UNSIGNED | NO | 0 | |||
| power2 | INT | UNSIGNED | NO | 0 | |||
| power3 | INT | UNSIGNED | NO | 0 | |||
| power4 | INT | UNSIGNED | NO | 0 | |||
| power5 | INT | UNSIGNED | NO | 0 | |||
| power6 | INT | UNSIGNED | NO | 0 | |||
| power7 | INT | UNSIGNED | NO | 0 | |||
| latency | MEDIUMINT | UNSIGNED | NO | 0 | |||
| talentGroupsCount | TINYINT | UNSIGNED | NO | 1 | |||
| activeTalentGroup | TINYINT | UNSIGNED | NO | 0 | |||
| exploredZones | LONGTEXT | SIGNED | YES | ||||
| equipmentCache | LONGTEXT | SIGNED | YES | ||||
| ammoId | INT | UNSIGNED | NO | 0 | |||
| knownTitles | LONGTEXT | SIGNED | YES | ||||
| actionBars | TINYINT | UNSIGNED | NO | 0 | |||
| grantableLevels | TINYINT | UNSIGNED | NO | 0 | |||
| order | TINYINT | SIGNED | YES | ||||
| creation_date | TIMESTAMP | SIGNED | NO | CURRENT_TIMESTAMP | |||
| deleteInfos_Account | INT | UNSIGNED | YES | ||||
| deleteInfos_Name | VARCHAR(12) | SIGNED | YES | ||||
| deleteDate | INT | UNSIGNED | YES |
Descripción de los Campos
Globally Unique Identifier o Identificador Global Único del personaje. Este número debe de ser único, ya que es la mejor manera de identificar personajes por separado.
El ID de la cuenta en la que reside este personaje. Véase account.id en la Base de Datos Auth.
El nombre del personaje. La longitud máxima es de 12 caracteres.
La raza del personaje. Véase ChrRaces.dbc.
La clase del personaje. Véase ChrClasses.dbc.
El género del personaje
| ID | Género |
|---|---|
| 0 | Masculino |
| 1 | Femenino |
| 2 | Desconocido (?) |
El número 2 puede verse en la tabla creature_model_info en particular.
El nivel actual del personaje.
La cantidad de experiencia que éste personaje ha ganado para el siguiente nivel.
La cantidad de cobre que el personaje posée ( Téngase en cuenta que todo el dinero que se tiene dentro del juego se mide en monedas de cobre )
Contiene datos acerca del color de la piel del personaje. skinColor = playerbytes % 256
Contiene datos acerca del estilo facial del personaje. faceStyle = (playerbytes >> 8) % 256
Contiene datos acerca del estilo del cabello del personaje. hairStyle = (playerbytes >> 16) % 256
Contiene datos acerca del color del cabello del personaje. hairColor = (playerbytes >> 24) % 256
Contiene datos acerca del vello facial del personaje. facialHair = playerBytes2 % 256
Cantidad de casillas en el banco.
Estado de reposo.
Una 'Máscara de Bits/Tabla de Bits' o BitMask que representan aquellos marcadores que posée el jugador. Cada bit controla un marcador distinto, y para combinar marcadores puedes sumar cada marcador que desées uno por uno, activando en efecto los respectivos bits.
| Flag | Name | Comment | |
|---|---|---|---|
| 1 | 0x00000001 | PLAYER_FLAGS_GROUP_LEADER | |
| 2 | 0x00000002 | PLAYER_FLAGS_AFK | |
| 4 | 0x00000004 | PLAYER_FLAGS_DND | |
| 8 | 0x00000008 | PLAYER_FLAGS_GM | |
| 16 | 0x00000010 | PLAYER_FLAGS_GHOST | |
| 32 | 0x00000020 | PLAYER_FLAGS_RESTING | |
| 64 | 0x00000040 | PLAYER_FLAGS_UNK7 | |
| 128 | 0x00000080 | PLAYER_FLAGS_UNK8 | Marcador pre-3.0.3 PLAYER_FLAGS_FFA_PVP para el estado FFA PVP (FreeForAll o Todos contra Todos ) |
| 256 | 0x00000100 | PLAYER_FLAGS_CONTESTED_PVP | El jugador se ha visto envuelto en un combate PvP y será atacado por guardias de la Zona en Disputa respectiva |
| 512 | 0x00000200 | PLAYER_FLAGS_IN_PVP | |
| 1024 | 0x00000400 | PLAYER_FLAGS_HIDE_HELM | |
| 2048 | 0x00000800 | PLAYER_FLAGS_HIDE_CLOAK | |
| 4096 | 0x00001000 | PLAYER_FLAGS_PLAYED_LONG_TIME | Jugó mucho tiempo |
| 8192 | 0x00002000 | PLAYER_FLAGS_TOO_LONG | Jugó demasiado tiempo |
| 16384 | 0x00004000 | PLAYER_FLAGS_IS_OUT_OF_BOUNDS | |
| 32768 | 0x00008000 | PLAYER_FLAGS_DEVELOPER | ¿prefijo para algo? |
| 65536 | 0x00010000 | PLAYER_FLAGS_UNK17 | Marcador pre-3.0.3 PLAYER_FLAGS_SANCTUARY para el jugador que entró a un santuario |
| 131072 | 0x00020000 | PLAYER_FLAGS_TAXI_BENCHMARK | Modo prueba de rendimiento de transporte (taxi) (on/off) (2.0.1) |
| 262144 | 0x00040000 | PLAYER_FLAGS_PVP_TIMER | 3.0.2, temporizador de pvp activo (luego de desactivar el pvp manualmente) |
| 524288 | 0x00080000 | PLAYER_FLAGS_UNK20 | |
| 1048576 | 0x00100000 | PLAYER_FLAGS_UNK21 | |
| 2097152 | 0x00200000 | PLAYER_FLAGS_UNK22 | |
| 4194304 | 0x00400000 | PLAYER_FLAGS_COMMENTATOR2 | |
| 8388608 | 0x00800000 | PLAYER_ALLOW_ONLY_ABILITY | Usado para Filotormenta (guerrero) y Asesinato múltiple (pícaro) |
| 16777216 | 0x01000000 | PLAYER_FLAGS_UNK25 | Desactiva todas las habilidades cuerpo a cuerpo en el teclado incluyendo Ataque Automático |
| 33554432 | 0x02000000 | PLAYER_FLAGS_NO_XP_GAIN |
Posición cartesiana en X en la que se encuentra ubicado el personaje.
Posición cartesiana en Y en la que se encuentra ubicado el personaje.
Posición cartesiana en Z en la que se encuentra ubicado el personaje.
ID del mapa en el que se encuentra el personaje.
ID de la instancia en la que se encuentra el personaje y a la que está vinculado.
La dificultad actual de la mazmorra en la que se encuentra el jugador. Este campo es una Máscara/Tabla de bits. Los valores son asignados juntos, sin embargo, sólo dos de los cuatro deben ser usados a la vez. Cabe recalcar que ésta descripción puede no ser ciento por ciento correcta.
| Flag | Comment |
|---|---|
| 0 | Normal |
| 1 | Heróico |
| 16 | 10 Jugadores |
| 32 | 25 Jugadores |
Orientación del personaje. (Norte = 0,0, Sur = 3,14159)
TaxiNodes/rutas de vuelo conocidas separadas con espacio.
Registra si el personaje está conectado (1) o desconectado (0).
Booleano del 0 al 1 que controla si la cinemática de inicio ha sido mostrada al jugador o no.
Tiempo total de juego del personaje desde que ha estado activo en el mundo, medido en segundos.
Tiempo total de juego en el cual el personaje ha estado inmerso desde el nivel actual, medido en segundos.
Hora en la cual el personaje se desconectó por última vez, medida en tiempo Unix.
Booleano del 0 al 1 que controla si el personaje está actualmente en una zona de descanso o no.
Bonificación acumulada de la tasa de descanso a la hora de ganar experiencia.
El coste para restablecer los talentos del personaje, medido en monedas de cobre.
Cantidad de veces en las que se han restablecido los talentos del personaje.
Posición cartesiana en X del transporte en el que se encontraba el personaje desde la última vez que se guardó.
Posición cartesiana en Y del transporte en el que se encontraba el personaje desde la última vez que se guardó.
Posición cartesiana en Z del transporte en el que se encontraba el personaje desde la última vez que se guardó.
La orientación del transporte en el que se encontraba el personaje la última vez que se guardó.
Globally Unique Identifier o Identificador Único global del transporte en el que se encontraba el personaje cuando fue guardado por última vez.
Éstos Marcadores o 'flags' controlan ciertos atributos específicos del jugador, en su mayoría características del GM.
| Flag | Name | Description | |
|---|---|---|---|
| 1 | 0x00000001 | PLAYER_EXTRA_GM_ON | Define el estado del GM |
| 2 | 0x00000002 | PLAYER_EXTRA_GM_ACCEPT_TICKETS | EN DESUSO Define si el personaje acepta tickets |
| 4 | 0x00000004 | PLAYER_EXTRA_ACCEPT_WHISPERS | Define si acepta susurros |
| 8 | 0x00000008 | PLAYER_EXTRA_TAXICHEAT | Establece un TaxiCheat |
| 16 | 0x00000010 | PLAYER_EXTRA_GM_INVISIBLE | Define la visibilidad del GM |
| 32 | 0x00000020 | PLAYER_EXTRA_GM_CHAT | Muestra el ícono del GM en los mensajes del chat |
| 64 | 0x00000040 | PLAYER_EXTRA_HAS_310_FLYER | Marca si el jugador ya tiene una montura voladora de 310% de velocidad |
| 256 | 0x00000100 | PLAYER_EXTRA_PVP_DEATH | Almacena el estado de muerte en CjC (PvP) hasta la creación del cadáver dentro del juego |
Las ranuras disponibles (compradas) en el Maestro de Establo.
Este campo es una Máscara/Tabla de Bits, cuya función es controlar las diferentes acciones que se llevan a cabo una vez que el jugador inicie sesión con el personaje.
| Flag | Name | Description | |
|---|---|---|---|
| 1 | 0x01 | AT_LOGIN_RENAME | Forzar el cambio de nombre del personaje |
| 2 | 0x02 | AT_LOGIN_RESET_SPELLS | Restablecer los hechizos (también las profesiones) |
| 4 | 0x04 | AT_LOGIN_RESET_TALENTS | Restablecer los talentos |
| 8 | 0x08 | AT_LOGIN_CUSTOMIZE | Personalizar el personaje |
| 16 | 0x10 | AT_LOGIN_RESET_PET_TALENTS | Restablecer los talentos de la mascota |
| 32 | 0x20 | AT_LOGIN_FIRST | Fijar y remover después del primer inicio de sesión |
| 64 | 0x40 | AT_LOGIN_CHANGE_FACTION | Cambiar de facción |
| 128 | 0x80 | AT_LOGIN_CHANGE_RACE | Cambiar de raza |
Para crear acciones múltiples en esta casila, sume los valores entre sí.
ID de la zona en la que se encuentra el personaje.
Tiempo en el cual el personaje del jugador puede ser resucitado en caso de caída del servidor o salida del cliente mientras está en forma fantasmal, medido en tiempo Unix.
Almacena la ruta del taxi actual del personaje (TaxiPath.dbc) si el jugador se desconecta mientras se encuentre en uno.
La cantidad de puntos de arena acumuldados por el personaje del jugador, y también aquellos que recibirá la próxima vez que se distribuyan los puntos de arena.
La cantidad de puntos de honor que tiene este personaje.
La cantidad de puntos de honor que el personaje obtuvo hoy.
La cantidad de puntos de honor que el personaje obtuvo ayer.
La cantidad de jugadores que el personaje ha matado.
La cantidad de jugadores que el personaje mató hoy.
La cantidad de jugadores que el personaje mató ayer.
Título actual, utilizando el campo bit_index (En orden de juego o InGameOrder dentro de CharTitles.dbc).
Monedas/distintivos/insignias conocidas (Aquello que debe figurar en la pestaña Monedas), Máscara/Tabla de bits (sumatoria de Marcadores o 'flags) de BitIndexes, véase CurrencyTypes.dbc.
Seguimiento de una facción en la barra de experiencia (utilizando el ID de la reputación, véase Faction.dbc).
Estado de embriaguez del personaje, 0-100
Estado de salud actual del personaje.
Poder actual del personaje (Desde el momento en el que se guardó el personaje).
| Field | Power name |
|---|---|
| power1 | Maná |
| power2 | ira |
| power3 | Focus |
| power4 | Energía |
| power5 | Felicidad |
| power6 | Runas |
| power7 | Poder rúnico |
(Recordemos que son 7 columnas, dependiendo del poder que esté utilizando su clase estará almacemado el valor del mismo en la respectiva casilla)
Latencia del personaje o ping en milisegundos, a partir del último autoguardado.
El número de especializaciones a las que tiene acceso este personaje. El valor por defecto es 1. El valor máximo actualmente soportado es 2. Nunca debe de ser 0 (Esto es signo de un personaje creado antes de la implementación del la doble especialización de talentos).
Las especializaciones actuales habilitadas para este personaje, spec = 0 es la primera especialización, spec = 1 es la segunda especialización.
Máscara/Tabla de bits para las zonas exploradas (1 bit para las exploradas, 0 bit para las no exploradas).
Equipamiento del personaje y alijo de la bolsa.
ID del Item de la munición.
Contiene datos acerca de los títulos conocidos por el jugador almacenados en enteros de 6 x 16bit. Para calcular dónde se encuentra un título conocido en alguno de éstos 6 enteros se hace lo siguiente: Seleccionamos uno de los títulos en CharTitles.dbc, a continuación tomamos el título de Archimago por ejemplo:
| TitleID | UnkRef? | MaleTitle | FemaleTitle | InGameOrder |
|---|---|---|---|---|
| 93 | 0 | Archmage %s | Archmage %s | 61 |
Usamos el InGameOrder (orden de juego) para calcular en cuál de los 6 enteros (16bit) está el título almacenado:
InGameOrder / 32 = X
61 / 32 = **1,90625** (1 - **¡No** redondee el valor!)
Por lo que el primer entero almacena el título. Ya que el conteo comienza de 0 a 5, sería "0 TITLE_BIT 0 0 0 0".
Ahora, ¿Qué bit almacena el título? Usamos el módulo para calcularlo.
InGameOrder Modulo 32 = X
61 Mod 32 = **29**
Por lo que el 29bit almacena el título. Esto sería 2 ^ 29 = 536870912. Este bit almacena el título de Archimago. Esto significaría que si sólo tú tienes el título de Archimago, characters.knownTitles sería "0 536870912 0 0 0 0".
Una Máscara/Tabla de bits que contiene las barras de acción visibles para el jugador.
| Flag | Comment | |
|---|---|---|
| 1 | 0x00000001 | Barra inferior izquierda |
| 2 | 0x00000002 | Barra inferior derecha |
| 4 | 0x00000004 | Barra derecha |
| 8 | 0x00000008 | Barra derecha 2 |
Casilla de Reclutar a un Amigo.
Campo utilizado para cambiar el órden en el que aparecen los personajes de la pantalla de selección de personajes. Éste campo es utilizado primero, y luego characters.guid, lo que significa que si ésta columna apunta a NULL para cada personaje de una cuenta, se ordenarán characters.guid por defecto.
Fecha y hora de la creación del personaje. Formato AAA-MM-DD HH:MM:SS según la hora del servidor.
Almacena la ID de la cuenta si el personaje es eliminado y CharDelete.Method en worldserver.conf se establece en 1.
Almacena el nombre del personaje si éste es eliminado y CharDelete.Method en worldserver.conf se establece en 1.
Almacena la fecha en que el personaje fue eliminado y CharDelete.Method en worldserver.conf.dist se establece en 1. Será comprobado por worldserver dentro de CharDelete.KeepDays en worldserver.conf.dist o worldserver.conf Si este valor es menor que deleteDate + CharDelete.KeepDays el personaje será purgado.