1 (изменено: SeaVodikendu, 2016-03-15 05:12:00)

Тема: Цикл с loop, read [SA:MP]

Здравствуйте.
Пытаюсь сделать скрипт атвореконект в SA:MPе.
Имеется код:


...
;после захода в главное меню с вводом пароля.
Loop, read, %path%chatlog.txt

 IfInString, A_LoopReadLine, Client: 0.3e ; если в чатлоге появляется данная строка

SendInput, 12345 ; вводится пароль в окне
...

Через sleep все работает, но каждый раз эта строка появляется по разному. Может через 10 секунд, а может еще дольше.
Нужно добавить цикл, который будет проверять чатлог на наличие строки после запуска игры, и когда находит (строка появляется не сразу), цикл останавливается. Далее ввод пароля.

2 (изменено: Igor|Fixes|Armando, 2016-03-16 23:21:04)

Re: Цикл с loop, read [SA:MP]

SelectedFile = %A_MyDocuments%\Gta San Andreas User Files\samp\chatlog.txt(путь к chatLog'у)
Server:(название метки)
Loop, Read, %SelectedFile%(чтение chatlog'а)
{
IfInString, A_LoopReadLine, (поиск строки в которой будет текст который пишет сервер при входе)
{
Gosub, Pass(переход к метке Pass)
}
}
Goto, Server(переход к метке Server)

Pass:(название метки)
sendinput,{F6}Пароль{enter}
return

Пароль нужно вводить в фейк диалог AHK, как сделать диалог я знаю, а вот как сделать что бы тот текст который был в него введен перешел в .ini(файл скрипта в котором и будет пароль) я не знаю .

3

Re: Цикл с loop, read [SA:MP]

Igor|Fixes|Armando
Этот скрипт после запуска бесконечно вводит пароль...
Видимо скобки неправильно расставлены.

4 (изменено: SeaVodikendu, 2016-03-17 02:40:12)

Re: Цикл с loop, read [SA:MP]

Я наверное еще сложнее задачу сейчас приведу...
Нужно вводить пароль не после считывание строки в чатолге, а когда появляется окно с авторизацией в главном меню.
Т.е. считывать "Авторизация"
http://cs630124.vk.me/v630124273/1bf25/ZULPJUYaZFU.jpg

5

Re: Цикл с loop, read [SA:MP]

Если мне объяснят в чем тут дело, то дальше я попробую сам разобраться:
Имея такой код, скрипт бесконечно спамит "Нет":


serv:
Loop, read, %path%chatlog.txt
   ifinstring, A_LoopReadLine, Client: 0.3e
{     
 msgbox, Есть
}
else
{     
 msgbox, Нет
goto, serv
}

Почему то не ищет слово с последней строки, хотя должен.
Но стоит убрать 2й msgbox и скрипт находит нужную строку...

Loop, read, %path%chatlog.txt
   ifinstring, A_LoopReadLine, Client: 0.3e
{     
 msgbox, Есть
}

Что не так?

6 (изменено: Alectric, 2016-03-18 07:43:45)

Re: Цикл с loop, read [SA:MP]

serv:
A=0
Loop, read, %path%chatlog.txt
   ifinstring, A_LoopReadLine, Client: 0.3e
{     
A=1
 msgbox, Есть
Break
}
If !a
msgbox, Нет
goto, serv

Пример 2

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

7 (изменено: SeaVodikendu, 2016-03-18 11:33:09)

Re: Цикл с loop, read [SA:MP]

Alectric
Спасибо. Теперь все получилось как задумывалось.
Единственное, в вашем примере были пропущены фигурные скобки, из-за которых скрипт не прерывался в не зависимости от наличия нужно строки в файле:

serv:
A=0
Loop, read, %path%chatlog.txt
   ifinstring, A_LoopReadLine, Client: 0.3e
{     
A=1
 msgbox, Есть
Break
}
If !a
{ ; - пропущенные скобки
msgbox, Нет
goto, serv
}