function msgcontains(msg, what)
msg = msg:lower()
-- Should be replaced by a more complete parser
if type(what) == "string" and string.find(what, "|", 1, true) ~= nil then
what = what:explode("|")
end
-- Check recursively if what is a table
if type(what) == "table" then
for _, v in ipairs(what) do
if msgcontains(msg, v) then
return true
end
end
return false
end
what = string.gsub(what, "[%%%^%$%(%)%.%[%]%*%+%-%?]", function(s) return "%" .. s end)
return string.match(msg, what) ~= nil
end
Эта функция используется на RPG-сервере, в основном я пытаюсь соответствовать тому, что говорит игрок.
например; если msgcontains(msg, "привет"), то
msg = сообщение, которое отправил игрок
Тем не менее, он соответствует чему-то вроде «yesimstupidпривет», он действительно не должен соответствовать, потому что «привет» — это не одно слово, есть идеи, что я могу сделать? Т_Т
return string.match(' '..msg..' ', '%W'..what..'%W') ~= nil
- person Egor Skriptunoff   schedule 18.07.2015