1.首先说一下修改游戏的前提
在二战英雄的原版(未使用1.12与1.28版补丁)主要修改目标是game.pak这个大块头文件,而打上1.28版补丁后的主要修改目标是3.pat,以上这两个文件我们可以使用WinRAR压缩软件来打开它,你可以简单的理解为它们都是压缩文档,只是后缀名与我们常见到RAR不一样罢了。
它们的位置如下:
X:\XXX\Soldiers - Heroes of World War II\game.pak
X:\XXX\Soldiers - Heroes of World War II\resource\Patch\3.pat
现在我们找到3.pat这个文件,用WinRAR打开它,并且解压缩到Patch\文件夹下,完成后会在Patch\文件夹下多出一个“3”文件夹,而我们所要修改的文件都会在这个文件夹中找到。通过下文提到的修改过程做完修改后,再将修改过的文件打包回3.pat文件就算完成修改了,很简单,不是吗?
为防止修改出错,你可以将3.pat这个文件预先复制到其它文件夹中,这样一但不小心搞坏了这个文件,可以将其复制回来并覆盖即可恢复到原样。
2.开始修改
以阻击枪为例,在二战英雄中常见的阻击枪有苏联的STV-40、德国的G41、盟军的EM-2这三款,它们在游戏中的射击距离、射击精度、杀伤力、等指标都是一样的,而弹夹装弹数量稍有区别。
在X:\XXX\Soldiers - Heroes of World War II\resource\Patch\3\set\weapon文件夹中找到rifle.inc文件,用记事本打开它。
在这个文件中可以看到以{weapon ...开头,最后跟一个}为结束的代码段落,如下:
{weapon XXXXXXXXXXXX
.....
}
{weapon XXXXXXXXXXXX
.....
}
这里的每一个{weapon ...}段代表一种枪的数据设定,其中以开头的
{weapon pattern "rifle" from "bullet"
......
}
为主代码段,(如果你会编程,这自然难不倒你,如果不会编程也无需深究)在主代码段中定义枪支的公共数据设定,而其它的代码段则定义某一种枪的自定义代码。在主代码段的内容我们一般无需修改,主要修改对应枪支的代码即可。为方便理解,下文我们统一称为主段,分段。
再来看分段,以SVT阻击枪为例:找到这一句 {weapon "svt" from "sniper_rifle",这一句中“weapon”你可以理解为段代码开头语句,“from”你可以简单理解为[继承]。
本句意思为:定义枪支名称为"svt"(苏联的STV-40),并继承"sniper_rifle"分段内容设定。
这样就牵扯到"sniper_rifle"分段,向上查找到{weapon pattern "sniper_rifle" from "mauzer"这一句,你会看到它继承于"mauzer"分段,同样向上找到{weapon "mauzer" from "rifle"这一句,你会看到它继承于"rifle"段。而"rifle"段则指向了本文件的主段落。至于主段落继承于"bullet",则无需理会它了。
明白了本文件的主柜架结构与段落的继承关系会对你有莫大的帮助,通过它举一反三,对于其它的如机枪、坦克等代码文件的修改,你就可以做到无师自通了。这也是偶写本文件的目的。授人以鱼,不如授人以渔。不是吗?
再来看枪支分段的标准定义,还是以苏联的STV-40阻击枪为例,偶加上了注释。