Помощь по samp events

W1ll04eison

Известный
Автор темы
330
19
Версия MoonLoader
.026-beta
Когда в чате появляется данная строка:
Снимок.JPG

Ник и ид должны перекрашиваться в тот цвет, в зависимости какой /clist у человека.

В чат логе эо выглядит вот так:
[17:48:05.700] [193] Serega_Malkin {C0C0C0}Капитан [11] {6495ED}[AFK: 392]

Вот мой код:
Lua:
function events.onServerMessage(color, text)
    local IdNick, part, part1, part2 = text:match("(%[%d+%]%a+_%a+)  (%A+) ([.+])  (.+)")
        local id = IdNick:match("%[(%d+)%]%a+_%a+")
        local _, Player_Id = sampGetPlayerIdByCharHandle(PLAYER_PED)
        Player_Id = tostring(Player_Id)
            if sampIsPlayerConnected(id) or id==Player_Id then
                local clist = ("%06x"):format(bit.band(sampGetPlayerColor(id), 0xFFFFFF))
                text = "{"..clist.."}"..IdNick.."{C0C0C0}".."  "..part.." "..part1.."{6495ED}".."  "..part2
                return {color, text}
            end

end

Данный код по какой-то причине не работает, подскажите что не так
 

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,651
2,550
Lua:
function sampev.onServerMessage(color, text)
    local id = tonumber(text:match("^%[(%d+)%] .+ {C0C0C0}.+ %[%d+%]"))
    if id and sampIsPlayerConnected(id) then
        local a, r, g, b = explode_argb(sampGetPlayerColor(id))
        return { join_argb(r, g, b, a), text }
    end
end
function join_argb(a, r, g, b)
    local argb = b  -- b
    argb = bit.bor(argb, bit.lshift(g, 8))  -- g
    argb = bit.bor(argb, bit.lshift(r, 16)) -- r
    argb = bit.bor(argb, bit.lshift(a, 24)) -- a
    return argb
end
function explode_argb(argb)
    local a = bit.band(bit.rshift(argb, 24), 0xFF)
    local r = bit.band(bit.rshift(argb, 16), 0xFF)
    local g = bit.band(bit.rshift(argb, 8), 0xFF)
    local b = bit.band(argb, 0xFF)
    return a, r, g, b
end
 

W1ll04eison

Известный
Автор темы
330
19
Lua:
function sampev.onServerMessage(color, text)
    local id = tonumber(text:match("^%[(%d+)%] .+ {C0C0C0}.+ %[%d+%]"))
    if id and sampIsPlayerConnected(id) then
        local a, r, g, b = explode_argb(sampGetPlayerColor(id))
        return { join_argb(r, g, b, a), text }
    end
end
function join_argb(a, r, g, b)
    local argb = b  -- b
    argb = bit.bor(argb, bit.lshift(g, 8))  -- g
    argb = bit.bor(argb, bit.lshift(r, 16)) -- r
    argb = bit.bor(argb, bit.lshift(a, 24)) -- a
    return argb
end
function explode_argb(argb)
    local a = bit.band(bit.rshift(argb, 24), 0xFF)
    local r = bit.band(bit.rshift(argb, 16), 0xFF)
    local g = bit.band(bit.rshift(argb, 8), 0xFF)
    local b = bit.band(argb, 0xFF)
    return a, r, g, b
end
не все цвета отображаются + некоторые цвета отображаются не корректно
 
Последнее редактирование:

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,651
2,550
Lua:
function sampev.onServerMessage(color, text)
    local id = tonumber(text:match("^%[(%d+)%] .+ {C0C0C0}.+ %[%d+%]"))
    if id and (sampIsPlayerConnected(id) or id == select(1, sampGetPlayerIdByCharHandle(PLAYER_PED))) then
        local a, r, g, b = explode_argb(sampGetPlayerColor(id))
        return { join_argb(r, g, b, a), text }
    end
end
function join_argb(a, r, g, b)
    local argb = b  -- b
    argb = bit.bor(argb, bit.lshift(g, 8))  -- g
    argb = bit.bor(argb, bit.lshift(r, 16)) -- r
    argb = bit.bor(argb, bit.lshift(a, 24)) -- a
    return argb
end
function explode_argb(argb)
    local a = bit.band(bit.rshift(argb, 24), 0xFF)
    local r = bit.band(bit.rshift(argb, 16), 0xFF)
    local g = bit.band(bit.rshift(argb, 8), 0xFF)
    local b = bit.band(argb, 0xFF)
    return a, r, g, b
end
 

W1ll04eison

Известный
Автор темы
330
19
Lua:
function sampev.onServerMessage(color, text)
    local id = tonumber(text:match("^%[(%d+)%] .+ {C0C0C0}.+ %[%d+%]"))
    if id and (sampIsPlayerConnected(id) or id == select(1, sampGetPlayerIdByCharHandle(PLAYER_PED))) then
        local a, r, g, b = explode_argb(sampGetPlayerColor(id))
        return { join_argb(r, g, b, a), text }
    end
end
function join_argb(a, r, g, b)
    local argb = b  -- b
    argb = bit.bor(argb, bit.lshift(g, 8))  -- g
    argb = bit.bor(argb, bit.lshift(r, 16)) -- r
    argb = bit.bor(argb, bit.lshift(a, 24)) -- a
    return argb
end
function explode_argb(argb)
    local a = bit.band(bit.rshift(argb, 24), 0xFF)
    local r = bit.band(bit.rshift(argb, 16), 0xFF)
    local g = bit.band(bit.rshift(argb, 8), 0xFF)
    local b = bit.band(argb, 0xFF)
    return a, r, g, b
end
не, ничего не изменилось, все так же не все цвета отображаются + некоторые цвета отображаются не корректно
 

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,651
2,550

W1ll04eison

Известный
Автор темы
330
19
покажи примеры, где они отображаются некорректно
Так выше же кидал скриншот, то что у меня розовый цвет Ника, а он отображается синим.
Также такое и у других игроков, у них розовый цвет Ника, а он отображается тоже синим.