Как получить hex color с помощью функции imgui.ColorEdit3

svdsevcvsd

Участник
Автор темы
31
1
Как получить hex color с помощью функции imgui.ColorEdit3, то есть когда выбираешь нужный цвет в палитре, в переменную color, допустим записывалось значение {XXXXXX}
 

AnWu

https://t.me/anwublog
Всефорумный модератор
4,770
5,376
У меня получилось что-то типа этого:
Lua:
script_name("Example script")
local imgui = require 'imgui'
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
while true do
     wait(0)
     imgui.Process = true
  end
end
local color = imgui.ImFloat3(1.0, 1.0, 1.0)
function imgui.OnDrawFrame()
    imgui.Begin('test')
    if imgui.ColorEdit3('test', color) then
        print("{" .. (bit.tohex(imgui.ImColor(imgui.ImVec4(color.v[1], color.v[2], color.v[3], 1.0)):GetU32())):sub(3, 8) .. "}")
    end
    imgui.End()
end
но буду откровенен, я забыл как правильно преобразовывать ARGB в RGB ;c
 

svdsevcvsd

Участник
Автор темы
31
1
У меня получилось что-то типа этого:
Lua:
script_name("Example script")
local imgui = require 'imgui'
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
while true do
     wait(0)
     imgui.Process = true
  end
end
local color = imgui.ImFloat3(1.0, 1.0, 1.0)
function imgui.OnDrawFrame()
    imgui.Begin('test')
    if imgui.ColorEdit3('test', color) then
        print("{" .. (bit.tohex(imgui.ImColor(imgui.ImVec4(color.v[1], color.v[2], color.v[3], 1.0)):GetU32())):sub(3, 8) .. "}")
    end
    imgui.End()
end
но буду откровенен, я забыл как правильно преобразовывать ARGB в RGB ;c
Не работает( в консольку не выводится hex цвет
 

imring

Ride the Lightning
Всефорумный модератор
2,361
2,546
print("{" .. (bit.tohex(imgui.ImColor(imgui.ImVec4(color.v[1], color.v[2], color.v[3], 1.0)):GetU32())):sub(3, 8) .. "}")
это пиздец
Lua:
script_name("Example script")
local imgui = require 'imgui'

function main()
    while true do
        wait(0)
        imgui.Process = true
    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

local color = imgui.ImFloat3(1.0, 1.0, 1.0)

function imgui.OnDrawFrame()
    imgui.Begin('test')
    if imgui.ColorEdit3('test', color) then
        local clr = join_argb(0, color.v[1] * 255, color.v[2] * 255, color.v[3] * 255)
        print(('%06X'):format(clr))
    end
    imgui.End()
end
 

svdsevcvsd

Участник
Автор темы
31
1
это пиздец
Lua:
script_name("Example script")
local imgui = require 'imgui'

function main()
    while true do
        wait(0)
        imgui.Process = true
    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

local color = imgui.ImFloat3(1.0, 1.0, 1.0)

function imgui.OnDrawFrame()
    imgui.Begin('test')
    if imgui.ColorEdit3('test', color) then
        local clr = join_argb(0, color.v[1] * 255, color.v[2] * 255, color.v[3] * 255)
        print(('%06X'):format(clr))
    end
    imgui.End()
end
Спасибо огромное, работает. Только один нюанс, я тупой просто, в какую переменную записывается цвет? в clr ?
 

svdsevcvsd

Участник
Автор темы
31
1

imring

Ride the Lightning
Всефорумный модератор
2,361
2,546
и чо тут?
Еще вопрос есть. Когда выбираю цвет на палитре, как сделать, чтобы при нажатии кнопки Сохранить выбранный цвет отображался в чате в в виде hex, а не в консоли, я там не понял немного просто.
Lua:
script_name("Example script")
local imgui = require 'imgui'

function main()
    while true do
        wait(0)
        imgui.Process = true
    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

local color = imgui.ImFloat3(1.0, 1.0, 1.0)

function imgui.OnDrawFrame()
    imgui.Begin('test')
    imgui.ColorEdit3('test', color)
    if imgui.Button('save') then
        local clr = join_argb(0, color.v[1] * 255, color.v[2] * 255, color.v[3] * 255)
        sampAddChatMessage(('CLR: %06X | Example: {%06X}text'):format(clr, clr), -1)
    end
    imgui.End()
end
 

EclipsedFlow

Известный
Проверенный
1,044
475
1612071740114.png


Что не так в коде, не корректно работает!

Lua:
local color = new.float[3](1.0, 1.0, 1.0)



if imgui.ColorEdit3('test', color) then

                local colorHex = join_argb(0, color[1] * 255, color[2] * 255, color[3] * 255)

                sampAddChatMessage(('CLR: %06X | Example: {%06X}text'):format(colorHex, colorHex), -1)

            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

Изменял, не помогает!