KF1 mod 开发教程
创建一个插件
插件经常被机翻成 突变器,可以理解为一种游戏修改; 插件属于小型的MOD,应该遵循已有“游戏模式”建立的规则。 如果你想完全自定义游戏规则,应该使用 GameType 做一个自己的游戏模式。

以后如何更好的使用插件,需要熟悉一些实例代码 方能了解插件能做什么, 这是一个探索的过程,请牢记 熟悉面向对象的编程基础 才能让你感觉到更多信息。
MOD目录结构
不管是“插件”还是“游戏模式”,我们都需要一个MOD目录结构。 这里假设我们的游戏目录是 killingfloor,并且插件的名字叫做 ExampleMutator, 然后你需要在游戏目录下创建一个结构
killingfloor / ExampleMutator / Classes
不管游戏目录下有什么,你先创建 ExampleMutator 目录, 再到里面创建 Classes 文件夹,这里目录 就是文件夹的意思。

这里 Classes 表示类目录,里面就是你存放源码文件的地方; 接着在里面创建一个 txt文本,修改文件名为 ExampleMutator.uc 它的路径应该如下所示:
killingfloor / ExampleMutator / Classes / ExampleMutator.uc
这里文件名只是碰巧和目录名一致,并不影响任何执行; 实际上你可以在 Classes 里面创建很多文件,如何区分功能? 注意文件名有个 Mutator 单词结尾,我们应该看得出它是一个插件
Mutator 翻译为插件
假设你要写“游戏模式”应该以 GameType 结尾,还有更多的命名规则 以后我们以后会慢慢接触到,主要借鉴KF1官方文件的命名习惯。 必须养成良好的命名习惯,有助于提高文件名的可读性,方便维护。
MOD编译配置
以上将MOD目录结构定义好之后,需要进行配置 才能对其进行编译打包。 在游戏的 system 文件夹中,能找到一个 killingfloor.ini 配置文件; 将其打开搜索内容 EditPackages(用Ctrl+F进行搜索)你会找到一下结果:
EditPackages=Core
EditPackages=Engine
EditPackages=Fire
EditPackages=Editor
EditPackages=UnrealEd
...
EditPackages=FrightScript
在这些“编辑包”的最下端添加一个条目 ExampleMutator 结果如下:
....
EditPackages=FrightScript
EditPackages=ExampleMutator
用编程的知识说明一下,EditPackages 是一个数组 这些内容表示向数组中添加元素,这些名字是游戏中的目录名, 当编译时,编译器会将这些目录中的 .uc 类文件打包成一个 .u 文件
.u 文件就是目录编译之后的包
编译MOD包
编译之前,我们要给俺们自己的插件类 写一点东西。 插件类是什么?在目录 Classes 中的 ExampleMutator.uc 就是用来写插件类的。
class ExampleMutator extends Mutator;

defaultproperties
{
GroupName="KFExampleMutator"
FriendlyName="Example Mutator"
Description="Mutator description here"
}
虚幻脚本中的 继承 使用 extends 关键字
这里我们的 ExampleMutator 类继承了 Mutator 类

所以我们目前写的是 官方插件类的子类。然后 defaultproperties 表示默认属性, 这里设置的三个属性 是从父类继承过来的,可进行赋值
编译插件也许一个命令就能执行,但是修改代码 再次编译时会碰到小问题, 因为之前打包好的 .u 文件要手动删除,还有一个 txt文件要删掉。

为了更方便的修改编译我们的MOD包,需要写一个批处理
假设我们的 KF目录 在E盘steam目录下:
del "E:\steam\steamapps\common\KillingFloor\System\ExampleMutator.u"
"E:\steam\steamapps\common\KillingFloor\System\UCC.exe" make
del "E:\steam\steamapps\common\KillingFloor\System\steam_appid.txt"
pause
第二行启动 UCC.exe 进行编译,编译什么包 它会去看之前的配置;
第一行、第三行 删除了由 UCC 生成的文件。

将以上内容保存到一个 .bat 批处理文件中,双击即可执行。 这个 bat 可以放到 Classes 目录里,方便查找。