Помощь в декоре

$Mr.R1ch$

Активный
Автор темы
247
33
Версия SA-MP
  1. Любая
Пытался сделать функцию с навигационным меню. Вообще, задумка проста, если открыта первая вкладка, то первая кнопка которая как раз и открывает эту вкладку, например она светлее, тем самым помечая какая вкладка открыта. Если нажать на вторую кнопку, тоже самое происходит. Пытался сделать через таблицу но получилось так себе (значки и размер не поставить). Помогите сделать через функцию ниже (код вытащил из скрипта какого то, может кто знает как сделать, а то не работает)

Lua:
function colored_button_main(r, g, b)
    if tab == 'default' then
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(r / 255, g / 255, b / 255, 0.86))
        if imgui.Button(faicons('BARS') .. u8' Основное', (imgui.ImVec2(sizeX, sizeY))) then tab = 'default' end
        imgui.PopStyleColor(1)
    else
        if imgui.Button(faicons('BARS') .. u8' Основное', (imgui.ImVec2(sizeX, sizeY))) then tab = 'default' end
    end
    if tab == 'sobes' then
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(r / 255, g / 255, b / 255, 0.86))
        if imgui.Button(faicons('ID_CARD') .. u8' Собеседование', (imgui.ImVec2(sizeX, sizeY))) then tab = 'sobes' end
        imgui.PopStyleColor(1)
    else
        if imgui.Button(faicons('ID_CARD') .. u8' Собеседование', (imgui.ImVec2(sizeX, sizeY))) then tab = 'sobes' end
    end
    if tab == 'efir' then
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(r / 255, g / 255, b / 255, 0.86))
        if imgui.Button(faicons('MICROPHONE') .. u8' Эфиры', (imgui.ImVec2(sizeX, sizeY))) then tab = 'efir' end
        imgui.PopStyleColor(1)
    else
        if imgui.Button(faicons('MICROPHONE') .. u8' Эфиры', (imgui.ImVec2(sizeX, sizeY))) then tab = 'efir' end
    end
    if tab == 'settings' then
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(r / 255, g / 255, b / 255, 0.86))
        if imgui.Button(faicons('GEAR') ..u8' Настройки', (imgui.ImVec2(sizeX, sizeY))) then tab = 'settings' end
        imgui.PopStyleColor(1)
    else
        if imgui.Button(faicons('GEAR') ..u8' Настройки', (imgui.ImVec2(sizeX, sizeY))) then tab = 'settings' end
    end
    if tab == 'dopka' then
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(r / 255, g / 255, b / 255, 0.86))
        if imgui.Button(faicons('SLIDERS') .. u8' Доп. функции', (imgui.ImVec2(sizeX, sizeY))) then tab = 'dopka' end
        imgui.PopStyleColor(1)
    else
        if imgui.Button(faicons('SLIDERS') .. u8' Доп. функции', (imgui.ImVec2(sizeX, sizeY))) then tab = 'dopka' end
    end
    if tab == 'pro' then
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(r / 255, g / 255, b / 255, 0.86))
        if imgui.Button(faicons('FILE_SIGNATURE') .. u8' ПРО/ППЭ/Устав', (imgui.ImVec2(sizeX, sizeY))) then tab = 'pro' end
        imgui.PopStyleColor(1)
    else
        if imgui.Button(faicons('FILE_SIGNATURE') .. u8' ПРО/ППЭ/Устав', (imgui.ImVec2(sizeX, sizeY))) then tab = 'pro' end
    end
    if tab == 'about' then
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(r / 255, g / 255, b / 255, 0.86))
        if imgui.Button(faicons('INFO') .. u8' О скрипте', (imgui.ImVec2(sizeX, sizeY))) then tab = 'about' end
        imgui.PopStyleColor(1)
    else
        if imgui.Button(faicons('INFO') .. u8' О скрипте', (imgui.ImVec2(sizeX, sizeY))) then tab = 'about' end
    end
end
 

MLycoris

На вид оружие массового семяизвержения
Проверенный
1,993
2,181
я себе давненько функцию писал с цветной кнопкой, мб тебе пригодится
Lua:
function imgui.ColoredButton(text,hex,trans,size)
    local r,g,b = tonumber("0x"..hex:sub(1,2)), tonumber("0x"..hex:sub(3,4)), tonumber("0x"..hex:sub(5,6))
    if tonumber(trans) ~= nil and tonumber(trans) < 101 and tonumber(trans) > 0 then a = trans else a = 60 end
    imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(r/255, g/255, b/255, a/100))
    imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(r/255, g/255, b/255, a/100))
    imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(r/255, g/255, b/255, a/100))
    local button = imgui.Button(text, size)
    imgui.PopStyleColor(3)
    return button
end

пример использования
Lua:
if imgui.ColoredButton(script_state and u8'Включено' or u8'Выключено', (script_state and '32CD32' or 'F94242'), 50, imgui.ImVec2(488, 24)) then
    script_state = not script_state
end
 

$Mr.R1ch$

Активный
Автор темы
247
33
я себе давненько функцию писал с цветной кнопкой, мб тебе пригодится
Lua:
function imgui.ColoredButton(text,hex,trans,size)
    local r,g,b = tonumber("0x"..hex:sub(1,2)), tonumber("0x"..hex:sub(3,4)), tonumber("0x"..hex:sub(5,6))
    if tonumber(trans) ~= nil and tonumber(trans) < 101 and tonumber(trans) > 0 then a = trans else a = 60 end
    imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(r/255, g/255, b/255, a/100))
    imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(r/255, g/255, b/255, a/100))
    imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(r/255, g/255, b/255, a/100))
    local button = imgui.Button(text, size)
    imgui.PopStyleColor(3)
    return button
end

пример использования
Lua:
if imgui.ColoredButton(script_state and u8'Включено' or u8'Выключено', (script_state and '32CD32' or 'F94242'), 50, imgui.ImVec2(488, 24)) then
    script_state = not script_state
end
Спасибо
 
  • Нравится
Реакции: MLycoris