wxDeMPQ更新 - DBC的快速查詢實現(xiàn),并上傳DBQueryLibrary
??? 為了獲得一個模型的BLP文件名稱,需要查詢特定的DBC和WDB文件。例如,為了得到某個裝備的模型,需要從WDB文件中,根據(jù)其名稱獲得對應(yīng)的ID和DisplayID,雖然這兩個ID在Item.dbc中也有對應(yīng)關(guān)系,但Item.dbc卻中沒有名稱,所以WDB對于按照名稱查詢來說,是非常重要的;(插一句啊,也許有人會問,為啥不都放在item.dbc中呢,多簡單啊,如果真的這樣做,代價就是一來更大的數(shù)據(jù)文件,首先名稱是字符串類型,數(shù)據(jù)量比較大,加上又和“本地化”相關(guān),就算只有本地語言,根據(jù)DBC的設(shè)計,也需要預(yù)留其他語言的位置;然后是對于想我這樣的修仙玩家來說,大多數(shù)item是見不到的,這樣本地數(shù)據(jù)就不用保持這個值了;還有就是可以更加靈活的更名,item改名了,不用patch。我是這樣理解的,基于我都能想到的這些優(yōu)勢,想來BLZ也自然會將名稱放在wdb中了。)有了ID和DisplayID后,在ItemDisplayInfo.dbc中就可以獲得模型的M2和BLP了,理論上就可以Show了。
??? 目前網(wǎng)絡(luò)上多數(shù)的直接使用item.csv,來獲得名稱與ID和DisplayID對應(yīng)關(guān)系,來最終Show模型,想來應(yīng)該是一個人的WDB內(nèi)容是不全的,需要補充,還有估計這樣就省去了對WDB的查詢了。
??? 對于wxDeMPQ來說,我是想自動獲得這個對應(yīng)關(guān)系,(當然,我的WDB內(nèi)容空空。。。)這樣就需要一個實現(xiàn)查詢DBC和WDB的功能,于是就有了DBQueryLibrary。

??? 當前剛實現(xiàn)了對DBC的查詢,基于wxDeMPQ的需求,即根據(jù)一個字段的內(nèi)容,查詢另一個字段的內(nèi)容要求,DBQueryLibrary僅僅是簡單的兩個字段對于關(guān)系查詢,而且是唯一查詢,就是說,如果匹配上了,就獲得結(jié)果,并退出。要是需要枚舉操作,或者其他方式的查詢,如一對多、Key查全表等,改改應(yīng)該不難。這里是源碼,有興趣的改去吧。。。其中實現(xiàn)了DBC的加載和讀取方式,需要DBCFields.xml文件來指定DBC字段意義。編譯的話,需要tinyxml和stormlib。
??? 目前網(wǎng)絡(luò)上多數(shù)的直接使用item.csv,來獲得名稱與ID和DisplayID對應(yīng)關(guān)系,來最終Show模型,想來應(yīng)該是一個人的WDB內(nèi)容是不全的,需要補充,還有估計這樣就省去了對WDB的查詢了。
??? 對于wxDeMPQ來說,我是想自動獲得這個對應(yīng)關(guān)系,(當然,我的WDB內(nèi)容空空。。。)這樣就需要一個實現(xiàn)查詢DBC和WDB的功能,于是就有了DBQueryLibrary。
??? 當前剛實現(xiàn)了對DBC的查詢,基于wxDeMPQ的需求,即根據(jù)一個字段的內(nèi)容,查詢另一個字段的內(nèi)容要求,DBQueryLibrary僅僅是簡單的兩個字段對于關(guān)系查詢,而且是唯一查詢,就是說,如果匹配上了,就獲得結(jié)果,并退出。要是需要枚舉操作,或者其他方式的查詢,如一對多、Key查全表等,改改應(yīng)該不難。這里是源碼,有興趣的改去吧。。。其中實現(xiàn)了DBC的加載和讀取方式,需要DBCFields.xml文件來指定DBC字段意義。編譯的話,需要tinyxml和stormlib。
posted on 2009-05-18 23:57 codejie 閱讀(549) 評論(0) 編輯 收藏 引用 所屬分類: MPQ - WOW

