游侠NETSHOW论坛

标题: 简明MOD教程 [打印本页]

作者: dunxp    时间: 2012-9-28 19:31:01     标题: 简明MOD教程

本帖最后由 dunxp 于 2012-10-1 19:10 编辑

10.1更新。

版本说明:
DAT2TXT / TXT2DAT转换工具目前已经更新到v008版,相对于v004版最大的区别在于不再需要IDS文件(即教程正文第5步),但是需要额外安装Python的mmh3模块。

MOD失效的情况:
a、T2是按PAK的时间来决定优先级的,当多个MOD(包括汉化和原始的DATA.PAK)同时存在某一个文件时,时间晚的才有效。
b、还有T2会记录游戏的一些状态,导致有时候修改了MOD却看不到变化,所以测试时最好是建局域网游戏并重置地图。
血和泪的教训啊

DAT2TXT / TXT2DAT转换工具的使用方法:
将DAT文件拖动到dat2txt.py文件上即可转换为TXT文件,注意每次只能拖一个文件。
详细使用方法:
  1. Usage:
  2. dat2txt.py [options] input_folder_name output_folder_name
  3. dat2txt.py [options] input_file_name output_file_name
  4. dat2txt.py [options] input_file_name

  5. Options:
  6. --help
  7. Print a summary of the program options and exit.
  8. --nfile
  9. If target file exist it won't be removed
  10. --tonly
  11. Converts only files with <TRANSLATE> variable in it
复制代码
将TXT文件拖动到txt2dat.py文件上即可转换为DAT文件,注意每次只能拖一个文件。
详细使用方法:
  1. Usage:
  2. txt2dat.py [options] input_folder_name output_folder_name
  3. txt2dat.py [options] input_file_name output_file_name
  4. txt2dat.py [options] input_file_name

  5. Options:
  6. --help
  7. Print a summary of the program options and exit.
  8. --nfile
  9. If target file exist it won't be removed
  10. --fhash=hash_file_name
  11. Allows to use other hash file than one bundled with application
复制代码

教程正文(以下内容基于DAT2TXT / TXT2DAT转换工具v004版本,之后的版本虽然略有差别,但总体流程是这样的):
1、
下载DAT2TXT / TXT2DAT转换工具:http://forums.runicgames.com/viewtopic.php?f=48&t=34098

2、
使用Torchlight2Extractor(推荐)或tl2packtool解包出对应的DAT文件
本次以药水销售商人增加售卖重置药水为例,需要解包MERCHANT_GENERAL_INVENTORY.DAT文件

3、
使用DAT2TXT将DAT文件转换为TXT文件和IDS文件
注意:该工具需要安装Python 2.7.3才能使用,不要使用3.X版本的,不兼容
PS:本人在刚开始使用时没能生成所需文件,在将dat2txt.py文件第54行transonly = True改为transonly = False后才转换成功

4、
修改TXT文件,这一步和火炬之光一代的方法基本相同
本次示例为在最后增加重置药水

  1. [SPAWNCLASS]
  2. <STRING>NAME:MERCHANT_GENERAL_INVENTORY
  3. [OBJECT]
  4. <STRING>UNIT:IDENTIFY SCROLL
  5. <INTEGER>WEIGHT:-1
  6. <INTEGER>RARITY_OVERRIDE:1
  7. [/OBJECT]
  8. [OBJECT]
  9. <STRING>UNIT:WAYPOINT PORTAL SCROLL
  10. <INTEGER>WEIGHT:-1
  11. <INTEGER>RARITY_OVERRIDE:1
  12. [/OBJECT]
  13. [OBJECT]
  14. <STRING>UNITTYPE:MANAPOTION
  15. <INTEGER>WEIGHT:-1
  16. <INTEGER>MINCOUNT:9
  17. <INTEGER>MAXCOUNT:9
  18. <INTEGER>LEVEL_BONUS:-9
  19. [/OBJECT]
  20. [OBJECT]
  21. <STRING>UNITTYPE:MANAPOTION
  22. <INTEGER>WEIGHT:-1
  23. <INTEGER>MINCOUNT:9
  24. <INTEGER>MAXCOUNT:9
  25. [/OBJECT]
  26. [OBJECT]
  27. <STRING>UNITTYPE:MANAPOTION
  28. <INTEGER>WEIGHT:-1
  29. <INTEGER>MINCOUNT:9
  30. <INTEGER>MAXCOUNT:9
  31. <INTEGER>LEVEL_BONUS:9
  32. [/OBJECT]
  33. [OBJECT]
  34. <STRING>UNITTYPE:HEALTHPOTION
  35. <INTEGER>WEIGHT:-1
  36. <INTEGER>MINCOUNT:9
  37. <INTEGER>MAXCOUNT:9
  38. <INTEGER>LEVEL_BONUS:-9
  39. [/OBJECT]
  40. [OBJECT]
  41. <STRING>UNITTYPE:HEALTHPOTION
  42. <INTEGER>WEIGHT:-1
  43. <INTEGER>MINCOUNT:9
  44. <INTEGER>MAXCOUNT:9
  45. [/OBJECT]
  46. [OBJECT]
  47. <STRING>UNITTYPE:HEALTHPOTION
  48. <INTEGER>WEIGHT:-1
  49. <INTEGER>MINCOUNT:9
  50. <INTEGER>MAXCOUNT:9
  51. <INTEGER>LEVEL_BONUS:9
  52. [/OBJECT]
  53. [OBJECT]
  54. <STRING>UNIT:DYNAMITE
  55. <INTEGER>WEIGHT:-1
  56. [/OBJECT]
  57. [OBJECT]
  58. <STRING>UNIT:RESPECPOTION
  59. <INTEGER>WEIGHT:-1
  60. [/OBJECT]
  61. [/SPAWNCLASS]
复制代码
增加了:
  1. [OBJECT]
  2. <STRING>UNIT:RESPECPOTION
  3. <INTEGER>WEIGHT:-1
  4. [/OBJECT]
复制代码


5、
如果TXT中没有增加或减少<STRING>或<TRANSLATE>类型的字段,可以跳过这一步
如果在TXT中增加或减少<STRING>或<TRANSLATE>类型的字段,需要更改IDS文件:
首先说说DAT文件结构,按顺序依次为:
1、版本(4字节)
2、字符串数量(4字节)
3、字符串1的id(4字节)+字符串1的长度(2字节)+字符串1内容(字符串1的长度×2个字节)

。。。
4、字符串n的id(4字节)+字符串n的长度(2字节)+字符串n内容(字符串n的长度×2个字节)
5、具体数据部分


DAT文件为了减小体积,将字符串单独拿出来放在前面,后面数据部分则使用字符串对应的id


再说说IDS文件结构,按顺序依次为:
1、字符串种类数量(4字节)
2、字符串种类1的id(4字节)+字符串种类2的id(4字节)……字符串种类n的id(4字节)
3、实际使用字符串个数(4字节)
4、第1个字符串的id(4字节)+第2个字符串的id(4字节)……第m个字符串的id(4字节)

本次示例中增加了<STRING>类型的字段RESPECPOTION,所以需要修改IDS文件
更改前:
06 00 00 00 64 CF 0D 00 67 CF 0D 00 B1 23 0E 00
B2 23 0E 00 B3 23 0E 00 B4 23 0E 00
0A 00 00 00 B1 23 0E 00 B2 23 0E 00 B3 23 0E 00
67 CF 0D 00 67 CF 0D 00 67 CF 0D 00 64 CF 0D 00
64 CF 0D 00 64 CF 0D 00 B4 23 0E 00
更改后:
07 00 00 00 64 CF 0D 00 67 CF 0D 00 B1 23 0E 00
B2 23 0E 00 B3 23 0E 00 B4 23 0E 00 B4 23 1E 00
0B 00 00 00 B1 23 0E 00 B2 23 0E 00 B3 23 0E 00
67 CF 0D 00 67 CF 0D 00 67 CF 0D 00 64 CF 0D 00
64 CF 0D 00 64 CF 0D 00 B4 23 0E 00 B4 23 1E 00
注意红色更改部位,其中字符串id经过试验为任意不重复4字节即可。

6、
更改完TXT和IDS文件后,使用TXT2DAT转换工具将TXT文件转换为DAT文件

7、
使用tl2packtool将DAT文件打包为PAK文件(这里不推荐Torchlight2Extractor,有BUG)

8、
运行游戏,效果如下图:
[attach]3556697[/attach]
[attach]3556698[/attach]

[attach]3556696[/attach]


作者: xialei_026    时间: 2012-9-28 19:31:53

教程贴,支持一下!
作者: magicfox    时间: 2012-9-29 09:50:48

支持,这个要顶
作者: moyanbeyond    时间: 2012-9-29 09:54:38

不错 学习了
作者: chen3736176    时间: 2012-9-29 10:43:20

代码什么的真可怕  
作者: SinωSaGa    时间: 2012-9-29 23:24:41

看不太懂,支持
作者: 梦—无限神琪    时间: 2012-9-30 08:08:28

我以后要找个懂计算机的女友……{:13_427:}
作者: wxfx    时间: 2012-9-30 08:36:23

学习学习
作者: 慕斯微甜    时间: 2012-9-30 12:27:15

太恐怖了= =代码什么的看不懂
作者: lmjdtc2040    时间: 2012-9-30 13:05:41

额……看起来好复杂……
作者: 寂寞の狼    时间: 2012-9-30 14:55:40

表示一点没看懂。。。
作者: eorthe    时间: 2012-9-30 18:14:17

没看懂,楼主能不能详细介绍一下第三步怎么做?已经有了DAT2TXT和Python 2.7.3才能使用,但是不知道怎么转换DAT文件。
作者: dunxp    时间: 2012-10-1 19:12:25

eorthe 发表于 2012-9-30 18:14
没看懂,楼主能不能详细介绍一下第三步怎么做?已经有了DAT2TXT和Python 2.7.3才能使用,但是不知道怎么转 ...

已更新教程,详见更新部分
作者: dabeiren    时间: 2012-10-1 19:19:55

好东西,虽然不会制作。。。要是合成配方多一些就好了,比如打孔,现在只能无孔打1孔,挺鸡肋

然后3个石头合一个,如果能加点判定,比如合成出来的宝石是放在第一栏的宝石的更高级宝石就好了,
比如我想要个吸血的宝石,放在第一栏,后面3个格子随便放2个其他类的宝石,可以得到一个更高级的吸血的宝石


作者: Miller℡    时间: 2012-10-6 15:11:48

最新版的转换工具,比较简单了
http://kuai.xunlei.com/d/FXEVYIVOWAPO
作者: dunxp    时间: 2012-10-6 18:54:56

Miller℡ 发表于 2012-10-6 15:11
最新版的转换工具,比较简单了
http://kuai.xunlei.com/d/FXEVYIVOWAPO

仔细看教程的顺着那个链接点进去就能看到最新版本了,其实v0.10版没比v0.08版改进啥,只是封装成exe文件了,执行效率还是一样的慢

PS:期待有高手能把这个程序转成其他语言的,python实在是太慢了

作者: Miller℡    时间: 2012-10-6 19:41:06

dunxp 发表于 2012-10-6 18:54
仔细看教程的顺着那个链接点进去就能看到最新版本了,其实v0.10版没比v0.08版改进啥,只是封装成exe文件 ...

直接拖入就可以了,速度是有一点慢。。。。呵
作者: vincentmay    时间: 2012-10-7 01:11:20

错 学习了
作者: 爱しているのを    时间: 2012-10-7 02:15:47

没看懂
作者: 系统__Q    时间: 2012-10-8 10:59:54

hi dunxp,

我想问下你是怎么处理那个IDS文件的.
每天8pm-12pm我QQ:461409485都在线.
或者hanks.xu3258@gmail.com.

非常感谢.
风影
作者: 喜_闻乐见    时间: 2012-11-1 22:08:43

看不懂。。
作者: 巴郡甘兴霸    时间: 2012-11-3 16:23:11

学习一下
作者: 醋意浓浓    时间: 2013-1-5 08:56:27

是个转换工具?
作者: 小龍女    时间: 2013-1-10 23:02:09

確實很不錯 辛苦了
作者: 正太拿铁    时间: 2013-1-11 00:16:18

感谢分享!
作者: KainChan0120    时间: 2013-1-11 00:19:03

Mark一下,代码什么的要慢慢看




欢迎光临 游侠NETSHOW论坛 (https://game.ali213.net/) Powered by Discuz! X2