暗黑2毁灭之王MOD制做指南142.docx
《暗黑2毁灭之王MOD制做指南142.docx》由会员分享,可在线阅读,更多相关《暗黑2毁灭之王MOD制做指南142.docx(49页珍藏版)》请在冰豆网上搜索。
暗黑2毁灭之王MOD制做指南142
暗黑2毁灭之王MOD制作
之
新手上路
原作:
PhrozenHeart
Mordini
Fusman
Myhrginoc
翻译:
Dark_elf
V1.42nd
游戏小站:
暗黑破坏神另类模式修改基地
·历史纪录
v1.4
9/8/2003
增加了1.10和1.10s的内容,并且增加了些说明
v1.3
6/22/2002
重写了全部练习以及详细说明,并且合并了许多
在以前单独列出的指南中的练习。
v1.2xbeta
4/18/2002
几乎全部重写用以解决可能出现的任何错误。
这
些版本是只在少数人中使用的Beta版。
v1.1
12/8/2001
在“第一步”页面增加了一个指向datafile(MPQ
内部文件列表)的链接,用于帮助在使用MPQ
Viewer时有问题的人。
v1.0
10/4/2001
第一个完全正式版
·鸣谢
MikeMeneldil
Heynooffense
Peaceatlast20
RichGrenfell
PaulSiramy
SoulSlayer
Alkalund
RageAA
JoelFalcou
Drackin
ChaoticDeath
chippydip
千里之行始于足下
欢迎来到暗黑破坏神II。
你可能已经玩够了标准模式,战网的服务器又非常LAG,也许,你下载了一个另类模式并且想知道它是怎么做到的。
现在,你想自己动手做一个MOD但是却不知道从何入手。
这个向导会告诉你在哪里能找到你想要的并且如何做些简单的修改。
有很多种方式可以做到同样的事情,这篇指南中的方法只是其中之一。
以前的指南仅适用于1.09版,在最近的1.10beta版中,有些文件被修改了很多而有一些则完全没有被改动。
本篇指南中的一些内容同时适用于109以及110beta,有一些则是109或110beta专用的。
如果你想制作110beta的MOD,请注意,110beta中一些官方未排除的错误。
本文中的例子可能在正式的110版本中不起作用,但是你可以从中学到很多制作MOD的技巧。
你也可以利用这篇指南来制作其他版本的MOD,但是这并不是本文的目的。
本文仅适用于109以及110beta。
当正式的110版发布而且B做出更新后,我们会推出新的指南。
源文件
在暗黑破坏神II的目录里能找到很多文件,它们大多与制作MOD无关。
我们感兴趣的是Game.exe和扩展名为.MPQ的文件。
Game.exe是主运行文件,DiabloII.EXE的作用仅仅是调用Game.exe。
MPQ文件是压缩包,从各种物品的定义到每一幕的动画都在这些文件中。
这些文件可以用扩展名来分组。
d2char.mpq
暗黑II的数据文件–人物的动画
d2data.mpq
暗黑II的数据文件–其他所有文件
d2exp.mpq
暗黑II毁灭之王的数据、音效、动画
d2music.mpq
暗黑II的音乐以及Blizzard公司片头
d2speech.mpq
暗黑II的人物以及NPC的对话
d2xtalk.mpq
暗黑II毁灭之王的人物以及NPC的对话
d2sfx.mpq
暗黑II的音效
d2video.mpq
暗黑II的过场动画
d2xmusic.mpq
暗黑II毁灭之王的音乐
d2xvideo.mpq
暗黑II毁灭之王的过场动画
patch_D2.mpq
发布补丁中所包含的修改过的内容
表一:
暗黑破坏神II及毁灭之王的文件
txt
1:
固定的游戏内容的数据库
2:
未在游戏中使用的描述文件
bin
当游戏运行时文本数据库的编译文件
cof
人物动画的控制文件
dc6
装备图像,背景以及对应的行为动画
dcc
人物、怪物、对象以及效果动画
ds1
用于场景定义的地图文件以及固定怪物和物品的位置
dt1
用于地图创建地板、墙以及房顶表面的贴图
tbl
1:
存放游戏中文字的表格
2:
字体间距调整表格
wav
音效、对话以及音乐文件
dat
1:
暗黑II调色板,用于转换dc6和dcc
2:
色彩,用于定义同一怪物的不同颜色
表二:
压缩包中的文件
交易的工具
在开始之前,你需要一些基本的工具来访问和修改所有的相关文件。
而这些基本工具在“thePhrozenKeep的FileCenter”(Beginner’sToolkit”。
∙MPQViewer–用来浏览和打开MPQ压缩包。
有一个独立的datafile(MPQ内部文件列表)用来记录已知的文件的文件名列表,没有它,MPQViewer不能列出有意义的文件。
这个datafile(MPQ内部文件列表)在每个发布的Patch中都会有变化。
∙TabDelimitedTextEditor–用于处理TXT文件。
D2EXCEL是专门用来处理这类文件的,它在网站上有下载。
如果,你导入导出的表格文件没有字串限定,微软的EXCEL或者其他电子表格软件也能用。
但是微软EXCEL会删除最右边的空字段。
虽然这些文件以.txt为扩展名,但它们并不是一般的文本文件(TEXT),所以,绝对不要用Word或NotePad(记事本)来处理这些文件,否则文件的数据格式会被损坏。
(这个似乎是对的,没用过Word来处理这些,但是用Notepad处理后就有些问题)
∙BaronDarkstorm’sTableEditor–编辑表格文件。
这个工具很容易用,但是在处理PatchString.tbl文件时会有些麻烦。
其他的相同工具还有D2Tbl和PeerTBLEditor(v3.38)。
∙DC6ConandDC6Maker–预览和转换DC6格式的图像文件。
∙CV5(v5.2)–用于提取、预览以及转换各种格式的图片。
CVDCC.DLL是其中一个用于DCC的必需部件,但是它需要另外下载。
在本文不讨论如何编辑动画文件。
∙MPQ2KandMPQStormlessEditor–用于将你修改好的文件打包为MPQ格式。
其它需要另外下载的就是Patch_D2.mpq。
这个文件不包含在暗黑II或者毁灭之王的安装光盘里。
你可以在登陆BN时自动更新或者下载最新的补丁来获得。
Patch_D2.mpq包含所有MPQ中被修改的文件。
一旦你修改了某个MPQ中的文件,你需要将它们放入Patch_D2.mpq来使它起作用。
Patch_D2.mpq中的内容总是会覆盖以前的版本。
1.07
6/19/2001
毁灭之王发布
1.08
6/27/2001
维护并增加一些新内容
1.09
8/21/2001
增加许多新内容
1.09b
10/5/2001
维护性补丁
1.09c
11/29/2001
维护性补丁
1.09d
12/5/2001
维护性补丁
1.10beta
7/3/2003
增加新内容
1.10sbeta
8/4/2003
修复1.10beta的错误
表三–毁灭之王的升级纪录
很多MOD制作人员对1.09d评价不高,因为在1.09c中的错误在1.09d中并没有被修复。
Blizzard公司希望给魔法装备设定的“Chance-castskills(一定几率释放)”属性会在战斗中起作用,在1.09c和1.09d中它虽然有显示,但是没有伤害。
你可以下载1.09b版的D2Client.dll,D2Common.dll以及D2Game.dll。
thePhrozenKeep的所有版本的MOD中均保留有着三个文件。
备份1.09d的文件以登陆BN。
混用1.09系列和1.10beta的文件会造成游戏崩溃。
1.10的两个Beta测试补丁已经发布,在正式的110出现之前可能还会有更多补丁。
因为这个版本还不够稳定,你选择制作110的MOD时必须确定这些文件是110所特有的。
所有的修改,在新版补丁推出时最好再做测试。
图像方面则因为比较稳定应该不会有什么变动了。
你可以对应下表知道你的游戏的版本。
右键单击文件来看文件的大小(不是所占硬盘的大小)和日期(修改日期而不是创建日期或访问日期)
1.09b
D2Client.dll
1.08MB(1,138,745bytes)
8/16/2001
1.09b
D2Common.dll
676KB(692,281bytes)
8/16/2001
1.09b
D2Game.dll
0.98MB(1,028,151bytes)
8/16/2001
1.09d(B)
D2Client.dll
1.08MB(1,134,644bytes)
11/29/2001
1.09d(B)
D2Common.dll
676KB(692,276bytes)
11/29/2001
1.09d(B)
D2Game.dll
0.98MB(1,028,146bytes)
11/29/2001
1.10beta
D2Client.dll
1.02MB(1,073,204bytes)
7/3/2003
1.10beta
D2Common.dll
692KB(708,660bytes)
7/3/2003
1.10beta
D2Game.dll
1.10MB(1,159,218bytes)
7/3/2003
1.10sbeta
D2Client.dll
1.02MB(1,073,204bytes)
7/27/2003
1.10sbeta
D2Common.dll
696KB(712,756bytes)
7/27/2003
1.10sbeta
D2Game.dll
1.10MB(1,163,314bytes)
7/27/2003
表四–不同版本的区别
现在你需要追踪你要修改的文件。
一种方法是在游戏目录中建立子目录,将每个MOD或者每一次TEST分别放入一个目录。
你可以创建一个指向MOD目录的Game.exe的快捷方式当作游戏开始位置。
ThePhrozenKeep提供VB脚本的下载,它可以让游戏在Mods所在的目录中运行,并且可以自动调用mods所需要的自定义Dlls。
你可以利用DLL管理器dll来运行使用109b的dll文件的mods而不影响你用当前最新dll登陆BN。
首先你需要将所需的暗黑工具和游戏分开存放(如果都放在一起很容易出现误操作而造成不可挽回的损失)。
备份patch_D2.mpq这样你可以在Mods出错而无法修改时恢复到原始状态。
同时复制一份存放到暗黑工具目录。
将工具都安装到Patch_D2.mpq所在的目录,这样可以在第一时间内找到文件并修改。
注意:
1、调用MPQ2K所需要的文件中有一个名为storm.dll,这与游戏的文件重名,你必须把它分开存放2、所有的文件修改都在暗黑工具目录中,这就需要你创建文件存放的目录。
练习#1–增加数量
我们将从一个非常简单的修改开始:
修改钥匙的数量。
标准的数量限制是12,这对于有着很多箱子的地下城-比如憎恨牢狱(DuranceofHate)来说是远远不够的。
我们准备把它修改为50,这样就免去了往返城镇之苦。
首先运行MPQViewer。
在File(文件)菜单我们会看到有2个Open(打开)选项。
第一次运行MPQViewer需要打开datafile(MPQ内部文件列表),它会告诉MPQViewer在一个压缩文件中到哪里找各种的文件。
这个文件独立于MPQViewer并且在每个补丁版本中都不同。
如下图,选择第一个Open来读取datafile(MPQ内部文件列表),MPQViewer会纪录上一次打开的数据文件。
图一-MPQViewer打开MPQ内部文件列表
接着按下Openarchive按钮或者在File菜单中选择Openarchive,在打开文件对话框中选择Patch_D2.MPQ然后整个MPQ的文件目录会出现在主窗口。
图二–MPQViewer列出的Patch_D2.MPQ的文件
在文件名前的路径表示它在MPQ文件中存放的位置,与Windows中目录和文件的存放形式一样。
表二中说明只有2种类型txt文件:
数据库文件以及描述文件。
只有数据库文件对我们有用而且它们都存放在:
data\global\excel。
找到Misc.txt并保存。
然后就可以关闭MPQViewer了。
图三–用D2EXCEL打开的Misc.txt
用D2EXCEL打开Misc.txt,出现图三所示界面。
在打开的文件中你会发现每一行就是一条记录,而每一列是一个字段,这和数据库没有什么区别。
我们想要调整Key的数量就需要调整Maxstock段的值。
首先点选右下角的“LockFirstColumn?
”。
(注意:
软件中的这个单词写错了-_-a)这样,记录的Name段就被锁定了,这样我们能够轻易在对应“SkeletonKey”行的“Maxstock”段找到我们需要的内容。
(图三用笔圈住的部分)我们看见这个位置的纪录为12,这是原始设定。
现在,只需要将数值改为50,并选择“Savetxt”(存储为TXT文件)即可。
Loadbin以及SaveBin的功能尚未实现。
我们是怎么知道“SkeletonKey”就是我们要修改的部分呢?
这是txt文件修改部分最难的内容,这里显示的name并不是你在游戏里所见到的名字。
在txt文件里,name仅仅是一个字段名,用来指向在tbl文件中的名字,而tbl文件中的内容才是游戏里最终显示的名字。
我们将在第4章的练习里详细说明。
你很快会发现,这样的做法可用于所有有数量可被放在一起的物品。
比如:
让箭再多一点或者让一个Tome里有40个Scroll。
你只需要在该物品的“Maxstock”列修改数量就可以了。
但是注意,这个数量不能超过511。
如何使它工作?
现在,我们已经做好了修改,那么怎么运行游戏呢?
我们修改了txt文件,但是游戏运行时却不读取这些文件。
当游戏运行时,它会调用经过预先编译的,与txt文件内容相同,但是经过压缩成为二进制码的bin文件来获取数据。
我们之前说过,D2EXCEL不支持bin文件。
我们需要用特殊的游戏方式来为已经过修改的txt文件创建bin文件。
这个方法就是命令参数:
“-direct-txt”。
每次用这个参数运行游戏,游戏会读取所有的txt文件,不管它已经被打包为MPQ或者是原始的txt文件,并且生成整套bin文件。
在109x系列版本中你会得到大约70个bin文件,在110中则有90个左右。
在MPQViewer中我们会看到txt和bin文件是如何以data\global\excel路径在mpq压缩包中存放的。
我们必须在游戏目录创建相同的目录结构。
首先,在游戏目录(DiabloII)下创建data目录,接着在data目录中创建global目录,在global目录下创建excel目录。
返回游戏目录(diabloII),按住右键拖动game.exe,然后选择创建快捷方式。
接下来,右键单击快捷方式game.exe,选择“属性”。
图四–创建-direct-txt模式快捷方式
图四所示即为参数的位置及写法。
注意,如果在路径中有空格,那么整个路径包括文件一定要用引号括起。
然后在最后加入命令参数“-direct-txt”。
在参数与文件名之间以及参数与参数之间都有空格。
保存快捷方式。
拷贝修改后的“Misc.txt”到刚才创建的“data\global\excel”目录。
用新创建的快捷方式运行游戏并且用测试用人物进入游戏进行测试。
每当你测试一个新的MOD,尽量使用测试人物进行游戏,这样即便出现问题也不会对你造成很大影响。
在游戏里你可以买些钥匙来测试是否钥匙的存放数量已经改变。
如果你在生成bin文件后对txt文件又做了修改,那么在运行快捷方式前最好删除在“data\global\excel”目录下的bin文件。
这样可以确保bin文件和最新的txt文件的一致性。
因为在bin文件被创建时,一个文件中的部分内容经常会被其他文件所调用。
补充最重要的一点:
因为很多时候这些文件之间具有关联性,建议在打包时选择所有文件。
个人不推荐作为标准打包方式。
请参照练习2WinMPQ的用法。
★现在你需要决定你的MOD将打包为MPQ文件或是使用“-direct-txt”方式运行。
如果要将文件打包,那么你需要将修改后的文件封装入Patch_D2.mpq,并且将其复制到游戏目录,然后用一般方式运行游戏即可。
并且,如果你想和使用MAC电脑的朋友分享你的MOD,你只能是用这种方式,但是不幸的是,它只在109b或109d中起作用,而在110beta中不能用这种方法(实际上还是可以用的)。
第二种方式不需要打包为MPQ文件但是对于玩家来说,他们必须创建整一套文件存放路径。
★接下来我们要做的是将修改后的txt文件以及对应生成的bin文件放入MPQ压缩包中。
进入“data\global\excel”目录找到“misc.bin”并且将它复制到你工作的文件夹。
使用MPQ2K操作MPQ压缩包
在运行MPQ2K之前我们需要了解一些相关知识。
MPQ2K不能在windows的图形界面下使用。
如果你在windows界面运行它,你会看到一个dos窗口出现并随即关闭。
你要做的是用MPQ2K的命令写一个脚本以及一个批处理文件来运行它。
因为这两个文件都是标准的text文件,你可以用Notepad(记事本)来打开它们。
我们先从脚本文件开始。
MPQ2K最重要的命令是打开压缩包、添加文件至压缩包以及关闭压缩包。
用记事本创建MPQLoad,txt并写入以下四行内容。
Opatch_D2.mpq
amisc.txtdata\global\excel\misc.txt
amisc.bindata\global\excel\misc.bin
Cpatch_D2.mpq
注:
O就是Open的缩写,a是Add,C是Close。
确定路径和上面内容一样使用的是反斜线。
打开和关闭压缩包的命令一定要是大写字母。
小写字母“o”用于使用只读方式打开压缩包,此时你不能添加文件。
添加文件命令也大小写之分,不过它们唯一的区别是小写的添加命令会压缩所要添加的文件,这有利于减小MPQ压缩包的容量。
现在要创建批处理文件。
你只需要用记事本写一行内容并存为RunMPQ2K.bat即可。
你需要确认在存储窗口中的“保存类型”为“所有文件”,然后在“文件名”处输入完全的文件名“RunMPQ2K.bat”。
mpq2ksMPQLoad.txt
现在已经可以打包了。
你必须确认“patch_D2.mpq”,你修改过的txt文件,对应的bn文件,脚本文件,批处理文件以及MPQ2K所必需的4个文件(mpq2k.exe,staredit.exe,storm.dll,lmpqapi.dll)在同一目录下。
双击批处理文件“RunMPQ2K.bat”然后你会看到由DOS窗口出现并关闭,此时,新的文件已经添加入“Patch_D2.mpq”。
如果你想看看它的工作记录,可以在批处理文件中写入如下内容。
@echooff
mpq2ksMPQLoad.txt>MPQLoad_Log.txt
typeMPQLoad_Log.txt|more
pause
这个批处理中生成的文件“MPQ2Kload.txt”可以被记事本打开,并且你会了解MPQ2K是否正常运作。
图五–批处理文件的调用结果
最好再确认一次你已经将原始的“Patch_D2.MPQ”备份好了,否则你将不能进行标准游戏,而且,在MOD修改失败并造成无法运行游戏时,你还能够恢复。
现在,将修改后的“Patch_D2.MPQ”复制到游戏目录并覆盖,然后用一般方式运行游戏,不要用“-direct-txt”命令。
玩一会儿,看是否有问题,并且测试在一格空间能不能放多于12个钥匙。
如果成功,那么恭喜你。
你的第一个暗黑2MOD制作完毕。
练习#2–贩卖的物品
这项练习最初是用于109b和109d的。
在110版,可以买到魔法瓶。
你可以从这个练习中发现110是如何做到这点的。
而且,对于购买其他药水,宝石,珠宝,符石以及各种的装备都可以用这种方式来实现。
Vendor这一字段在所有版本中通用。
在上一个联系中你学会了如何提取文件,编辑txt数据库,用“-direct-txt”命令模式调用游戏以及将文件加入MPQ压缩包。
在这一节,我们回到“Misc.txt”并且学习如何让NPC卖其他的物品。
方法是一样的,我们只需要在不同的记录中修改。
打开Misc.txt并找到“healingpotion”和“manapotion”那几行。
然后水平滚动,找到它们所在的Code段。
Name栏中的名字和它在游戏中显示的名字并不一样。
比如说:
“StrongHealingPotion”对应游戏里的“GreaterHealingPotion”,而“GreaterHealingPotion”对应的实际上是游戏里的“SuperHealingPotion”。
图六-Misc.txt药水的位置
再向右寻找商人的位置,图七所示为Act1的“Akara”。
每个商人有5个描述字段。
“Akara”在110中已经可以卖魔法药水,我们可以先从她入手,因为让她卖“manapotion”和“healingpotion”一样,只需要在“manapotion”行对应的字段填入数值即可。
我们可以先用“LesserManaPotion”来测试。
在“LesserManaPotion”行的“AkaraMin”段以及“AkaraMax”段分别写入8和16,就像“LesserhealPotion”行的内容一样。
“AkaraMagicMax”以及“AkaraMagicMin”用于魔法物品,这不在本练习的讨论范围内。
图七–Akara卖的药水
接下来可以对Lysander,Alkor,JamellaandMalah作相同的修改。
注:
所有的商人NPC都可以用这种方法来修改。
最后要做的是让NPC卖高级的药水并且不会卖完。
我们要继续向右移动,找到图八所示位置。
图八–高级的药水且不会卖完
观察在“Upgrade”段“healingpotion”行的值,并且在“manapotion”行的对应位置填入魔法药水的code。
“xxx”表示不可用,而我们要使它可用,就要将它们改为“mp4”和“mp5”。
最后,将“PermStoreItem”的位置填上1来使它不会卖完。
(在109系列版本中有这样一个错误,只有Normal游戏中的药水不会被卖完,而在其他难度,你只能通过出城,回城来刷新药水。
在110中,它设置多个栏位的药水以避免这个问题出现。
)
接下来要做的就和第一个练习一样。
保存“Misc.txt”文件,将它复制到“data\global\excel”目录,用带“-direct-txt”参数的快捷方式运行游戏并产生bin文件。
复制“Misc.bin”以及“Misc.txt”文件到工作目录,然后打包加入到“Patch_D2.MPQ”中。
练习#3–Paladin的技能盾
在这个练习中