原创
不同的难度下,玩家和丧尸会有不同的伤害系数,相关设定是未对xml开放编辑的。本期就一起来开发一个可自定义难度伤害系数的mod。
1、首先新建项目后添加引用(如何新建项目看站内的其他帖子很详细)
其中第一个是harmony的基础必须引用、第2、4个是unity必须引用的,第3个是七日杀核心脚本。
2、查找原版代码中关于攻击倍率的逻辑再分析如何修改。我们在对象浏览器中搜索ItemActionAttack。点开然后搜索difficult,就能看到在原版代码中对难度的操作。
可以看到原版代码利用了difficultyModifier(num6, world.GetEntity(_attackerEntityId), entity)这个方法对伤害进行了一次调整。按住ctrl点击这个方法我们终于找到原版关于难度伤害系数的设定。很简单粗暴,会点英语都能看懂。
3、利用harmony对原代码修改,我们开始写harmony对其进行拦截。
新建文件后,按标准格式写好(搜站内教程),这里利用前置补丁prefix并不让原版代码运行,原代码是public static int,所以要返回参数,ref int __result。(若原代码是bool的话也要传ref int __result)
把原版逻辑复制过来,然后修改一下
原版这个的意思就是没有攻击者和被攻击者的话直接返回传入的攻击值,代码结束。
我们要修改的话就改成,攻击者和被攻击者为空的话让返回参数为传入的攻击值,代码结束且不允许原版代码运行。
其他的条件判断也是一样的修改方法。
为了别人都能简单的修改倍率,我们可以通过变量来而不是固定数字来设置倍率。最后返回__result=_stregth*倍率。 (_attacker as EntityAlive).Buffs.GetCustomVar(“玩家攻击倍率_难度” + num)的意思就是获取活体的名称为 玩家攻击倍率_难度num 的变量值。
最后要记得对__result赋值,这样子原版代码ItemActionAttack.difficultyModifier运行时才能有返回值。
最后点生成,将dll复制到已经建好的mod文件中。
4、xml的操作:新建自己的mod文件。在config中新建buff文件,对玩家永久存在的buff :buffStatusCheck01添加效果,使其在每秒更新时设定难度伤害系数的变量,这样dll就可以获取到难度系数(一定要每个都设置,不然默认为0就没伤害)。
一个可以设定难度伤害倍率的mod就制作完成了。
5、课后作业
在该基础上添加新伤害倍率,玩家每有一级,提升1%的伤害倍率。
目标着火时伤害倍率+100%
提示:玩家等级为entityplayer.Progression.Level 实体没有有buff是entityalive.buffs.hasbuff
隐藏内容需要付费才可以看见
这个逼装的我给82分,剩下的用666的方式打给你!
你才是真正的英雄,大佬
牛逼
我要去柜子里翻出c语言课本再学一遍~!!!
大佬多来点
杂鱼~杂鱼~
感谢大佬的付出,赞一个!
做决定之前,请看清楚自己对不对!!!
支持大佬啊。就听大佬的教程能听懂。
感谢大佬的付出,赞一个!