Поиск в чате

KostetYoY

Новичок
Автор темы
7
0
Версия MoonLoader
.026-beta
Ух, я даже не знаю как объяснить, вообще не могу понять эту ситуацию. И так, мне надо что то то вроде автоматической выдачи наказаний на lua. Необходимо что бы со значений массива искало в чате похожие значение и при нажатии на клавишу выводило в строку ввода в чат.
warn = {'mute', 'jail', 'sethp', 'unmute', 'unjail', 'ban', 'warn', 'skick', 'unwarn', 'skin', 'offwarn', 'spawn', 'agun', 'offban', 'offjail'}
Админ строка выглядит так: '[02:40:45] [A] Nick_Name [44]: /jail 66 66 text' это есть в чат-логе самп, но при этом, возможны случаи другого шаблона, допустим /setskin 33 33 или же /offban Nick_Name 33 33 text.
Есть АХК которое работает так, но хотелось бы увидеть в lua, перечитал сегодня все о Функциях работы со строками, но так и не дошло, мне бы подсказочку на распознавание)
АХК - Автоматическая выдача наказаний:
#IfWinActive GTA:SA:MP
#SingleInstance Force
#NoEnv
ListLines Off
SetBatchLines -1

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

Words = (mute|jail|sethp|unmute|unjail|ban|warn|skick|unwarn|skin|offwarn|spawn|agun|offban|offjail)

F2::
FileRead, Str, %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
StringReplace, Str, Str, `r`n, `n, 1
StringReplace, Str, Str, `r, `n, 1

RegExMatch("`n" Str "`n", "i).*\n\[\d+:\d+:\d+]\s*\[A].*?\[.*?]:\s*(/`*" Words "\s.*?)\n", Match)
ToolTip % Clipboard := Match1
FileAppend,%Match1%`n,logachat.ini
SendMessage, 0x50,, 0x4190419,, A
Sleep 150
SendInput,{F6}%match1% {space}
clipboard =
ToolTip
FileDelete,%A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt
Return
 

CaJlaT

Овощ
Модератор
2,805
2,607
P.s: это готовый скрипт
Lua:
local samp = require "samp.events"
local words = {'mute', 'jail', 'sethp', 'unmute', 'unjail', 'ban', 'warn', 'skick', 'unwarn', 'skin', 'offwarn', 'spawn', 'agun', 'offban', 'offjail'}
function main()
    wait(-1)
end
function samp.onServerMessage(color, text)
    if text:find('%[A%] .+ %[%d+%]: .+') then
        for _, v in pairs(words) do
            if text:find(v) then
                local form = text:match('%[A%] .+ %[%d+%]: (.+)')
                sampSendChat(form)
            end
        end
    end
end
 

KostetYoY

Новичок
Автор темы
7
0
P.s: это готовый скрипт
Lua:
local samp = require "samp.events"
local words = {'mute', 'jail', 'sethp', 'unmute', 'unjail', 'ban', 'warn', 'skick', 'unwarn', 'skin', 'offwarn', 'spawn', 'agun', 'offban', 'offjail'}
function main()
    wait(-1)
end
function samp.onServerMessage(color, text)
    if text:find('%[A%] .+ %[%d+%]: .+') then
        for _, v in pairs(words) do
            if text:find(v) then
                local form = text:match('%[A%] .+ %[%d+%]: (.+)')
                sampSendChat(form)
            end
        end
    end
end
Удаляет почему то из чата сообщение, тоесть не вижу кто просит
 

CaJlaT

Овощ
Модератор
2,805
2,607
Удаляет почему то из чата сообщение, тоесть не вижу кто просит
Lua:
local samp = require "samp.events"
local words = {'mute', 'jail', 'sethp', 'unmute', 'unjail', 'ban', 'warn', 'skick', 'unwarn', 'skin', 'offwarn', 'spawn', 'agun', 'offban', 'offjail'}
function main()
    wait(-1)
end
function samp.onServerMessage(color, text)
    if text:find('%[A%] .+ %[%d+%]: .+') then
        lua_thread.create(function()
            wait(0)
            for _, v in pairs(words) do
                if text:find(v) then
                    local form = text:match('%[A%] .+ %[%d+%]: (.+)')
                    sampSendChat(form)
                end
            end
        end)
    end
end
 

KostetYoY

Новичок
Автор темы
7
0
Lua:
local samp = require "samp.events"
local words = {'mute', 'jail', 'sethp', 'unmute', 'unjail', 'ban', 'warn', 'skick', 'unwarn', 'skin', 'offwarn', 'spawn', 'agun', 'offban', 'offjail'}
function main()
    wait(-1)
end
function samp.onServerMessage(color, text)
    if text:find('%[A%] .+ %[%d+%]: .+') then
        lua_thread.create(function()
            wait(0)
            for _, v in pairs(words) do
                if text:find(v) then
                    local form = text:match('%[A%] .+ %[%d+%]: (.+)')
                    sampSendChat(form)
                end
            end
        end)
    end
end
Хахахах, у Админа ник Kurban_Royale и я за ним каждое его сообщение в Админ чат повторяю, как можно решить данный вопрос не забанив данного администратора?) 🤣
Все из-за приставки ban
 

CaJlaT

Овощ
Модератор
2,805
2,607
Хахахах, у Админа ник Kurban_Royale и я за ним каждое его сообщение в Админ чат повторяю, как можно решить данный вопрос не забанив данного администратора?) 🤣
Все из-за приставки ban
мой просчёт, так будет разумнее

Lua:
local samp = require "samp.events"
local words = {'mute', 'jail', 'sethp', 'unmute', 'unjail', 'ban', 'warn', 'skick', 'unwarn', 'skin', 'offwarn', 'spawn', 'agun', 'offban', 'offjail'}
function main()
    wait(-1)
end
function samp.onServerMessage(color, text)
    if text:find('%[A%] .+ %[%d+%]: .+') then
        lua_thread.create(function()
            wait(0)
            local mess = text:match('%[A%] .+ %[%d+%]: (.+)')
            for _, v in pairs(words) do
                if mess:find(v) then
                    sampSendChat(mess)
                end
            end
        end)
    end
end