unfinished capture

Fasmin

Участник
Автор темы
175
6
Версия MoonLoader
.026-beta
код:
local text = {
    ")",
    "))",
    "(",
    "((",
    "xD"
}

function ev.onSendChat(msg)
    for i, v in ipairs(text) do
        if msg:find(v) then -- 20 строка
            sampAddChatMessage("true", -1)
        else
            sampAddChatMessage("FALSE", -1)
        end
    end
end

Выводит ошибку:
.lua:20: unfinished capture
stack traceback:
[C]: in function 'find'

Не пойму че хочет от меня :find, как исправить?
 

Fasmin

Участник
Автор темы
175
6
перед любой скобкой ставь %
код:
local text = {
    "%(",
    "%)",
    "%)%)",
    "%(%(",
    "xD"
}

function ev.onSendChat(msg)
    for i, v in ipairs(text) do
        if msg:find(v) then
            return {msg}
        else
            return {"Text " .. msg}
        end
    end
end

Ошибка пропала, но почему msg:find(v) ищет только первую позицию из массива, а остальные она не ищет, хотя если это сделать через sampAddChatMessage("true", -1), то выводит нужную, как исправить?
 
  • Грустно
Реакции: Vespan

chapo

чопа сребдс // @moujeek
Модератор
8,934
11,704
код:
local text = {
    "%(",
    "%)",
    "%)%)",
    "%(%(",
    "xD"
}

function ev.onSendChat(msg)
    for i, v in ipairs(text) do
        if msg:find(v) then
            return {msg}
        else
            return {"Text " .. msg}
        end
    end
end

Ошибка пропала, но почему msg:find(v) ищет только первую позицию из массива, а остальные она не ищет, хотя если это сделать через sampAddChatMessage("true", -1), то выводит нужную, как исправить?
потому что у тебя ретурн стоит даже если текст не найден, вот он на первой итерации и останавливается. убери else и все что идет после него в теле цикла
 
  • Нравится
Реакции: Vespan