游戏动态坐标获得 游戏里的坐标
//得到鼠标指给的窗口句柄
Hwnd
=
Plugin.Window.MousePoint()
//得到窗口句柄的客户区大致
Rect
=
Plugin.Window.GetClientRect(Hwnd)
Dim
MyArray
MyArray=Split(Rect,"|")
Ux
=
CLng(MyArray(0))
Uy
=
Clng(MyArray(1))
接着就是后台的命令了
记下Ux
Uy
都是游戏窗口起始点的坐标
你在截取屏幕时获取的屏幕坐标
再加上窗口起始点坐标就是窗口里的坐标了
例如:
x+Ux,y+Uy
这就是窗口里的坐标
谢谢
如有难题请加Q
加备注
谢谢
二、怎样用易语言获取游戏地图上面的坐标
地址=[[[[基址]+一级偏移]+二级偏移]+三级偏移]+四级偏移]+……,最多我遇到八级偏移。
坐标一般是用浮点数存储的,你在游戏里面看是300,但实际时也许是300.12,300.45这样子的。因此直接搜整数型的搜300搜差点。
方式一:搜血量的地址。比如是[[CD866C]+1C]+28]+280。那么,大家可以得出CD866C是基址,[[CD866C]+1C]+28]是人物基址。一般跟人物有关的地址存放的位置都挺近的,于是,可以用“结构化内存监视器”(网上有下的)遍历四级偏移280周围的地址,例如:[[CD866C]+1C]+28]+0到[[CD866C]+1C]+28]+99C。寻找有没有跟300,400相近的数。
方式二:搜索未知的初始量,类型浮点数或双浮点数。搜出来数据量会很大。接着移动一下人物位置,坐标会变。如果坐标变小,搜减小的数值;如果坐标变大,搜增大的数值。这样搜出的数据量越来越小,在最后的数据中找到地址,接着搜基址和偏移。
总之,内存这方面并不简单,要多看视频,积累经验。纯手打的哦!
三、游戏窗口的鼠标坐标和实际的坐标不一致,如何换算
这个有很多种写法
写法一
1先将鼠标指给游戏窗口获取游戏窗口句柄
Hwnd= Plugin.Window.MousePoint()
2建立壹个动态数组
dim MyArray
3通过获取到的句柄Hwnd得到游戏窗口大致
sRect= Plugin.Window.GetClientRect(Hwnd)
4通过数组分割函数将得到的坐标分割为两组
MyArray= Split(sRect,"|")
5,通过类型转换函数将得的坐标转换为LNG并赋值
Ux= Clng(MyArray(0))
Uy= Clng(MyArray(1))
假如普通抓点坐标为100,100则游戏内坐标为 100-Ux 100-Uy
完整代码
Hwnd= Plugin.Window.MousePoint()
sRect= Plugin.Window.GetClientRect(Hwnd)
dim MyArray
MyArray= Split(sRect,"|")
Ux= Clng(MyArray(0))
Uy= Clng(MyArray(1))
写法二
利用ScreenToClient(hwnd,x,y)函数,转换实际坐标和窗口坐标
首先
1先将鼠标指给游戏窗口获取游戏窗口句柄
Hwnd= Plugin.Window.MousePoint()
2将原来抓点的值代入ScreenToClient(hwnd,x,y)函数则可以得到窗口坐标
示例:
x= 100:y= 100
dm_ret= dm.ScreenToClient(hwnd,x,y)
这里利用了大漠插件的功能,实际上按键自带的VB函数就可以完成。
还有其它许多写法,对于新人来说,这两种就已经够用了