меню из ultrafuck

shitcodes

Известный
Автор темы
1,428
661
Версия MoonLoader
.026-beta
как сделать имгуи меню как в ультрафаке? с вкладками через кнопки?
 
Решение
Со стилями и т.п. поиграешься сам
Lua:
-- В каком-либо месте кода
Tabs = {
    {
        title="Заголовок",
        draw=function()
            -- Отрисовываешь вкладку
            imgui.Text("Hello, World")
        end
    },
    ...
}
CurentTab = 1

-- В отрисовке Imgui, внутри окна
-- Левое меню с выбором вкладок
for k, tab in pairs(Tabs) do
    if imgui.Button(tab.title) then CurentTab = k end
end

-- Когда нужно отрисовать вкладку
Tabs[CurentTab].draw()

shitcodes

Известный
Автор темы
1,428
661
Каждый же знает, что такое ультрафак и какое там меню
Приложи скриншоты

при нажатии на одну из кнопок слева открывается другая вкладка
 

RedHolms

Известный
Проверенный
622
369
Со стилями и т.п. поиграешься сам
Lua:
-- В каком-либо месте кода
Tabs = {
    {
        title="Заголовок",
        draw=function()
            -- Отрисовываешь вкладку
            imgui.Text("Hello, World")
        end
    },
    ...
}
CurentTab = 1

-- В отрисовке Imgui, внутри окна
-- Левое меню с выбором вкладок
for k, tab in pairs(Tabs) do
    if imgui.Button(tab.title) then CurentTab = k end
end

-- Когда нужно отрисовать вкладку
Tabs[CurentTab].draw()
 

shitcodes

Известный
Автор темы
1,428
661
Со стилями и т.п. поиграешься сам
Lua:
-- В каком-либо месте кода
Tabs = {
    {
        title="Заголовок",
        draw=function()
            -- Отрисовываешь вкладку
            imgui.Text("Hello, World")
        end
    },
    ...
}
CurentTab = 1

-- В отрисовке Imgui, внутри окна
-- Левое меню с выбором вкладок
for k, tab in pairs(Tabs) do
    if imgui.Button(tab.title) then CurentTab = k end
end

-- Когда нужно отрисовать вкладку
Tabs[CurentTab].draw()
можешь пример кода сделать с несколькими вкладками и их активацией? чет не выходит, не могу понять
буду благодарен
 

RedHolms

Известный
Проверенный
622
369
можешь пример кода сделать с несколькими вкладками и их активацией? чет не выходит, не могу понять
буду благодарен
Немного в другом стиле, но структура таже
Только тут вместо Tabs - categories и вместо draw - content
Lua:
if categories[ActiveCategory] == nil then
    print('{aa0000}Error: Category isn\'t defined: {ffffff}'..ActiveCategory)
    print('{aa0000}Category was changed to default({ffffff}1{aa0000})')
    ActiveCategory = 1
end
imgui.PushStyleVarVec2(imgui.StyleVar.ButtonTextAlign, imgui.ImVec2(0.5, 0.1))
imgui.MoveCursorPos(2, 0)
for i, cat in ipairs(categories) do
    if i == ActiveCategory then
        imgui.PushStyleColor(clr.Button, colors[clr.ChildBg])
    else
        imgui.PushStyleColor(clr.Button, imgui.SubVec4(colors[clr.ChildBg], imgui.ImVec4(0.025, 0.025, 0.025, 0)))
    end

    local tsize = imgui.CalcTextSize(cat.title)

    if
    imgui.Button(cat.title, imgui.ImVec2(tsize.x + 20, 40))
    then
    ActiveCategory = i
    end
    imgui.SameLine()
    imgui.MoveCursorPos(-5, 0)

    imgui.PopStyleColor()
end
imgui.PopStyleVar()

imgui.SetCursorPosX(imgui.GetWindowWidth() - 70)
if
imgui.RoundButton('reloadScript', faicons.ICON_REFRESH, 'Перезагрузить скрипт')
then
    chatMessage('Перезагрузка...')
    thisScript():reload()
end

imgui.SameLine()
imgui.MoveCursorPos(0, -1)

if
imgui.RoundButton('turnOffScript', faicons.ICON_POWER_OFF, 'Выключить скрипт')
then
    chatMessage('Выключение...')
    thisScript():unload()
end

imgui.SetCursorPos(imgui.ImVec2(12, 65))
imgui.BeginChild('goshelp_child_categoryBody', imgui.GetWindowSize() - imgui.ImVec2(imgui.GetCursorPosX() + 12, imgui.GetCursorPosY() + 12), true, imgui.WindowFlags.NoScrollbar + imgui.WindowFlags.NoScrollWithMouse)
    categories[ActiveCategory].content()
imgui.EndChild()
 
  • Влюблен
Реакции: shitcodes