Category:DBC: Difference between revisions

From wowdev
Jump to navigation Jump to search
m (Undo revision 4945 by Schlumpf (Talk))
mNo edit summary
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
DBC (DataBaseClient) files are clientside databases containing data about items, NPCs, environment, world and a lot more.
This category groups all DBC files existing in at least one version of WoW. It does not guarantee documentation of the files for that version.  


Some of the record type specification pages have been retrieved from [http://www.sourcepeek.com/wiki/] and [http://paste2.org/p/1366912].
For documentation on the structure of DBC files themselves, see [[DBC]].  


=Table structure=
For documentation on the structure of DB2 files and up, see [[DB2]].  
This page describes the structure of DBC files. For a list of existing DBC files and their contents see the categories [[:Category:DBC]], [[:Category:DBC_Vanilla]], [[:Category:DBC_BC]], [[:Category:DBC_WotLK]], [[:Category:DBC_Cataclysm]] and [[:Category:DBC_MoP]]. If you add documentation for a file, please add the correct categories (also the build number) as well.


=Structure=
For DBC file contents sorted by major client version, see the specific DBC category for that version: [[:Category:DBC_Vanilla|Vanilla]], [[:Category:DBC_BC|Burning Crusade]], [[:Category:DBC_WotLK|Wrath of the Lich King]], [[:Category:DBC_Cataclysm|Cataclysm]], [[:Category:DBC_MoP|Mists of Pandaria]], [[:Category:DBC_WoD|Warlords of Draenor]] and [[:Category:DBC_Legion|Legion]].
struct dbc_header
{
  uint32_t magic; // always 'WDBC'
  uint32_t record_count; // records per file
  uint32_t field_count; // fields per record
  uint32_t record_size; // sum (sizeof (field_type_i)) | 0 <= i < field_count. field_type_i is NOT defined in the files.
  uint32_t string_block_size;
};
template<typename record_type>
struct dbc_file
{
  dbc_header header;
  // static_assert (header.record_size == sizeof (record_type));
  record_type records[header.record_count];
  char string_block[header.string_block_size];
};
 
==String Block==
DBC records can contain strings. Strings are not stored in record but in an additional string block. A record contains an offset into that block. Strings are zero terminated (c strings) and might be zero length. A zero length string then only contains one byte being zero.
 
Thus, if
typedef uint32_t string_offset_type;
struct example_record
{
  uint32_t id;
  string_offset_type name;
};
printing the id and name of record i can be done by
// dbc_file<example_record> file;
printf ("record %u: %u, %s\n", file.records[i].id, file.string_block[file.records[i].name]);
or when going by offsets only:
// const char* file;
uint32_t record_count = *(uint32_t*) (file + 1 * sizeof (uint32_t));
uint32_t record_size = *(uint32_t*) (file + 3 * sizeof (uint32_t));
const char* records = file + 5 * sizeof (uint32_t) /* header */;
const char* string_block = records + record_size * record_count;
printf ("record %u: %u, %s\n", *(uint32_t*)(records + i * record_size /* id */), string_block + *(uint32_t*)(records + i * record_size + sizeof (uint32_t) /* name */));
 
=Localization=
DBC records can contain localized strings. Localized strings are a set of one string block offset per locale plus a bitmask up to Cataclysm. Beginning with Cataclysm, there only is one field containing only one string offset, thus disallowing providing multiple locales in one file.
 
The number and order of locale fields can be found at [[Localization]]. The record description might either mark a number of columns per localized field (e.g. 1-16) or treat all the fields as one column.

Latest revision as of 23:18, 21 February 2016

This category groups all DBC files existing in at least one version of WoW. It does not guarantee documentation of the files for that version.

For documentation on the structure of DBC files themselves, see DBC.

For documentation on the structure of DB2 files and up, see DB2.

For DBC file contents sorted by major client version, see the specific DBC category for that version: Vanilla, Burning Crusade, Wrath of the Lich King, Cataclysm, Mists of Pandaria, Warlords of Draenor and Legion.

Pages in category "DBC"

The following 200 pages are in this category, out of 708 total.

(previous page) (next page)

D

(previous page) (next page)