菜鸟教程第四课、用ce和OD玩家(怪物)选中状态偏移
广海: lchhjx 转载请注明出处!
在游戏中存在一种内存地址,这个内存地址的值只会随玩家(怪物)选中是否被选中而改变。只要选中某个玩家(怪物),而且不管是否是同一,这个内存地址的值都不会改变;而在没有选中时,这个内存地址的值才会变为其它的某个定值。
我们就可以根据这个内存地址的值来判断当前有没有选中某个玩家(怪物)。
根据经验猜测在没有选中玩家时,该内存地址中的数值为0,而选中某个玩家后,该内存地址中的数值应该大于0。
一、步骤
1、不选玩家,用ce搜精确数值0,accommodation是什么意思数据类型选2字节。为什么不用4字节呢?因为在这之前,我用4字节搜索了以后没有发现比较好的数值,所以换了一种数据类型来继续查。
2、选中某个玩家,查大于0的数值:
3、让自己绕这个玩家走两步,因为你已经选中一个玩家,不管你现在做什么动作,这个内存地址中的数值都不会改变,所以搜未更改的数值:
4、重复上面的步骤(恰当的选择,不一定完全照搬),发现还有17个地址,现在选中了一个玩家:
5、一般我们将数值比较小的用来表示选中状态,挑选出其中数值较小的4个值。
javascript和mysql菜鸟教程少儿编程老师累不累6、下面怎样再从这四个地址中筛选呢?我提供两种方法:
方法一、多选几个不同的玩家,出没有变化的。
方法二、选中某个NPC,因为NPC不是玩家,所以这个值应该发生变化。
7、我用方法二选中了一个NPC,发现第二个和第四个发生了变化,我就选第二个地址[03862B38]来下来源,如果不到就用第四个:
8、用OD想学编程从哪里开始附加游戏,在命令栏中使用dd 03862B38命令,即查看[03862B38]地址中的值:
9、点鼠标右键,选“短型/无符号十进制”:
第一个数字0代表当前没有选中某个玩家。
10、在0处,点右键下硬件访问(word)断点:
11、到游戏中选中某个玩家,游戏断下,来到下图中的1位置(08-11步类似于ce中的“查访问此地址的代码”):
虽然断在1位置,但其实访问的是上面的2位置:
往上,在3位置到EAX的来源:
所以可以用内存地址[[0B90488]+544]里的word型数值来代表当前玩家选中状态,数值为0时代表没有选中,数值为1时代表选中某个玩家。
二、思考:
自定义datasource那么怪物(NPC)选中状态偏移又是什么呢?
flex布局上下居中其实我们已经到了,也是此地址。当数值为256时就代表选中了某个怪物。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论