??? WDB和DBC類(lèi)似,因此對(duì)于其字段說(shuō)明亦采用和DBCFields.xml一樣格式,新增amount類(lèi)型,用于支持變化字段。
??? 下面是和Item相關(guān)的WDB字段定義:
??<File?name="itemtextcache.wdb"?version="1.0">
????<Note>http://www.madx.dk/wowdev/wiki/index.php?title=ItemTextCache.wdb</Note>
????<Fields>
??????<Field?position="0"?type="integer"?size="4">ID</Field>
??????<Field?position="1"?type="integer"?size="4">TextSize</Field>
??????<Field?position="2"?type="cstring"?size="0">Text</Field>
????</Fields>
??</File>
??<File?name="itemnamecache.wdb"?version="1.0">
????<Note>http://www.madx.dk/wowdev/wiki/index.php?title=ItemNameCache.wdb</Note>
????<Fields>
??????<Field?position="0"?type="integer"?size="4">ID</Field>
??????<Field?position="1"?type="integer"?size="4">EntrySize</Field>
??????<Field?position="2"?type="cstring"?size="0">Text</Field>
??????<Field?position="3"?type="integer"?size="4">Slot</Field>
????</Fields>
??</File>
??<File?name="itemcache.wdb"?version="1.0">
????<Note>http://www.sourcepeek.com/wiki/ItemCache.wdb</Note>
????<Fields>
??????<Field?position="0"?type="integer"?size="4">ID</Field>
??????<Field?position="1"?type="integer"?size="4">TextSize</Field>
??????<Field?position="2"?type="integer"?size="4">ClassID</Field>
??????<Field?position="3"?type="integer"?size="4">SubClassID</Field>
??????<Field?position="4"?type="integer"?size="4"></Field>
??????<Field?position="5"?type="cstring"?size="0">Name</Field>
??????<Field?position="6"?type="cstring"?size="0">Name</Field>
??????<Field?position="7"?type="cstring"?size="0">Name</Field>
??????<Field?position="8"?type="cstring"?size="0">Name</Field>
??????<Field?position="9"?type="integer"?size="4">DisplayID</Field>
??????<Field?position="10"?type="integer"?size="4">QualityID</Field>
??????<Field?position="11"?type="integer"?size="4">TypeFlag</Field>
??????<Field?position="12"?type="integer"?size="4">BuyPrice</Field>
??????<Field?position="13"?type="integer"?size="4">SellPrice</Field>
??????<Field?position="14"?type="integer"?size="4">SlotID</Field>
??????<Field?position="15"?type="integer"?size="4">ClassFlag</Field>
??????<Field?position="16"?type="integer"?size="4">RaceFlag</Field>
??????<Field?position="17"?type="integer"?size="4">Level</Field>
??????<Field?position="18"?type="integer"?size="4">RequiredLevel</Field>
??????<Field?position="19"?type="integer"?size="4">RequiredSkillID</Field>
??????<Field?position="20"?type="integer"?size="4">RequiredSkillLevel</Field>
??????<Field?position="21"?type="integer"?size="4">RequiredSpellID</Field>
??????<Field?position="22"?type="integer"?size="4">RequiredRankID</Field>
??????<Field?position="23"?type="integer"?size="4">RequiredUnknRank</Field>
??????<Field?position="24"?type="integer"?size="4">RequiredFactionID</Field>
??????<Field?position="25"?type="integer"?size="4">RequiredFactionLevel</Field>
??????<Field?position="26"?type="integer"?size="4">StackUnique</Field>
??????<Field?position="27"?type="integer"?size="4">StackAmount</Field>
??????<Field?position="28"?type="integer"?size="4">ContainerSlot</Field>
??????<Field?position="29"?type="amount"?size="4"?skipbyte="8">NumberOfStat</Field>
??????<Field?position="30"?type="float"?size="4">Damage1Min</Field>
??????<Field?position="31"?type="float"?size="4">Damage1Max</Field>
??????<Field?position="32"?type="integer"?size="4">Damage1TypeID</Field>
??????<Field?position="33"?type="float"?size="4">Damage2Min</Field>
??????<Field?position="34"?type="float"?size="4">Damage2Max</Field>
??????<Field?position="35"?type="integer"?size="4">Damage2TypeID</Field>
??????<Field?position="36"?type="float"?size="4">Damage3Min</Field>
??????<Field?position="37"?type="float"?size="4">Damage3Max</Field>
??????<Field?position="38"?type="integer"?size="4">Damage3TypeID</Field>
??????<Field?position="39"?type="float"?size="4">Damage4Min</Field>
??????<Field?position="40"?type="float"?size="4">Damage4Max</Field>
??????<Field?position="41"?type="integer"?size="4">Damage4TypeID</Field>
??????<Field?position="42"?type="float"?size="4">Damage5Min</Field>
??????<Field?position="43"?type="float"?size="4">Damage5Max</Field>
??????<Field?position="44"?type="integer"?size="4">Damage5TypeID</Field>
??????
??????<Field?position="45"?type="integer"?size="4">ResistPhysical</Field>
??????<Field?position="46"?type="integer"?size="4">ResistHoly</Field>
??????<Field?position="47"?type="integer"?size="4">ResistFire</Field>
??????<Field?position="48"?type="integer"?size="4">ResistNature</Field>
??????<Field?position="49"?type="integer"?size="4">ResistFrost</Field>
??????<Field?position="50"?type="integer"?size="4">ResistShadow</Field>
??????<Field?position="51"?type="integer"?size="4">ResistArcane</Field>
??????<Field?position="52"?type="integer"?size="4">WeaponDelay</Field>
??????<Field?position="53"?type="integer"?size="4">AmmoType</Field>
??????<Field?position="54"?type="float"?size="4">RangeModifier</Field>
??????<Field?position="55"?type="integer"?size="4">Spell1ID</Field>
??????<Field?position="56"?type="integer"?size="4">Spell1TriggerID</Field>
??????<Field?position="57"?type="integer"?size="4">Spell1Charges</Field>
??????<Field?position="58"?type="integer"?size="4">Spell1Cooldown</Field>
??????<Field?position="59"?type="integer"?size="4">Spell1CategoryID</Field>
??????<Field?position="60"?type="integer"?size="4">Spell1CategoryCooldown</Field>
??????<Field?position="61"?type="integer"?size="4">Spell2ID</Field>
??????<Field?position="62"?type="integer"?size="4">Spell2TriggerID</Field>
??????<Field?position="63"?type="integer"?size="4">Spell2Charges</Field>
??????<Field?position="64"?type="integer"?size="4">Spell2Cooldown</Field>
??????<Field?position="65"?type="integer"?size="4">Spell2CategoryID</Field>
??????<Field?position="66"?type="integer"?size="4">Spell2CategoryCooldown</Field>
??????<Field?position="67"?type="integer"?size="4">Spell31ID</Field>
??????<Field?position="68"?type="integer"?size="4">Spell3TriggerID</Field>
??????<Field?position="69"?type="integer"?size="4">Spell3Charges</Field>
??????<Field?position="70"?type="integer"?size="4">Spell3Cooldown</Field>
??????<Field?position="71"?type="integer"?size="4">Spell3CategoryID</Field>
??????<Field?position="72"?type="integer"?size="4">Spell3CategoryCooldown</Field>
??????<Field?position="73"?type="integer"?size="4">Spell4ID</Field>
??????<Field?position="74"?type="integer"?size="4">Spell4TriggerID</Field>
??????<Field?position="75"?type="integer"?size="4">Spell4Charges</Field>
??????<Field?position="76"?type="integer"?size="4">Spell4Cooldown</Field>
??????<Field?position="77"?type="integer"?size="4">Spell4CategoryID</Field>
??????<Field?position="78"?type="integer"?size="4">Spell4CategoryCooldown</Field>
??????<Field?position="79"?type="integer"?size="4">Spell5ID</Field>
??????<Field?position="80"?type="integer"?size="4">Spell5TriggerID</Field>
??????<Field?position="81"?type="integer"?size="4">Spell5Charges</Field>
??????<Field?position="82"?type="integer"?size="4">Spell5Cooldown</Field>
??????<Field?position="83"?type="integer"?size="4">Spell5CategoryID</Field>
??????<Field?position="84"?type="integer"?size="4">Spell5CategoryCooldown</Field>??
??????
??????<Field?position="85"?type="integer"?size="4">BondID</Field>
??????<Field?position="86"?type="cstring"?size="0">Description</Field>
??????<Field?position="87"?type="integer"?size="4">BookTextID</Field>
??????<Field?position="88"?type="integer"?size="4">BookPages</Field>
??????<Field?position="89"?type="integer"?size="4">BookStationaryID</Field>
??????<Field?position="90"?type="integer"?size="4">BeginQuestID</Field>
??????<Field?position="91"?type="integer"?size="4">LockPickTalent</Field>
??????<Field?position="92"?type="integer"?size="4">MaterialID</Field>
??????<Field?position="93"?type="integer"?size="4">SheathID</Field>
??????<Field?position="94"?type="integer"?size="4">RandomPropertyID</Field>
??????<Field?position="95"?type="integer"?size="4">RandomPropertyID2?</Field>
??????<Field?position="96"?type="integer"?size="4">BlockValue</Field>
??????<Field?position="97"?type="integer"?size="4">ItemSetID</Field>
??????<Field?position="98"?type="integer"?size="4">DurabilityValue</Field>
??????<Field?position="99"?type="integer"?size="4">AreaID</Field>
??????<Field?position="100"?type="integer"?size="4">MapID</Field>
??????<Field?position="101"?type="integer"?size="4">BagFamily</Field>
??????<Field?position="102"?type="integer"?size="4">TotemCategory</Field>
??????<Field?position="103"?type="integer"?size="4">SocketColor1</Field>
??????<Field?position="104"?type="integer"?size="4">Unkn</Field>
??????<Field?position="105"?type="integer"?size="4">SocketColor2</Field>
??????<Field?position="106"?type="integer"?size="4">Unkn</Field>
??????<Field?position="107"?type="integer"?size="4">SocketColor3</Field>
??????<Field?position="108"?type="integer"?size="4">Unkn</Field>
??????<Field?position="109"?type="integer"?size="4">GemProperty</Field>
??????<Field?position="110"?type="integer"?size="4">Unkn</Field>
??????<Field?position="111"?type="integer"?size="4">DisenchantSkillLevel</Field>
??????
??????<Field?position="112"?type="float"?size="4">ArmorDemageModifier</Field>
??????<Field?position="113"?type="integer"?size="4">ExistingDuration</Field>
??????<Field?position="114"?type="integer"?size="4">Unkn</Field>
????</Fields>
??</File>
??? 被ItemCache.wdb的字段搞死了~這個(gè)WDB字段變化較大和較快,根據(jù)wiki上的說(shuō)明來(lái)定義字段是不對(duì)的,咱們國(guó)服的版本很特殊,導(dǎo)致在不得不一個(gè)一個(gè)字節(jié)的對(duì),再根據(jù)wiki上的說(shuō)明一點(diǎn)一點(diǎn)確認(rèn),前后消耗4小時(shí)之多,累死了~回頭有機(jī)會(huì)把分析的“手稿”,拍了傳上來(lái),嘿嘿~
??? WDB字段變化較頻繁,這也意味著在下個(gè)版本時(shí),將不得不重新修過(guò)字段定義,還好,咱們國(guó)服這兩個(gè)月不會(huì)變化了,哇哈哈~
??? 這里是我本機(jī)上的
ItemCache.wdb中導(dǎo)出的Item表內(nèi)容,有興趣的下載看看了,目前網(wǎng)絡(luò)上EN,zhTW版本很多,但咱們的zhCN比較少~
<--------補(bǔ)充分割線--------->
??? 下面的圖顯示了我是如何分析Item數(shù)據(jù)的,別雷到,方法很原始--用筆和紙的方式。。。。嘿嘿~

??? 整個(gè)分析過(guò)程分兩步,定位WDB頭尺寸,wiki上說(shuō)頭有六個(gè)字段,實(shí)際后面還有一排小字說(shuō)那不是咱們國(guó)服版本,因?yàn)樵蹅冎挥形鍌€(gè)字段,這個(gè)粗心導(dǎo)致前面的分析一直是錯(cuò)位的,死活數(shù)據(jù)都不正確,不得不打印出來(lái)一個(gè)一個(gè)字節(jié)看了;然后是分析數(shù)據(jù)記錄,咱們還是落伍的,但由于怎么咱也3.0了,因此zhCN的WDB是一個(gè)舊版和新版的混合體,于是不得不打印出來(lái)一個(gè)一個(gè)字節(jié)看了~還好,不管內(nèi)容是否正確,數(shù)據(jù)都讀出來(lái)了~