Помогите создать автоответчик для хелперов

Статус
В этой теме нельзя размещать новые ответы.

Iliyaseskhatov

Новичок
Автор темы
15
0
Нужно автоответчик с базой данных

ChatLog
[timestamp] {af4d4e}[R] <Вопрос> Name_Name[99]: BlastHack топ сервер?

и там с базой данных искал этот ответ и ответил автоматом помогите делать такой скрипт
 

Вложения

  • bandicam 2018-12-19 21-21-06-598.jpg
    bandicam 2018-12-19 21-21-06-598.jpg
    20.3 KB · Просмотры: 467

Smer4

Известный
425
51
Это код, если в чате найдется сообщение и оно будет схоже с сообщением из массива(В этом случае он является БД) то идет ответ, более подробно распиши что тебе требуется сделать.
AutoHotKey:
clear(){
    FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    FileAppend, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
}
#Persistent
#Include samp.ahk
base := []
base[1] := "Blasthack"
base[2] := "CM"
base[3] := "Samp RP"
max = 3 ; Укзываем сколько элементов в массиве
i = 1
Loop{
    FileRead, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    IfInString, read, % base[i]
    {
        SendChat("Какой-либо элемент массива совпал с сообщением в чате! Это ответ!")
        clear()
    }
    i++
    if(i == max + 1)
    {
        i = 1
        clear()
    }
    Sleep, 10
}
 
Последнее редактирование:
  • Нравится
Реакции: Iliyaseskhatov

Smer4

Известный
425
51

Smer4

Известный
425
51
Спасибо но не отвечают ) что делать? прости если отнимаю время
Что ты ищешь в чате?
Если что регистр букв учитывается.
Cделал пару поправок в коде, на скорую руку сделал скрипт, забыл пару пробелов, теперь должен работать.

Сomplete ver.(1)
AutoHotKey:
clear(){
    FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    FileAppend, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
}
#Persistent
#Include samp.ahk
base := []
base[1] := "Blasthack"
base[2] := "CM"
base[3] := "Samp RP"
max = 3 ; Укзываем сколько элементов в массиве
i = 1
Loop{
    FileRead, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    IfInString, read, % base[i]
    {
        SendChat("Какой-либо элемент массива совпал с сообщением в чате! Это ответ!")
        clear()
    }
    i++
    if(i == max + 1)
    {
        i = 1
        clear()
    }
    Sleep, 10
}
 

Kvisk

Известный
212
223
Не знаю, надо ли оно здесь.. Пытался сделать что-то свой такое, вышла не известная ошибка и я забил..
может кто возьмёт и доработает..

AutoHotKey:
F12::
act1:
FileRead, chatlog, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
StringSplit, LineArr, chatlog, `n
number := LineArr0 - 1
loop, 5
{
    RegExMatch(LineArr%number%, "Тут фильтр", info)
    ; MsgBox, % "Вопрос: " info3 " Id: " info2 " Время: " info1
    if (info1 <> "") and (info1 <> %temp%)
        goto act2
    number --
}
goto act1
act2:
temp := info1
addChatMessage("{ffffff}Вопрос: " info3)
goto act1
return

Тут мы постоянно смотрим 5 последних строк чата, и распознаём вопрос. После записываем время, вопрос и id того кто задавал вопрос в переменные.
вот RegExMatch под твой сервер:
AutoHotKey:
RegExMatch(LineArr%number%, "\[(.*?)\] {[A-z0-9]+}\[R\] <Вопрос> [A-z_]+\[(.*?)\][^/] (.*)", info)

info1 = Время вопроса "timestamp"
info2 = id того кто задал вопрос "99"
info3 = Вопрос "BlastHack топ сервер?"
 
Последнее редактирование:
  • Нравится
Реакции: Iliyaseskhatov

Iliyaseskhatov

Новичок
Автор темы
15
0
Что ты ищешь в чате?
Если что регистр букв учитывается.
Cделал пару поправок в коде, на скорую руку сделал скрипт, забыл пару пробелов, теперь должен работать.

Сomplete ver.(1)
AutoHotKey:
clear(){
    FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    FileAppend, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
}
#Persistent
#Include samp.ahk
base := []
base[1] := "Blasthack"
base[2] := "CM"
base[3] := "Samp RP"
max = 3 ; Укзываем сколько элементов в массиве
i = 1
Loop{
    FileRead, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    IfInString, read, % base[i]
    {
        SendChat("Какой-либо элемент массива совпал с сообщением в чате! Это ответ!")
        clear()
    }
    i++
    if(i == max + 1)
    {
        i = 1
        clear()
    }
    Sleep, 10
}
хм не понял как далее делать ответы на вопроосы?
Продолжения как делать та)
 

Smer4

Известный
425
51
хм не понял как далее делать ответы на вопроосы?
Продолжения как делать та)
Видишь массив "base[1,2,3] = "Тут твой вопрос", например "Как дела?", или еще какой либо вопрос, ответ 1 на все вопросы если что, он прописан в функции
"SendChat("тут ответ на вопрос из base")" - например.
Короче в base[] прописаны вопросы
AutoHotKey:
base[1] := "Blasthack"
base[2] := "CM"
base[3] := "Samp RP"
Если одно из этих слов будет найдено в чате то идет ответ из функции SendChat на этом пример это -
AutoHotKey:
SendChat("Какой-либо элемент массива совпал с сообщением в чате! Это ответ!")
То-есть текст между " " это и есть ответ на вопрос.
 

Iliyaseskhatov

Новичок
Автор темы
15
0
Видишь массив "base[1,2,3] = "Тут твой вопрос", например "Как дела?", или еще какой либо вопрос, ответ 1 на все вопросы если что, он прописан в функции
"SendChat("тут ответ на вопрос из base")" - например.
Короче в base[] прописаны вопросы
AutoHotKey:
base[1] := "Blasthack"
base[2] := "CM"
base[3] := "Samp RP"
Если одно из этих слов будет найдено в чате то идет ответ из функции SendChat на этом пример это -
AutoHotKey:
SendChat("Какой-либо элемент массива совпал с сообщением в чате! Это ответ!")
То-есть текст между " " это и есть ответ на вопрос.
ну это я знаю вот например Base 1 ответ уже есть на base 2 как делать ? и на Base 3 и так далее
 

Smer4

Известный
425
51
ну это я знаю вот например Base 1 ответ уже есть на base 2 как делать ? и на Base 3 и так далее
На все base один ответ, сейчас попробую сделать что бы на каждый base был свой ответ.

ну это я знаю вот например Base 1 ответ уже есть на base 2 как делать ? и на Base 3 и так далее
AutoHotKey:
clear(){
    FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    FileAppend, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
}

#Persistent
#Include samp.ahk
base := []
base[1] := "Blasthack" ; Вопрос 1
base[2] := "CM" ; Вопрос 2
base[3] := "Samp RP" ; Вопрос 3
Send := []
Send[1] := "Форум" ; Ответ 1
Send[2] := "Ф.Р...М" ; Ответ 2
Send[3] := "Role play server" ; Ответ 3
max = 3 ; Укзываем сколько элементов в массиве
i = 1
Loop{
    FileRead, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    IfInString, read, % base[i]
    {
        SendChat(Send[i])
        clear()
    }
    i++
    if(i == max + 1)
    {
        i = 1
        clear()
    }
    Sleep, 10
}
base[1] := "2+2"
Send[1] := "4"
Думаю по этой формуле понятно, base - вопрос, send - ответ.
 
  • Нравится
Реакции: Iliyaseskhatov

Iliyaseskhatov

Новичок
Автор темы
15
0
На все base один ответ, сейчас попробую сделать что бы на каждый base был свой ответ.


AutoHotKey:
clear(){
    FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    FileAppend, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
}

#Persistent
#Include samp.ahk
base := []
base[1] := "Blasthack" ; Вопрос 1
base[2] := "CM" ; Вопрос 2
base[3] := "Samp RP" ; Вопрос 3
Send := []
Send[1] := "Форум" ; Ответ 1
Send[2] := "Ф.Р...М" ; Ответ 2
Send[3] := "Role play server" ; Ответ 3
max = 3 ; Укзываем сколько элементов в массиве
i = 1
Loop{
    FileRead, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    IfInString, read, % base[i]
    {
        SendChat(Send[i])
        clear()
    }
    i++
    if(i == max + 1)
    {
        i = 1
        clear()
    }
    Sleep, 10
}
base[1] := "2+2"
Send[1] := "4"
Думаю по этой формуле понятно, base - вопрос, send - ответ.
а так можно не SendChat(Send) а SendInput?
Спасибо заработал
 

Smer4

Известный
425
51
а так можно не SendChat(Send) а SendInput?
Спасибо заработал
Можно sendinput.
AutoHotKey:
clear(){
    FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    FileAppend, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
}

#Persistent
#Include samp.ahk
base := []
base[1] := "Blasthack" ; Вопрос 1
base[2] := "CM" ; Вопрос 2
base[3] := "Samp RP" ; Вопрос 3
Send := []
Send[1] := "Форум" ; Ответ 1
Send[2] := "Ф.Р...М" ; Ответ 2
Send[3] := "Role play server" ; Ответ 3
max = 3 ; Укзываем сколько элементов в массиве
i = 1
Loop{
    FileRead, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    IfInString, read, % base[i]
    {
        SendInput,{f6} % send[i]
        clear()
    }
    i++
    if(i == max + 1)
    {
        i = 1
        clear()
    }
    Sleep, 10
}
 

Iliyaseskhatov

Новичок
Автор темы
15
0
Можно sendinput.
AutoHotKey:
clear(){
    FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    FileAppend, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
}

#Persistent
#Include samp.ahk
base := []
base[1] := "Blasthack" ; Вопрос 1
base[2] := "CM" ; Вопрос 2
base[3] := "Samp RP" ; Вопрос 3
Send := []
Send[1] := "Форум" ; Ответ 1
Send[2] := "Ф.Р...М" ; Ответ 2
Send[3] := "Role play server" ; Ответ 3
max = 3 ; Укзываем сколько элементов в массиве
i = 1
Loop{
    FileRead, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    IfInString, read, % base[i]
    {
        SendInput,{f6} % send[i]
        clear()
    }
    i++
    if(i == max + 1)
    {
        i = 1
        clear()
    }
    Sleep, 10
}
ошибка 22 строка )блин думаю я тебе уже надоел (
 

Smer4

Известный
425
51
ошибка 22 строка )блин думаю я тебе уже надоел (
AutoHotKey:
clear(){
    FileDelete, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    FileAppend, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
}

#Persistent
#Include samp.ahk
base := []
base[1] := "Blasthack" ; Вопрос 1
base[2] := "CM" ; Вопрос 2
base[3] := "Samp RP" ; Вопрос 3
Send := []
Send[1] := "Форум" ; Ответ 1
Send[2] := "Ф.Р...М" ; Ответ 2
Send[3] := "Role play server" ; Ответ 3
max = 3 ; Укзываем сколько элементов в массиве
i = 1
Loop{
    FileRead, read, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
    IfInString, read, % base[i]
    {
        SendInput,{f6}
    SendInput, % send[i]
        clear()
    }
    i++
    if(i == max + 1)
    {
        i = 1
        clear()
    }
    Sleep, 10
}
 
  • Нравится
Реакции: Iliyaseskhatov
Статус
В этой теме нельзя размещать новые ответы.