- 注册时间
- 2011-3-10
- 最后登录
- 1970-1-1
该用户从未签到
|
;打怪之前取X,Y人物坐标
$sv_Type="float"
$za=_MemoryRead("0x" & Hex($Base + 0x948), $Handle)
$x = _MemoryRead("0x" & Hex($Base + 0x3E0), $Handle,$sv_Type)
$y = _MemoryRead("0x" & Hex($Base + 0x3E8), $Handle,$sv_Type)
;打怪过程循环检测坐标
$x2 = _MemoryRead("0x" & Hex($za + 0x12c), $Handle,$sv_Type)
$y2 = _MemoryRead("0x" & Hex($za + 0x134), $Handle,$sv_Type)
;准备鼠标点击写入坐标
$Temp = _MemoryRead("0x" & Hex($Base+0x8CC), $Handle)
$Temp = _MemoryRead("0x" & Hex($Temp+0x30), $Handle)
$Temp = _MemoryRead("0x" & Hex($Temp+0x4), $Handle)
;判断超出的范围,进行回到原点的操作(其实是个正方形范围,不是圆形)
If $x2 > $x+$juli or $x2 < $x-$juli Or $y2 > $y+$juli Or $y2 < $y-$juli Then
TrayTip("","超出范围,正在尝试返回",15,1)
;激活窗口
WinActivate("Element Client")
WinWaitActive("Element Client")
;取消选的怪 中断当前动作
ControlSend($WinHandle, "", "", "{ESC}")
Sleep(2000)
;再次取消 保险
ControlSend($WinHandle, "", "", "{ESC}")
Sleep(1000)
;按住ALT点击鼠标
Send("{LALT down}")
MouseClick("left", 300, 400, 1)
Sleep(100)
;写入鼠标点击坐标
_MemoryWrite("0x" & Hex($temp + 0x20), $Handle, $x,$sv_Type)
_MemoryWrite("0x" & Hex($temp + 0x28), $Handle, $y,$sv_Type)
;松开ALT(这样的做法是避免点到怪)
Send("{LALT up}")
Sleep(1000)
;下面是再次操作,避免点击出现问题
Send("{LALT down}")
MouseClick("left", 300, 400, 1)
Sleep(100)
_MemoryWrite("0x" & Hex($temp + 0x20), $Handle, $x,$sv_Type)
_MemoryWrite("0x" & Hex($temp + 0x28), $Handle, $y,$sv_Type)
Send("{LALT up}")
;等待6秒的跑步时间和静止时间
Sleep(6000)
;再次取消选怪,第三次保险
ControlSend($WinHandle, "", "", "{ESC}")
;此处不检查是否和原点一摸一样 实践证明有微弱的偏差
TrayTip("","请检查是否回到原点,即将自动最小化游戏",10,1)
Sleep(3000)
;自动最小化游戏,继续挂机打怪循环
WinSetState("Element Client","",@SW_MINIMIZE)
EndIf
另外,暂停以后恢复挂机的时候,执行如下FUNC,用以记录当前的挂机点:
Func xyzhu()
$x = _MemoryRead("0x" & Hex($Base + 0x3E0), $Handle,$sv_Type)
$y = _MemoryRead("0x" & Hex($Base + 0x3E8), $Handle,$sv_Type)
TrayTip("","当前挂机地点已记录",15,1)
EndFunc |
|