Взаимодействие с чатом

mofee1

Участник
Автор темы
16
2
Версия MoonLoader
.026-beta
Сам текст: {FFFFFF}Nick_Nickov[123] - {1FAEE9}Полиция ЛС | Номер: 12300123{FFFFFF}
Как я попытался реализовать:

Lua:
function events.onServerMessage(color, text)
    if text:match('{FFFFFF}%a+_%a+[%d+] - {1FAEE9}%s+ | Номер: %d+{FFFFFF}') then
        name, id, org, number = text:match('{FFFFFF}(%a+_%a+)[(%d+)] - {996633}(%s+) | Номер: (%d+){FFFFFF}')
        sampAddChatMessage('Ник '.. name ..' Ид: '.. id ..' Орг: '.. org ..' Телефон: '..number, -1) -- тест переменных
    end
end

Просьба помочь с получением ника, ид, организации и номера и занесением их в переменные. В этой теме еще не настолько крут, поэтому прошу помощи.
 
Решение
[ML] (error) Script: attempt to concatenate local 'name' (a nil value), don`t crash
Накосячил с регуляркой.
Lua:
local regex = '%{FFFFFF}(%S+)%[(%d+)] %- %{.+}(.+) %| Номер%: (%d+)%{FFFFFF}'


function events.onServerMessage(color, text)
    if text:find(regex) then
        local name, id, org, number = text:match(regex)
        sampAddChatMessage('Ник '.. name ..' Ид: '.. id ..' Орг: '.. org ..' Телефон: '..number, -1) -- тест переменных
    end
end

invilso.

Известный
249
89
Вот так должно работать
Lua:
function events.onServerMessage(color, text)
    local regex = '{FFFFFF}(%S+)[(%d+)] - {.+}(.+) | Номер: (%d+){FFFFFF}'
    if text:find(regex) then
        local name, id, org, number = text:match(regex)
        sampAddChatMessage('Ник '.. name ..' Ид: '.. id ..' Орг: '.. org ..' Телефон: '..number, -1) -- тест переменных
    end
end
Изменил match на find в условии.
Изменил регулярки в обоих строках
 

mofee1

Участник
Автор темы
16
2
Вот так должно работать
Lua:
function events.onServerMessage(color, text)
    local regex = '{FFFFFF}(%S+)[(%d+)] - {.+}(.+) | Номер: (%d+){FFFFFF}'
    if text:find(regex) then
        local name, id, org, number = text:match(regex)
        sampAddChatMessage('Ник '.. name ..' Ид: '.. id ..' Орг: '.. org ..' Телефон: '..number, -1) -- тест переменных
    end
end
Изменил match на find в условии.
Изменил регулярки в обоих строках
[ML] (error) Script: attempt to concatenate local 'name' (a nil value), don`t crash
 

invilso.

Известный
249
89
[ML] (error) Script: attempt to concatenate local 'name' (a nil value), don`t crash
Накосячил с регуляркой.
Lua:
local regex = '%{FFFFFF}(%S+)%[(%d+)] %- %{.+}(.+) %| Номер%: (%d+)%{FFFFFF}'


function events.onServerMessage(color, text)
    if text:find(regex) then
        local name, id, org, number = text:match(regex)
        sampAddChatMessage('Ник '.. name ..' Ид: '.. id ..' Орг: '.. org ..' Телефон: '..number, -1) -- тест переменных
    end
end
 
  • Нравится
Реакции: paulohardy

mofee1

Участник
Автор темы
16
2
Подправил и протестиовал в игре. Работает.
Lua:
function events.onServerMessage(color, text)
    if text:find('{FFFFFF}(%S+)%[(%d+)%] %- {.+}(.+) | Номер: (%d+){FFFFFF}') then
        name, id, org, number = text:match('{FFFFFF}(%S+)%[(%d+)%] %- {.+}(.+) | Номер: (%d+){FFFFFF}')
        sampAddChatMessage("NAME: "..name.." ID: "..id.." ORG: "..org.." NUM: "..number, -1)
    end
end
 
  • Злость
Реакции: qdIbp