imgui и кнопка

Kecer

Участник
Автор темы
241
11
Версия MoonLoader
.026-beta
Приветствую, сделал код что бы по нажатию кнопки isKeyJustPressed в открытом imgui происходило определённое действие

в моём случае:

Lua:
if isKeyJustPressed(13) then
    sampSendDialogResponse(6370,1, _,u8:decode(text_buffer.v))
    sampCloseCurrentDialogWithButton(1)
    report_window_state.v = false
end

но возникла проблема, у меня в imgui есть imgui.InputText и вот когда он активен, то-есть в нём можно писать, кнопка не нажимается, то-есть мне нужно нажать по пустому месту в imgui что бы imgui.TextInput перестал быть активным, в ином случае кнопка просто не нажимается, мне нужно сделать так что бы даже если imgui.TextInput активен, то кнопка всё ровно нажмётся и произведёт действие.

(Кто не понял что я подразумеваю под словом "imgui.TextInput активен" я имею виду когда в нём можно писать)

1640618970877.png
 
Решение
1. Если тебе надо отправлять текст из инпута, то можешь добавить флаг imgui.InputTextFlags.EnterReturnsTrue
Lua:
        if imgui.InputText('##send', s.send, imgui.InputTextFlags.EnterReturnsTrue) then
            sampSendChat(s.send)
        end
2. если тебе надо что бы он отправлялся даже если имгуи закрыто:
Lua:
local vk = require 'vkeys'
local wm = require 'lib.windows.message'
addEventHandler("onWindowMessage", function (msg, wparam, lparam)
    if msg == wm.WM_KEYDOWN then
        if wparam == vk.VK_RETURN then
            sampSendDialogResponse(6370,1, _,u8:decode(text_buffer.v))
            sampCloseCurrentDialogWithButton(1)
            report_window_state.v = false
        end
    end
end)

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,763
11,198
1. Если тебе надо отправлять текст из инпута, то можешь добавить флаг imgui.InputTextFlags.EnterReturnsTrue
Lua:
        if imgui.InputText('##send', s.send, imgui.InputTextFlags.EnterReturnsTrue) then
            sampSendChat(s.send)
        end
2. если тебе надо что бы он отправлялся даже если имгуи закрыто:
Lua:
local vk = require 'vkeys'
local wm = require 'lib.windows.message'
addEventHandler("onWindowMessage", function (msg, wparam, lparam)
    if msg == wm.WM_KEYDOWN then
        if wparam == vk.VK_RETURN then
            sampSendDialogResponse(6370,1, _,u8:decode(text_buffer.v))
            sampCloseCurrentDialogWithButton(1)
            report_window_state.v = false
        end
    end
end)
 
  • Влюблен
Реакции: Rice.

Kecer

Участник
Автор темы
241
11
1. Если тебе надо отправлять текст из инпута, то можешь добавить флаг imgui.InputTextFlags.EnterReturnsTrue
Lua:
        if imgui.InputText('##send', s.send, imgui.InputTextFlags.EnterReturnsTrue) then
            sampSendChat(s.send)
        end
2. если тебе надо что бы он отправлялся даже если имгуи закрыто:
Lua:
local vk = require 'vkeys'
local wm = require 'lib.windows.message'
addEventHandler("onWindowMessage", function (msg, wparam, lparam)
    if msg == wm.WM_KEYDOWN then
        if wparam == vk.VK_RETURN then
            sampSendDialogResponse(6370,1, _,u8:decode(text_buffer.v))
            sampCloseCurrentDialogWithButton(1)
            report_window_state.v = false
        end
    end
end)
imgui.InputTextFlags.EnterReturnsTrue

Это означает что текст из инпута будет отправляться по нажатию enter ?
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,763
11,198
imgui.InputTextFlags.EnterReturnsTrue

Это означает что текст из инпута будет отправляться по нажатию enter ?
посмотри пример, там sampSendChat сработает только после того как ты нажмешь энтер
 

Kecer

Участник
Автор темы
241
11
посмотри пример, там sampSendChat сработает только после того как ты нажмешь энтер
А есть какие-то аналогии этому, то-есть к примеру другая кнопка, наврятли конечно это буду использовать, но всё же интересно
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,763
11,198