Category:DBC: Difference between revisions

From wowdev
Jump to navigation Jump to search
No edit summary
(→‎Header: Show full file structure. Also, be more clear on stuff.)
Line 3: Line 3:
Some of the following pages have been retrieved from "http://www.sourcepeek.com/wiki/" and "http://paste2.org/p/1366912"
Some of the following pages have been retrieved from "http://www.sourcepeek.com/wiki/" and "http://paste2.org/p/1366912"


==Header==
==Structure==
 
struct dbc_header
  '''Column Field Type Notes'''
  {
1 Signature String (4-bytes) string, always 'WDBC'  
  uint32_t magic; // always 'WDBC'
2 Records Integer (4-bytes) number of records in the file
  uint32_t record_count; // records per file
  3 Fields Integer (4-bytes) number of fields per record
  uint32_t field_count; // fields per record
  4 Record Size Integer (4-bytes) Fields*FieldSize (FieldSize is usually 4, but not always)  
  uint32_t record_size; // sum (sizeof (field_type_i)) | 0 <= i < field_count. field_type_i is NOT defined in the files.
  5 String Block Size Integer Size of the string block
  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==  
==String Block==  

Revision as of 16:46, 3 October 2012

The DBC (DataBaseClient) files are clientside databases containing data about Items, NPC's, Enviroment, World etc.

Some of the following pages have been retrieved from "http://www.sourcepeek.com/wiki/" and "http://paste2.org/p/1366912"

Structure

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

Unlike the cache files, string data is stored in a block after the records. String data in records contain an offset to the string, starting from the string block. For example: If the address of the string block was 500, and the string value was 50, the address of the string would be at 550. The string block starts with a null character, and all strings are null-terminated.

Notes

  • When encountering a string field in a dbc file, it usually consists of an english name field as well as 7 additional fields for different localizations. Following the 8 String* fields is a bitmask field.
  • 2.1.1 changes the additional fields to 15.
  • Always add the fucking revision infomation about the datas!

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)