鐵之狂傲

 取回密碼
 註冊
搜尋

切換到指定樓層
1#
MEDIA檔案夾內的檔案大致有這些類型: DAT,LAYOUT,RAW,MESH,HIE,TEMPLATE,ANIMATION,SKELETON等.
除了以上這些類型外,還有圖片檔案PNG和DDS,字型檔案TTF和FONT,這兩類就不多做介紹了.
注意:所有檔案名和尾碼名都必須是大寫,否則遊戲無法識別!!!
1.DAT檔案
DAT檔案是目前可以MOD最主要的部分,也是最容易修改的部分,多數MOD教學都有對特點DAT檔案的修改介紹,所以這裡就只介紹一些基礎性的知識.
DAT檔案首先需要使用dat2txt轉換成txt檔案才能進行修改.新建txt檔案也可以,但是要保證編碼格式為UTF-16,如果你沒有這個能力,還是修改轉換過來的txt檔案來得簡單.dat2txt軟體建議使用py版本的,因為可以看到原始碼,並且有tl2_dat_strings.txt檔案(exe版本不確定是否有),會很有優勢.
DAT檔案的結構是一個嵌套型的結構,使用[XXX]...[/XXX]的結構來進行嵌套,其中XXX為對應嵌套關鍵字,省略號裡的內容為此關鍵字下定義的數據.實際什麼時候需要進行嵌套,請自行參考相似檔案.
一個DAT檔案的嵌套結構可能是:
[A]
...

...

...
[C]
...
[/C]
...
[/A]
這樣的多層結構,甚至更加複雜,所以在修改這樣的檔案時,很可能因為嵌套對應錯誤而發生無法轉換的情況(技能修改常出現這個問題).
當你嵌套結構有誤時,其報錯方式是停留在dos視窗,並顯示類似如下的報錯情況:
01.jpg
因此,只要你看見line XXX的錯誤,你直接到對應行找嵌套錯誤就可以了.
對於DAT檔案內的一行數據,比如:
<INTEGER>STRENGTH_REQUIRED:30
其中<>中的內容是數據類型,包括:
INTEGER:整型,也就是整數,一般來說應該是32位的,範圍為-2,147,483,648 到2,147,483,647.但是部分GUID的類型也是INTEGER,其實際為64位整型,也就是INTER64
INTEGER64:64位整型,範圍為-9,223,372,036,854,775,808 到9,223,372,036,854,775,807.所以寫GUID時千萬別超過這個範圍.
FLOAT:浮點數,也就是小數.
STRING:字元串型,也就是一組字元,比如一個路徑,一個名字等等.
BOOL:布爾型,只有兩個值,true代表真,false代表假.
TRANSLATE:翻譯型,也就是顯示在遊戲中的文字,如果是中文版的遊戲,這一項可以為中文.此外這一項還可以使用一些特定的關鍵字來調用遊戲內部參數,也可以用十六進制的顏色表示來設定顯示顏色.
<>和:之間的部分(例子中STRENGTH_REQUIRED)是關鍵字:
所謂關鍵字,就是定義這一項屬性是什麼,比如STRENGTH_REQUIRED就是這件裝備的力量要求.
一般關鍵字的選擇只能從同類檔案中尋找,因為你所寫的關鍵字只要和系統內設定的有一點點不一致,就無法生效,並且有可能導致無法轉換回DAT檔案.
但是有些時候盲目地找關鍵字會很麻煩,所以這裡有一個小技巧:在tl2_dat_strings.txt中找,這個檔案在py版的dat2txt中有.
tl2_dat_strings.txt中列出了所有已經解析出來的,可以轉換的可能關鍵字,如果某個關鍵字不在這個列表裡,其在最後的txt檔案中一定是以hash碼的形式存放的,比如0x9b4df640.
:後的部分是該屬性的實際值:
必須要滿足該值與數據類型的一致性才能進行轉換.
2.HIE檔案
MEDIA檔案夾內的HIE檔案只有兩個:FEATURETAGS.HIE和UNITTYPES.HIE,前者可能是定義一些物件的,後者是定義物品類型的.
HIE檔案也可以使用dat2txt進行轉換.
3.TEMPLATE檔案
TEMPLATE檔案是定義地圖類型的,完成部分地圖參數,地圖隨機性,地圖聲效,光影等方面的設定,上一級檔案是DUNGEONS檔案夾內的檔案,下一級檔案是通目錄下子檔案夾內的LAYOUT檔案.
TEMPLATE檔案也可以使用dat2txt進行轉換.
4.ANIMATION檔案
ANIMATION檔案是定義模型動作參數的檔案,可以使用dat2txt進行轉換.1代的模型有類似的檔案,不過可以之間用記事本打開,移植時需要注意二代的ANIMATION檔案會多一些參數,需要手動添加.
5.SKELETON,MESH檔案
這兩個檔案都是需要3D模型技術的,我並不會修改.1代模型移植時,兩者都可以直接移植.
6.RAW檔案
MEIDA檔案夾下的RAW檔案一共7個,RAW檔案可以使用raw2txt進行轉換,轉換後的檔案格式與DAT檔案轉換後的檔案格式類似.
RAW檔案是類似於註冊表的一個檔案,用於將新添加的項進行註冊,有些項目如果不註冊,則添加無效.
不同的RAW檔案的註冊方法不同,請根據同檔案下其它項目的註冊方法進行註冊.
由於RAW檔案有很多項目的含義仍不清楚(UNKNOWN項),所以當你要新加項目是,選用最接近項目的參數即可.
RAW檔案還負責最底層的隨機,比如SPAWNCLASS檔案夾的隨機掉落檔案一般只到某類物品,比如UNIQUE WAND,這時候遊戲就會調用RAW檔案中的RARITY參數進行掉落,RARITY參數與WEIGHT參數效果類似,越大掉落概率越高.
各個RAW檔案註冊的內容:
AFFXIES.RAW:註冊詞綴,也就是AFFIXES檔案夾下的內容,WEIGHT同樣決定了詞綴隨機到的概率.
MISSILES.RAW:註冊彈道,也就是MISSILES檔案夾下的內容.
ROOMPIECES.RAW:註冊場景物品,也就是LEVELSETS檔案夾下的內容.
SKILLS.RAW:註冊技能,也就是SKILLS檔案夾下的內容.
TRIGGERABLES.RAW:註冊觸發器,也就是TRIGGERABLES.RAW檔案夾下的內容.
UI.RAW:註冊使用者界面,是UI檔案夾下的LAYOUT檔案.
UNITDATA.RAW:註冊單位,是UNITS檔案夾下的內容,包括物品,怪物,人物,觸發裝置.
7.LAYOUT檔案
LAYOUT檔案需要使用layout編輯器來進行修改,由於目前該編輯器功能很弱,所以可以修改的內容很少.目前所能做到的只有學習現有layout實現新功能.
首先介紹一下layout編輯器的界面:
03.jpg
1:選單欄:需要注意的是上面有搜索功能,初步確定想要修改的內容在哪就靠它了.
2.LAYOUT檔案結構樹狀圖:定義了一個樹狀的結構,子節點可以看作是父節點的補充定義.
3.節點性質:TYPE ID為類型編號,TYPE NAME為類型名(很多都是UNKNOWN),Object GUID為此節點的GUID,Object Name為此節點名字(無關緊要),Child Count為子節點的個數,Parent Object為父節點的GUID.
4.已設置屬性:也就是在這一個項目中已經進行設置的屬性,最左邊的X可以刪除這一行屬性,然後從左到右是屬性編號,屬性名字(可以自己設定),屬性數據類型(可以自己設定,但可能引起錯誤),數據值.
5.未設置屬性:也就是在這一個項目中可以進行設置的屬性,最左邊的+可以添加這一行.
需要着重說明的兩個TYPE ID:
36: LOGIC GROUP
這個類型是定義邏輯關係的,比如一個按鈕按下後執行怎樣的操作等等,目前可以做的只有使用原有的邏輯來完成新的功能.
這一個節點中Child Count項變成了Logic Group Count.其每一個子節點為一個邏輯,每個邏輯可以完成一項或幾項功能,最簡單的為指向功能:
05.jpg
右上角的Target Object GUID即為指向的單元.左上角為此邏輯在此邏輯組(Logic Group)內的編號.
下面的每一項為一個邏輯,也就是當指向單元滿足了Event項目內設定的內容時,Target Group所指向的單元執行Action內指定的操作.
35:TIMELINE
這個類型是定義時間軸的,裡面的內容可能有所缺失,暫時修改起來有一定難度.
其它TYPE ID中數據類型的判斷:
目前layout編輯器非常粗糙,很多屬性都是沒有名字,沒有類型(預設為BINARY),這對我們修改layout檔案很不利.
這裡有一些小技巧可以判斷屬性的類型,但是在改變類型前一定要切記備份layout檔案和layout編輯器下的ObjectMetadata.xml和NameMappings.xml檔案.因為有些時候錯誤的數據類型會導致layout檔案損壞以及layout編輯器工作不正常.
首先,當你看見XX-00-XX-00-XX-00-XX-00這樣的數據時,你可以嘗試將類型改為STRING,一般來說就能出現正常的字元串.但是有些時候並不會有效,這時候你可以嘗試刪掉最開頭的XX-00-,再進行轉換.這是因為,有些項目中會儲存這個字元串的長度(十六進制),也就是最開始的XX-00,你可以修改後,自行計算長度在轉換回BINARY後添加.
其次,當你看到XX-XX-XX-XX的數據時,你可以嘗試選擇INT32和FLOAT類型,實際選用哪種可以根據標綠的四個值來判斷,如果全為0或者全為F,一般是INT32類型,否則為FLOAT類型,當然,你轉換數據後,也可以從數據是否合理(比如特別大或者特別小的數據一般是錯誤的)得到一個大致的判斷.
記一個XX為長度1的話,如果數據長度為4的倍數,也就是4n時,你可以嘗試FLOATXY(8),FLOATXYZ(12),INT32XY(8),INT32XYZ(12).
如果數據長度為4n+2時,一般為float[]和int32[],其中最開始的兩個長度為後面的項目數(n).
 
轉播0 分享0 收藏0

回覆 使用道具 檢舉

你需要登入後才可以回覆 登入 | 註冊

存檔|手機版|聯絡我們|新聞提供|鐵之狂傲

GMT+8, 25-1-8 21:54 , Processed in 0.023603 second(s), 17 queries , Gzip On.

回頂部