可能有的Modder发现了,Player和Mob明明是两个类,为什么Player可以调用Mob的函数,这是因为Player类继承自Mob类。
当然这不是我们讨论的重点,我们言归正传。
前面提到,游戏调用了AttributeInstance::getCurrentValue获取了饥饿值,那这返回值,一定便是AttributeInstance指针或引用了。
那么,我们再看看Mob::getAttribute的参数,他有几个参数?严格来说是两个,类指针为第一个参数,Attribute const&为第二个。
第一个很好解决啊,我们获取Player的指针传进去就好(不知道怎么获取Player的Modder可以参考我的另一篇教程贴),那么第二个参数呢?好,我们又懵逼了。这时候应该再看看汇编代码。
我们看看这几句:
ADD R1, PC ; off_7580F8
LDR R1, [R1] ; Player::HUNGER