Skip to content
/ DBCD Public

C# library for reading DBC/DB2 database files from World of Warcraft

License

Notifications You must be signed in to change notification settings

wowdev/DBCD

Repository files navigation

DBCD

C# library for reading and writing DBC/DB2 database files from World of Warcraft with built-in support for WoWDBDefs definitions.

Features

  • Reading of WDBC (.dbc) and WDB2-WDB6, WDC1-WDC5 (.db2).
  • Experimental writing (WDC3 works, the others likely will too but are largely untested with actual WoW clients).
  • Applying of hotfixes (DBCache.bin).

Projects

DBCD

Contains the glue between DBCD.IO, DBDefsLib and the providers.

DBCD.IO

Contains the actual reading and writing of DBC/DB2 files.

Limitations

  • (Reading/Writing) Relies on WoWDBDefs (DBDs) for table structures, can not load tables without DBDs (yet).
  • (Writing) Does not support writing out DB2s with multiple sections.

Example Usage

// A FilesystemDBCProvider to load DBCs/DB2s from a directory on disk. 
var localDBCProvider = new FilesystemDBCProvider("D:/DBC");

// A FilesystemDBDProvider to load DBDs from a folder, you can also use GithubDBDProvider to download them directly from GitHub.
var localDBDProvider = new FilesystemDBDProvider("D:/WoWDBDefs/definitions");

// A new DBCD instance with the specified DBC/DBD provider.
var dbcd = new DBCD(localDBCProvider, localDBDProvider);

// Loads Map.db2 (note the table name without extension) for build 11.0.2.56044 (build might be needed to load correct definition).
var storage = dbcd.Load("Map", "11.0.2.56044");

// Get the row with ID 2552.
var row = storage[2552];

// Outputs "Khaz Algar (Surface)".
Console.WriteLine((string)row["MapName_lang"]);