Поиск в чате

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

07.11.2024 14:55
Модератор
2,833
2,669
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

07.11.2024 14:55
Модератор
2,833
2,669
Удаляет почему то из чата сообщение, тоесть не вижу кто просит
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

07.11.2024 14:55
Модератор
2,833
2,669
Хахахах, у Админа ник 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