1 OD附加游戏,发现 周围怪物列表基址处 有我们人物角色的名字,猜测 第一个对象可能是 我们的人物本身
2 对比一下 人物对象 和 怪物对象 基址处的数值,看看有什么不同。发现 对象基址+8 的值 ,两个怪物都是相同的,为0x2E。
3 我们到OD中,对 对象基址+8 这个地址 下个内存访问断点
然后发现断在了这里,要跟31比,这不就是我们 玩家对象基址+8 这个地址的值 吗?
说明 对象基址+8 应该是 对象分类的编号,2E代表普通怪物,31代表玩家。中间隔了2F,30,可能也代表着某些对象类型。比如精英怪,BOSS怪
4 我们再找一下人物名称的偏移是多少,人物名称:[人物对象+18]
5 接下来解决上一节留下的问题,怪物死亡的状态,先改个名字
6 用CE从怪物对象基址 开始搜,死了搜1,没死搜0。找到死亡状态 偏移为 +3C0
7 添加代码
StrcutGame.cpp
StrcutGame.h
8 测试,完美解决