Закрытие окошка ImGUI на крестик

kun3741

Новичок
Автор темы
20
0
Версия MoonLoader
.027.0-preview

Здравствуйте, народ! В разработке скриптов я только начинающий "недокодер", интересует такой вопрос:

Как сделать такой крестик, (скрин приложу) который будет закрывать окошко скрипта?
11.23.00.703.jpg

Код, который у меня уже есть:

Код:
function imgui.OnDrawFrame()
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin("Truck Helper. by Kun_Vays", main_window_state.v, imgui.WindowFlags.NoResize)
        imgui.Text("абв|abc")
        imgui.InputText("пиши сюда", text_buffer)
        imgui.Text(text_buffer.v)
            if imgui.Button("Press me") then
            printStringNow("pressed", 2000)
            sampAddChatMessage(tag .. "{DA70D6} You pressed button!", 0xDA70D6)
            sampAddChatMessage(tag .. "{DA70D6} You wrote: {00BFFF}" .. text_buffer.v, 0xDA70D6)
            end
    end
    imgui.End()


end


function onWindowMessage(msg, wparam, lparam)
    if msg == 0x100 or msg == 0x101 then
        if (wparam == key.VK_ESCAPE and main_window_state.v) and not isPauseMenuActive() then
            consumeWindowMessage(true, false)
            if msg == 0x101 then
                main_window_state.v = false
            end
        end
    end
end
 
Решение
У тебя в begin не должно содержаться .v

Lua:
function imgui.OnDrawFrame()
    resX, resY = getScreenResolution()
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin("Truck Helper. by Kun_Vays", main_window_state)
            imgui.Text("абв|abc")
            imgui.InputText("пиши сюда", text_buffer)
            imgui.Text(text_buffer.v)
                if imgui.Button("Press me") then
                    printStringNow("pressed", 2000)
                    sampAddChatMessage(tag .. "{DA70D6} You pressed button!", 0xDA70D6)...

sat0ry

Известный
1,092
293

Здравствуйте, народ! В разработке скриптов я только начинающий "недокодер", интересует такой вопрос:​

Как сделать такой крестик, (скрин приложу) который будет закрывать окошко скрипта?​

Посмотреть вложение 149325

Код, который у меня уже есть:​

Код:
function imgui.OnDrawFrame()
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin("Truck Helper. by Kun_Vays", main_window_state.v, imgui.WindowFlags.NoResize)
        imgui.Text("абв|abc")
        imgui.InputText("пиши сюда", text_buffer)
        imgui.Text(text_buffer.v)
            if imgui.Button("Press me") then
            printStringNow("pressed", 2000)
            sampAddChatMessage(tag .. "{DA70D6} You pressed button!", 0xDA70D6)
            sampAddChatMessage(tag .. "{DA70D6} You wrote: {00BFFF}" .. text_buffer.v, 0xDA70D6)
            end
    end
    imgui.End()


end


function onWindowMessage(msg, wparam, lparam)
    if msg == 0x100 or msg == 0x101 then
        if (wparam == key.VK_ESCAPE and main_window_state.v) and not isPauseMenuActive() then
            consumeWindowMessage(true, false)
            if msg == 0x101 then
                main_window_state.v = false
            end
        end
    end
end
Так у тебе автоматически он уже есть
 
  • Нравится
  • Bug
Реакции: qdIbp и Corenale

qdIbp

Автор темы
Проверенный
1,435
1,175
У тебя в begin не должно содержаться .v

Lua:
function imgui.OnDrawFrame()
    resX, resY = getScreenResolution()
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin("Truck Helper. by Kun_Vays", main_window_state)
            imgui.Text("абв|abc")
            imgui.InputText("пиши сюда", text_buffer)
            imgui.Text(text_buffer.v)
                if imgui.Button("Press me") then
                    printStringNow("pressed", 2000)
                    sampAddChatMessage(tag .. "{DA70D6} You pressed button!", 0xDA70D6)
                    sampAddChatMessage(tag .. "{DA70D6} You wrote: {00BFFF}" .. text_buffer.v, 0xDA70D6)
                end
        imgui.End()     
    end
end
 
  • Влюблен
  • Нравится
Реакции: kun3741 и zTechnology

kun3741

Новичок
Автор темы
20
0
code:
function imgui.OnDrawFrame()
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin("Truck Helper. by Kun_Vays", main_window_state.v, imgui.WindowFlags.NoResize)
        imgui.Text("абв|abc")
        imgui.InputText("пиши сюда", text_buffer)
        imgui.Text(text_buffer.v)
            if imgui.Button("Press me") then
            printStringNow("pressed", 2000)
            sampAddChatMessage(tag .. "{DA70D6} You pressed button!", 0xDA70D6)
            sampAddChatMessage(tag .. "{DA70D6} You wrote: {00BFFF}" .. text_buffer.v, 0xDA70D6)
            end
        imgui.End()
    end
    

end

если я правильно изменил, то должно работать, но не работает😐
 

krim

Известный
301
132
Пример:

Lua:
local imgui = require 'imgui'

local main_state = imgui.ImBool(false)

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('rzz', function() main_state.v = not main_state.v imgui.Process = main_state.v end)
        while true do wait(0)
            if not main_state.v then imgui.Process = false end
        end
end

function imgui.OnDrawFrame()
    imgui.Begin('',main_state)
    imgui.End()
end

code:
function imgui.OnDrawFrame()
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin("Truck Helper. by Kun_Vays", main_window_state.v, imgui.WindowFlags.NoResize)
        imgui.Text("абв|abc")
        imgui.InputText("пиши сюда", text_buffer)
        imgui.Text(text_buffer.v)
            if imgui.Button("Press me") then
            printStringNow("pressed", 2000)
            sampAddChatMessage(tag .. "{DA70D6} You pressed button!", 0xDA70D6)
            sampAddChatMessage(tag .. "{DA70D6} You wrote: {00BFFF}" .. text_buffer.v, 0xDA70D6)
            end
        imgui.End()
    end
   

end

если я правильно изменил, то должно работать, но не работает😐
нет убери .v в 2 аргументе begin
 

sat0ry

Известный
1,092
293
1653296176957.png

.v убери.
code:
function imgui.OnDrawFrame()
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin("Truck Helper. by Kun_Vays", main_window_state.v, imgui.WindowFlags.NoResize)
        imgui.Text("абв|abc")
        imgui.InputText("пиши сюда", text_buffer)
        imgui.Text(text_buffer.v)
            if imgui.Button("Press me") then
            printStringNow("pressed", 2000)
            sampAddChatMessage(tag .. "{DA70D6} You pressed button!", 0xDA70D6)
            sampAddChatMessage(tag .. "{DA70D6} You wrote: {00BFFF}" .. text_buffer.v, 0xDA70D6)
            end
        imgui.End()
    end
   

end

если я правильно изменил, то должно работать, но не работает😐
 
  • Влюблен
Реакции: kun3741

qdIbp

Автор темы
Проверенный
1,435
1,175
У тебя в begin не должно содержаться .v

Lua:
function imgui.OnDrawFrame()
    resX, resY = getScreenResolution()
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(500, 500), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin("Truck Helper. by Kun_Vays", main_window_state)
            imgui.Text("абв|abc")
            imgui.InputText("пиши сюда", text_buffer)
            imgui.Text(text_buffer.v)
                if imgui.Button("Press me") then
                    printStringNow("pressed", 2000)
                    sampAddChatMessage(tag .. "{DA70D6} You pressed button!", 0xDA70D6)
                    sampAddChatMessage(tag .. "{DA70D6} You wrote: {00BFFF}" .. text_buffer.v, 0xDA70D6)
                end
        imgui.End()   
    end
end
Все отвечающие тут проблема в imgui.Begin так как к переменной поставили .v а надо просто main_window_state
Код:
imgui.Begin("Truck Helper. by Kun_Vays", main_window_state.v, imgui.WindowFlags.NoResize)
 
  • Влюблен
Реакции: kun3741