как можно ловить сообщение из чата написанное капсом

Я кавказец

Известный
Автор темы
440
106
Версия MoonLoader
.026-beta
как можно ловить сообщение из чата написанное капсом (большими буквами)
 

meowprd

Тот самый Котовский
Проверенный
1,280
712
если я правильно тебя понял, что тебе нужна проверка капсит ли игрок в строке, то вот.
если как-то не так понял, то ты можешь выцепить кусок кода отсюда, в принципе
(хотя я уверен, что моя реализация не самая лучшая. буду рад, если тут будет реализация лучше)
Lua:
function split(str, delim, plain)
    local tokens, pos, plain = {}, 1, not (plain == false) --[[ delimiter is plain text by default ]]
    repeat
        local npos, epos = string.find(str, delim, pos, plain)
        table.insert(tokens, string.sub(str, pos, npos and npos - 1))
        pos = epos and epos + 1
    until not pos
    return tokens
end

local caps = "CAPS TEXT"

local check = split(caps, " ") -- делим строку по словам
local founded = 0 -- переменная для дальнейшей проверки
for k, v in pairs(check) do -- проходимся по нашему массиву
    if v:find("%u+") then -- если находим в слове хотя бы одну заглавную букву
        if (v:match("%u+")):len() > 3 then -- если в слове есть минимум 3 заглавные буквы
            founded = founded + 1 -- плюсуем к нашему счетчику
        end
    end
end
if founded >= 2 then print("caps!") end -- контрольная проверка, если счетчик больше 2, то считаем что в строке использован капс
 

Я кавказец

Известный
Автор темы
440
106
если я правильно тебя понял, что тебе нужна проверка капсит ли игрок в строке, то вот.
если как-то не так понял, то ты можешь выцепить кусок кода отсюда, в принципе
(хотя я уверен, что моя реализация не самая лучшая. буду рад, если тут будет реализация лучше)
Lua:
function split(str, delim, plain)
    local tokens, pos, plain = {}, 1, not (plain == false) --[[ delimiter is plain text by default ]]
    repeat
        local npos, epos = string.find(str, delim, pos, plain)
        table.insert(tokens, string.sub(str, pos, npos and npos - 1))
        pos = epos and epos + 1
    until not pos
    return tokens
end

local caps = "CAPS TEXT"

local check = split(caps, " ") -- делим строку по словам
local founded = 0 -- переменная для дальнейшей проверки
for k, v in pairs(check) do -- проходимся по нашему массиву
    if v:find("%u+") then -- если находим в слове хотя бы одну заглавную букву
        if (v:match("%u+")):len() > 3 then -- если в слове есть минимум 3 заглавные буквы
            founded = founded + 1 -- плюсуем к нашему счетчику
        end
    end
end
if founded >= 2 then print("caps!") end -- контрольная проверка, если счетчик больше 2, то считаем что в строке использован капс
он к сожалению русский не обрабатывает