OnFrame

falconix

Новичок
Автор темы
20
2
Будьте добры подсказать как сделать норм онфраме

Код:
imgui.OnFrame(function() return renderWindow[0] end, function()
    local windowSize = imgui.ImVec2(600, 500)
    imgui.SetNextWindowSize(windowSize, imgui.Cond.FirstUseEver)   
    local sw, sh = getScreenResolution()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.Appearing, imgui.ImVec2(0.5, 0.5))
    if imgui.Begin(u8"vc-tools", renderWindow, imgui.WindowFlags.NoResize) then
        imgui.BeginChild("LevBar", imgui.ImVec2(150, 0), true)
            if imgui.Button(fa.HOUSE .. u8" Главная", imgui.ImVec2(-1, 35)) then tab[0] = 1 end
            if imgui.Button(fa.GEAR .. u8" Настройки", imgui.ImVec2(-1, 35)) then tab[0] = 2 end
            if imgui.Button(fa.CIRCLE_INFO .. u8" Инфо", imgui.ImVec2(-1, 35)) then tab[0] = 3 end
        imgui.EndChild()
        imgui.SameLine()
        imgui.BeginChild("Content", imgui.ImVec2(0, 0), true)
            if tab[0] == 1 then
                imgui.Text(u8"Тут контент главной страницы.")
            elseif tab[0] == 2 then
                imgui.Text(u8"Тут контент раздела настроек.")
            elseif tab[0] == 3 then
                imgui.Text(u8"Тут информация о скрипте.")
            end
        imgui.EndChild()
        imgui.End()
    end
end)

UPD:
Как выглядит скрипт -

Код:
local imgui = require 'mimgui'
local fa = require 'fAwesome6_solid'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8

local renderWindow = imgui.new.bool(false)
local tab = imgui.new.int(1)

local function applyTheme()
    local style = imgui.GetStyle()
    local clr = style.Colors

    style.WindowRounding = 0
    style.ChildRounding = 4
    style.FrameRounding = 4
    style.WindowBorderSize = 0
    style.FrameBorderSize = 0
    style.ItemSpacing = imgui.ImVec2(10, 12)

    clr[imgui.Col.Text]            = imgui.ImVec4(0.85, 0.86, 0.88, 1)
    clr[imgui.Col.WindowBg]        = imgui.ImVec4(0.06, 0.08, 0.10, 1)
    clr[imgui.Col.ChildBg]         = imgui.ImVec4(0.07, 0.09, 0.11, 1)
    clr[imgui.Col.TitleBg]         = imgui.ImVec4(0.06, 0.08, 0.10, 1)
    clr[imgui.Col.TitleBgActive]   = imgui.ImVec4(0.06, 0.08, 0.10, 1)

    clr[imgui.Col.Button]          = imgui.ImVec4(0.12, 0.16, 0.20, 1)
    clr[imgui.Col.ButtonHovered]   = imgui.ImVec4(0.18, 0.22, 0.26, 1)
    clr[imgui.Col.ButtonActive]    = imgui.ImVec4(0.18, 0.22, 0.26, 1)

    clr[imgui.Col.FrameBg]         = imgui.ImVec4(0.10, 0.14, 0.18, 1)
end

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
    fa.Init(16)
    applyTheme()
end)

imgui.OnFrame(function() return renderWindow[0] end, function()
    local windowSize = imgui.ImVec2(600, 500)
    imgui.SetNextWindowSize(windowSize, imgui.Cond.FirstUseEver)   
    local sw, sh = getScreenResolution()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.Appearing, imgui.ImVec2(0.5, 0.5))
    if imgui.Begin(u8"test name", renderWindow, imgui.WindowFlags.NoResize) then
        imgui.BeginChild("LevBar", imgui.ImVec2(150, 0), true)
            if imgui.Button(fa.HOUSE .. u8" Главная", imgui.ImVec2(-1, 35)) then tab[0] = 1 end
            if imgui.Button(fa.GEAR .. u8" Настройки", imgui.ImVec2(-1, 35)) then tab[0] = 2 end
            if imgui.Button(fa.CIRCLE_INFO .. u8" Инфо", imgui.ImVec2(-1, 35)) then tab[0] = 3 end
        imgui.EndChild()
        imgui.SameLine()
        imgui.BeginChild("Content", imgui.ImVec2(0, 0), true)
            if tab[0] == 1 then
                imgui.Text(u8"Тут контент главной страницы.")
            elseif tab[0] == 2 then
                imgui.Text(u8"Тут контент раздела настроек.")
            elseif tab[0] == 3 then
                imgui.Text(u8"Тут информация о скрипте.")
            end
        imgui.EndChild()
        imgui.End()
    end
end)

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand("test", function() renderWindow[0] = not renderWindow[0] end)
    wait(-1)
end
 
Последнее редактирование: