Конвертация цвета

Barrington

Участник
Автор темы
55
34
Пытаюсь адаптировать данный скрипт под желаемый сервер, но не могу понять каким образом автор узнавал цвет того или иного клиста. Может кто-то пролить свет на сей секретный процесс?)

Lua:
script_name('CheckOnline')
script_authors('checkdasound', 'imring')
script_version('5.0')

local clists = {
    -- Advance RP
    {
        0xFF009900, -- grove.
        0xFFCC00FF, -- ballas.
        0xFFFFCD00, -- vagos.
        0xFF6666FF, -- rifa.
        0xFF00CCFF, -- aztec.
        0xFF993366, -- lcn.
        0xFFBB0000, -- yakuza.
        0xFF007575, -- russian mafia.
        0x00222222, -- masked.
        0x11FFFFFF, -- bomj.
    },
    -- Samp RP
    {
        0xAA09A400, -- grove.
        0xAAC515FF, -- ballas.
        0xAAFFDE24, -- vagos.
        0xAA2EA07B, -- rifa.
        0xAA0DEDFF, -- aztec.
        0xAAF4B800, -- lcn.
        0xAAFF0606, -- yakuza.
        0xAAB8B6B6, -- russian mafia.
        0xAA383838, -- masked.
        0x00FFFFFF, -- bomj.
    },
    -- Pears Project
    {
        0xAA00CC00, -- grove.
        0xAA9900CC, -- ballas.
        0xAAFFCC33, -- vagos.
        0xAA00FFFF, -- aztecas.
        0xAACCCC00, -- lcn.
        0xAA990000, -- yakuza.
        0xAA333333, -- russian mafia.
        0xAA663300, -- arabian mafia.
        0xAA003366, -- triada mafia.
        0x00FFFFFF, -- hitmans.
        0x20FFFFFF -- bomj.
    },
    -- Arizona RP
    {
        0x99009327, -- grove.
        0x99CC00CC, -- ballas.
        0x996666FF, -- rifa.
        0x99D1DB1C, -- vagos.
        0x9900FFE2, -- aztecas.
        0x80993366, -- lcn.
        0x80298CB7, -- russian mafia.
        0x80960202, -- yakuza.
        0x80BA541D, -- warlock.
        0x807F6464, -- night wolfs.
        0x1665E5E, -- masked.
        0x15FDFCFC -- bomj.
    },
    -- Diamond RP
    {
        0xAA009900, -- grove.
        0xAACC00FF, -- ballas.
        0xAAFBD400, -- vagos.
        0xAA6666FF, -- rifa.
        0xAA1060AC, -- aztec.
        0xAA9EFF4F, -- mexican mafia.
        0xAAFF0000, -- yakuza.
        0xFF5C1ACC, -- columbian mafia
        0x7A7667, -- masked.
        0x11FFFFFF, -- bomj.
    },
    -- Evolve RP
    {
        0xAA009F00, -- grove.
        0xFFB313E7, -- ballas.
        0xFFFFDE24, -- vagos.
        0xFF2A9170, -- rifa.
        0xC801FCFF, -- aztec.
        0xFFDDA701, -- lcn.
        0xAAFF0000, -- yakuza.
        0xFF114D71, -- russian mafia.
        0xFF333333, -- masked.
        0x00FFFFFF, -- bomj.
    }
}

local texts = {
    -- advance rp
    'Grove: {$CLR}$CNT {FFFFFF}| Ballas: {$CLR}$CNT {FFFFFF}| Vagos: {$CLR}$CNT {FFFFFF}| Rifa: {$CLR}$CNT {FFFFFF}| Aztecas: {$CLR}$CNT\nLCN: {$CLR}$CNT {FFFFFF}| Yakuza: {$CLR}$CNT {FFFFFF}| Russian Mafia: {$CLR}$CNT\nMasked: {$CLR}$CNT {FFFFFF}| Bomj: {$CLR}$CNT',
    -- samp rp
    'Grove: {$CLR}$CNT {FFFFFF}| Ballas: {$CLR}$CNT {FFFFFF}| Vagos: {$CLR}$CNT {FFFFFF}| Rifa: {$CLR}$CNT {FFFFFF}| Aztecas: {$CLR}$CNT\nLCN: {$CLR}$CNT {FFFFFF}| Yakuza: {$CLR}$CNT {FFFFFF}| Russian Mafia: {$CLR}$CNT\nMasked: {$CLR}$CNT {FFFFFF}| Bomj: {$CLR}$CNT',
    -- pears project
    'Grove: {$CLR}$CNT {FFFFFF}| Ballas: {$CLR}$CNT {FFFFFF}| Vagos: {$CLR}$CNT {FFFFFF}| Aztecas: {$CLR}$CNT {FFFFFF}\nLCN: {$CLR}$CNT {FFFFFF}| Yakuza: {$CLR}$CNT {FFFFFF}| Russian Mafia: {$CLR}$CNT {FFFFFF}| Arabian Mafia: {$CLR}$CNT\nTriada Mafia: {$CLR}$CNT {FFFFFF}| Hitmans: {$CLR}$CNT {FFFFFF}| Bomj: {$CLR}$CNT',
    -- arizona rp
    'Grove: {$CLR}$CNT {FFFFFF}| Ballas: {$CLR}$CNT {FFFFFF}| Rifa: {$CLR}$CNT {FFFFFF}| Vagos: {$CLR}$CNT {FFFFFF}| Aztecas: {$CLR}$CNT {FFFFFF}\nLCN: {$CLR}$CNT {FFFFFF}| Russian Mafia: {$CLR}$CNT {FFFFFF}| Yakuza: {$CLR}$CNT {FFFFFF}| Warlock MC: {$CLR}$CNT {FFFFFF}\nNight Wolfs: {$CLR}$CNT {FFFFFF}| Masked: {$CLR}$CNT {FFFFFF}| Bomj: {$CLR}$CNT',
    -- diamond rp
    'Grove: {$CLR}$CNT {FFFFFF}| Ballas: {$CLR}$CNT {FFFFFF}| Vagos: {$CLR}$CNT {FFFFFF}| Rifa: {$CLR}$CNT {FFFFFF}| Aztecas: {$CLR}$CNT\nMexican Mafia: {$CLR}$CNT {FFFFFF}| Yakuza: {$CLR}$CNT {FFFFFF}| Columbian Mafia: {$CLR}$CNT\nMasked: {$CLR}$CNT {FFFFFF}| Bomj: {$CLR}$CNT',
    -- evolve rp
    'Grove: {$CLR}$CNT {FFFFFF}| Ballas: {$CLR}$CNT {FFFFFF}| Vagos: {$CLR}$CNT {FFFFFF}| Rifa: {$CLR}$CNT {FFFFFF}| Aztecas: {$CLR}$CNT\nLCN: {$CLR}$CNT {FFFFFF}| Yakuza: {$CLR}$CNT {FFFFFF}| Russian Mafia: {$CLR}$CNT\nMasked: {$CLR}$CNT {FFFFFF}| Bomj: {$CLR}$CNT'
}

function main()
    while not isSampAvailable() do wait(0) end
    while sampGetGamestate() ~= 3 do wait(0) end
    current_server = getCurrentServer(sampGetCurrentServerName())
    assert(current_server, 'Server not found.')
    sampRegisterChatCommand('cho', function()
        local text = texts[current_server]
        for i = 1, #clists[current_server] do
            local online = 0
            for l = 0, 1004 do
                if sampIsPlayerConnected(l) then
                    if sampGetPlayerColor(l) == clists[current_server][i] then online = online + 1 end
                end
            end
            text = text:gsub('$CLR', ('%06X'):format(bit.band(clists[current_server][i], 0xFFFFFF)), 1)
            text = text:gsub('$CNT', online, 1)
        end
        for w in text:gmatch('[^\r\n]+') do sampAddChatMessage(w, -1)end
    end)
    wait(-1)
end

function getCurrentServer(name)
    if name:find('Advance RolePlay') then return 1
    elseif name:find('Samp%-Rp') then return 2
    elseif name:find('Pears Project') then return 3
    elseif name:find('Arizona Role Play') then return 4
    elseif name:find('Diamond Role Play') then return 5
    elseif name:find('Evolve%-Rp') then return 6 end
end
 

Barrington

Участник
Автор темы
55
34
Lua:
print((sampGetPlayerColor(id)):format("%06X"))
Такой вопрос, а куда оно выводится?) Ибо судя по описанию print с вики, оно выводит текст в moonloader.log, но там не обнаруживаю вроде как ничего.
 

AnWu

Известный
Всефорумный модератор
4,777
5,400
Такой вопрос, а куда оно выводится?) Ибо судя по описанию print с вики, оно выводит текст в moonloader.log, но там не обнаруживаю вроде как ничего.
так ты замени id на нужный тебе ид и проверяй
 

AnWu

Известный
Всефорумный модератор
4,777
5,400
а как сделать, чтобы не abgr был а обычный hex цвет
ABGR это и есть формат hex цвета, A - Альфа (99) B - Синий (00) G - зеленый (CC) R - красный (CC).
Чтобы убрать альфу, прозрачность, и получить чистый RGB цвет нужно использовать функции фипа из полезных сниппетов.
Lua:
print(("%06X"):format(bit.band(sampGetPlayerColor(id), 0xFFFFFF)))


Разве не ARGB?
В случае с цветом ника только входящий цвет RGBA, т.е. setPlayerColor принимает RGBA, а вот getPlayerColor в SF возвращает ABGR формат
 
  • Нравится
Реакции: Petr_Sergeevich