1 (изменено: John_Science, 2015-08-31 13:08:16)

Тема: Проверка чатлога таймером на подстроки и реакция на них

Базовая информация:

Мы имеем следующие переменные:

pattern_stun := "Вы оглушили"
pattern_su := "Вы объявили"
path_chatlog := A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"
z := 1000
zzz := 1500

В начале работы программы мы включаем таймер.

SetTimer, ChatlogChecking, z

Само тело таймера находится далее в программе:

ChatlogChecking:
Loop, read, %path_chatlog%
{
ifInString, A_LoopReadLine, %pattern_stun%
{
sendChatMessage ("/do На разгрузочном поясе работника ФБР висит дубинка.")
sleep z
sendChatMessage ("/me снял увесистую дубинку с разгрузочного пояса")
sleep z
sendChatMessage ("/do Дубинка в руках работника Федерального Бюро Расследований.")
sleep z
sendChatMessage ("/me нанес оглушительный удар тяжелой дубинкой.")
sleep z
}
else
{
ifInString, A_LoopReadLine, %pattern_su%
{
sendChatMessage("/do В кармане работника Федерального Бюро Расследований Science Phone.")
sleep zzz
sendChatMessage("/me достал Science Phone из кармана")
sleep zzz
sendChatMessage("/do Science Phone в руках сотрудника F.B.I.")
sleep zzz
sendChatMessage("/me отправил запрос о изменении информации в базе данных F.B.I.")
sleep zzz
sendChatMessage("/do Запрос сотрудника Федерального Бюро Расследований был обработан.")
sleep zzz
sendChatMessage("/me убрал Science Phone в карман")
sleep zzz
}
else
{
; Другой код
}
}
}
FileDelete, %path_chatlog%
return

Помогите найти ошибку.

Полная версия исходника:

http://rghost.ru/7SwB8JYHt

Код таймера в самом конце.

2

Re: Проверка чатлога таймером на подстроки и реакция на них

А где "тело" функции "sendChatMessage()" и переменная "zzz"?

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

3

Re: Проверка чатлога таймером на подстроки и реакция на них

Alectric пишет:

А где "тело" функции "sendChatMessage()" и переменная "zzz"?

sendChatMessage тут не важна.

4 (изменено: Alectric, 2015-08-29 18:54:17)

Re: Проверка чатлога таймером на подстроки и реакция на них

Из справки:

IfInString, Haystack, %Needle%

Второй параметр принимает строку, а не выражение.

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

5 (изменено: John_Science, 2015-08-29 22:21:18)

Re: Проверка чатлога таймером на подстроки и реакция на них

Что? tmp_string это строка.

6 (изменено: Alectric, 2015-08-29 19:16:10)

Re: Проверка чатлога таймером на подстроки и реакция на них

Нет, это переменная в твоем случае, также как и "pattern_stun".

ifInString, tmp_string, %pattern_stun%

ifInString - функция;
tmp_string - первый параметр;
%pattern_stun% - второй параметр.


ЗЫ Скоро придет модератор и наругает тебя за цитирование.

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

7 (изменено: John_Science, 2015-08-29 19:53:23)

Re: Проверка чатлога таймером на подстроки и реакция на них

Спасибо, только это не помогло.

8 (изменено: Alectric, 2015-08-29 20:39:43)

Re: Проверка чатлога таймером на подстроки и реакция на них

В FileReadLine таже беда.

FileReadLine, tmp_string, %path_chatlog%, %A_Index%

А вообще, возьми в привычку проверять содержимое переменных либо в "Variables and their contents Ctrl+V", либо с помощью "tooltip" или "msgbox".

FileReadLine, tmp_string, %path_chatlog%, %A_Index%
tooltip,% path_chatlog "`n" tmp_string

И в FileDelete тоже.

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

9

Re: Проверка чатлога таймером на подстроки и реакция на них

Не помогло.

10

Re: Проверка чатлога таймером на подстроки и реакция на них

Что это за конструкция:

Loop, read, %path_chatlog%
{
FileReadLine, tmp_string, %path_chatlog%, %A_LoopReadLine%
...
}

?
В переменной A_LoopReadLine и так уже содержится очередная строка, её не нужно читать заново. Кроме того, формат команды FileReadLine неверный:

FileReadLine, OutputVar, Filename, LineNum

Там в четвёротм параметре должен быть номер строки, а у вас её текст, поэтому переменная tmp_string будет пустой.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11 (изменено: John_Science, 2015-08-30 01:28:03)

Re: Проверка чатлога таймером на подстроки и реакция на них

Большое спасибо за информацию, но эти ошибки были в старом коде. Прошу вас помочь найти ошибки в новом.
Переменная tmp_string к новому коду не относится.

12

Re: Проверка чатлога таймером на подстроки и реакция на них

А новый, это какой?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: Проверка чатлога таймером на подстроки и реакция на них

teadrinker пишет:

А новый, это какой?

В самом первом посте.

14

Re: Проверка чатлога таймером на подстроки и реакция на них

John_Science пишет:
ifInString, %A_LoopReadLine%, %pattern_stun%

В первом параметре знаки процента не нужны, это просто имя переменной.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: Проверка чатлога таймером на подстроки и реакция на них

Все еще не работает. Код обновил.

16 (изменено: Alectric, 2015-08-30 15:20:21)

Re: Проверка чатлога таймером на подстроки и реакция на них

ChatlogChecking:
Loop, read, %path_chatlog%
{
  ifInString, A_LoopReadLine, %pattern_stun%
  {
    msgbox,работает
  }
  msgbox,% "Я же говорил проверяй содержимое переменных`, если что то не работает.`nA_LoopReadLine=" A_LoopReadLine "`npattern_stun=" pattern_stun
}

В таком виде работает?

Еще, как вариант, убрать чувствительность к регистру.

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

17 (изменено: John_Science, 2015-08-30 18:07:10)

Re: Проверка чатлога таймером на подстроки и реакция на них

Parameter #2 invalid
SetTimer, ChatlogChecking , z

18

Re: Проверка чатлога таймером на подстроки и реакция на них

Закрыто. Нашел решение.
Если вы столкнулись с подобной проблемой - пишите в скайп: demenev.dmitriy2