Регулярки

recxvery

Участник
Автор темы
90
27
Версия MoonLoader
.026-beta
Здарова, скажите плиз, как мне хукнуть определенный текст с регулярками и чтобы был ответ на это в sampSendChat. Просто я сам пробовал что-то не получилось, ибо как год не пробовал скрипты писать

[Информация] Игрок Nick_Name[ID: id] отблагодарил вас (+1 ADMIN COIN)

[Информация], (+1 ADMIN COIN) - вроде ffff00 (желтый) цвет, остальное (белый) ffffff
У самого не получилось, возможно, я забыл там return в конце бахнуть либо уже не помню. Еще я де то видел что можно экранизировать текст со цветом {......}, так шо кто шарит хелпаните плиз, там вроде скрипт в немного строк
 
Последнее редактирование:
Решение
Немного дополню сообщение выше. В связи с тем, что sampSendChat внутри onServerMessage скроет сообщение от сервера(в котором и производится поиск idшника) из чата - лучше использовать задержку, но без потока её не получится заюзать, поэтому предлагаю вот такое дополнение.
Lua:
local pm_thanks_thread = lua_thread.create_suspended(function(id)
  wait(100)
  sampSendChat("/pm " .. id .. " Спасибо за /thanks!")
end)

function sampev.onServerMessage(color, text)
    local id = text:gsub('%{%x+%}', ''):match('%[Информация%] Игрок %S+%[ID: (%d+)%] отблагодарил вас %(%+1 ADMIN COIN%)')
    if id then
        pm_thanks_thread:run(id)
    end
end

Fott

Простреленный
3,436
2,281
Lua:
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
    if text:find('%[Информация%] Игрок %w+_%w+%[ID: %d+%] отблагодарил вас %(%+1 ADMIN COIN%)') then
        local id = text:match('%[Информация%] Игрок %w+_%w+%[ID: (%d+)%] отблагодарил вас %(%+1 ADMIN COIN%)')
        sampSendChat('/pm '..id..' Спасибо за /thanks!')
    end
end
Lua:
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
    local id = text:match('%[Информация%] Игрок .+%[ID: (%d+)%] отблагодарил вас %(%+1 ADMIN COIN%)')
    if id then sampSendChat('/pm '..id..' Спасибо за /thanks!')end
end
 
  • Нравится
Реакции: minxty

recxvery

Участник
Автор темы
90
27
Lua:
local sampev = require 'lib.samp.events'

function sampev.onServerMessage(color, text)
    local id = text:match('%[Информация%] Игрок .+%[ID: (%d+)%] отблагодарил вас %(%+1 ADMIN COIN%)')
    if id then sampSendChat('/pm '..id..' Спасибо за /thanks!')end
end
чет не робит, там еще после пма 0 или 1 нужно, вроде попробовал но ничо
 

Andrinall

Известный
684
533
Немного дополню сообщение выше. В связи с тем, что sampSendChat внутри onServerMessage скроет сообщение от сервера(в котором и производится поиск idшника) из чата - лучше использовать задержку, но без потока её не получится заюзать, поэтому предлагаю вот такое дополнение.
Lua:
local pm_thanks_thread = lua_thread.create_suspended(function(id)
  wait(100)
  sampSendChat("/pm " .. id .. " Спасибо за /thanks!")
end)

function sampev.onServerMessage(color, text)
    local id = text:gsub('%{%x+%}', ''):match('%[Информация%] Игрок %S+%[ID: (%d+)%] отблагодарил вас %(%+1 ADMIN COIN%)')
    if id then
        pm_thanks_thread:run(id)
    end
end
 
Последнее редактирование:
  • Грустно
Реакции: qdIbp

recxvery

Участник
Автор темы
90
27
Вот строчка из чат лога:

[14:50:33] {FF0000}»{FFFF00} [Информация] {ffffff}Игрок Nick_Name[ID: 777] отблагодарил вас {FFFF00}(+1 ADMIN COIN)

Если че стрелочка в начале это от арз тулса типо за кем я реконю
Щас проверю то что выше

Немного дополню сообщение выше. В связи с тем, что sampSendChat внутри onServerMessage скроет сообщение от сервера(в котором и производится поиск idшника) из чата - лучше использовать задержку, но без потока её не получится заюзать, поэтому предлагаю вот такое дополнение.
Lua:
local pm_thanks_thread = lua_thread.create_suspended(function(id)
  wait(100)
  sampSendChat("/pm " .. id .. " Спасибо за /thanks!")
end)

function sampev.onServerMessage(color, text)
    local id = string.match(string.gsub(text, '%{%x+%}', ''), '%[Информация%] Игрок %S+%[ID: (%d+)%] отблагодарил вас %(%+1 ADMIN COIN%)')
    if id then
        pm_thanks_thread:run(id)
    end
end
ne rabotaet (

upd работает, чуть переделал код
 
Последнее редактирование:
  • Злость
Реакции: Andrinall и qdIbp