Дата: Понедельник, 28.09.2015, 16:35 | Сообщение # 1
Советник
Сообщений: 629
Статус: Offline
Данный код проверяет чатлог на опр. фразу, после нахождения этой фразы, он отсчитывает время, далее выводит сообщение о том, что вы снова можете подать гос.новость. Нужно немного другое. К примеру, в чатлоге появляется фраза "Гос.", запускается таймер ( по окончанию которого выводиться фраза "Вы снова можете подать гос.новости") , но при появлении еще одной такой-же фразы , скрипт сразу пишет "Вы снова можете подать гос.новости". Не знаю как это фиксануть. Вообщем нужно сделать так: Если таймер ведет отсчет, и появляется еще одна фраза ( которая запустила таймер ), то таймер идет заново ( обнуляется ) , отсчитывая указанное время, и только тогда , когда время выходит, и в чатлоге не появилось ни одной строчки "Гос." ( за все время ) , скрипт выводил фейк-текст , что "Вы снова можете подать гос.новость".
Код
#IfWinActive GTA:SA:MP
!1::
global path_chatlog := A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt" ; указываем путь к чатлогу через переменную SetTimer, FOX, 1000 ; Включение таймера.
FOX: Gui, submit, no hide text_search := "Гос." ; Текст который будем искать FileRead, text_chatlog, %path_chatlog% ; Читаем чатлог if text_chatlog contains %text_search% ; Если чатлог содержит стройчку "Гос."
{ SetTimer, FOX, off ; Отключаем таймер FileDelete, %path_chatlog% ; Удаляем чатлог, чтобы не сработало дважды на один и тот же текст Sleep, %timer%000 ; Ждем заданное кол-во секунд. ; SetTimer, FOX, on ; Включаем таймер Text := "Вы снова можете подать гос.новость" ; Выводит фейк текст в чат. Addchatmessage(text) }
Return
Заранее спасибо за помощь. Мои AHК скрипты | Темы:
Дата: Понедельник, 28.09.2015, 22:08 | Сообщение # 2
Бывалый
Сообщений: 422
Статус: Offline
С твоим кодом время будет отсчитываться от первогого "гос."а в чатлоге.. Позже помогу, сейчас занят..
Код за 3 минуты. Тестил с .txt файлом, все работает. Код без пояснений снизу.
Код
CL = %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt NeededTime = 5000 ; время, которое должно пройти с последних гос.новостей, мс
FileDelete, %CL% ; удаляем файл, чтобы скрипт реагировал только на новые гос.новости SetTimer, CheckGnews, 1000 ; таймер для проверки появившихся новостей, он не офается! exit
CheckGnews: FileRead, File, %CL% ; считываем чатлог If RegExMatch(File, "`[[0-9:]+`]Гос.новости:") ; если в чатлоге будет найдена строка с гос.новостями, то идем дальше (данный шаблон может работать криво!!! Сам переделаешь) { FileDelete, %CL% ; удаляем чатлог, чтобы скрипт не сработал на одни и те же новости TimePassed := "0" ; Это наш таймер, обнуляется с появлением новых новостей. SetTimer, Notification, Off ; Данная строка выключит старый таймер, если отсчет уже был запущен, но появилась новоя строка (как и прошлая строка) SetTimer, Notification, 1010 ; запуск нового таймера } exit ; конец потока
Notification: TimePassed += 1000 ; Переменная, где хранится время, прошедшее с запуска таймера If (TimePassed >= NeededTime) ; если прошеднее время больше или равно нужному нам временю { SetTimer, Notification, Off ; офаем таймер оповещения MsgBox, NEEDED TIME ; тут нужные тебе действия } exit
Чистый код
Код
CL = chatlog.txt ;%A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt NeededTime = 5000
Добавлено (29.09.2015, 13:49) --------------------------------------------- Demy, Тестил в сампе, ( Вместо гос.новостей, поставил Чатлог ) , скрипт удаляет чатлог, далее ничего не происходит. Ждал 5 сек и тд..
Хреново ты поставил. Напиши в игре в чат "чатлог" (или другое слово) и в chatlog.txt найди эту строчку и скинь сюда, именно строку AutoReporter / http://cheat-master.ru/forum/150-486717-1 Finder / http://cheat-master.ru/forum/160-497245-1 DLQ Binder / http://cheat-master.ru/forum/150-594163-1
У ТЕБЯ ЕСТЬ ИДЕЯ ДЛЯ ПРОГРАММЫ, НО САМ ТЫ НЕ МОЖЕШЬ НАПИСАТЬ КОД? ПИШИ МНЕ
Замени.. Для гос.новостей нужно будет писать другой шаблон ("`[[0-9:]+`] - Чатлог"), пиши, если сам не осилишь AutoReporter / http://cheat-master.ru/forum/150-486717-1 Finder / http://cheat-master.ru/forum/160-497245-1 DLQ Binder / http://cheat-master.ru/forum/150-594163-1
У ТЕБЯ ЕСТЬ ИДЕЯ ДЛЯ ПРОГРАММЫ, НО САМ ТЫ НЕ МОЖЕШЬ НАПИСАТЬ КОД? ПИШИ МНЕ
Сообщение отредактировал Demy - Вторник, 29.09.2015, 18:15
Полностью то, что ты хочешь, чтоб писалось в чат, скинь мне. Еще обязательно пример гос.новостей из чатлога AutoReporter / http://cheat-master.ru/forum/150-486717-1 Finder / http://cheat-master.ru/forum/160-497245-1 DLQ Binder / http://cheat-master.ru/forum/150-594163-1
У ТЕБЯ ЕСТЬ ИДЕЯ ДЛЯ ПРОГРАММЫ, НО САМ ТЫ НЕ МОЖЕШЬ НАПИСАТЬ КОД? ПИШИ МНЕ
Notification: TimePassed += 1000 If (TimePassed >= NeededTime) { SetTimer, Notification, Off ;Теперь будет срабатывать на гос. новости, но UDF подключи в начале!; и напишешь то, что тебе нужно, вместо этой строчке. } exit
AutoReporter / http://cheat-master.ru/forum/150-486717-1 Finder / http://cheat-master.ru/forum/160-497245-1 DLQ Binder / http://cheat-master.ru/forum/150-594163-1
У ТЕБЯ ЕСТЬ ИДЕЯ ДЛЯ ПРОГРАММЫ, НО САМ ТЫ НЕ МОЖЕШЬ НАПИСАТЬ КОД? ПИШИ МНЕ