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

上一节,我们讲解了关于各种延时机制的hack,这一节,将会介绍全传奇威能的制作

1. 因为传奇威能的收集比较困难,需要获取到大部分拥有传奇技能的装备,而且还要提取传奇威能,因此,我们考虑从程序中Hack出来全部的威能,首先我们从SItemPlayerExtractLegendaryPower函数中知道了威能数组和数量在Player中的偏移地址,如下图,顺便找到2.6.6中此函数的地址0x7B45F0

2. 我们去找到LocalPlayerGet在2.6.6中的函数地址是0xB8040,后面会用到

3. 接下来我们找到选择威能时程序会调用的一个函数UIEquipLegendaryPowers::GetAllPowers,就在这里找一个hack的地方,做hack代码跳转,如图中的v3那里

4. 然后找到2.6.6中对应的地址,修改成hack跳转

5. 在2.6.6中的0xc426fc处开始编写hack代码,注意由于金手指要偏移-0x1000,所以B9040和7B55F0其实是B8040和7B45F0, 233978其实是232978,讲解一下思路,我们先获取player对象,然后找到威能数地址改为0,然后把arExtractableLegendaryPowers的地址给X8, 遍历其中每个威能,并调用SItemPlayerExtractLegendaryPower让人物学会该威能,调用该函数前,切记要保存X0到X21, 因为,player的地址每次循环都要用,因为函数里会改变一些寄存器,如x8,x9,所以最后还要恢复x8,x9的值,最后跳回到调用处,这样就完成了整个流程

6. 由于我们在调用SItemPlayerExtractLegendaryPower的时候并没有传入第三个参数,也就是GameError *eGameError,因此还需要修改一些地方来避免出错,打开该函数,分析代码找到了三个需要修改的地方

7. 找到2.6.6版本对应的地址,一一修改之

8. 因为我们直接修改了跳转,导致威能成就没办法正确获取,因此我们改一下拾取金币的成就,把他变成威能成就判断,当然也可以不改,反正下次进入游戏成就还是会正确完成,所以也可以忽略,在这里说一下怎么改吧,分析可以知道威能成就标志是524

9. 找到sPlayerCurrencyPickup函数里金币成就判断的地方,把金币成就类型10改成威能成就类型524即可,找到2.6.6的对应地址去做hack

10. 把所有代码写成金手指格式

11. 开启金手指进游戏里打开卡奈魔盒,看看传奇威能是不是全都有啦,注意,暂时不要选威能,由于我们改了全威能数组,但是并没有重新导入和排序,所以需要退出游戏场景重新进入就好了,所有威能全部可以选了

好了,本节到此结束,从这一节开始,我们讲解的hack过程越来越复杂,实现的功能越来越强大,但是万变不离其宗,只要程序逻辑分析清楚,全面考虑所有情况,最后一定会成功

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值