myadmin 发表于 2012-3-11 10:53:07

雨夜版主,通过遍历工具找出怪物的相关偏移,易语言读取老是-1.

看了完美国际里面的23课教程:通过遍历工具找出怪物的相关偏移,按方法,我已经找出来了。我玩的是《完美世界》国内的版本。
找到的怪物地址与偏移:[[[[[+1C]+08]+24]+50]+E*4]

[[[[[+1C]+08]+24]+50]+E*4]
E*4=38(这里是十六进制相剩吧?)

+4怪物标志
+12C   怪物当前血值
+168   怪物最大血

在CE里面添加指针:

得出当前选中怪物的血值是:19285

为了证实正确性,手动在CE修改怪物血值为:1

这时,游戏中当前选中怪的血条相应的发生了变化:

=================================
以上说明,基址跟偏移完全正确,可是我在易语言里,就是读不出数据:
你例程里面的:基地址 = 内存_读代码 (进程句柄, “A51140+1C+1c+28+18”)
我用的不是究极模块,所以我的代码如下:
基地址 = 读内存代码 (游戏进程ID, “00a91f3c+1c+8+24+50+38+4”)'这里之所以填“38”,是E*4得出来的结果,并表示,当前选中的怪物是一直存在的,后面+4就是怪物标志偏移
调试输出 (基地址)
运行,调试输出一直为:-1
--------------------------------------
子程序名:读内存代码
    读内存整数型,如果表达式无效或地址无效返回-1
    返回值类型:整数型
    参数<1>的名称为“进程ID”,类型为“整数型”。注明:(进程ID为-1时,表示读写自进程内存)。
    参数<2>的名称为“地址表达式”,类型为“文本型”。
========================================
问:是我哪里出错了?读不出来怪物标志?血值也同样试过,一直输出为:-1
注:游戏角色血值及蓝值、坐标、等级及名称都能正常读取。

雨夜 发表于 2012-3-11 11:19:57

你的问题我已看完,我帮你分析一下。
基址+偏移通过CE已经核对正确,那么这个就不需要担心。
问题是出在这里读内存代码()
基地址 = 读内存代码 (游戏进程ID, “00a91f3c+1c+8+24+50+38+4”)
我看了一个该命令第一个参数是进程ID,那么首先你可以先去核对一下,获取的进程ID是否正确。
如果正确再看看地址表达式是否格式填写错误。
那么,如果两个参数都填写正确,那么就有可能是 读内存代码()这个命令有问题了。
我在这里说明一下进程ID 与 进程句柄 是不同的,所以在这里不要填写错了。
你先去检查一下,如果还有什么问题,请到这帖回复。

myadmin 发表于 2012-3-11 17:53:02

谢谢,问题已经解决了,原来是:读内存代码()这个命令有问题。重新写过就正常了。

cooby 发表于 2013-9-28 12:00:50

走自己的路,让别人打车去吧.▓
水至清则无鱼,人至贱则无敌!

dsfdshh 发表于 2022-3-3 12:31:26

myadmin 发表于 2012-3-11 17:53
谢谢,问题已经解决了,原来是:读内存代码()这个命令有问题。重新写过就正常了。

重新写的是什么
页: [1]
查看完整版本: 雨夜版主,通过遍历工具找出怪物的相关偏移,易语言读取老是-1.