Поиск текста

kultizdat.

Известный
Автор темы
131
10
Версия MoonLoader
Другое
Добрый вечер. Пытаюсь сделать логирование открытых рулеток / тайников (нужно именно знать, какая рулетка / тайник и какой стафф падает) и возникает такая проблема : Если открываю тайник ViceCity, то он записывается в таблицу один раз (как и должно), но если открываю тайник Илона Маска, то он дублируется три раза.
Совершенно точно вся загвоздка в том, что Тайник Vice City выводится в двух строках(пример под спойлером), а тайник Илона Маска в одну строку, по этому обращаюсь к гуру форума за помощью.

Заранее спасибо!

[Информация] {ffffff}Вы использовали тайник Илона Маска и получили Ларец Super Car!
Вы открыли Тайник Лос Сантоса!
[Информация] {ffffff}Получено: Ларец организации и Rare Box Yellow!
Вы открыли Тайник Vice City!
[Информация] {ffffff}Получено: Ларец организации и Rare Box Yellow!
[Информация] {ffffff}Вы использовали сундук с рулетками и получили платиновую рулетку!
[Информация] {ffffff}Вы использовали платиновый сундук с рулетками и получили бронзовую рулетку!
[15:15:09] Вы открыли Тайник Vice City!
[15:15:09] [Информация] {ffffff}Получено: Ларец организации и Rare Box Yellow!

Lua:
function sampev.onServerMessage(color, text)
 
    local pattern = {
 
        {hook = "%[Информация%] {ffffff}Вы использовали тайник Илона Маска", subhook = " и получили (.*)", key = 1},
        {hook = "%[Информация%] {ffffff}Вы использовали сундук с рулетками", subhook = " и получили (.*)", key = 2},
        {hook = "%[Информация%] {ffffff}Вы использовали платиновый сундук с рулетками", subhook = " и получили (.*)", key = 3},
        {hook = "Вы открыли Тайник Vice City!", subhook = "%[Информация%] {ffffff}Получено: (.+)", key = 4}
    }
 
    for k, v in ipairs(pattern) do
        if string.find(text, v.subhook) then
 
            local item = text:match(v.subhook)
 
            table.insert(staff_on_roulette, {item, v.key})
        end
     end
end

И еще вопрос:
есть текст из chatlog

Код:
  {079C1C}Объявление: Работает СМИ г. Лос Сантос. Ждем ваших обьявлений!. View_Sonic[448] Тел. 1919838
        {079C1C}    Отредактировал сотрудник СМИ [ LS ] : View_Sonic[448]

Как сделать так, что бы если найдена первая строка, то например, со второй бралось ник?
Ниже моя реализация, которая не работает, но по отдельности все выводит
Lua:
local patter_two = {
        {text = "{079C1C}Объявление: .*. %w+_%w+%[%d+] Тел. .*"},
        {text = "{079C1C}  Отредактировал сотрудник СМИ%s%[%s.+%s] : (%w+_%w+)%[%d+]"}
    }
    for s, z in ipairs(patter_two) do
        if string.find(text, v.text) then
       
            local item = text:match(v.text)
            sampAddChatMessage(item,-1)
        end
       
   
    end
 
Последнее редактирование: