易语言我这个植物大战僵尸的阳光源码那里写错了·??为什么不好使啊

.版本 2

.程序集 窗口程序集1
.程序集变量 进程ID, 整数型
.程序集变量 基址, 文本型
.程序集变量 地址, 整数型
.程序集变量 第一次偏移, 文本型
.程序集变量 第二次偏移, 文本型

.子程序 __启动窗口_创建完毕

基址 = “6a9ec0”
进程ID = 取进程ID (“PlantsVsZombies.exe”)
第一次偏移 = “768”
第二次偏移 = “5560”
地址 = 十六到十 (基址) + 十六到十 (第一次偏移) + 十六到十 (第二次偏移)

.子程序 _按钮1_被单击

内存.写整数型 (进程ID, 地址, 900)

地址 = 十六到十 (基址) + 十六到十 (第一次偏移) + 十六到十 (第二次偏移)

上面这句错得离谱,并不是直接加起来就行,因为基址和偏移是不会变的,而阳光的地址每次游戏都会改变,阳光的地址就在基址+偏移里,那么就要读出该阳光地址后再写到读出的阳光地址!!
看下面的

一级地址 = 内存读整数 (进程ID, 基址, ) + 第一次偏移
二级地址 = 内存读整数 (进程ID, 一级地址, ) + 第二次偏移

写整数型 (进程ID, 二级地址, 900)

===========下面是我写的方法,直接十进制(个人习惯)
.版本 2

.局部变量 一级地址, 整数型
.局部变量 二级地址, 整数型

一级地址 = 内存类.内存读整数 (进程ID, 6987456, ) + 1896
二级地址 = 内存类.内存读整数 (进程ID, 一级地址, ) + 21856
内存类.内存写整数 (进程ID, 二级地址, 到数值 (编辑框1.内容))
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-10
在这里不用写基址,直接写代码 “6a9ec0”
我已经把你的基址个偏移都写进去了,希望对你有用~~

.程序集变量 进程, 整数型
.程序集变量 一级偏移, 整数型
.程序集变量 二级偏移, 整数型
.程序集变量 阳光, 整数型

.子程序 _时钟1_周期事件

一级偏移 = 读内存整数型 (进程, 十六到十 (“ “6a9ec0””))
二级偏移 = 读内存整数型 (进程, 一级偏移 + 十六到十 (“5560”))

.子程序 _时钟2_周期事件

进程 = 取进程ID (“PlantsVsZombies.exe”)
阳光 = 到数值 (编辑框1.内容) '这是要改的阳光数值

.子程序 _按钮1_被单击

写内存整数型 (进程, 二级偏移 + 十六到十 (“768”), 阳光)
相似回答