我已创建此脚本以自动登录游戏。它工作正常,但有多个帐户,(^!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。
感谢任何帮助,谢谢!
答案 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