NS版暗黑破坏神3金手指开发教程(11)

上一节,我们已经将人物相关的金手指功能完成的差不多了,这一节,将开始进军终极hack之路,先从传奇宝石开始

1. 我们先从传奇宝石奖励升级次数修改开始,因为我们知道每次完成大秘境之后,宝石升级次数奖励默认是0,没死的话是1,所以就修改这个奖励,搜索getnumbonus, 发现函数NephalemRiftManager::sGetNumBonusUpgrades,打开往下拉,分析代码得到了要hack的地方,找到2.6.6需要hack的地址,有2处,hack完写成金手指代码

2. 接下来我们搜索宝石升级几率chance, 找到了函数ItemCrafting_GetJewelUpgradeChance,可以知道这个返回值是宝石升级成功率,那么改成100%也就是1即可,找到2.6.6对应地址,修改之即可

3. 然后我们接着修改奖励次数始终锁定,在函数ItemCrafting_GetJewelUpgradeChance上右击跳转到外部引用,跳转到SItemCrafting_UpgradeJewel,发现了修改奖励次数的地方PlayerSetJewelBonusUpgradesLeft,然后找到2.6.6对应的地址hack之即可

4. 我们觉得每次升级宝石太慢了,于是考虑做一个升级一次宝石就满级的功能,往上面分析,发现了SItemUpgradeJewel函数,双击点进去,发现了要hack的地方,我们只用修改v2也就是宝石升级次数w21的值就可以了,找到2.6.6的地址,编写代码,然后写成金手指代码,当然有更简单的修改方式,比如在SItemUpgradeJewel调用时直接把传参改为150,这个读者可以自行实验

5. 我们不满足于宝石等级被暴雪限制为最高150,于是有了修改宝石为任意等级的想法,在之前我们已经知道了宝石等级的属性标志0xFFFFF576,于是可以考虑在在程序获取宝石等级时做hack,转到AttributesGetInt伪代码,可以看到比较简单,然后转到汇编代码,再找到2.6.6对应的地址,开始编写hack代码,并在原指令处做跳转,最后写成金手指代码

6. 到现在为止,我们已经完成了关于宝石升级次数以及等级修改等相关的功能,最后还剩一个问题,那就是每次升级宝石时动画时间比较长,不停按键也容易伤键,为了解决这个问题,我们考虑修改升级宝石的动画时间,因此我们搜索upgrade,发现了函数UIJewelUpgrade::OnButton1,因为我们是靠主按键进行宝石升级确认的,之后才会播放动画,所以猜测在此函数里可能会播放动画,点进去,往下分析,果然发现了UIStoryboard::Play,字面意思就是播放,因为Play又调用了Advance,因此我们可以在Advance里做hack, 双击UIStoryboard::Advance,分析伪代码

7. 分析可知v6就是要hack的地方,改为最大值1即可

8. 转到汇编代码,然后找到2.6.6的地址进行指令Hack,注意因为2.6.6附近指令和原始版本差别比较多,此处在2.6.6并不容易找,需要结合一些其他方法才能找到,比如扩大搜索范围,或者先搜索其他容易找的父函数然后点进来即可

9. 修改后写成金手指代码

10. 现在我们完成了传奇宝石相关的全部金手指功能,可以进游戏测试了,是不是升级时没有延时了?再测试一下锁定宝石等级1亿和奖励宝石升级次数均生效了,值得注意的是,锁定宝石等级需要在进游戏之前开启,这样人物进入游戏场景时,宝石的属性才会生效,而且重启游戏后宝石等级也会复位到最高级150,这个是由于每次进游戏场景或者存档时,系统会自动进行宝石等级上限复位,不用在意,我们锁定就好啦

11. 好了,本节到此结束,我们已经学会了通过修改动画播放的机制来取消延时,下一节,将会讲解其他延时机制的关闭方法,包括按键摇杆延时,锻造和附魔延时等

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值