Вопросы по AHK-скриптингу

#Rin

Известный
Всефорумный модератор
1,214
1,036
[00:13:11] Roy_Saint[23]: {FFCD00}23 cheat
Можно например так:
Будет работать если ваша регулярка правильная, а также сообщение в репорт будет последним в чате.
AutoHotKey:
F4::
GetChatLine(0, p)
If RegExMatch(p, "\[(.*)\](.*)\[(\d{1,3})\]: \{FFCD00\}.*?(\d+).*", m)
{
     SendChat("/ans " m3 " Слежу")
}
return
 

GooDY

Известный
9
0
Можно например так:
Будет работать если ваша регулярка правильная, а также сообщение в репорт будет последним в чате.
AutoHotKey:
F4::
GetChatLine(0, p)
If RegExMatch(p, "\[(.*)\](.*)\[(\d{1,3})\]: \{FFCD00\}.*?(\d+).*", m)
{
     SendChat("/ans " m3 " Слежу")
}
return
Не работает.
 

kawa operand

перерывпятьминут
602
333
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
никогда не писал на языке для биндеров, но в структурах последняя строка не 0 а 99
 
  • Нравится
Реакции: AnWu

#Rin

Известный
Всефорумный модератор
1,214
1,036
никогда не писал на языке для биндеров, но в структурах последняя строка не 0 а 99
Все зависит как реализуют код функции.
Вот сама функция:
AutoHotKey:
GetChatLine(Line, ByRef Output, timestamp=0, color=0){
chatindex := 0
FileRead, file, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
loop, Parse, file, `n, `r
{
If(A_LoopField)
chatindex := A_Index
}
loop, Parse, file, `n, `r
{
If(A_Index = chatindex - line){
output := A_LoopField
break
}
}
file := ""
If(!timestamp)
output := RegExReplace(output, "U)^\[\d{2}:\d{2}:\d{2}\]")
If(!color)
output := RegExReplace(output, "Ui)\{[a-f0-9]{6}\}")
return
}
Можете сами все проверить - все работает.
 
Последнее редактирование:

#Rin

Известный
Всефорумный модератор
1,214
1,036
А теперь можно сделать, чтобы не важно было, где сообщение.
Лень делать что-то сложное. Так что наверно и это сойдет:
AutoHotKey:
Loop
{
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
If RegExMatch(Chatlog, "\[(.*)\](.*)\[(\d{1,3})\]: \{FFCD00\}.*?(\d+).*", m)
{
ids := m3
FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
}
}
F4::
SendChat("/ans " ids " Слежу")
return

Не проверял, но вроде должен выводить ид самого последнего найденного репорта.
 
Последнее редактирование:
  • Нравится
Реакции: GooDY

GooDY

Известный
9
0
Лень делать что-то сложное. Так что наверно и это сойдет:
AutoHotKey:
Loop
{
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
If RegExMatch(Chatlog, "\[(.*)\](.*)\[(\d{1,3})\]: \{FFCD00\}.*?(\d+).*", m)
{
ids := m3
FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
}
}
F4::
SendChat("/ans " ids " Слежу")
return

Не проверял, но вроде должен выводить ид самого последнего найденного репорта.
Все работает, спасибо! Если есть способ без удаления лога, напишите пожалуйста.
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
н
Можно без удаления чат лога, но тогда будут ложные срабатывания на сообщение. (т.е. случайно можешь написать одному и тому же человеку.
Код:
Loop
{
FileRead, Chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\Chatlog.txt
If RegExMatch(Chatlog, "\[(.*)\](.*)\[(\d{1,3})\]: \{FFCD00\}.*?(\d+).*", m)
{
ids := m3
}
}
F4::
SendChat("/ans "ids " Слежу")
return
Вы знаете что RegExMatch остановиться на первой попавшей строке подходящая шаблону?
Без удаления чатлога не будет работать.
А вообще до удаления можно копировать чатлог.
 

GooDY

Известный
9
0
Еще один момент, как можно включать/отключать блок кода?
 

ae1c2a

Известный
195
6
при использовании ахк (многократного) вылетает самп (окно просто закрывается) как пофиксить?
 

#Rin

Известный
Всефорумный модератор
1,214
1,036
при использовании ахк (многократного) вылетает самп (окно просто закрывается) как пофиксить?
Многие скрипты AHK для игры, пользуются памятью, и при несовпадении адресов может произойти и краш.
SAMP какой версии R1 или R2. Лучше пользоваться R1, для нее большинство скриптов написаны.
 

ae1c2a

Известный
195
6
Многие скрипты AHK для игры, пользуются памятью, и при несовпадении адресов может произойти и краш.
SAMP какой версии R1 или R2. Лучше пользоваться R1, для нее большинство скриптов написаны.
даунгрейдил до R1 не помогло