text find

sulovy

Новичок
Автор темы
19
0
function ev.onServerMessage(color, text)
local id = select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))
local username = sampGetPlayerNickname(id)
local pattern = string.format("[ED:RP] Mogesalmebit: %s. Tqven Warmatebit Gaiaret Avtorizacia Serverze!", username)

if text:find(pattern) then
sampAddChatMessage("Works", -1)
end
end

en: in this code how can i make find pattern in chat? if text:find code doesn't work
ru: в этом коде как сделать так, чтобы в чате был найден шаблон? если код text:find не работает
 

sulovy

Новичок
Автор темы
19
0
string.match вместо find
function ev.onServerMessage(color, text)
local id = select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))
local username = sampGetPlayerNickname(id)
local pattern = string.format("[ED:RP] Mogesalmebit: %s. Tqven Warmatebit Gaiaret Avtorizacia Serverze!", username)

if string.match(text, pattern) then
sampAddChatMessage("Works", -1)
end
end

не работает
 

kyrtion

Известный
1,100
398
function ev.onServerMessage(color, text)
local id = select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))
local username = sampGetPlayerNickname(id)
local pattern = string.format("[ED:RP] Mogesalmebit: %s. Tqven Warmatebit Gaiaret Avtorizacia Serverze!", username)

if string.match(text, pattern) then
sampAddChatMessage("Works", -1)
end
end

не работает
Каждые символы ^$()%.[]*+-? имеют экранированные. Если не будешь экранировать в таком случае нужно ставить перед %

Lua:
sf = string.format

local regex = '^%[ED:RP%] Mogesalmebit: (%S-)%. Tqven Warmatebit Gaiaret Avtorizacia Serverze!$'
-- %s - spaces symbols, \t, \n, \c and etc; %S - non-spaces symbols

function ev.onServerMessage(color, text)
    if text:find(regex) then
        local pNickname = text:match(regex)
        sampAddChatMessage(sf('Found text in chat! Player nickname is %s', pNickname), -1)
        return -- stopping if found
    end
end