Исходник Гайд AHK RegExMatch | SAMP | Пишем свой авто-ответчик

NOOBPAndA

Участник
101
12
С помощью RegExMath можно как то найти строку из чат лога по шаблону?
 

kreyN

Известный
78
13
В общем, суть такая: сделал я себе авто-ответчик, RegExMatch правильный: фото. Но почему-то он реагирует на сообщения.
Вот код:
AutoHotKey:
Loop {
    lastline := getChatLineEx(0)
    if(RegExMatch(lastline, "(.*): .* \| (.*): .* \(тел. (.*)\)", out)) {
        addChatMessageEx("66cc33", "" out3 "")
        Break
    }
}

!u::
active := !active
addChatMessageEx("cc9900", "{FFFFFF}Автоответчик " (active ? "{66cc33}включен":"{db1a1a}выключен"))
Return

НО! Вот что у меня в игре: фото. Т.е. он просто не работает
 

Cod

Участник
117
15
В общем, суть такая: сделал я себе авто-ответчик, RegExMatch правильный: фото. Но почему-то он реагирует на сообщения.
Вот код:
AutoHotKey:
Loop {
    lastline := getChatLineEx(0)
    if(RegExMatch(lastline, "(.*): .* \| (.*): .* \(тел. (.*)\)", out)) {
        addChatMessageEx("66cc33", "" out3 "")
        Break
    }
}

!u::
active := !active
addChatMessageEx("cc9900", "{FFFFFF}Автоответчик " (active ? "{66cc33}включен":"{db1a1a}выключен"))
Return

НО! Вот что у меня в игре: фото. Т.е. он просто не работает
А зачем ты сохраняешь Отправитель и SMS?
Проверь работать ли вообще у тебя lastline если нет читай чатлог :D
 

kreyN

Известный
78
13
А зачем ты сохраняешь Отправитель и SMS?
Проверь работать ли вообще у тебя lastline если нет читай чатлог :D
Это проверка для того, чтобы не было ложных срабатываний.
Я уже все сделал.
Не работало только из-за того,что не было #MaxThreadsPerHotkey 2
 

BugHunter

Известный
91
13
Код:
\Q[\E(.*):(.*):(.*)\Q]\E (.*)_(.*)\Q[\E(.*)\Q]\E: (.*)
поменял бы как минимум на
Код:
\Q[\E.*:.*:.*\Q]\E (.*)_(.*)\Q[\E(.*)\Q]\E: (.*)
чтобы не создавались лишние группы и у исходной переменной был правильный порядок, а не 5. 7 и 6.
AutoHotKey:
testStr = [16:24:44] Nick_Name[7]: по чём штаны?

RegExMatch(testStr, "\Q[\E.*:.*:.*\Q]\E (.*)_(.*)\Q[\E(.*)\Q]\E: (.*)", find)

MsgBox % find1
MsgBox % find2
MsgBox % find3
MsgBox % find4

;~ find1 = Nick
;~ find2 = Name
;~ find3 = 7
;~ find4 = по чём штаны?
Твоя регулярка, кстати, вообще не сработает, если у игрока будет нонРП ник
 

kreyN

Известный
78
13
Код:
\Q[\E(.*):(.*):(.*)\Q]\E (.*)_(.*)\Q[\E(.*)\Q]\E: (.*)
поменял бы как минимум на
Код:
\Q[\E.*:.*:.*\Q]\E (.*)_(.*)\Q[\E(.*)\Q]\E: (.*)
чтобы не создавались лишние группы и у исходной переменной был правильный порядок, а не 5. 7 и 6.
AutoHotKey:
testStr = [16:24:44] Nick_Name[7]: по чём штаны?

RegExMatch(testStr, "\Q[\E.*:.*:.*\Q]\E (.*)_(.*)\Q[\E(.*)\Q]\E: (.*)", find)

MsgBox % find1
MsgBox % find2
MsgBox % find3
MsgBox % find4

;~ find1 = Nick
;~ find2 = Name
;~ find3 = 7
;~ find4 = по чём штаны?
Твоя регулярка, кстати, вообще не сработает, если у игрока будет нонРП ник
Работает.
Вот мой скрипт
AutoHotKey:
anssms:
    if (isDialogOpen() == 0 && isInChat() == 0) {
        toggle := !toggle
        addChatMessageEx("cc9900", "{FFFFFF}Автоответчик " (toggle ? "{66cc33}включен":"{db1a1a}выключен"))
    }
    while (toggle)
    {
        lastlineas := getChatLineEx(0)
        if (toggle){
            RegExMatch(lastlineas, "{FF8C00}(.*): {FFFF00}(.*) {FF8C00}\| {FFFF00}(.*): (.*) \(тел. (.*)\)", Out)
            if (Out1){
            sendchat("/sms " out5 " [Автоответчик]: " anssmstext "")
            }
            sleep 1000
        }
    }
    return
return
 

BugHunter

Известный
91
13
Работает.
Вот мой скрипт
AutoHotKey:
anssms:
    if (isDialogOpen() == 0 && isInChat() == 0) {
        toggle := !toggle
        addChatMessageEx("cc9900", "{FFFFFF}Автоответчик " (toggle ? "{66cc33}включен":"{db1a1a}выключен"))
    }
    while (toggle)
    {
        lastlineas := getChatLineEx(0)
        if (toggle){
            RegExMatch(lastlineas, "{FF8C00}(.*): {FFFF00}(.*) {FF8C00}\| {FFFF00}(.*): (.*) \(тел. (.*)\)", Out)
            if (Out1){
            sendchat("/sms " out5 " [Автоответчик]: " anssmstext "")
            }
            sleep 1000
        }
    }
    return
return
Я про ту, что в первом посте. Твоя изменённая.
 

hxllstorm

Новичок
8
2
Мне нужен автоответчик смс, можешь сделать пожалуйста??? я бля тупой пиздец походу
Строка из чатлога
[01:47:32] Вы получили СМС от Nazar_Winstons[32](Тел.996669): Ку
Мне нужно, так, чтобы я нажал Альт + 1 (!1::) и у меня в чате появилось /sms 996669
Именно с этим номером я тоже могу сделать, но мне надо чтобы когда какой нибудь человек мне пишет в смс
У меня вставлялось в чат /sms и его номер
Пожалуйста !!!!!!

UP:

Я что-то сделал
Но, как я сделал у меня не правильно, если в чат отправят объяву там пишется Тел.xxxxxx
И то есть на все обьявы он будет реагировать, можешь сделать мне сам скрипт ахк как я выше описал?
Я просто вообще не понимаю как сделать с 00:00 сижу уже 4 часа почти

FileCLog:=% A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"

Numpad1::
loop
{

lastline := GetNewLine(FileCLog)

If lastline contains ел.
{
RegExMatch(lastline, "Т\Eел.(.*)\Q)", sms)
Sendinput {F6}/sms %sms2% %sms1%{ENTER}
}

}

GetNewLine(filename)
{ ;функция чтения последней строки, если файл изменен каждыее 100 мс
static old
static new
if !old
{
FileGetSize, old, %filename%
new := old
}
while old = new
{
sleep 100
FileGetSize, new, %filename%
}
old := new
Loop, read, %filename%
if A_LoopReadLine
{
last := A_LoopReadLine ;последняя строка
}
return last
}

Numpad2::
reload
 
Последнее редактирование:

kreyN

Известный
78
13
Мне нужен автоответчик смс, можешь сделать пожалуйста??? я бля тупой пиздец походу
Строка из чатлога
[01:47:32] Вы получили СМС от Nazar_Winstons[32](Тел.996669): Ку
Мне нужно, так, чтобы я нажал Альт + 1 (!1::) и у меня в чате появилось /sms 996669
Именно с этим номером я тоже могу сделать, но мне надо чтобы когда какой нибудь человек мне пишет в смс
У меня вставлялось в чат /sms и его номер
Пожалуйста !!!!!!

UP:

Я что-то сделал
Но, как я сделал у меня не правильно, если в чат отправят объяву там пишется Тел.xxxxxx
И то есть на все обьявы он будет реагировать, можешь сделать мне сам скрипт ахк как я выше описал?
Я просто вообще не понимаю как сделать с 00:00 сижу уже 4 часа почти

FileCLog:=% A_MyDocuments "\GTA San Andreas User Files\SAMP\chatlog.txt"

Numpad1::
loop
{

lastline := GetNewLine(FileCLog)

If lastline contains ел.
{
RegExMatch(lastline, "Т\Eел.(.*)\Q)", sms)
Sendinput {F6}/sms %sms2% %sms1%{ENTER}
}

}

GetNewLine(filename)
{ ;функция чтения последней строки, если файл изменен каждыее 100 мс
static old
static new
if !old
{
FileGetSize, old, %filename%
new := old
}
while old = new
{
sleep 100
FileGetSize, new, %filename%
}
old := new
Loop, read, %filename%
if A_LoopReadLine
{
last := A_LoopReadLine ;последняя строка
}
return last
}

Numpad2::
reload
возьми мой код за основу. Я его оставил выше
 

Fati

Новичок
3
1
Здравствуйте я Хочу Сделать АВТО-смс для РАдмир рп
как должен работать АХК
Мне пишет СМС в игре [22:22:22] SMS: Как Дела | Отправитель: Anton_Grand [т.888888]
я нажимаю F9 и открывается Чат /sms Номер
чтобы не работало с флудом и сам не открывало чат без нажатя f9


Это сделал тут Banip

Код:
#include samp-udf.ahk
ChatLog = C:\Users\User\Documents\RADMIR CRMP User Files\SAMP\chatlog.txt

f9::
loop
if RegExMatch(GetNewLine(ChatLog), "\[\d\d:\d\d:\d\d\] SMS: . | Отправитель: (.*)_(.*) \Q[\Eт.(.*)\Q]\E", ip)
  Sendinput,{f6}/sms %ip3%{space}

GetNewLine(filename)
{
static old
static new
if !old
{
FileGetSize, old, %filename%
new := old
}
while old = new
{
sleep 100 ;задержка
FileGetSize, new, %filename%
}
old := new
Loop, read, %filename%
if A_LoopReadLine
{
last := A_LoopReadLine
}
return last
}

return

!end::ExitApp
end::Reload
 

Darklight_Prod

Новичок
14
3
пытаюсь значит сделать отлов входящих смс и отправку их мне в телегу, но регулярка на смс не срабатывает почему то. ткните носом, что не так

Само СМС:
[20:17:08] ну ка. SMS от Matthew_Tigers [329]
И регулярка:
if RegExMatch(lastchatline, "\[(\d\d):(\d\d):(\d\d)\](.*)SMS от (.*)_(.*) \[(\d\d\d)\]", smsargs)