чат ник вывод

альтушка

Активный
Автор темы
324
30
Версия MoonLoader
.026-beta
можно ли как-то в сообщениях, в которых фигурирует мой ник, изменить цвет ника, но не переписывать каждое сообщение?
типо: "блаблабла nick_name: пошёл вон" "[KRYTOI PEDOK]: nick_name[777]: лололо".
и получается "блаблабла nick_name: пошёл вон" "[KRYTOI PEDOK]: nick_name[777]: лололо".
хелпаните плис.
пробовал делать так
if text:find() с поиском своего ника, а дальше добавлял .* и пробовал выводить, но кривая тема.
 

chapo

tg/inst: @moujeek
Всефорумный модератор
9,206
12,543
ну ваще в теории это должно сработать, но я не уверен
Lua:
---@param str string
---@param pos number
---@param startColor? string
---@return string?
function string.getColorAtPos(str, pos, startColor)
    local result, parts, charIndex = nil, { [0] = startColor or '{ffffff}' }, 0;
    for char in str:gmatch('.') do
        charIndex = charIndex + 1;
        if (char == '{') then
            local colorTag = str:sub(charIndex, charIndex + 7):match('{%x+}');
            if (colorTag) then
                parts[charIndex] = colorTag;
            end
        end
    end
    for partIndex, partColorTag in pairs(parts) do
        if (pos >= partIndex) then
            result = partColorTag:match('{(%x+)}');
        end
    end
    return result or (startColor or 'ffffff');
end


local sampev = require('lib.samp.events')

function sampev.onServerMessage(color, text)
    local name = 'Nick_Name';
    local namePos = text:find(name);
    if (namePos) then
        local color = string.getColorAtPos(text, namePos - 1);
        return {color, text:gsub(name, ('{ff0000}%s{%s}'):format(name, color))}
    end
end
 
  • Нравится
Реакции: kyrtion

альтушка

Активный
Автор темы
324
30
Lua:
local sampev = require('lib.samp.events')

function sampev.onServerMessage(color, text)
    local nick = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(1)))
    text = text:gsub(nick, '{FF0000}' .. nick .. '{FFFFFF}')
    return { color, text }
end
а как получить цвет до покраски ника? типо, до этого был 0x696969, а потом после покраски ffffff