Изменение скрипта [заголовок]

-legacy.

Новичок
Автор темы
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
 
Решение
Lua:
script_name("vc - tools")
script_author("legacy")
script_version("2.1")

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 settings = {
    autoUpdate = imgui.new.bool(true),
    notifications = imgui.new.bool(true),
    soundEffects = imgui.new.bool(false)
}

local colors = {
    bg = imgui.ImVec4(0.06, 0.08, 0.10, 1),
    childBg = imgui.ImVec4(0.07, 0.09, 0.11, 1),
    button = imgui.ImVec4(0.12, 0.16, 0.20, 1),
    buttonHover = imgui.ImVec4(0.18, 0.22, 0.26, 1),
    frame = imgui.ImVec4(0.10, 0.14, 0.18, 1),
    text = imgui.ImVec4(0.85...

alexroq

Участник
108
11
Lua:
script_name("vc - tools")
script_author("legacy")
script_version("2.1")

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 settings = {
    autoUpdate = imgui.new.bool(true),
    notifications = imgui.new.bool(true),
    soundEffects = imgui.new.bool(false)
}

local colors = {
    bg = imgui.ImVec4(0.06, 0.08, 0.10, 1),
    childBg = imgui.ImVec4(0.07, 0.09, 0.11, 1),
    button = imgui.ImVec4(0.12, 0.16, 0.20, 1),
    buttonHover = imgui.ImVec4(0.18, 0.22, 0.26, 1),
    frame = imgui.ImVec4(0.10, 0.14, 0.18, 1),
    text = imgui.ImVec4(0.85, 0.86, 0.88, 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] = colors.text
    clr[imgui.Col.WindowBg] = colors.bg
    clr[imgui.Col.ChildBg] = colors.childBg
    
    clr[imgui.Col.TitleBg] = colors.bg
    clr[imgui.Col.TitleBgActive] = colors.bg
    clr[imgui.Col.TitleBgCollapsed] = colors.bg
    
    clr[imgui.Col.Button] = colors.button
    clr[imgui.Col.ButtonHovered] = colors.buttonHover
    clr[imgui.Col.ButtonActive] = colors.buttonHover
    
    clr[imgui.Col.FrameBg] = colors.frame
    clr[imgui.Col.FrameBgHovered] = imgui.ImVec4(0.12, 0.16, 0.20, 1)
    clr[imgui.Col.FrameBgActive] = imgui.ImVec4(0.14, 0.18, 0.22, 1)
    
    clr[imgui.Col.Separator] = imgui.ImVec4(0.15, 0.18, 0.21, 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 sidebarColors = {
    imgui.ImVec4(0.12, 0.15, 0.17, 1),
    imgui.ImVec4(0.17, 0.20, 0.22, 1),
    imgui.ImVec4(0.17, 0.20, 0.22, 1)
}

local function drawSidebar()
    imgui.BeginChild("Sidebar", imgui.ImVec2(140, -1), true)
    
    for i = 1, 3 do
        imgui.PushStyleColor(imgui.Col.Button + i - 1, sidebarColors[i])
    end

    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)
    
    local tab = activeTab[0]
    
    if tab == 1 then
        imgui.TextColored(imgui.ImVec4(0.4, 0.8, 1, 1), fa.CIRCLE_INFO .. u8" Информация")
        imgui.Separator()
        imgui.Dummy(imgui.ImVec2(0, 5))
        imgui.Text(u8"Добро пожаловать в vc-tools!")
        imgui.Dummy(imgui.ImVec2(0, 10))
        imgui.BulletText(u8"Версия: 2.1")
        imgui.BulletText(u8"Автор: legacy")
        imgui.BulletText(u8"Команда: /vc")
    
    elseif tab == 2 then
        imgui.TextColored(imgui.ImVec4(0.4, 0.8, 1, 1), fa.WRENCH .. u8" Инструменты")
        imgui.Separator()
        imgui.Dummy(imgui.ImVec2(0, 5))
        
        if imgui.Button(fa.LOCATION_DOT .. u8" Получить координаты", imgui.ImVec2(250, 35)) then
            local x, y, z = getCharCoordinates(PLAYER_PED)
            sampAddChatMessage(string.format("{00FFFF}[Координаты] {FFFFFF}X: %.2f, Y: %.2f, Z: %.2f", x, y, z), -1)
        end
        
        imgui.Dummy(imgui.ImVec2(0, 5))
        
        if imgui.Button(fa.CLOCK .. u8" Показать время", imgui.ImVec2(250, 35)) then
            local h, m = sampGetServerTime()
            sampAddChatMessage(string.format("{00FFFF}[Время] {FFFFFF}%02d:%02d", h, m), -1)
        end
        
        imgui.Dummy(imgui.ImVec2(0, 5))
        
        if imgui.Button(fa.HEART .. u8" Восстановить HP", imgui.ImVec2(250, 35)) then
            setCharHealth(PLAYER_PED, 100)
            sampAddChatMessage("{00FFFF}[vc-tools] {FFFFFF}Здоровье восстановлено!", -1)
        end
    
    elseif tab == 3 then
        imgui.TextColored(imgui.ImVec4(0.4, 0.8, 1, 1), fa.GEAR .. u8" Настройки")
        imgui.Separator()
        imgui.Dummy(imgui.ImVec2(0, 5))
        
        imgui.Checkbox(u8"Автообновление", settings.autoUpdate)
        imgui.Checkbox(u8"Уведомления", settings.notifications)
        imgui.Checkbox(u8"Звуковые эффекты", settings.soundEffects)
        
        imgui.Dummy(imgui.ImVec2(0, 10))
        
        if imgui.Button(fa.FLOPPY_DISK .. u8" Сохранить настройки", imgui.ImVec2(200, 30)) then
            sampAddChatMessage("{00FFFF}[vc-tools] {FFFFFF}Настройки сохранены!", -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()
    repeat wait(0) until isSampAvailable()
    
    sampAddChatMessage("{00FFFF}[vc-tools] {FFFFFF}Скрипт загружен. Команда: {00FFFF}/vc", -1)
    
    sampRegisterChatCommand("vc", function()
        renderWindow[0] = not renderWindow[0]
    end)
    
    wait(-1)
end
 
  • Влюблен
Реакции: -legacy.