local ev = require 'lib.samp.events' -- Таблица соответствия звуков (транслит -> кириллица) local translit_map = { ["shch"] = "щ", ["sh"] = "ш", ["ch"] = "ч", ["yo"] = "ё", ["ya"] = "я", ["yu"] = "ю", ["zh"] = "ж", ["a"] = "а", ["b"] = "б", ["v"] = "в", ["g"] = "г", ["d"] = "д", ["e"] = "е", ["z"] = "з", ["i"] = "и", ["j"] = "й", ["k"] = "к", ["l"] = "л", ["m"] = "м", ["n"] = "н", ["o"] = "о", ["p"] = "п", ["r"] = "р", ["s"] = "с", ["t"] = "т", ["u"] = "у", ["f"] = "ф", ["h"] = "х", ["c"] = "ц", ["y"] = "ы", ["'"] = "ь", ["ee"] = "и" } function ev.onSendChat(message) -- Если сообщение начинается с / (команда), не трогаем его if message:sub(1, 1) == "/" then return {message} end local new_msg = message:lower() -- Сначала заменяем сложные сочетания (sh, ch и т.д.) for k, v in pairs({["shch"]="щ", ["sh"]="ш", ["ch"]="ч", ["yo"]="ё", ["ya"]="я", ["yu"]="ю", ["zh"]="ж"}) do new_msg = new_msg:gsub(k, v) end -- Затем заменяем одиночные буквы for k, v in pairs(translit_map) do -- Чтобы не заменять уже замененное, проверяем длину ключа if #k == 1 then new_msg = new_msg:gsub(k, v) end end return {new_msg} end