作者BlackParade (BlackParade)
看板DIABLO
标题[心得] 由 sets.bin 反推 Sets.txt
时间Thu Feb 28 13:49:20 2008
打开档案後,第一行是
00000000h: 20 00 00 00 00 00 B0 09 00 00 00 00 00 00 00 00 ; .....?........
└─-┬──┘
套装套数,20(十六进制)即表有 32 套套装
将档案开头记载套装套数的部份删去,则与 Sets.txt 各栏位对应的情形为
套号 version
↑ name ↑
┌┴-┬-┴-┬-┴-┐
00000004h:
00 00 B0 09 00 00 00 00 00 00 00 00 00 00 00 00 ; ..?............
┌ PCode2a ┬ PParam2a ┬- PMin2a -┬- PMax2a -┐
00000014h:
1F 00 00 00 00 00 00 00 0F 00 00 00 0F 00 00 00 ; ................
┌ PCode2b ┬ PParam2b ┬- PMin2b -┬- PMax2b -┐
00000024h:
FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ; ????............
┌ PCode3a ┬ PParam3a ┬- PMin3a -┬- PMax3a -┐
00000034h:
FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ; ????............
┌ PCode3b ┬ PParam3b ┬- PMin3b -┬- PMax3b -┐
00000044h:
FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ; ????............
┌ PCode4a ┬ PParam4a ┬- PMin4a -┬- PMax4a -┐
00000054h:
FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ; ????............
┌ PCode4b ┬ PParam4b ┬- PMin4b -┬- PMax4b -┐
00000064h:
FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ; ????............
┌ PCode5a ┬ PParam5a ┬- PMin5a -┬- PMax5a -┐
00000074h:
FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ; ????............
┌ PCode5b ┬ PParam5b ┬- PMin5b -┬- PMax5b -┐
00000084h:
FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ; ????............
┌ FCode1 -┬ FParam1 -┬- FMin1 ─┬- FMax1 ─┐
00000094h:
07 00 00 00 00 00 00 00 0F 00 00 00 0F 00 00 00 ; ................
┌ FCode2 -┬ FParam2 -┬- FMin2 ─┬- FMax2 ─┐
000000a4h:
63 00 00 00 00 00 00 00 C8 00 00 00 C8 00 00 00 ; c.......?..?..
┌ FCode3 -┬ FParam3 -┬- FMin3 ─┬- FMax3 ─┐
000000b4h:
21 00 00 00 00 00 00 00 19 00 00 00 19 00 00 00 ; !...............
┌ FCode4 -┬ FParam4 -┬- FMin4 ─┬- FMax4 ─┐
000000c4h:
FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ; ????............
┌ FCode5 -┬ FParam5 -┬- FMin5 ─┬- FMax5 ─┐
000000d4h:
FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ; ????............
┌ FCode6 -┬ FParam6 -┬- FMin6 ─┬- FMax6 ─┐
000000e4h:
FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ; ????............
┌ FCode7 -┬ FParam7 -┬- FMin7 ─┬- FMax7 ─┐
000000f4h:
FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ; ????............
┌ FCode8 -┬ FParam8 -┬- FMin8 ─┬- FMax8 ─┐
00000104h:
FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ; ????............
00000114h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
下一套套装的套号
↑
┌┴-┐
00000124h: 00 00 00 00 00 00 00 00 01 00 ; ..........
所有栏位皆以数(十六进制)的形式记录, 并以两个进位(十六进制)为一组,颠倒地由
低位组排列至高位组。
如 name 此栏,在 sets.bin 中其值为 B0 09,须先经如下之转换过程
╭─────╮
│ ↓
B0 09 → 09 B0 → 9B0(十六进制)→ 2480
│ ↑
╰──╯
再以所得数 2480 进行进一步处理(下述),始可还原得 Sets.txt 中所见之 Civerb's
Vestments。
数的转换具有周期性,相差正好整数个周期的两数其转换的结果将相同。
周期的大小与记录的长度有关。
以两个字元(十六进制的四个位)的长度记录的栏位,如 version,其周期为 16^4=65536
;
以四个字元(十六进制的八个位)的长度记录的栏位,如 P P a r a m 2 a ,其周期为
16^8=4294967296,以下类推。
将栏位与记录长度、周期的对应关系制表得
┌────┬─────┬─────────────────────┐
│记录长度│ │ │
│(字元)│ 周 期 │ 栏 位 │
├────┼─────┼─────────────────────┤
│ 2 │ 65536│name version │
├────┼─────┼─────────────────────┤
│ │ │PCode2a(~5b) PParam2a(~5b) PMin2a(~5b)│
│ 4 │4294967296│PMax2a(~5b) FCode1(~8) FParam1(~8)│
│ │ │FMin1(~8) FMax1(~8) │
└────┴─────┴─────────────────────┘
以下对必须或可以进一步处理的栏位个别说明。
※ name
须查 string.tbl、patchstring.tbl、expansionstring.tbl 将数字转回文字键 (key)。
若为 string.tbl 的文字键,则其排列顺序减一即为其对应之数;
若为 patchstring.tbl 的文字键,则其排列顺序加一万再减一即为其对应之数;
若为 expansionstring.tbl 的文字键,则其排列顺序加二万再减一即为其对应之数。
例如 2480 小於一万,须查 string.tbl 转为 Civerb's Vestments;
10022 介於一万与二万之间,须查 patchstring.tbl 转为 Hsarus' Defense;
21667 大於二万,须查 expansionstring.tbl 转为 Natalya's Odium,其余类推。
※ version
若为 0 则表示为主程式 CD2 套装,留白亦可。
※ PCode2a(~5b)、FCode1(~8)
须查 Properties.txt 的 code 栏位将数字转回文字。
某物品属性在 Properties.txt 的排列顺序减一即为某物品属性的对应数,如 0 即须转为
ac,1 即须转为 ac-miss,以下类推。
若为 4294967295 (十六进制的 FFFFFFFF)则表示不指定物品属性,留白即可。
※ PParam2a(~5b)、FParam1(~8)
若为 0 则表示未使用参数或参数为零,留白亦可。
若前一栏位的物品属性为 skill(123)、aura(124) 等须指定技能者,可查 skills.txt 的
skill 栏位将数字转回文字,此时某技能在 skills.txt 的排列顺序减一即为某技能的对
应数,如 6 即转为 Magic Arrow,7 即转为 Fire Arrow,以下类推。
若前一栏位的物品属性为 state(267) ,可查 states.txt 的 state 栏位将数字转回文字
,此时某状态在 states.txt 的排列顺序减一即为某状态的对应数,如 1 即转为 freeze
,2 即转为 poison,以下类推。
※ PMin2a(~5b)、PMax2a(~5b)、FMin1(~8)、FMax1(~8)
若为 0 则表示最小/最大值为零或未使用,留白亦可。
以下对只出现於 Sets.txt、sets.bin 两档其中之一的栏位个别说明。
※套号 (sets.bin)
某套装在 Sets.txt 的排列顺序减一即为此栏位记录之数,如 0 即为套装 Civerb's
Vestments,1 即为套装 Hsarus' Defense,以下类推。
此栏位仅出现於 sets.bin,依套装排列顺序自动生成数值,非为 Sets.txt 中正式、具名
之栏位,毋须反推回 Sets.txt,姑且称之为套号。
※ index (Sets.txt)
须查 setitems.bin 及 Setitems.txt 的 set 栏位将套号转为文字。
於 setitems.bin 寻得其 set 栏位之数与套号相同之任一套件,则 Setitems.txt 中同套
件的 set 栏位之文字即为应填入 index 栏位之值。
此栏位及 Setitems.txt 之 set 栏位仅作用於套装与套件的匹配,故若 Setitems.txt 同
Sets.txt 一般,尚待反推而无可参考时,只需注意使相匹配的 Sets.txt 之 index 与
Setitems.txt 之 set 两栏位之文字一致即可。
官方的、如数以套装名填入的处置只是一种风格。
若两栏位皆留白,亦可互相匹配。留白亦判定为「值」的一种。
※ level (Sets.txt)
Sets.txt 的 level 栏位未记录於 sets.bin。
若欲依样完成此栏,则搜寻 Setitems.txt 中属於此套装之任一套件的 lvl 栏,回填其值
入 level 栏位即可。
对以上的栏位个别说明,留下反推 Sets.txt 时务必完成否则无法生成正确的 sets.bin
者,列表
┌──────┬───┬───┬─────────────┬────────┐
│ │可否为│可否为│转 回 文 字 时 须 查 询 的│ │
│ 栏 位 ╰┐数字│文字┌╯ 档 案 :: 栏位 │ 留白的意义 │
├───────┼──┼──┼──────────┬───┼────────┤
│ │ │ │ string.tbl │ │ │
│name │ 否 │必须│ patchstring.tbl │文字键│不可留白 │
│ │ │ │expansionstring.tbl │(key) │ │
├───────┴──┴──┴──────────┴───┼────────┤
│version │为主程式 CD2套装│
├───────┬──┬──┬──────────┬───┼────────┤
│PCode2a(~5b) │ │ │ │ │ │
│FCode1(~8) │ 否 │必须│ Properties.txt │ code │不指定物品属性 │
├───────┼──┼──┼──────────┴───┼────────┤
│ │ │ │ skills.txt ::skill │ │
│PParam2a(~5b) │ 可 │ 可 │ ststes.txt ::state │未使用参数或参数│
│FParam1(~8) │ │ │ (前一栏位为某几种时) │为零 │
├───────┴──┴──┴──────────────┼────────┤
│PMin2a(~5b)、PMax2a(~5b)、FMin1(~8)、FMax1(~8) │值为零或未使用 │
├───────┬──┬──┬──────────┬───┼────────┤
│ │ │ │ sets.bin │ 套号 │ │
│index │未有│必须│ setitems.bin │ set │「值」的一种 │
│ │记录│ │ Setitems.txt │ set │ │
└───────┴──┴──┴──────────┴───┴────────┘
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.165.93.251
1F:推 kathsda:End的举手 .____./ 02/28 13:50
2F:推 andrewtw:看不懂>_</ 02/28 13:50
3F:推 rocku6999:我是按PDPDPDPDPDPD... 02/28 13:50
4F:→ qaxqwe:........ 02/28 13:51
5F:推 biblecross:纯推不下 02/28 13:51
6F:→ asd155084:这啥...? 02/28 13:51
7F:推 kadaju:是内脏吗? 02/28 13:51
8F:推 LUCIFERRRR:._________./ 02/28 13:52
9F:推 jacky251:@__@ / 02/28 13:53
10F:推 qaxqwe:._________./ 02/28 13:54
11F:推 Jarry:专业 02/28 13:56
12F:推 bladeX:-_______________-/ 02/28 13:55
13F:推 ak771112:-____________-/ 看无... 02/28 13:57
14F:推 macauboy:纯推不下 02/28 13:58
15F:→ locktas:看不懂.. 02/28 14:00
16F:推 ASHPJ:谁能翻译一下? 02/28 14:05