Как сделать чтобы при закрытии окна imgui не переставали работать функции

NNamless

Новичок
Автор темы
6
3
Версия MoonLoader
.027.0-preview
Вообщем я сделал код который при включении чекбокса в имгуи выводит на экран текст, но проблема в том, что при закрытии окна имгуи текст перестает выводиться, как это пофиксить?

Код:
Lua:
require 'lib.moonloader'
local sampev = require 'lib.samp.events'
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8

local main_window_state = imgui.ImBool(false)
local text_buffer = imgui.ImBuffer(256)
local cring = imgui.ImBool(false)
imgui.Process = false

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    sampRegisterChatCommand('cringe', crg_func)

    while true do
        wait(0)

        if main_window_state.v == false then
            imgui.Process = false
        end
    end
end

function crg_func()
    main_window_state.v = not main_window_state.v
    imgui.Process = main_window_state.v
end

function imgui.OnDrawFrame()
    imgui.SetNextWindowSize(imgui.ImVec2(250,250), imgui.Cond.FirstUseEver)
    imgui.Begin("Cringe", main_window_state, imgui.WindowFlags.NoResize)
    imgui.Checkbox(u8"Кринжануть", cring)
    if cring.v == true then
        printStringNow("Skaji bratve AYE", 100)
    end
    imgui.End()
end
 

chapo

чопа сребдс // @moujeek
Модератор
8,868
11,575
1691421340793.png
 
  • Нравится
Реакции: NNamless и YarikVL

YarikVL

Известный
Проверенный
4,766
1,820
Вообщем я сделал код который при включении чекбокса в имгуи выводит на экран текст, но проблема в том, что при закрытии окна имгуи текст перестает выводиться, как это пофиксить?

Код:
Lua:
require 'lib.moonloader'
local sampev = require 'lib.samp.events'
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8

local main_window_state = imgui.ImBool(false)
local text_buffer = imgui.ImBuffer(256)
local cring = imgui.ImBool(false)
imgui.Process = false

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end

    sampRegisterChatCommand('cringe', crg_func)

    while true do
        wait(0)

        if main_window_state.v == false then
            imgui.Process = false
        end
    end
end

function crg_func()
    main_window_state.v = not main_window_state.v
    imgui.Process = main_window_state.v
end

function imgui.OnDrawFrame()
    imgui.SetNextWindowSize(imgui.ImVec2(250,250), imgui.Cond.FirstUseEver)
    imgui.Begin("Cringe", main_window_state, imgui.WindowFlags.NoResize)
    imgui.Checkbox(u8"Кринжануть", cring)
    if cring.v == true then
        printStringNow("Skaji bratve AYE", 100)
    end
    imgui.End()
end
Думаю если ты не можешь перенести то, что у тебя в функции имгуи:
if cring.v == true then
printStringNow("Skaji bratve AYE", 100)
end
В бесконечный цикл:
while true do wait(0)
То тебе рано еще изучать имгуи.
 
  • Нравится
Реакции: Sadow