0

我创建了这个脚本来自动登录游戏。它工作正常,但有多个帐户,(^!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。

感谢任何帮助,谢谢!

4

1 回答 1

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
于 2013-03-31T07:25:14.663 回答