做武器MOD的最简单方式就是 继承官方的武器类。
先找到 KFMod 目录,官方武器的类文件基本在此处
steam \ steamapps \ common \ KillingFloor \ KFMod \ Classes
在该目录中随便选一个武器类,比如 M4突击步枪
M4AssaultRifle.uc
此时的继承武器类 与插件类并没有任何关系,需要另外写一个 uc 文件
例如:加个前缀 命名我们自己的武器类
ABC_M4AssaultRifle.uc
在自己的“MOD目录”右击创建一个文本文档,重命名为上面的名字即可
有了武器类文件,必须在 ABC_M4AssaultRifle.uc 文件里写一点代码
才能表示俺们真心继承了官方武器
// 自定义M4
class ABC_M4AssaultRifle extends M4AssaultRifle;
关键字 class 表示“类”,extends 表示“继承”;
从继承关系来看 M4AssaultRifle 是父类,而 ABC_M4AssaultRifle 是我们自定义的子类
武器类定义好了,但是目前无法给玩家装配上,此时我们要以“插件类”作为入口;
利用插件类给玩家默认发配一把“ABC牌 M4步枪”
在自己的插件类中重写一下“修改玩家”函数,加入代码给玩家发枪
// 修改玩家
function ModifyPlayer(Pawn Other)
{
Other.GiveWeapon("ABCMutator.ABC_M4AssaultRifle");
Super.ModifyPlayer(Other);
}
该函数在玩家出生时执行,参数 Other 表示“玩家棋子”属于 Pawn 类;
该类中定义好了 GiveWeapon 函数,用于给玩家添加武器。
调用 Other 对象的 GiveWeapon 函数,传入“武器名”字符串即可;
武器名字符串格式比较特殊
格式:"包名.武器类名"
举例:"ABCMutator.ABC_M4AssaultRifle"
包名为 你的MOD目录名字,类名为 .uc 文件名(不含后缀);写入代码后可编译查看效果,
如果以前的代码给玩家赋予过武器,可以先删掉 重新写成上面的代码。
修改武器之前,我们先了解一下虚幻脚本的默认属性。
在我们的 M4 类中可以定义一些变量
// 自定义M4
class ABC_M4AssaultRifle extends M4AssaultRifle;
// 成员变量
var string abc;
在类里面定义的变量可以叫“成员变量”,上面为 M4 类定义了一个 abc 字符串变量;
成员变量在虚幻脚本中可以叫做“类属性”。
如果要给“类的变量”赋值 不能直接等号赋值,需要在默认属性中进行设置
// 默认属性
defaultproperties
{
abc="hello M4...."
}
默认属性中不用写分号 ; 结尾,在 defaultproperties 关键字下的赋值写法
与普通的虚幻代码不同,以后逐渐讨论。
我们自己写的属性目前没有什么用,但官方武器中的属性 基本上都有特殊的作用,
例如 MagCapacity 表示弹夹容量,该属性定义在 官方M4类中,可直接在子类中修改。
// 自定义M4
class ABC_M4AssaultRifle extends M4AssaultRifle;
defaultproperties
{
MagCapacity=90
}
以上武器代码 将弹夹容量设置成 90,编译后 可启动插件查看效果。
实际武器类还有更多的属性,一把武器是几个类拼凑在一起的,相互之间有引用关系;
目前的插件代码只能在“单人游戏”正常执行,想要在“多人游戏”正常运行插件需要一些设置,下一节再说明。