Тема: Ошибка при перезапуске программы
Имеется вот такой скрипт:
Start:
IfWinExist, GTA:SA:MP
{
If SelectedFile !=
{
Pattern1 := "S).*(\[\d+:\d+:\d+]) Connected to.*(\R|$)" , sPos1 := 1
Pattern2 := "S).*(\[\d+:\d+:\d+]) Server closed.*(\R|$)" , sPos2 := 1
Pattern3 := "S).*(\[\d+:\d+:\d+]) You are banned from.*(\R|$)" , sPos3 := 1
MsgBox, 64, Started, Скрипт Активен `nДля остановки используйте "STOP", 3
WinActivate GTA:SA:MP
Sleep, 2000
Goto, Started
}
else
{
MsgBox, 16, WARNING, ERROR! You must specify the path to samp.exe!, 3
return
}
}
else
{
MsgBox, 16, WARNING, GTA SAMP Не запущен!, 3
return
}
Started:
IfWinExist, GTA:SA:MP
{
Sleep, 2000
Gui, Submit, NoHide
If Check2 = 1
{
IfWinActive, GTA:SA:MP
{
LogFile = %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
FileRead, Log1, *t %LogFile%
If RegExMatch(Log1, Pattern1, Match1, sPos1)
{
Sleep, 5000
SetKeyDelay, 5, 5
Send {Enter}
Sleep, 1000
SetKeyDelay, 5, 5
Send %password1%{Enter}
Sleep, 1000
SetKeyDelay, 5, 5
Send %password2%{Enter}
Sleep, 1000
}
sPos1 := StrLen(Log1), (sPos1 = 0) ? sPos1 := 1
Sleep 10
}
else
{
}
}
else
{
}
Goto, Check3
}
else
{
Goto, Check3
}
Check3:
IfWinExist, GTA:SA:MP
{
Sleep, 2000
Gui, Submit, NoHide
If Check3 = 1
{
LogFile = %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
FileRead, Log2, *t %LogFile%
If RegExMatch(Log2, Pattern2, Match2, sPos2)
{
Sleep, 5000
WinClose, GTA:SA:MP, ,10000
Sleep, 3000
Run, %SelectedFile% 176.32.39.199
Sleep, 5000
IfWinExist, Application Error
{
WinActivate Application Error
Sleep, 500
Send {Enter}
Sleep, 500
}
Sleep, 55000
}
sPos2 := StrLen(Log2), (sPos2 = 0) ? sPos2 := 1
Sleep 10
}
else
{
}
Goto, Check1
}
else
{
Goto, Check1
}
Check1:
IfWinExist, GTA:SA:MP
{
Sleep, 2000
Gui, Submit, NoHide
If Check1 = 1
{
LogFile = %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
FileRead, Log3, *t %LogFile%
If RegExMatch(Log3, Pattern3, Match3, sPos3)
{
Sleep, 5000
WinClose, GTA:SA:MP, ,10000
Sleep, 3000
Run, %SelectedFile% 176.32.39.199
Sleep, 5000
IfWinExist, Application Error
{
WinActivate Application Error
Sleep, 500
Send {Enter}
Sleep, 500
}
Sleep, 55000
}
sPos3 := StrLen(Log3), (sPos3 = 0) ? sPos3 := 1
Sleep 10
}
else
{
}
Goto, Check4
}
else
{
Goto, Check4
}
Check4:
IfWinExist, GTA:SA:MP
{
Sleep, 2000
Gui, Submit, NoHide
If Check4 = 1
{
SetTitleMatchMode 2
If WinExist("SA:MP An exception occured") or WinExist("GTA:SA:MP: gta_sa.exe")
{
Sleep, 3000
SetTitleMatchMode 2
WinClose, SA:MP An exception occured, ,5000
WinClose, GTA:SA:MP: gta_sa.exe, ,5000
Sleep, 2000
WinClose, GTA:SA:MP, ,10000
Sleep, 3000
Run, %SelectedFile% 176.32.39.199
Sleep, 5000
IfWinExist, Application Error
{
WinActivate Application Error
Sleep, 500
Send {Enter}
Sleep, 500
}
Sleep, 55000
}
}
else
{
}
Goto, Started
}
else
{
Goto, Started
}
Смысл в том, чтобы при нахождение опр. строки в файле, он выполнял нужные действия. Простыми словами - переподключался к серверу. При запуске он работает отлично, всё идет по циклу при нахождении строки "Connected to..." вводит комбинации, при появлении новой строки тоже. Но стоит ему найти другие указанные строки и перезапустить игру, как начинается "магия". Всё так же работает, но полностью игнорируется метка "Started", хотя цикл продолжается. И если появляется (напр.) "Server closed the connection" он все так же выполняет свои действия.
Так вот. Почему при перезапуске перестает действовать начало скрипта?
====Добавлено, спустя минут 10
Так же, надо заметить, что при перезапуске файл chatlog.txt очищается.
Весь этот скрипт работает правильно, если реализовать его через "физический" запуск samp.exe (имитировать нажатия), а вот при Run, происходит вышеизложенное.