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

William_Chkhalo

Участник
Автор темы
126
14
Версия MoonLoader
Другое
Всем привет. У меня баг. Имеется окно на мимгуи. В нем при нажатии на кнопку открывается еще одно окно. Но когда я нажимаю на крестик второго окна, то и первое закрывается с ним. К сожалению не могу скинуть весь скрипт. Могу скинуть части когда.
Код:
imgui.OnFrame(
    function() return renderWindow[0] end,
    function()
        return true
    end,
    function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(200, 150), imgui.Cond.FirstUseEver)
        imgui.Begin(thisScript().name .. " " .. thisScript().version .. " ", renderWindow)
        ............
        ................
        ...............
        ..............
        ..........
        if imgui.Button(u8 'Выдача розыска') then
                    imgui.OnFrame(
                        function() return renderWindow[0] end,
                        function()
                            return true
                        end,
                        function(player)
                            imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
                            imgui.SetNextWindowSize(imgui.ImVec2(200, 150), imgui.Cond.FirstUseEver)
                            imgui.Begin(u8"Выдача розыска", renderWindow)
                            ............
                            ...........
                            .............
                            ..........
                            imgui.End()
                        end
                    )
        end
        ...............
        .............
        .............
        ...........
            imgui.End()
        end
    end
)


Надеюсь что-то понятно.
 
Решение
загуглить видимо тяжко очень
Lua:
local newFrame = imgui.OnFrame(
    function() return windowOne[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('Main Window', windowOne) then
            if imgui.Button('button') then
                windowTwo[0] = not windowTwo[0]
            end
            imgui.End()
        end
    end
)
local secondFrame = imgui.OnFrame(
    function() return windowTwo[0] end,
    function(player)
        local...

chromiusj

C Y N T H O N I
Модератор
5,050
3,316
Всем привет. У меня баг. Имеется окно на мимгуи. В нем при нажатии на кнопку открывается еще одно окно. Но когда я нажимаю на крестик второго окна, то и первое закрывается с ним. К сожалению не могу скинуть весь скрипт. Могу скинуть части когда.
Код:
imgui.OnFrame(
    function() return renderWindow[0] end,
    function()
        return true
    end,
    function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(200, 150), imgui.Cond.FirstUseEver)
        imgui.Begin(thisScript().name .. " " .. thisScript().version .. " ", renderWindow)
        ............
        ................
        ...............
        ..............
        ..........
        if imgui.Button(u8 'Выдача розыска') then
                    imgui.OnFrame(
                        function() return renderWindow[0] end,
                        function()
                            return true
                        end,
                        function(player)
                            imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
                            imgui.SetNextWindowSize(imgui.ImVec2(200, 150), imgui.Cond.FirstUseEver)
                            imgui.Begin(u8"Выдача розыска", renderWindow)
                            ............
                            ...........
                            .............
                            ..........
                            imgui.End()
                        end
                    )
        end
        ...............
        .............
        .............
        ...........
            imgui.End()
        end
    end
)


Надеюсь что-то понятно.
патамушо понабирают
делай окна отдельными функциями и допустим
if imgui.button() then
bool2 = not bool2
где бул2 переменная активации твоего второго окна
 
  • Ха-ха
Реакции: deleted-user-521122

William_Chkhalo

Участник
Автор темы
126
14
Код:
imgui.OnFrame(
    function() return renderWindow[0] end,
    function()
        return true
    end,
    function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(200, 150), imgui.Cond.FirstUseEver)
        imgui.Begin(thisScript().name .. " " .. thisScript().version .. " ", renderWindow)
        ............
        ................
        ...............
        ..............
        ..........
        if imgui.Button(u8 'Выдача розыска') then
        bool2 = not bool2
                    imgui.OnFrame(
                        function() return renderWindow[0] end,
                        function()
                            return true
                        end,
                        function(player)
                            imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
                            imgui.SetNextWindowSize(imgui.ImVec2(200, 150), imgui.Cond.FirstUseEver)
                            imgui.Begin(u8"Выдача розыска", renderWindow)
                            ............
                            ...........
                            .............
                            ..........
                            imgui.End()
                        end
                    )
        end
        ...............
        .............
        .............
        ...........
            imgui.End()
        end
    end
)

Типа так?
 

chromiusj

C Y N T H O N I
Модератор
5,050
3,316
Код:
imgui.OnFrame(
    function() return renderWindow[0] end,
    function()
        return true
    end,
    function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(200, 150), imgui.Cond.FirstUseEver)
        imgui.Begin(thisScript().name .. " " .. thisScript().version .. " ", renderWindow)
        ............
        ................
        ...............
        ..............
        ..........
        if imgui.Button(u8 'Выдача розыска') then
        bool2 = not bool2
                    imgui.OnFrame(
                        function() return renderWindow[0] end,
                        function()
                            return true
                        end,
                        function(player)
                            imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
                            imgui.SetNextWindowSize(imgui.ImVec2(200, 150), imgui.Cond.FirstUseEver)
                            imgui.Begin(u8"Выдача розыска", renderWindow)
                            ............
                            ...........
                            .............
                            ..........
                            imgui.End()
                        end
                    )
        end
        ...............
        .............
        .............
        ...........
            imgui.End()
        end
    end
)

Типа так?
я по русски вроде ответил,делай отдельными функциями,а не функцией в функции
 

William_Chkhalo

Участник
Автор темы
126
14
Ну блин, скинь готовый код пж(

Аааа

Понял кажись

Неа, не понял. Вот что попытался:
Код:
if imgui.Button(u8 'Выдача розыска') then
smart_su()
end
                
function smart_su()
    bool2 = not bool2
    imgui.OnFrame(
        function() return renderWindow[0] end,
        function()
            return true
        end,
        function(player)
            imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
            imgui.SetNextWindowSize(imgui.ImVec2(200, 150), imgui.Cond.FirstUseEver)
            imgui.Begin(u8"Выдача розыска", renderWindow)
            ....................
            imgui.End()
        end
    )
end

я по русски вроде ответил,делай отдельными функциями,а не функцией в функции
Алееее
 
Последнее редактирование:
  • Эм
Реакции: MLycoris

chromiusj

C Y N T H O N I
Модератор
5,050
3,316
загуглить видимо тяжко очень
Lua:
local newFrame = imgui.OnFrame(
    function() return windowOne[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('Main Window', windowOne) then
            if imgui.Button('button') then
                windowTwo[0] = not windowTwo[0]
            end
            imgui.End()
        end
    end
)
local secondFrame = imgui.OnFrame(
    function() return windowTwo[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 400, 400
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('##1Main Window', windowTwo) then
            imgui.Text('some text here')
            imgui.End()
        end
    end
)
 
  • Нравится
Реакции: MrDorlik

William_Chkhalo

Участник
Автор темы
126
14
Код:
[20:51:54.170] [error] [MVD Helper] ./MVDHelper.lua:2271: attempt to index global 'windowTwo' (a nil value)
stack traceback:
    ./MVDHelper.lua: in function 'Condition'
    ./lib/mimgui/init.lua:126: in function <./lib/mimgui/init.lua:119>
Вот логи.
Код:
    function() return windowTwo[0] end,
Вот строка 2271

Если ты брал от сюда, то тут по одной команде, а мне надо по кнопке
 

chromiusj

C Y N T H O N I
Модератор
5,050
3,316
Если ты брал от сюда, то тут по одной команде, а мне надо по кнопке
вот я точно ниоткуда не беру,значит ты проебал куда то переменную свою с вторым окно
1698256746404.png
 

William_Chkhalo

Участник
Автор темы
126
14

MrDorlik

Известный
971
395
Это я знаю, просто он не писал
я извиняюсь у вас слепота или что похуже
if imgui.button() then
bool2 = not bool2
где бул2 переменная активации твоего второго окна

ты проебал куда то переменную свою с вторым окно