由 setitems.bin 反推 Setitems.txt - 暗黑

Connor avatar
By Connor
at 2008-02-28T13:47

Table of Contents

打開檔案後,第一行是

00000000h: 7F 00 00 00 00 00 43 69 76 65 72 62 27 73 20 57 ;.....Civerb's W
└───┬───-┘
套裝裝備件數,7F(十六進制)即表有 127 件套裝裝備


將檔案開頭記載套裝裝備件數的部份刪去,則與 Setitems.txt 各欄位對應的情形為


┌─────────- index ──────────
00000006h: 43 69 76 65 72 62 27 73 20 57 61 72 64 00 00 00 ; Civerb's Ward...
───────── index ─────────┐
00000016h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
┌ item ┐ ┌─ set ─╥ lvl┐
00000026h: 00 00 00 00 00 00 6C 72 67 20 00 00 00 00 0D 00 ; ......lrg ......
lvl req chrtransform
↑ ↑invtransform
┌┴-╥─ rarity ╥ cost mult╥ cost add ┐│ ↑
00000036h: 09 00 07 00 00 00 05 00 00 00 C4 09 00 00 0D 0D ; ..........?....
┌────────- flippyfile -────────
00000046h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
───────- flippyfile ────────┐
00000056h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
┌───────── invfile -─────────
00000066h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
────────- invfile -────────┐
00000076h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
dropsound dropsfxframe
↑ usesound↑add func
┌┴-╥─┴┐│ ↑┌- prop1 -╥─ par1 ─╥ min1
00000086h: 00 00 00 00 00 01 00 00 00 00 00 00 00 00 0F 00 ; ................
min1 ╥─ max1 ─╥- prop2 ─╥─ par2 ─╥ min2
00000096h: 00 00 0F 00 00 00 10 00 00 00 00 00 00 00 0F 00 ; ................
min2 ╥─ max2 ─╥- prop3 ─╥─ par3 ─╥ min3
000000a6h: 00 00 0F 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
min3 ╥─ max3 ─╥- prop4 ─╥─ par4 ─╥ min4
000000b6h: 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
min4 ╥─ max4 ─╥- prop5 ─╥─ par5 ─╥ min5
000000c6h: 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
min5 ╥─ max5 ─╥- prop6 ─╥─ par6 ─╥ min6
000000d6h: 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
min6 ╥─ max6 ─╥- prop7 ─╥─ par7 ─╥ min7
000000e6h: 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
min7 ╥─ max7 ─╥- prop8 ─╥─ par8 ─╥ min8
000000f6h: 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
min8 ╥─ max8 ─╥- prop9 ─╥─ par9 ─╥ min9
00000106h: 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
min9 ╥─ max9 ─╥ aprop1a -╥- apar1a -╥ amin1a
00000116h: 00 00 00 00 00 00 0B 00 00 00 00 00 00 00 15 00 ; ................
amin1a ╥- amax1a -╥ aprop1b -╥- apar1b -╥ amin1b
00000126h: 00 00 16 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
amin1b ╥- amax1b -╥ aprop2a -╥- apar2a -╥ amin2a
00000136h: 00 00 00 00 00 00 27 00 00 00 00 00 00 00 19 00 ; ......'.........
amin2a ╥- amax2a -╥ aprop2b -╥- apar2b -╥ amin2b
00000146h: 00 00 1A 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
amin2b ╥- amax2b -╥ aprop3a -╥- apar3a -╥ amin3a
00000156h: 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
amin3a ╥- amax3a -╥ aprop3b -╥- apar3b -╥ amin3b
00000166h: 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
amin3b ╥- amax3b -╥ aprop4a -╥- apar4a -╥ amin4a
00000176h: 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
amin4a ╥- amax4a -╥ aprop4b -╥- apar4b -╥ amin4b
00000186h: 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
amin4b ╥- amax4b -╥ aprop5a -╥- apar5a -╥ amin5a
00000196h: 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
amin5a ╥- amax5a -╥ aprop5b -╥- apar5b -╥ amin5b
000001a6h: 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 ; ...... ......
amin5b ╥- amax5b -┐ ┌ 下一件套裝裝備的 index
000001b6h: 00 00 00 00 00 00 00 00 43 69 76 65 72 62 27 73 ; ........Civerb's
000001c6h: 20 49 63 6F 6E ; Icon


記錄的形式分為字與數(十六進制)兩種。index、item、flippyfile、invfile 這四欄位
是以字的形式記錄在 setitems.bin,打開檔案後望之即識。其他欄位皆以數的形式記錄,
並以兩個進位(十六進制)為一組,顛倒地由低位組排列至高位組。如 cost add 此欄,
在 Setitems.txt 中其值為 2500,於 setitems.bin 中所見為 C4 09 00 00,轉換過程為

╭───────────╮
│ ╭─────╮ │
│ │ ↓ ↓
2500 → 9C4(十六進制)→ 00 00 09 C4 → C4 09 00 00
│ │ ↑ ↑
│ ╰──╯ │
╰────────╯


數的轉換具有週期性,相差正好整數個週期的兩數其轉換的結果將相同。 週期的大小與記
錄的長度有關。以一個字元(十六進制的兩個位)的長度記錄的欄位,如 chrtransform
,其週期為 16*16=256;以兩個字元(十六進制的四個位)的長度記錄的欄位,如 lvl,
其週期為 16^4=65536,以下類推。將欄位與記錄長度、週期的對應關係製表得

┌────┬─────┬─────────────────────┐
│記錄長度│ │ │
│(字元)│ 週 期 │ 欄 位 │
├────┼─────┼─────────────────────┤
│ │ │chrtransform invtransform dropsfxframe│
│ 1 │ 256│add func │
├────┼─────┼─────────────────────┤
│ │ │set lvl lvl req │
│ 2 │ 65536│dropsound usesound │
├────┼─────┼─────────────────────┤
│ │ │rarity cost mult cost add │
│ │ │prop1(~9) par1(~9) min1(~9) │
│ 4 │4294967296│max1(~9) aprop1a(~5b) apar1a(~5b) │
│ │ │amin1a(~5b) amax1a(~5b) │
└────┴─────┴─────────────────────┘


有時由十六進制反推回十進制所得的數極大, 這時或許應該以恰好小一個週期的負數當作
反推結果,較能符合實際遊戲裡的狀況,雖然這兩個一正一負的數在 setitems.bin 裡生
成的記錄是一模一樣的。如 Setitems.txt 中 Cathan's Mesh 的 min2 及 max2 欄即為
-50 而非 4294967246,其實際的效果亦為減少屬性需求而非提高。


以下對必須或可以進一步處理的欄位個別說明。

※ set
須查 Sets.txt 的 index 欄位將數字轉回文字。某全套在 Sets.txt 的排列順序減一即為
某全套的對應數,如 0 即須轉為 Civerb's Vestments,1 即須轉為 Hsarus' Defense,
以下類推。此欄位及 Sets.txt 之 index 欄位僅作用於套裝裝備與全套的匹配,故若
Sets.txt 同 Setitems.txt 一般,尚待反推而無可參考時,只需注意使相匹配的
Setitems.txt 之 set 與 Sets.txt 之 index 兩欄位之文字一致即可。官方的、如數以全
套名填入的處置只是一種風格。 若兩欄位皆留白,亦可互相匹配。留白亦判定為「值」的
一種。

※ lvl、lvl req
若為 0 或 1 則表示無等級限制,留白亦可。

※ rarity
若為 0 則表示不可能出現,留白亦可。

※ cost mult、cost add
若為 0 則表示費用無加、減成/增減,留白亦可。

※ chrtransform、invtransform
須查 colors.txt 的 Code 欄位將數字轉回文字。某顏色在 colors.txt 的排列順序減一
即為某顏色的對應數,如 0 即須轉為 whit,1 即須轉為 lgry,以下類推。若為 255(十
六進制的 FF)則表示不變色,留白即可。

※ dropsound、usesound
須查 Sounds.txt 的 Sound 欄位將數字轉回文字。某音效在 Sounds.txt 的排列順序即為
某音效的對應數,如 1 即須轉為 cursor_pass,2 即須轉為 cursor_select,以下類推。
若為 0 則表示不另定音效,留白即可。

※ dropsfxframe
若為 0 則表示不另定播放延遲時間,留白亦可。

※ add func
若為 0 則表示這件套裝裝備的追加屬性(aprop1a(~5b),綠色)無條件出現,留白亦可。

※ prop1(~9)、aprop1a(~5b)
須查 Properties.txt 的 code 欄位將數字轉回文字。某物品屬性在 Properties.txt 的
排列順序減一即為某物品屬性的對應數,如 0 即須轉為 ac,1 即須轉為 ac-miss,以下
類推。若為 4294967295(十六進制的 FFFFFFFF)則表示不指定物品屬性,留白即可。

※ par1(~9)、apar1a(~5b)
若為 0 則表示未使用參數或參數為零,留白亦可。若前一欄位的物品屬性為 skill(123)
、aura(124) 等須指定技能者,可查 skills.txt 的 skill 欄位將數字轉回文字,此時某
技能在 skills.txt 的排列順序減一即為某技能的對應數,如 6 即轉為 Magic Arrow,7
即轉為 Fire Arrow,以下類推。

※ min1(~9)、max1(~9)、amin1a(~5b)、amax1a(~5b)
若為 0 則表示最小/最大值為零或未使用,留白亦可。

將以上的個別說明列表

┌──────┬───┬───┬───────────┬──────────┐
│ │可否為│可否為│ 轉回文字時須查詢的 │ │
│ 欄 位 │ 數字 │ 文字 │ 檔案 :: 欄位 │ 留白的意義 │
├──────┼───┼───┼───────┬───┼──────────┤
│set │ 否 │ 必須 │ Sets.txt │index │「值」的一種 │
├──────┴───┴───┴───────┴───┼──────────┤
│lvl、lvl req │無等級限制 │
├──────────────────────────┼──────────┤
│rarity │不可能出現 │
├──────────────────────────┼──────────┤
│cost mult、cost add │費用無加、減成/增減 │
├──────┬───┬───┬───────┬───┼──────────┤
│chrtransform│ │ │ │ │ │
│invtransform│ 否 │ 必須 │ colors.txt │ Code │不變色 │
├──────┼───┼───┼───────┼───┼──────────┤
│dropsound │ │ │ │ │ │
│usesound │ 否 │ 必須 │ Sounds.txt │Sound │不另定音效 │
├──────┴───┴───┴───────┴───┼──────────┤
│dropsfxframe │不另定播放延遲時間 │
├──────────────────────────┼──────────┤
│add func │追加屬性無條件出現 │
├──────┬───┬───┬───────┬───┼──────────┤
│prop1(~9) │ │ │ │ │ │
│aprop1a(~5b)│ 否 │ 必須 │Properties.txt│ code │不指定物品屬性 │
├──────┼───┼───┼───────┴───┼──────────┤
│par1(~9) │ │ │ skills.txt ::skill │ │
│apar1a(~5b) │ 可 │ 可 │(前一欄位為某幾種時)│未使用參數或參數為零│
├──────┴───┴───┴───────────┼──────────┤
│min1(~9)、max1(~9)、amin1a(~5b)、amax1a(~5b) │值為零或未使用 │
├──────┬───┬───┬───────────┼──────────┤
│ 欄 位 │可否為│可否為│ 檔案 :: 欄位 │ 留白的意義 │
│ │ 數字 │ 文字 │ 轉回文字時須查詢的 │ │
└──────┴───┴───┴───────────┴──────────┘

Setitems.txt 的 *item 欄位僅供人參考,未記錄於 setitems.bin。若欲仿官方風格完成
此欄,則以 item 欄位之三字母單字查詢 armor.txt、misc.txt、weapons.txt 之 code
欄,覓得相應的 name 欄位之值,將其填回 *item 欄位即可。

--
Tags: 暗黑

All Comments

Eden avatar
By Eden
at 2008-03-02T07:54
期中考?考題?霧煞煞
Connor avatar
By Connor
at 2008-03-04T11:01
很專業的感覺 但可以先做個簡介嗎? 有種突然冒出來的感覺XD

頻道常見交易用語

Edith avatar
By Edith
at 2008-02-22T14:38
剛剛看到有人問了 就來po一下 慣用語 請自出 = and#34;offerand#34;, and#34;offer me (in XXX)and#34; 最高出價 = and#34;top offerand#34;, and#34;t/oand#34; 人離開掛網中 = and#34;afkand#3 ...

競標文阿...

Hedda avatar
By Hedda
at 2008-02-17T13:50
好久不見 出來跟大家say hello .__.\~/ 切入主題吧 切入主題吧 切入主題吧 切入主題吧 切入主題吧 競標這種方式 不過也就是另一種形式的交易罷了 差別在於 這是一種只要出價有效買賣就成立的方式 對於買家而言 當然是出到心理面認為可以的價錢就停止 也就是設一個停損點 ...

跑速一欄表

Rosalind avatar
By Rosalind
at 2008-02-16T04:14
※ 引述《davidbeckham (Miss Ivy)》之銘言: : 參考自Gamebase: : http://forum.gamebase.com.tw/board_archive_function.jsp?cno=0andamp;no=2442 : andamp;mode=10andamp;artic ...

有關風德

Mia avatar
By Mia
at 2008-02-12T19:46
其實一直都很猶豫要不要po這篇心得文 因為有關風德pvp QJP已經有很詳細的介紹了 但是PVP這種東西我覺淂要靠自己去摸索 很多東西 要自己試了才知道 所以 以下只是小弟我的一點點心得 請不要見笑 ---------------------------------------------- ...

被騎的很開心XD

Irma avatar
By Irma
at 2008-02-10T01:57
嗯.. 這次的比賽 不管是1V1 還是 2VS2 我都有參一咖~ 說實在的 1VS1 第一場就遇到冠軍真的挺囧的= =and#34; 輸的心服口服阿! 我在那 拼命的飛 拼命的丟 雖然輸了之後才發現用牙+骨矛 還有點勝算 不過已經來不及了 ORZ 這年頭 還是風德當道阿 andgt;andl ...