select button

$Mr.R1ch$

Активный
Автор темы
259
37
Версия MoonLoader
Другое
Доброго времени суток!
Сделал в своем скрипте что то умной рации волны департамента, и при нажатии на любую кнопку она должна перекраситься в цвет, а при нажатии другой она возвращает свой стандартный цвет, и перекрашивается уже другая, и так по кругу. Но у меня не получилось, что тут не так?

Lua:
local imgui = require "mimgui"
local encoding = require "encoding"
encoding.default = "CP1251"
u8 = encoding.UTF8

local window = imgui.new.bool(true)

local wChat = 0
local chatArr = {
    [1] = "/r",
    [2] = "/f",
}

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
end)

imgui.OnFrame(function() return window[0] end, function(self)
    local resX, resY = getScreenResolution()
    imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(300, 200), imgui.Cond.FirstUseEver)
    imgui.Begin("Title", window)

    function imgui.ButtonSelected(name, size)
       if chatArr[wChat] then
          imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.51, 0.47, 0.0, 0.60))
          imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.51, 0.47, 0.0, 1.0))
          imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(0.51, 0.47, 0.0, 1.0))
          imgui.Button(name, size)
          imgui.PopStyleColor(3)
       else
          imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.93, 0.45, 0.33, 0.60))
          imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.93, 0.45, 0.33, 1.0))
          imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(0.93, 0.45, 0.33, 1.0))
          imgui.PopStyleColor(3)
          return imgui.Button(name, size)
       end
    end


    if imgui.ButtonSelected(u8("Рация подразделения (/r)")) then
        wChat = 1
        sampAddChatMessage("Выбрана рация подразделения", -1)
    end
    if imgui.ButtonSelected(u8("Рация организации (/f)")) then
        wChat = 2
        sampAddChatMessage("Выбрана рация организации", -1)
    end
    imgui.End()
end)

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand("chat", function(text)
        if tostring(text) ~= "" then
            if wChat == 0 then
                sampAddChatMessage("Рация выключена", -1)
                return
            end
            sampSendChat(chatArr[wChat].." "..text)
        end
    end)

    sampRegisterChatCommand("mimgui", function()
        window[0] = not window[0]
    end)
    wait(-1)
end
 
  • Эм
Реакции: MLycoris
Решение
Lua:
function imgui.ButtonSelected(name, id)
        if wChat == id then
            imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.51, 0.47, 0.0, 0.60))
            imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.51, 0.47, 0.0, 1.0))
            imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(0.51, 0.47, 0.0, 1.0))
        else
            imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.93, 0.45, 0.33, 0.60))
            imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.93, 0.45, 0.33, 1.0))
            imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(0.93, 0.45, 0.33, 1.0))
        end

       local clicked = imgui.Button(name)        imgui.PopStyleColor(3)        return clicked...

Smeruxa

Известный
1,361
722
Lua:
function imgui.ButtonSelected(name, id)
        if wChat == id then
            imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.51, 0.47, 0.0, 0.60))
            imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.51, 0.47, 0.0, 1.0))
            imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(0.51, 0.47, 0.0, 1.0))
        else
            imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.93, 0.45, 0.33, 0.60))
            imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.93, 0.45, 0.33, 1.0))
            imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(0.93, 0.45, 0.33, 1.0))
        end

       local clicked = imgui.Button(name)        imgui.PopStyleColor(3)        return clicked
end

imgui


Lua:
if imgui.ButtonSelected(u8("Рация подразделения (/r)"), 1) then
        wChat = 1
        sampAddChatMessage("Выбрана рация подразделения", -1)
    end
    if imgui.ButtonSelected(u8("Рация организации (/f)"), 2) then
        wChat = 2
        sampAddChatMessage("Выбрана рация организации", -1)
    end

замечание
PopStyleColor - завершает изменение цвета для последующих элементов, а ты определяешь бутон после того, как завершил push
 
Последнее редактирование:
  • Нравится
Реакции: $Mr.R1ch$

$Mr.R1ch$

Активный
Автор темы
259
37
Lua:
function imgui.ButtonSelected(name, id)
        if wChat == id then
            imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.51, 0.47, 0.0, 0.60))
            imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.51, 0.47, 0.0, 1.0))
            imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(0.51, 0.47, 0.0, 1.0))
        else
            imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.93, 0.45, 0.33, 0.60))
            imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.93, 0.45, 0.33, 1.0))
            imgui.PushStyleColor(imgui.Col.ButtonActive, imgui.ImVec4(0.93, 0.45, 0.33, 1.0))
        end

       local clicked = imgui.Button(name)        imgui.PopStyleColor(3)        return clicked
end

imgui


Lua:
if imgui.ButtonSelected(u8("Рация подразделения (/r)"), 1) then
        wChat = 1
        sampAddChatMessage("Выбрана рация подразделения", -1)
    end
    if imgui.ButtonSelected(u8("Рация организации (/f)"), 2) then
        wChat = 2
        sampAddChatMessage("Выбрана рация организации", -1)
    end

замечание
PopStyleColor - завершает изменение цвета для последующих элементов, а ты определяешь бутон после того, как завершил push
огромное спасибо, учту свою ошибку!