- 16
- 9
Как сделать так, чтобы заголовок окна был одного цвета что и интерфейс? и можна ли как то оптизировать код ?
script:
script_name("vc - tools")
script_author("legacy")
script_version("2.0")
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 activeTab = 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.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] = clr[imgui.Col.ButtonHovered]
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)
local tabs = {
{ icon = fa.HOUSE, name = u8" Главная" },
{ icon = fa.SCREWDRIVER_WRENCH, name = u8" Инструменты" },
{ icon = fa.GEAR, name = u8" Настройки" }
}
local function drawSidebar()
imgui.BeginChild("Sidebar", imgui.ImVec2(140, -1), true)
imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.12, 0.15, 0.17, 1))
imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.17, 0.20, 0.22, 1))
imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(0.17, 0.20, 0.22, 1))
for i, tab in ipairs(tabs) do
if imgui.Button(tab.icon .. tab.name, imgui.ImVec2(120, 40)) then
activeTab[0] = i
end
end
imgui.PopStyleColor(3)
imgui.EndChild()
end
local function drawContent()
imgui.SameLine()
imgui.BeginChild("Content", imgui.ImVec2(0, -1), true)
if activeTab[0] == 1 then
imgui.Text(u8"тест")
end
if activeTab[0] == 2 then
imgui.Text(u8"Инструменты:")
imgui.Separator()
if imgui.Button(fa.WRENCH .. u8" тест") then
sampAddChatMessage("Тестовая функция запущена!", -1)
end
end
if activeTab[0] == 3 then
imgui.Text(u8"Настройки интерфейса:")
imgui.Separator()
if imgui.Button(fa.GEAR .. u8" тест") then
sampAddChatMessage("Настройка нажата!", -1)
end
end
imgui.EndChild()
end
imgui.OnFrame(function() return renderWindow[0] end, function()
imgui.SetNextWindowSize(imgui.ImVec2(600, 440), imgui.Cond.FirstUseEver)
if imgui.Begin(u8"vc-tools", renderWindow, imgui.WindowFlags.NoResize) then
drawSidebar()
drawContent()
imgui.End()
end
end)
function main()
while not isSampAvailable() do wait(0) end
sampAddChatMessage("{00FFFF}[vc-tools] {FFFFFF} загружен. Команда: /vc", -1)
sampRegisterChatCommand("vc", function()
renderWindow[0] = not renderWindow[0]
end)
wait(-1)
end