2007年4月4日 星期三

mangos DBC File Format

http://wowdev.org/wiki/index.php/DBC
DBC 文件格式說明:

Header(5個資料,共20 bytes)
Offset Type Description
0x00 char[4] (ident:固定為WDBC4個英文字) always 'WDBC'
0x04 uint32 (rows:這個資料表的行數,也就是說共有幾筆資料)nRecords - number of records in the file
0x08 uint32 (cols:這個資料表的列數,也就是共有幾個欄位) nFields - number of 4-byte fields per record
0x0C uint32 (rlen:一筆資料所佔的大小)recordSize = nFields * 4 (not always true!)
0x10 uint32 (slen:字串區的大小)string block size

data:(rows*rlen byes)(總共的資料大小)
row1(rlen bytes)
....
....
....
text:(slen bytes)(它是使用UTF8格式儲存的
'\0'(1 bytes) -->始終為'\0',表示一空字串
text1 (?byest) -->以'\0'結束的字串符號
....
....
....

如果想研究怎麼寫這段程式,可以至
http://wowmapview.cvs.sourceforge.net/wowmapview/wowmapview/
裏面有個dbcfile.cpp,dbcfile.h可以參考,它是用C++寫的

Spell.dbc 欄位意義
http://www.e9sky.com/bbs/read.php?tid=98
===========================================================
[轉載]使用DBC編輯器,增強你的裝備綠字效果!!


小小研究了一下綠字效果的增強~

大家一起來玩玩看,至於編輯器...本來打算放附件裡,可是好像限制大小太小了,放不下@@
找了找我也沒啥空間..就先放RS的好了

http://rapidshare.de/files/34056676/DBCedit.rar

呃,因為我沒上GF很久了,看了林碧大的回帖才發現好像是這樣...
如果有玩GF的建議不要改~~除非是用另外一個資料夾做私服客戶端~

至於EMU的東西...沒碰過所以不清楚@@
下面是自己亂摸來的~要是有什麼錯誤希望高手們幫忙訂正!! 感激~


首先,備份DBC底下的 spell.dbc
重要!!不然到時候要復原可是要搞老半天的...

接著用DBC編輯器打開模擬器底下的DBC資料夾,找到 spell.dbc

開啟需要一小段時間,沒出現資料的地方要稍微等一下~

右下方顯示打開文件完成後,即可按照「 技能編號 」的地方尋找你要修改的spellid


以下舉例較常用到的3項:



1.所有法術和治療效果提升最多XX點


法師要玩的爽,又不想把全部法術效果調高?

那就靠這個綠字效果了~


舉個大元帥之杖的spellid為例 (23929:全部法術和治療效果提升最多71點)

在技能編號的位置找到23929之後,往後拉拉拉...

大約在74和75欄位的地方(每個人的DBC不同,所以這裡應該不一定,總之是兩個數值70的地方)

※由於法術系的效果都是由1開始,就算你打1它也是增加2,所以你要找的數值全都是遊戲裡顯示的數值-1


把這兩行裡面的70都改為9999 (當然你要打幾個9都行...)

然後按下滑鼠右鍵,選擇「 當前行寫入 」等系統出現 "XXXX行 寫入完成" 時,改好囉


但是等等~ 我們還要修改一個地方,你在遊戲裡才能也看見這個數值,不然雖然有效果,但是遊戲裡不會顯示出來。

就是客戶端~這點倒是有點麻煩...


一樣打開DBC編輯文件,選擇客戶端內 \DBFilesClient\spell.dbc (或任何你放的地方)

接下來的步驟和上面一模一樣~

改好後~進入遊戲~

恭喜你...用奧爆清副本吧~很快樂的...



2.提昇你致命一擊的機率x%

因為武器的殺傷力或防禦力都可直接從裝備下手,所以比較需要的綠字效果應該只有爆擊率了~

以下舉例 spellid:7597 (使你造成致命一擊的機率上升1%)

一樣找到技能編號7597,往後拉拉拉....


這有點複雜,每個對應的地方不一定一樣,但一定差不多..

沒特別改過DBC的人,應該都在62.65這兩個欄位裡面。


62是你的最大增值效果,65是你的最小增值效果。


62保持1,65改成100 (或任何數值)


一樣右鍵,當前行寫入~
你的爆擊率就會變成提升 100 % 囉..

那要是你把62也改100會怎樣呢...?

答案是會變成暴擊機率從 100 % 到 10000 %
也就是說,最大值是會乘以最小值的喔

所以最大值通常用1就可以了

然後當然也一樣,客戶端改一改~
上線爆擊去吧..@@



3.提升法術致命一擊的機率x%

因為法術的致命和一般的致命放的位置有些許不同,所以稍為提一下~

以下舉例 spellid:18382 (使你的法術爆擊率增加2%)


找到18382,拉拉拉...

在欄位74的地方,有個1,把它改成99~
(法術系的效果皆為1開始,所以填入數值後會自動+1)

右鍵,當前行寫入~ 然後改客戶端~ 搞定。



差不多會用到的就這三個了~DBC可以研究的東西太多了@@
想改啥就改啥..再配合class可以把魔獸改的亂七八糟= =

不過小弟還沒研究那麼深入...新手咩~~囧rz

希望想玩綠字的人一起研究囉~
=======================================================
http://www.bitscn.com/wb/gameserver/200609/77187.html
關於WOW的DBC文件內容的介紹
對wow的dbc文件已經學習很久了,而且已經有點成果了,現在一個一個的給大家介紹。 先从简单的开始:先從簡單的開始:

第一个:WorldSafeLocs.dbc第一個:WorldSafeLocs.dbc
从字面上理解是游戏中的安全位置数据從字面上理解是遊戲中的安全位置數據

位置 : 位于dbc.mpq patch.mpq中模拟器的scripts目录下面位置 : 位於dbc.mpqpatch.mpq中模擬器的scripts目錄下面

作用 : 用来设置复活点 作用 : 用來設置復活點 


第一列 : 编号 用来 调用此复活点 (对于游戏中调用复活点机制是用的编号调用 还是位置调用 因为手头上没有将浮点数转换为16进制的工具 所以没有测试)第一列 :編號 用來 調用此復活點(對於遊戲中調用複活點機制是用的編號調用 還是位置調用 因為手頭上沒有將浮點數轉換為16進制的工具 所以沒有測試)
第二列 : 此复活点所在 地图编号
第三列 : 此复活点所在 编号地图中的x值
第四列 : 此复活点所在 编号地图中的y值
第五列 : 此复活点所在 编号地图中的z值
第六列 : 此复活点所在地点名称
第十四列 : 此复活点数据结束标志
当游戏人物 死掉后 程序会根据 游戏人物的位置 在WorldSafeLocs.dbc中查找合适的位置
把游戏人物传到此位置 而该位置附近应该设置复活天使 SF的天使设置也应该按照这些位置设置 其实这些位置 都在一个公墓里面
在研究这个文件时发现 一个现象 当游戏人物复活后 在复活位置 不能施放魔法 而且血 魔 都不恢复
对于 热衷修改游戏的朋友 可以自己将 第 二 三 四 五 列修改 达到修改复活位置的目的
因为现在没有找到向dbc文件中添加工具 所以还无法扩充dbc文件第二列 :此復活點所在 地圖編號
第三列 :此復活點所在 編號地圖中的x值
第四列 :此復活點所在 編號地圖中的y值
第五列 :此復活點所在 編號地圖中的z值
第六列 :此復活點所在地點名稱
第十四列 :此復活點數據結束標誌
當遊戲人物 死掉後 程序會根據 遊戲人物的位置 在WorldSafeLocs.dbc中查找合適的位置
把遊戲人物傳到此位置 而該位置附近應該設置復活天使 SF的天使設置也應該按照這些位置設置 其實這些位置 都在一個公墓裡面
在研究這個文件時發現 一個現象 當遊戲人物復活後 在復活位置 不能施放魔法而且血 魔 都不恢復
對於 熱衷修改遊戲的朋友 可以自己將 第 二 三 四 五 列修改 達到修改復活位置的目的
因為現在沒有找到向dbc文件中添加工具 所以還無法擴充dbc文件



第二个:TaxiNodes.dbc第二個:TaxiNodes.dbc
从字面上理解是出租车点数据,其实就是飞机传送点的数据從字面上理解是出租車點數據,其實就是飛機傳送點的數據

位置 : 位于dbc.mpq patch.mpq中模拟器的scripts目录下面位置 : 位於dbc.mpqpatch.mpq中模擬器的scripts目錄下面

作用 : 用来定义飞机传送点 作用 : 用來定義飛機傳送點 

第一列 : 编号 用来 调用此飞机传送点
第二列 : 此飞机传送点所在 地图编号
第三列 : 此飞机传送点所在 编号地图中的x值
第四列 : 此飞机传送点所在 编号地图中的y值
第五列 : 此飞机传送点所在 编号地图中的z值
第六列 : 此飞机传送点所在地点名称
第十四列 : 此飞机传送点数据结束标志第一列 :編號 用來 調用此飛機傳送點
第二列 :此飛機傳送點所在 地圖編號
第三列 :此飛機傳送點所在 編號地圖中的x值
第四列 :此飛機傳送點所在 編號地圖中的y值
第五列 :此飛機傳送點所在 編號地圖中的z值
第六列 :此飛機傳送點所在地點名稱
第十四列 :此飛機傳送點數據結束標誌
SF中飞机传送员的位置设置可以根据 此文件来设置 
传送员传送的路线是 模拟器根据传送员的位置 自动设置的SF中飛機傳送員的位置設置可以根據 此文件來設置 
傳送員傳送的路線是 模擬器根據傳送員的位置 自動設置的



第三个 TaxiPath.dbc第三個 TaxiPath.dbc
从字面上理解是出租车路线数据,其实就是飞机传送路线的数据從字面上理解是出租車路線數據,其實就是飛機傳送路線的數據

位置 : 位于dbc.mpq patch.mpq中模拟器的scripts目录下面位置 : 位於dbc.mpqpatch.mpq中模擬器的scripts目錄下面

作用 : 用来定义飞机路线的编号 也是飞艇和船的路线编号作用 : 用來定義飛機路線的編號也是飛艇和船的路線編號

第一列 : 路线编号 用来调用此飞机路线
第二列 : 此飞机传送路线的端点A 编号
第三列 : 此飞机传送路线的端点B 编号、端点、编号定义见 TaxiNodes.dbc 内容的介绍
第四列 : 乘坐此飞机传送路线所需费用,单位铜币。第一列 :路線編號 用來調用此飛機路線
第二列 :此飛機傳送路線的端點A 編號
第三列 :此飛機傳送路線的端點B 編號、端點、編號定義見TaxiNodes.dbc內容的介紹
第四列 :乘坐此飛機傳送路線所需費用,單位銅幣。 如果为0,则此路线免费,能够免费的好像只有飞艇和船。如果為0,則此路線免費,能夠免費的好像只有飛艇和船。 SF中飞艇和船在gameobjects.scp中有其定义,大家看看飞艇和船的属性,sound0=XXX,其实XXX就是该飞艇或船的路线定义编号SF中飛艇和船在gameobjects.scp中有其定義,大家看看飛艇和船的屬性,sound0=XXX,其實XXX就是該飛艇或船的路線定義編號



第四个 TaxiPathNode.dbc第四個 TaxiPathNode.dbc
从字面上理解是出租车路线点数据,其实就是飞机传送路线点的数据從字面上理解是出租車路線點數據,其實就是飛機傳送路線點的數據

位置 : 位于dbc.mpq patch.mpq 中 位置 : 位於dbc.mpqpatch.mpq中 

作用 : 用来定义飞机路线的每个路线点 也是飞艇和船的路线点作用 : 用來定義飛機路線的每個路線點也是飛艇和船的路線點

第一列 :此路线点总流水编号 
第二列 : 此飞机传送路线编号 路线编号 定义见TaxiPath.dbc 内容的介绍
第三列 : 此飞机传送路线中路线点编号
第四列 : 此飞机传送路线点所在地图编号
第五列 : 此飞机传送 路线中路线点的X值
第六列 : 此飞机传送 路线中路线点的Y值
第七列 : 此飞机传送 路线中路线点的Z值
第八列 : 未知
第九列 : 未知第一列 :此路線點總流水編號 
第二列 :此飛機傳送路線編號 路線編號 定義見TaxiPath.dbc內容的介紹
第三列 :此飛機傳送路線中路線點編號
第四列 : 此飛機傳送路線點所在地圖編號
第五列 : 此飛機傳送路線中路線點的X值
第六列 : 此飛機傳送路線中路線點的Y值
第七列 : 此飛機傳送路線中路線點的Z值
第八列 : 未知
第九列 : 未知

对于第一列路线点总流水编号,观查可以发现,即使在同一路线中也有编号不连续的现象。對於第一列路線點總流水編號,觀查可以發現,即使在同一路線中也有編號不連續的現象。 再看这前后不连续点的坐标值出现突变,所以估计这个总流水编号也是有一定其它作用的再看這前後不連續點的坐標值出現突變,所以估計這個總流水編號也是有一定其它作用的



第五个 SpellCastTimes.dbc第五個 SpellCastTimes.dbc
从字面上理解是法术施放时间数据從字面上理解是法術施放時間數據

位置 : 位于dbc.mpq 中模拟器的scripts目录下面位置 : 位於dbc.mpq中模擬器的scripts目錄下面

作用 : 用来定义法术施放时间 
第一列 : 施放时间编号,用来调用此施放时间,调用编号在spell.dbc中是第15列
第二列 : 此编号的施放时间
第三列 : 未知 估计与商业技能的制作时间有关
第四列 : 此编号的施放时间作用 : 用來定義法術施放時間 
第一列 :施放時間編號,用來調用此施放時間,調用編號在spell.dbc中是第15列
第二列 :此編號的施放時間
第三列 :未知 估計與商業技能的製作時間有關
第四列 :此編號的施放時間

沒有留言:

一個小故事讓我們明白資金流通的意義

“又是炎熱小鎮慵懶的一天。太陽高掛,街道無人,每個人都債台高築,靠信用度日。這時,從外地來了一位有錢的旅客,他進了一家旅館,拿出一張1000 元鈔票放在櫃檯,說想先看看房間,挑一間合適的過夜,就在此人上樓的時候---- 店主抓了這張1000 元鈔,跑到隔壁屠戶那裡支付了他欠的肉錢...