看流星社区

 找回密码
 注册账号
查看: 2620|回复: 2

autoit实现的简单前台走路

[复制链接]

该用户从未签到

发表于 2011-4-6 09:03:09 | 显示全部楼层 |阅读模式
;打怪之前取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

该用户从未签到

发表于 2011-4-6 09:03:16 | 显示全部楼层
$juli就是挂机的范围值 表示坐标偏差值,比如20

该用户从未签到

发表于 2011-12-2 18:53:56 | 显示全部楼层
留个脚印证明自己还活着
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-3 16:37

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表