如何优化此代码以与其他热键一起使用?

时间:2013-03-31 04:12:46

标签: autohotkey autologin

我已创建此脚本以自动登录游戏。它工作正常,但有多个帐户,(^!2 ::%acc2 %% pw2%..等等)。我不想在每个热键下单独复制代码,而是将它们组合起来,但我无法弄清楚如何。

;Autologin #1.
^!1::
ImageSearch,ExistUser_X,ExistUser_Y,0,0,A_ScreenWidth,A_ScreenHeight,%A_TEMP%\ExistUser.bmp
If !ErrorLevel
{
    Click,%ExistUser_X%,%ExistUser_Y%
    ImageSearch,Login_X,Login_Y,0,0,A_ScreenWidth,A_ScreenHeight,%A_TEMP%\Login.bmp
    Click,%Login_X%,%Login_Y%
    If !ErrorLevel
        Send,%acc1%{Tab}%pw1%{Enter}
    Else
        MsgBox,The login page is not visible.
    Return
}
Else If ErrorLevel=1
{
    ImageSearch,Login_X,Login_Y,0,0,A_ScreenWidth,A_ScreenHeight,%A_TEMP%\Login.bmp
    Click,%Login_X%,%Login_Y%
    If !ErrorLevel
        Send,%acc1%{Tab}%pw1%{Enter}
    Else
    MsgBox,The login page is not visible.
    Return
}
Else
MsgBox,The login page is not visible.
Return

稍微贬低它的作用; 当你点击热键时,它会搜索一个按钮(ExistUser.bmp)并点击它,如果它在那里。然后它将进入真实登录页面(并确保它是实际页面),它将发送帐户详细信息(%acc1%和%pw1%)。如果用户手动单击ExistUser按钮,它将检查登录页面,然后发送详细信息。如果它找不到任何一个页面,则会发出错误消息MsgBox。

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

为什么不将各种帐户和密码存储在二维数组中并在循环中运行代码。

这样的事情:

Loop, read, %A_ScriptDir%\Login.txt ; in username{Tab}Password{NewLine} format
{
    RecordNumber:=A_Index
    Loop, parse, A_LoopReadLine, %A_Tab% ; uses tab to separate items
    {
        Array_%RecordNumber%_%A_Index% := A_LoopField
    }
}
MaxRecords:=RecordNumber

Loop, %MaxRecords% 
{
        acc1:=Array_%A_Index%_1
        pw1:=Array_%A_Index%_2
        Run your code here
}
Return

添加更多{Tab}个分隔的项目,例如文本文件的唯一按钮位置自动存储在数组中,如Array_%A_Index% 3,Array %A_Index%_4等,可以在循环代码中使用。

或者如果你想用 Ctrl + Alt +1, Ctrl + Alt +2启动它等等,为每个热键定义acc1和pw1并运行代码。

;Autologin #1.
Return

^!1::
acc1=UserName
pw1=passwd
GoSub, MyScript
Return

^!2::
acc1=UserName2
pw1=passwd2
GoSub, MyScript
Return


MyScript:
ImageSearch,ExistUser_X,ExistUser_Y,0,0,A_ScreenWidth,A_ScreenHeight,%A_TEMP%\ExistUser.bmp
If !ErrorLevel
{
    Click,%ExistUser_X%,%ExistUser_Y%
    ImageSearch,Login_X,Login_Y,0,0,A_ScreenWidth,A_ScreenHeight,%A_TEMP%\Login.bmp
    Click,%Login_X%,%Login_Y%
    If !ErrorLevel
        Send,%acc1%{Tab}%pw1%{Enter}
    Else
        MsgBox,The login page is not visible.
    Return
}
Else If ErrorLevel=1
{
    ImageSearch,Login_X,Login_Y,0,0,A_ScreenWidth,A_ScreenHeight,%A_TEMP%\Login.bmp
    Click,%Login_X%,%Login_Y%
    If !ErrorLevel
        Send,%acc1%{Tab}%pw1%{Enter}
    Else
    MsgBox,The login page is not visible.
    Return
}
Else
MsgBox,The login page is not visible.
Return