Тема: /dell
/dell
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
/dell
Может из этой темы что поможет
http://forum.script-coding.com/viewtopic.php?id=10742
Drusik Ссылки оформляются тэгом.
Читать всё время весь файл это зло. Насчёт нового текста в логе после последней проверки содержимого, там тоже нет решения.
или же уже готовый код то я буду очень благодарен!
#SingleInstance Force
SetKeyDelay, 300
PathLog = полный путь к файлу лога без кавычек
File := FileOpen(PathLog, "r"), File.Pos := File.Length
Loop {
Sleep 300
If ((NewText := File.Read()) = "")
Continue
If NewText contains Банковский чек,Аккаунт успешно сохранён
Send {Enter 4}
File.Pos := File.Length
}
Вот ты написал типа "Читать всё время весь файл это зло." а в том коде что ты мне скинул, там типа не все время читает этот файл?
Я вот просто скопировал этот код, вставил в AHC файл, указал путь к чатлогу в следующем формате- C:\Users\Данил\Documents\GTA San Andreas User Files\SAMP\chatlog.txt
И теперь у меня выглядит весь код вот так-
#SingleInstance Force
PathLog := A_ScriptFullPath ; C:\Users\Данил\Documents\GTA San Andreas User Files\SAMP\chatlog.txt
File := FileOpen(PathLog, "r"), File.Pos := 0
Loop {
Sleep 300
If ((NewText := File.Read()) = "")
Continue
If NewText contains Аккаунт успешно сохранён
SendInput {Enter 4}
File.Pos := File.Length
}
Зашел я в игру, прописал строку "Аккаунт успешно сохранён" в чате, но интер не нажался. В чем же может быть проблема?
Попытался указать путь к файлу в ковычках, теперь в общем то ничего не изменилось, только вот когда открываешь сам AHC файл, т.е. 2 раза кликаешь по нему, как будто нажимается автоматически интер несколько раз, потому что кликаешь по этому AHC 2 раза, а открывается он в трэе раз 5, а в первый раз как отрыл его, вообще сам чатлог открылся...
Вот ты написал типа "Читать всё время весь файл это зло." а в том коде что ты мне скинул, там типа не все время читает этот файл?
Читает конечно, но не весь файл, а только то, что появилось после последней проверки.
Как скрипт то выглядит теперь?
#SingleInstance Force
PathLog := A_ScriptFullPath ; "C:\Users\Данил\Documents\GTA San Andreas User Files\SAMP\chatlog.txt"
File := FileOpen(PathLog, "r"), File.Pos := 0
Loop {
Sleep 300
If ((NewText := File.Read()) = "")
Continue
If NewText contains Аккаунт успешно сохранён
SendInput {Enter 4}
File.Pos := File.Length
}
И код тэгом оформи.
Как то все очень странно работает, обнаружил только что что когда сам AHC активируешь он тупо постоянно жмет интер до какого то момента, не пойму в чем причина, корректной работы пока что и близко нету...
PathLog := A_ScriptFullPath ; "C:\Users\Данил\Documents\GTA San Andreas User Files\SAMP\chatlog.txt"
PathLog := "C:\Users\Данил\Documents\GTA San Andreas User Files\SAMP\chatlog.txt"
Переделал код, теперь выглядит так-
#SingleInstance Force
PathLog := "C:\Users\Данил\Documents\GTA San Andreas User Files\SAMP\chatlog.txt"
File := FileOpen(PathLog, "r"), File.Pos := 0
Loop {
Sleep 300
If ((NewText := File.Read()) = "")
Continue
If NewText contains "Аккаунт успешно сохранён"
SendInput {Enter 4}
File.Pos := File.Length
}
Изменений в работе никаких нет, при открытии файла тупо постоянно жмется пробел до какого то момента, в чем же причина? Хочешь могу его залить на файлообменник сам попробуешь открыть его?...
Давай.
Ну это, если я туплю там, не ругайся, я в АХК вообще профан, ничего практически не понимаю.
If NewText contains "Аккаунт успешно сохранён"
А тут на кой кавычки появились?
Это я эксперементировал, я уже удалил, просто поставил попробовать.
А зачем мне сам скрипт? Лог ведь нужен.
А что толку от лога? Это просто текстовый документ в котором выводиться все что пишется в чате игры, какой толк от того что я тебе скину текстовый документ с информацией из моего чата? Ну вот он- http://rghost.ru/private/7QtjvrNcK/a2d1 … 826b015607
И кстати, вот это меня смущает
If ((NewText := File.Read()) = "")
Continue
тут ничего нет лишнего или ничего вставлять не нужно?
И это, может быть ты написал просто код для того что бы скрипт нажимал enter на фоне компьютера, т.е. не в игре, а как то типа в фоновом режиме или не знаю как правильно сказать.
Иначе почему может не нажиматься в игре интер? ведь путь задан верно, текст на который скрипт должен срабатывать указан верно, единственный вариант тогда что что то не так с кодом.
Это:
File := FileOpen(PathLog, "r"), File.Pos := 0
ещё лучше заменить на:
File := FileOpen(PathLog, "r"), File.Pos := File.Length
чтоб при старте не срабатывало.
А что толку от лога?
Ну значит есть толк, раз спрашиваю.
Не знаю что можно сделать не так, у меня всё работает.
код для того что бы скрипт нажимал enter на фоне компьютера,
Нажатия посылаются в активное окно.
Такс, сейчас случайно наткнулся на суть проблемы короче.
В чатлоге строки пишутся в таком формате-
[04:08:10] - Привет (Daniel_Malossi) [3]
Так выглядит в чатлоге строка когда я в чате напишу "Привет", скрипт фильтрует не просто определенное слово или что то еще, он сканирует как бы полностью строки, и ищет именно что бы была строка чисто "Ваш аккаунт успешно сохранён", если будет вот так-
[04:08:10] - Ваш аккаунт успешно сохранён (Daniel_Malossi) [3]
, а оно так и будет, то он не сработает.
Я решил написать вот в этой строке
If NewText contains
вот это
[04:08:10] - б (Daniel_Malossi) [3]
с указанием времени, т.е.
[04:08:10]
на несколько секунд вперед, и когда подошло время которое я указал в скрипте, я написал в чате букву "б" что бы получилась в чатлоге чистая надпись
[04:08:10] - б (Daniel_Malossi) [3]
и аллилуя, скрипт сработал!
Так, ну теперь что нужно что бы он сканировал не полностью строки, а именно все части строки, на любые совпадения?
и ищет именно что бы была строка чисто "Ваш аккаунт успешно сохранён", если будет вот так-
[04:08:10] - Ваш аккаунт успешно сохранён (Daniel_Malossi) [3], а оно так и будет, то он не сработает.
Именно так и должен сработать.
У меня то всё гуд.
сканировал не полностью строки, а именно все части строки, на любые совпадения?
Он так и делает, приведи ещё раз код.
Обнаружил еще одну проблему, в игре есть некоторая задержка между открытиями диалоговых окон, т.е. мне нужно что бы скрипт нажимал 4 раза enter с небольшой задержкой, а он нажимает либо 1 раз либо 4 но на столько быстро что успевает открыться только одно окно, а пока оно открывается все остальные нажатия производятся в это время.
У тебя AutoHotkey, Unicodе?
#SingleInstance Force
PathLog := "C:\Users\Данил\Documents\GTA San Andreas User Files\SAMP\chatlog.txt"
File := FileOpen(PathLog, "r"), File.Pos := File.Length
Loop {
Sleep 300
If ((NewText := File.Read()) = "")
Continue
If NewText contains [04:18:40] - а (Daniel_Malossi) [3]
SendInput {Enter 4}
File.Pos := File.Length
}
У тебя AutoHotkey, Unicodе?
Это как понять, или где узнать?
В папке с AutoHotkey запусти Installer.ahk, если не Unicodе, то переустанови на Unicodе.
нужно что бы скрипт нажимал 4 раза enter с небольшой задержкой
#SingleInstance Force
SetKeyDelay, 25
Такс, понял почему у тебя работает, а у меня нет, я так понял, он сканирует первые строки, если спереди перед "Ваш аккаунт успешно сохранён" будет стоять к примеру "-" и будет типа "-Ваш аккаунт...." то скрипт уже не сработает, и если будет стоять какой либо другой знак то будет тоже самое.
Дак вот, у меня включена команда /timestamp которая выводит время в игру, т.е. слева от каждой строчки показывает время во сколько эта строчка была отправлена в чате...
У тебя как я понял эта команда не включена, вот оно и работает.
Ну в общем то с этим разобрались, теперь бы настроить что бы нажимал enter c некоторой задержкой, примерно в 300 миллисекунд...
#SingleInstance Force SetKeyDelay, 25 PathLog := "C:\Users\Данил\Documents\GTA San Andreas User Files\SAMP\chatlog.txt" File := FileOpen(PathLog, "r"), File.Pos := File.Length Loop { Sleep 300 If ((NewText := File.Read()) = "") Continue If NewText contains [04:18:40] - а (Daniel_Malossi) [3] Send {Enter 4} File.Pos := File.Length }
Код правильный.
Такс, понял почему у тебя работает, а у меня нет
А если проверить?
NewText = [03:44:59] -Аккаунт успешно сохранён (Daniel_Malossi) [3]
If NewText contains Аккаунт успешно сохранён
MsgBox есть
Я то проверил, у меня уже все работает, но вот осталась единственная проблема в том что enter жмет только один раз как будто, или же как я говорю жмет все 4 раза на столько быстро что не успевает диалог открыться следующий.
Вот эту строку вставил
#SingleInstance Force
SetKeyDelay, 25
, ничего не изменилось, для чего она? пробовал там вместо 25 ставить и 200 и 1000, ничего не меняется...
Да, забыл, оно на SendInput недействует. Замени SendInput на Send.
Дак вот, у меня включена команда /timestamp которая выводит время в игру, т.е. слева от каждой строчки показывает время во сколько эта строчка была отправлена в чате...
У меня и игры нет. И нет, оно никак не влияет.
AutoHotkey обнови, по ссылке в моей подписи.
Ура, на Send заменил, заработало
Спасибо большое за помощь!
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться