Not signed in (Sign In)

Welcome, Guest

Want to take part in these discussions? If you have an account, sign in now.

If you don't have an account, apply for one now.

Vanilla 1.1.4 is a product of Lussumo. More Information: Documentation, Community Support.

    • CommentAuthorguur3k
    • CommentTimeJun 13th 2006
     
    Ok, to start off with, I don't know the core languages like most of you do (C, basic, and all that) but am fairly well versed in some scripting languages and PHP, Perl, and the like. What I would like to know is where do I start, in general, on reading the WDB files?

    I have been across the great Internet seeking a way to open these files and have yet to find anyone with a program to do so. So far out of the hundreds of emails I sent to certain indivduals, all I usually get in response is "I made my own program" to extract the data from WDB files. So... if no one wishes to part with their Conversion Programs for these files can someone please tell me somewhere I can start, so I can begin to do this on my own?

    I have downloaded forty or more hex editing programs but I find no use in these. Same jumbled garbage every time I open one so how can I read these files... and more importantly, how can convert one to text? My god I'm nearly willing to shell out 500+ dollars right now for one! Been looking for a very long time.

    matt3k (AT) gmail.com
    •  
      CommentAuthorzeeg
    • CommentTimeJun 13th 2006
     
    http://www.hackwow.com/wiki/PHP_WDB_Parsing_Class

    I was a noob when writing this, so cut me some slack ;)
    •  
      CommentAuthorzeeg
    • CommentTimeJun 13th 2006 edited
     
    Here's freddy's LUA class

    http://www.hackwow.com/wiki/PHP_LUA_Parsing_Class
    • CommentAuthorguur3k
    • CommentTimeJun 14th 2006
     
    Just got the WDB parser working! My quest has ended... and, you know, the ability has been under my nose the whole time. Didn't realize there was a bin2hex function under PHP. ha!

    Thanks zeeg!
    • CommentAuthorXavior
    • CommentTimeJun 15th 2006
     
    Thanks zeeg, after a little bit of tinkering I also got that WDB parser to work.

    My only concern now is how to collect binary data such as image/icon files for each item. Is this something that's also available locally and that may be extracted?

    Thanks again for your help.
    •  
      CommentAuthorjb55
    • CommentTimeJun 15th 2006 edited
     
    Each item has its own DisplayID which contains information about the item model and icon. The DisplayID of an item is stored in column 9 in the ItemCache.wdb file, this number is an ID located in ItemDisplayInfo.dbc. The internal icon name is stored in column 6 of this ItemDisplayInfo entry.

    The icon name looks something like this: INV_Boots_01

    All the icons are stored in blp format and can be easily converted using a blp2 converter. The icons are in the mpq files and can be found under the icon name with the blp extension, like this: Interface\Icons\INV_Boots_01.blp
    • CommentAuthorXavior
    • CommentTimeJun 20th 2006
     
    Thanks JB,

    I followed your instructions and it all actually seems to work out. The only thing I couldn't get a hold of is a batch blp converter. If I'm to show all the icons on the web, I'd need to convert all blp files into a web viewable format (gif/jpg/png).

    Any suggestions on a tool that will do this?

    Thanks!
    • CommentAuthorguur3k
    • CommentTimeJun 21st 2006 edited
     
    The tool I use is a pile of crap but it gets the job done.. slow and tediously. It likes to crash on every third file if batch processing. But here it is. http://heyfucko.com/utilities/blp_convertor.zip

    Will output everything to TGA. And from there I batch convert the TGA's to jpg's with Paint Shop Pro.

    Or you can save yourself all the hassle and download the zip file of my icons. http://heyfucko.com/utilities/all_wow_icons.zip

    edit: I will remove icons.zip file by this weekend. So get it soon.

    Sorry about domain name. Was just a joke address I use to set stuff up for, for my friends. =)
    • CommentAuthorXavior
    • CommentTimeJun 21st 2006
     
    Sweet, thanks guur3k! I just got your zip icon extract, it's likely to save me a day's worth of work :)

    But...how can you be sure these are all the icons? Don't new items appear every few days in WoW? I also assumed new item icons were downloaded from WoW servers only once those items were first seen. Or are they all pre-intalled with the initial game installation?

    In that case, I'm guessing this batch extract process would need to be repeated in the very least each time the game itself gets updated (in case new items got added)?

    Thanks again, and let me know if you have answers to these more obscure questions.
    •  
      CommentAuthorzeeg
    • CommentTimeJun 21st 2006
     
    Each patch it needs to be done as they usually add or change items.

    All icons are preinstalled as DBCs are complete copies of the database to alleviate server stress.
    • CommentAuthorguur3k
    • CommentTimeJun 21st 2006
     
    That's nearly all of them, Xavior. And that zip file contained icons from version 5302, last live patch. There are new ones in the latest (5428) but have not got around to extracting them yet. When I do I'll put a zip file up of the new ones.

    As for icon graphics getting updated, it happens, but I wouldn't worry about them too much. Especially the INV_ icons. The spell/ability ones are the ones that can change most often. So, yes, it may be worth your while to search for *Ability* and *Spell* in the MPQ and update them but even then not much usually changes. There was a huge revision on the icon graphics three patches ago (I think) though for the spell/ability/racials.

    patch.mpq
    27 new/edited Ability icons.
    52 new/edited Spell...
    590 mostly NEW INV_ icons.

    ~all approx.
    • CommentAuthorXavior
    • CommentTimeJun 22nd 2006 edited
     
    Thanks for the input guys.

    I just tried an extract of itemcache.wdb. Here's a resulting space-delimited row output (of a random row...data might wrap in browser window but it's actually a single row):

    14047 7 0 Runecloth Runecloth Runecloth Runecloth 24897 1 0 1600 400 0 32767 511 50 0 0 0 0 0 0 0 0 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.#QNAN 0 -1.#QNAN 0 0 0 -1.#QNAN 0 -1.#QNAN 0 0 0 -1.#QNAN 0 -1.#QNAN 0 0 0 -1.#QNAN 0 -1.#QNAN 0 0 0 -1.#QNAN 0 -1.#QNAN 0 0 0 0 0 0 7 0 0 0 0 0 0 0

    Is there a particular reason that this does not match with what's described here http://www.hackwow.com/wiki/ItemCache.wdb ? In particular, looking at the first 4 values, they're of type int int int string instead of int int int int string as described in the wiki (so it's as if one column's value is missing). Is this a discrepancy in the wiki, in the extract script, or is there something I'm not seeing?

    By the way, how the hell was all the data on this wiki collected in the first place? Unless this was actually documented by the game developers themselves I don't see how this information could have been gathered (must have taken ages!)...

    Just wondering :-)
    •  
      CommentAuthorjb55
    • CommentTimeJun 22nd 2006 edited
     
    From the looks of it it seems you missed field 2, since there is no record size value there...

    Most of the data was found by comparing record values and see what the items had in common. I also found some by changing individual values and seeing its effect on the tooltip.
    • CommentAuthorXavior
    • CommentTimeJun 22nd 2006 edited
     
    Good call; zeek's parsing script doesn't extract that one column (#2) for some reason, I guess it would have paid off if I had looked at the actual output to begin with...
    • CommentAuthorguur3k
    • CommentTimeJun 22nd 2006 edited
     
    The 5-8 bytes (col 2) of each "row" is the entire entry* length. that is why it is left out.

    *edit
    • CommentAuthorXavior
    • CommentTimeJun 27th 2006
     
    Upon further investigation, I discovered the following:

    * itemcache.wdb has DisplayIDs (col 9) with values ranging from ~200 to ~35000
    * ItemDisplayInfo.dbc (which contains the icon name) has display information for DisplayIDs with values ranging from 399 to ~25000
    * ItemDisplayInfo has ~1560 unique icon names
    * the interface.mpq file contains roughly 2000 icons.

    Are all these discrepancies normal? Is it because some items don't have icons and/or many items share the same icon? Or is there something I'm missing here?
    • CommentAuthorMaggi
    • CommentTimeJun 29th 2006
     
    many items share the icons!
    • CommentAuthorguur3k
    • CommentTimeJun 29th 2006
     
    yup! =)
    • CommentAuthorXavior
    • CommentTimeJul 7th 2006 edited
     
    OK, I'm still stuck on this problem.

    I extracted ItemDisplayInfo.dbc using: http://www.wowguru.com/ui/229/dbc-to-csv-converter/

    This is the output I'm getting from the application:

    Converting .\ItemDisplayInfo.dbc...
    Guessing format (.\ItemDisplayInfo.dbc): 100% - Done!
    Rows:20753
    Cols:23
    Weird:92
    Theory:1
    DBlength:232637

    Writing file (.\ItemDisplayInfo.dbc): 100% - Done!
    -------------------------------
    Converted: 1 files (2141933 bytes)


    Everything seems great until I try to match these IDs to actual items. Only ~80% of items have matching displayIDs!

    When I sort the resulting CSV file by column A, I get a maximum ID (in col A) of 25571. However, an itemcache.wdb extract shows displayIDs in the range of 1 to roughly 35000. So where's the display info for the items in the range that's not covered by my CSV file (~25000-35000)?

    This appears to be a problem with the DBC to CSV converter...maybe it's not processing the entire file (and the resulting CSV gets cut short)? Can anyone please let me know if they successfully extracted those last 10,000 rows from that DBC file and if so, how they managed...Are there any other DBC to CSV tools out there that I could use to confirm the results obtained with the current tool?

    Thanks again for any help!
    • CommentAuthorguur3k
    • CommentTimeJul 7th 2006 edited
     
    I'm showing a min value of 220 and a max value of 36518 with my ItemDisplayInfo. Are you converting the most recent file from the patch.mpq?

    edit: just checked the ItemDisplayInfo in the dbc.mpq and its highest id is, indeed, 25571 which is the release/installation version of the file. =)
    • CommentAuthorXavior
    • CommentTimeJul 7th 2006
     
    That explains it...

    Thanks again guu3k, I'm one step closer :)