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

上一节,我们介绍了较为复杂的全传奇威能功能制作,这一节,我们将用类似的原理讲解全饰品的制作

1. 游戏里的翅膀,旗帜,宠物等装饰品稀有且难获取,也是我们最想收集全的,无奈掉率太低,而且还有一些隐藏的没有在掉落当中,为此,我们有了制作全饰品功能的想法。首先,搜索learnCosmetic,意思就是学会装饰物,找打了函数SCosmeticItems_LearnCosmeticItem,从伪代码分析中知道了,装饰品数组在player中的偏移是0x9F00,数量偏移再加0x800,我们找到2.6.6中的偏移其实是0x9F18,所以后面就按0x9F18来计算

2. 我们搜索AllCosmetic,发现了函数SCosmeticItems_LearnAllCosmeticsCheat,在里面又找到了 GBEnumerate(2, &listResults);,分析上下文,可知,这个函数是遍历所有2类型的物品,其中包括了所有装饰品,因此我们就在GBEnumerate里做hack

3. 跳转到GBEnumerate里,然后在跳转sGBEnumerateType里面,找到了要做装饰品复位的地方,然后找到2.6.6对应的地址,做hack

4. 找空白区域编写复位装饰品代码

5. 接下来我们开始在遍历物品时做hack,确保每一个装饰品被添加到数组当中,我们找到了遍历的while循环开始处,然后找到2.6.6对应的地址做hack跳转

6. 我们在SCosmeticItems_LearnAllCosmeticsCheat中发现了ItemIsCosmeticItem,意思是判断物品是否属于装饰品,找到2.6.6对应的函数地址为sub_4E1400,这个记下来,后面写代码时会用到

7. 找空白区域编写代码

8. 这样我们清空和添加装饰品的代码都写完了,两段合在一起写成金手指代码

9. 然后我们想怎么触发这段代码呢?因为触发的话需要调用GBEnumerate(2, &listResults);,因此我们在此函数上右击跳转到外部引用,看看有哪些地方调用了这个函数,经过一番分析,我们发现了UIDyeItem::GetAllDyes,又发现了UIMystic::Console::UIDyeItemView::DyeDataSource::PopulateDyes调用它,也就是获取所有染色,知道了在附魔工匠那里可以触发

10. 我们进游戏测试,开启金手指,然后去附魔工匠那里点一下,再打开背包,看看装饰品,是不是全都有了?甚至包含未开发完成和隐藏的装饰品也获得了,成功。

好了,本节到此结束,通过本节,我们学会了如何通过在系统遍历时添加装饰品,达到制作全饰品的功能,下一节,我们将进军全幻化

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值