Skip to content

Data workflow

Ketho edited this page Jan 10, 2019 · 15 revisions

Get File Data IDs

  1. (Optional) Download most recent listfile.txt from wowdev/wow-listfile or bnet.marlam.in and drop into CASCExplorer folder
  2. Run WoW-Tools/CASCExplorer, open WoW storage, Tools -> Analyse Unknown Files
  3. Extract File Data IDs (with ObjectComponents and TEXTURECOMPONENTS in the path) from the generated debug.log (with regexes)
0137254 9F4B822E37F6BE8F All_WoW item/objectcomponents/cape/cape_blood_a_01black.blp
0137255 12E45079244BF65C All_WoW item/objectcomponents/cape/cape_blood_a_01blue.blp
0137256 1CB65339190FE2B5 All_WoW item/objectcomponents/cape/cape_blood_a_01gold.blp
FileData = {
	[137254] = "cape_blood_a_01black",
	[137255] = "cape_blood_a_01blue",
	[137256] = "cape_blood_a_01gold",
}

Parse DBC files

  • ItemAppearance.db2
  • ItemDisplayInfo.db2
  • ItemDisplayInfoMaterialRes.db2
  • TextureFileData.db2

Extract the DBC files with CASCExplorer / LuaCASC and parse with DBC Viewer / LuaDBC

...or just download from bnet.marlam.in DBC browser

Map Visual IDs to File Data IDs

DBC structures seem to change randomly every patch

Patch 8.0.1:

Item/ObjectComponents:
	ItemAppearance[1>3]
	ItemDisplayInfo[1>14]
	TextureFileData[4>1]
	FileData

Item/TEXTURECOMPONENTS:
	ItemAppearance[1>3]
	ItemDisplayInfoMaterialRes[4>3]
	TextureFileData[4>1]
	FileData
-- big tables in separate files
local dbc = {
	"ItemAppearance",
	"ItemDisplayInfo",
	"ItemDisplayInfoMaterialRes",
	"TextureFileData",
	"FileData",
}

for _, v in pairs(dbc) do
	require(v)
end

for k, v in pairs(ItemAppearance) do
	local dpi = ItemDisplayInfo[v] or ItemDisplayInfoMaterialRes[v]
	if dpi then
		local fd = FileData[TextureFileData[dpi]]
		if fd then
			print(k, fd)
		end
	end
end

Example ID

ItemAppearance = {
	[27921] = 40376,
}

ItemDisplayInfo = {
	[40376] = 15386,
}

TextureFileData = {
	[15386] = 137256,
}

FileData = {
	[137256] = "cape_blood_a_01gold",
}
VisualID = {
	[27921] = "cape_blood_a_01gold",
}
Clone this wiki locally