Постоянная проверка, открыта ли конкретное диалоговое окно

Iskon

Участник
Автор темы
110
18
Версия MoonLoader
.026-beta
Всем привет. Сделал скрипт, который будет постоянно проверять, открыть ли диалог с id == 1700, и во время открытого состоянии этого диалога, то imgui.Proccess должен быть равен true. Иначе false. Ну так вот. Все как бы вначале работает, если открою другой диалог, имгуи не будет виден. Но если я открою диалог с id 1700 и закрою, то теперь имгуи открыт в любом диалоге постоянно, даже, если id диалога не равен 1700. Помогите, пожалуйста.
Lua:
function sampev.onShowDialog(id, style, title, b1, b2, text)
    if id == 1700 then
        lua_thread.create(function()
            while true do
                wait(0)
                if sampIsDialogActive() and id == 1700 then
                    imgui.Process = true
                else
                    imgui.Process = false
                end
            end
        end)
    end
end
 

F0RQU1N and

Известный
1,301
497
Всем привет. Сделал скрипт, который будет постоянно проверять, открыть ли диалог с id == 1700, и во время открытого состоянии этого диалога, то imgui.Proccess должен быть равен true. Иначе false. Ну так вот. Все как бы вначале работает, если открою другой диалог, имгуи не будет виден. Но если я открою диалог с id 1700 и закрою, то теперь имгуи открыт в любом диалоге постоянно, даже, если id диалога не равен 1700. Помогите, пожалуйста.
Lua:
function sampev.onShowDialog(id, style, title, b1, b2, text)
    if id == 1700 then
        lua_thread.create(function()
            while true do
                wait(0)
                if sampIsDialogActive() and id == 1700 then
                    imgui.Process = true
                else
                    imgui.Process = false
                end
            end
        end)
    end
end
ну во первых ты каждый раз создаешь поток при диалоге твоем а во вторых id скорейвсего и остается таким же в потоке же бесконечный цикл
 
  • Нравится
Реакции: Iskon и Jack Mirchond

Jack Mirchond

Новичок
4
0
ну во первых ты каждый раз создаешь поток при диалоге твоем а во вторых id скорейвсего и остается таким же в потоке же бесконечный цикл
Без бесконечного цикла можно сделать?
 

Iskon

Участник
Автор темы
110
18
onShowDialog вызывается после появления окна диалога, это означает, что бесконечный цикл тут попросту не нужен.
к сожалению, функция sampIsDialogActive() требует бесконечного цикла. А без этой функции, невозможно понять, закрылся ли диалог. Спасибо, что попытались мне помочь. Я смог сам решить свою проблему.

Lua:
function sampev.onShowDialog(id, style, title, b1, b2, text)
    if id == 1700 then
       idstate = true
       lua_thread.create(function ()
        while true do
            wait(0)
            if sampIsDialogActive() == false then
                idstate = false
            end
        end
       end)
    end
end


while true do
        wait(0)
        if idstate and sampIsDialogActive() then
            imgui.Process = true
        else
            imgui.Process = false
        end
end

вот решение проблемы, если интересно.