imgui диалог

Kecer

Участник
Автор темы
241
11
Версия MoonLoader
.026-beta
У меня есть диалог с репортом, в этом диалог, в этом диалоге две кнопки

1640120959090.png


У меня есть imgui и как сделать так что бы при вводе в imgui.InputText и по нажатию кнопки в imgui текст отправлялся игроку, тобишь в диалоге нажималась кнопка "Принять" пробовал через диалог респоунс но там он отправляет автоматически увы

Нужно что бы по нажатию кнопки, текст который я ввёл в imgui.InputText вводился в диалогн и по нажатию кнопки imgui.Button оно отправлялось
 
Последнее редактирование:
Решение
Lua:
local imgui = require 'imgui'
local on = require'lib.samp.events'

local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local main_window_state = imgui.ImBool(false)
local Buffer = imgui.ImBuffer(256)
local dial, but1, but2, tt = '', '', '', ''

function on.onShowDialog(did, style, title, b1, b2, text)
    if style == 1 and text:find('Жалоба/Вопрос от (%w+_%w+)%[(%d+)%]') then
        dial, but1, but2, tt = did, b1, b2, text:gsub('{%P+}','')
        main_window_state.v = true
    end
end

function imgui.OnDrawFrame()
    st()
    if main_window_state.v and tt ~= nil and tt ~= '' then
        imgui.SetNextWindowSize(imgui.ImVec2(250, 150), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'Ответ на вопрос...

qdIbp

Автор темы
Проверенный
1,388
1,146
Lua:
local imgui = require 'imgui'
local on = require'lib.samp.events'

local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local main_window_state = imgui.ImBool(false)
local Buffer = imgui.ImBuffer(256)
local dial, but1, but2, tt = '', '', '', ''

function on.onShowDialog(did, style, title, b1, b2, text)
    if style == 1 and text:find('Жалоба/Вопрос от (%w+_%w+)%[(%d+)%]') then
        dial, but1, but2, tt = did, b1, b2, text:gsub('{%P+}','')
        main_window_state.v = true
    end
end

function imgui.OnDrawFrame()
    st()
    if main_window_state.v and tt ~= nil and tt ~= '' then
        imgui.SetNextWindowSize(imgui.ImVec2(250, 150), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'Ответ на вопрос '..tt:match('(%w+_%w+)'), main_window_state, imgui.WindowFlags.NoResize)
                imgui.Text(u8(tt))

                imgui.PushItemWidth(230)
                imgui.InputText(' ', Buffer)
                imgui.PopItemWidth()
               
                if imgui.Button(u8(but1),imgui.ImVec2(112, 20)) and Buffer.v ~= nil and Buffer.v ~= '' then
                    sampSendDialogResponse(dial,1, _,u8:decode(Buffer.v))
                    sampCloseCurrentDialogWithButton(0)
                    main_window_state.v = false
                end
                    imgui.SameLine()
                if imgui.Button(u8(but2),imgui.ImVec2(113, 20)) then
                    sampCloseCurrentDialogWithButton(0)
                    main_window_state.v = false
                end

        imgui.End()
    end
end

function main()
    while true do wait(0)
        imgui.Process = main_window_state.v
    end
end

function st()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local clr = imgui.Col
    local ImVec4 = imgui.ImVec4

    style.WindowRounding = 2.0
    style.WindowTitleAlign = imgui.ImVec2(0.5, 0.84)
    style.ChildWindowRounding = 2.0
    style.FrameRounding = 2.0
    style.ItemSpacing = imgui.ImVec2(5.0, 4.0)
    style.ScrollbarSize = 13.0
    style.ScrollbarRounding = 0
    style.GrabMinSize = 8.0
    style.GrabRounding = 1.0

    colors[clr.FrameBg]                = ImVec4(0.16, 0.29, 0.48, 0.54)
    colors[clr.FrameBgHovered]         = ImVec4(0.26, 0.59, 0.98, 0.40)
    colors[clr.FrameBgActive]          = ImVec4(0.26, 0.59, 0.98, 0.67)
    colors[clr.TitleBg]                = ImVec4(0.04, 0.04, 0.04, 1.00)
    colors[clr.TitleBgActive]          = ImVec4(0.16, 0.29, 0.48, 1.00)
    colors[clr.TitleBgCollapsed]       = ImVec4(0.00, 0.00, 0.00, 0.51)
    colors[clr.CheckMark]              = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.SliderGrab]             = ImVec4(0.24, 0.52, 0.88, 1.00)
    colors[clr.SliderGrabActive]       = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.Button]                 = ImVec4(0.26, 0.59, 0.98, 0.40)
    colors[clr.ButtonHovered]          = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ButtonActive]           = ImVec4(0.06, 0.53, 0.98, 1.00)
    colors[clr.Header]                 = ImVec4(0.26, 0.59, 0.98, 0.31)
    colors[clr.HeaderHovered]          = ImVec4(0.26, 0.59, 0.98, 0.80)
    colors[clr.HeaderActive]           = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.Separator]              = colors[clr.Border]
    colors[clr.SeparatorHovered]       = ImVec4(0.26, 0.59, 0.98, 0.78)
    colors[clr.SeparatorActive]        = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ResizeGrip]             = ImVec4(0.26, 0.59, 0.98, 0.25)
    colors[clr.ResizeGripHovered]      = ImVec4(0.26, 0.59, 0.98, 0.67)
    colors[clr.ResizeGripActive]       = ImVec4(0.26, 0.59, 0.98, 0.95)
    colors[clr.TextSelectedBg]         = ImVec4(0.26, 0.59, 0.98, 0.35)
    colors[clr.Text]                   = ImVec4(1.00, 1.00, 1.00, 1.00)
    colors[clr.TextDisabled]           = ImVec4(0.50, 0.50, 0.50, 1.00)
    colors[clr.WindowBg]               = ImVec4(0.06, 0.06, 0.06, 0.94)
    colors[clr.ChildWindowBg]          = ImVec4(1.00, 1.00, 1.00, 0.00)
    colors[clr.PopupBg]                = ImVec4(0.08, 0.08, 0.08, 0.94)
    colors[clr.ComboBg]                = colors[clr.PopupBg]
    colors[clr.Border]                 = ImVec4(0.43, 0.43, 0.50, 0.50)
    colors[clr.BorderShadow]           = ImVec4(0.00, 0.00, 0.00, 0.00)
    colors[clr.MenuBarBg]              = ImVec4(0.14, 0.14, 0.14, 1.00)
    colors[clr.ScrollbarBg]            = ImVec4(0.02, 0.02, 0.02, 0.53)
    colors[clr.ScrollbarGrab]          = ImVec4(0.31, 0.31, 0.31, 1.00)
    colors[clr.ScrollbarGrabHovered]   = ImVec4(0.41, 0.41, 0.41, 1.00)
    colors[clr.ScrollbarGrabActive]    = ImVec4(0.51, 0.51, 0.51, 1.00)
    colors[clr.CloseButton]            = ImVec4(0.41, 0.41, 0.41, 0.50)
    colors[clr.CloseButtonHovered]     = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.CloseButtonActive]      = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.PlotLines]              = ImVec4(0.61, 0.61, 0.61, 1.00)
    colors[clr.PlotLinesHovered]       = ImVec4(1.00, 0.43, 0.35, 1.00)
    colors[clr.PlotHistogram]          = ImVec4(0.90, 0.70, 0.00, 1.00)
    colors[clr.PlotHistogramHovered]   = ImVec4(1.00, 0.60, 0.00, 1.00)
    colors[clr.ModalWindowDarkening]   = ImVec4(0.80, 0.80, 0.80, 0.35)
end
1640138255233.png
 
Последнее редактирование:
  • Bug
Реакции: SomaGnoma

Kecer

Участник
Автор темы
241
11
Lua:
local imgui = require 'imgui'
local on = require'lib.samp.events'

local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local main_window_state = imgui.ImBool(false)
local Buffer = imgui.ImBuffer(256)
local dial, but1, but2, tt = '', '', '', ''

function on.onShowDialog(did, style, title, b1, b2, text)
    if style == 1 and text:find('Жалоба/Вопрос от (%w+_%w+)%[(%d+)%]') then
        dial, but1, but2, tt = did, b1, b2, text:gsub('{%P+}','')
        main_window_state.v = true
    end
end

function imgui.OnDrawFrame()
    st()
    if main_window_state.v and tt ~= nil and tt ~= '' then
        imgui.SetNextWindowSize(imgui.ImVec2(250, 150), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'Ответ на вопрос '..tt:match('(%w+_%w+)'), main_window_state, imgui.WindowFlags.NoResize)
                imgui.Text(u8(tt))

                imgui.PushItemWidth(230)
                imgui.InputText(' ', Buffer)
                imgui.PopItemWidth()
               
                if imgui.Button(u8(but1),imgui.ImVec2(112, 20)) and Buffer.v ~= nil and Buffer.v ~= '' then
                    sampSendDialogResponse(dial,1, _,Buffer.v)
                    sampCloseCurrentDialogWithButton(0)
                    main_window_state.v = false
                end
                    imgui.SameLine()
                if imgui.Button(u8(but2),imgui.ImVec2(113, 20)) then
                    sampCloseCurrentDialogWithButton(0)
                    main_window_state.v = false
                end

        imgui.End()
    end
end

function main()
    while true do wait(0)
        imgui.Process = main_window_state.v
    end
end

function st()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local clr = imgui.Col
    local ImVec4 = imgui.ImVec4

    style.WindowRounding = 2.0
    style.WindowTitleAlign = imgui.ImVec2(0.5, 0.84)
    style.ChildWindowRounding = 2.0
    style.FrameRounding = 2.0
    style.ItemSpacing = imgui.ImVec2(5.0, 4.0)
    style.ScrollbarSize = 13.0
    style.ScrollbarRounding = 0
    style.GrabMinSize = 8.0
    style.GrabRounding = 1.0

    colors[clr.FrameBg]                = ImVec4(0.16, 0.29, 0.48, 0.54)
    colors[clr.FrameBgHovered]         = ImVec4(0.26, 0.59, 0.98, 0.40)
    colors[clr.FrameBgActive]          = ImVec4(0.26, 0.59, 0.98, 0.67)
    colors[clr.TitleBg]                = ImVec4(0.04, 0.04, 0.04, 1.00)
    colors[clr.TitleBgActive]          = ImVec4(0.16, 0.29, 0.48, 1.00)
    colors[clr.TitleBgCollapsed]       = ImVec4(0.00, 0.00, 0.00, 0.51)
    colors[clr.CheckMark]              = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.SliderGrab]             = ImVec4(0.24, 0.52, 0.88, 1.00)
    colors[clr.SliderGrabActive]       = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.Button]                 = ImVec4(0.26, 0.59, 0.98, 0.40)
    colors[clr.ButtonHovered]          = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ButtonActive]           = ImVec4(0.06, 0.53, 0.98, 1.00)
    colors[clr.Header]                 = ImVec4(0.26, 0.59, 0.98, 0.31)
    colors[clr.HeaderHovered]          = ImVec4(0.26, 0.59, 0.98, 0.80)
    colors[clr.HeaderActive]           = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.Separator]              = colors[clr.Border]
    colors[clr.SeparatorHovered]       = ImVec4(0.26, 0.59, 0.98, 0.78)
    colors[clr.SeparatorActive]        = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ResizeGrip]             = ImVec4(0.26, 0.59, 0.98, 0.25)
    colors[clr.ResizeGripHovered]      = ImVec4(0.26, 0.59, 0.98, 0.67)
    colors[clr.ResizeGripActive]       = ImVec4(0.26, 0.59, 0.98, 0.95)
    colors[clr.TextSelectedBg]         = ImVec4(0.26, 0.59, 0.98, 0.35)
    colors[clr.Text]                   = ImVec4(1.00, 1.00, 1.00, 1.00)
    colors[clr.TextDisabled]           = ImVec4(0.50, 0.50, 0.50, 1.00)
    colors[clr.WindowBg]               = ImVec4(0.06, 0.06, 0.06, 0.94)
    colors[clr.ChildWindowBg]          = ImVec4(1.00, 1.00, 1.00, 0.00)
    colors[clr.PopupBg]                = ImVec4(0.08, 0.08, 0.08, 0.94)
    colors[clr.ComboBg]                = colors[clr.PopupBg]
    colors[clr.Border]                 = ImVec4(0.43, 0.43, 0.50, 0.50)
    colors[clr.BorderShadow]           = ImVec4(0.00, 0.00, 0.00, 0.00)
    colors[clr.MenuBarBg]              = ImVec4(0.14, 0.14, 0.14, 1.00)
    colors[clr.ScrollbarBg]            = ImVec4(0.02, 0.02, 0.02, 0.53)
    colors[clr.ScrollbarGrab]          = ImVec4(0.31, 0.31, 0.31, 1.00)
    colors[clr.ScrollbarGrabHovered]   = ImVec4(0.41, 0.41, 0.41, 1.00)
    colors[clr.ScrollbarGrabActive]    = ImVec4(0.51, 0.51, 0.51, 1.00)
    colors[clr.CloseButton]            = ImVec4(0.41, 0.41, 0.41, 0.50)
    colors[clr.CloseButtonHovered]     = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.CloseButtonActive]      = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.PlotLines]              = ImVec4(0.61, 0.61, 0.61, 1.00)
    colors[clr.PlotLinesHovered]       = ImVec4(1.00, 0.43, 0.35, 1.00)
    colors[clr.PlotHistogram]          = ImVec4(0.90, 0.70, 0.00, 1.00)
    colors[clr.PlotHistogramHovered]   = ImVec4(1.00, 0.60, 0.00, 1.00)
    colors[clr.ModalWindowDarkening]   = ImVec4(0.80, 0.80, 0.80, 0.35)
end
Посмотреть вложение 127784
Можешь пожалуйста по подробнее объяснить что это

Lua:
dial, but1, but2, tt = did, b1, b2, text:gsub('{%P+}','')

Lua:
if main_window_state.v and tt ~= nil and tt ~= '' then

Lua:
if imgui.Button(u8(but1),imgui.ImVec2(112, 20)) and Buffer.v ~= nil and Buffer.v ~= '' then
 

qdIbp

Автор темы
Проверенный
1,388
1,146
Lua:
dial, but1, but2, tt = did, b1, b2, text:gsub('{%P+}','')
Присваивание переменным значения
text:gsub удаляет цвета типа{FF00FF}

Lua:
if main_window_state.v and tt ~= nil and tt ~= '' then
Если окно = true и текст диалого не пуст и диалого не пуст
Lua:
if imgui.Button(u8(but1),imgui.ImVec2(112, 20)) and Buffer.v ~= nil and Buffer.v ~= '' then
Если нажата кнопка правая кнопка(1) и input окно не пусто, то
 

Kecer

Участник
Автор темы
241
11
Присваивание переменным значения
text:gsub удаляет цвета типа{FF00FF}


Если окно = true и текст диалого не пуст и диалого не пуст

Если нажата кнопка правая кнопка(1) и input окно не пусто, то
Во всё получилось, спасибо, но образовалась одна проблемка

1640194214435.png


я понимаю что проблемы с кодировкой, но как её правильно в буфере использовать что бы такого не было, ибо ранее я с таким не сталкивался
 

SomaGnoma

Известный
442
152
Во всё получилось, спасибо, но образовалась одна проблемка

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

я понимаю что проблемы с кодировкой, но как её правильно в буфере использовать что бы такого не было, ибо ранее я с таким не сталкивался
декодить у8 не?
 

Kecer

Участник
Автор темы
241
11
Ещё одна проблемка образовалась, после открытия репорта, у меня imgui не выскакивает, а выскакивает тока тогда когда я либо активацию через команду сделаю этого imgui, то-есть и сам его запущу когда репорт будет открыт, либо после открытия любого другого imgui окна, не знаете как это можно было бы пофиксить?

Запуск, я прописал
Lua:
report_window_state.v = true
 

qdIbp

Автор темы
Проверенный
1,388
1,146
Ещё одна проблемка образовалась, после открытия репорта, у меня imgui не выскакивает, а выскакивает тока тогда когда я либо активацию через команду сделаю этого imgui, то-есть и сам его запущу когда репорт будет открыт, либо после открытия любого другого imgui окна, не знаете как это можно было бы пофиксить?
Lua:
local imgui = require 'imgui'
local on = require'lib.samp.events'

local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local main_window_state = imgui.ImBool(false)
local Buffer = imgui.ImBuffer(256)
local dial, but1, but2, tt = '', 'ОК', 'НЕ ОК', 'Nick_Nick'

function on.onShowDialog(did, style, title, b1, b2, text)
    if style == 1 and text:find('Жалоба/Вопрос от (%w+_%w+)%[(%d+)%]') then
        dial, but1, but2, tt = did, b1, b2, text:gsub('{%P+}','')
        main_window_state.v = true
    end
end

function imgui.OnDrawFrame()
    st()
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(250, 150), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'Ответ на вопрос '..tt:match('(%w+_%w+)'), main_window_state, imgui.WindowFlags.NoResize)
                imgui.Text(u8(tt))

                imgui.PushItemWidth(230)
                imgui.InputText(' ', Buffer)
                imgui.PopItemWidth()
               
                if imgui.Button(u8(but1),imgui.ImVec2(112, 20)) and Buffer.v ~= nil and Buffer.v ~= '' then
                    sampSendDialogResponse(dial,1, _,u8:decode(Buffer.v))
                    sampCloseCurrentDialogWithButton(0)
                    Buffer.v = ''
                    --main_window_state.v = false
                end
                    imgui.SameLine()
                if imgui.Button(u8(but2),imgui.ImVec2(113, 20)) then
                    sampCloseCurrentDialogWithButton(0)
                    Buffer.v = ''
                    main_window_state.v = false
                end

        imgui.End()
    end
end

function main()
        sampRegisterChatCommand('cmd',function() main_window_state.v = not main_window_state.v print(main_window_state.v) end)
    while true do wait(0)
        imgui.Process = main_window_state.v
    end
end

function st()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local clr = imgui.Col
    local ImVec4 = imgui.ImVec4

    style.WindowRounding = 2.0
    style.WindowTitleAlign = imgui.ImVec2(0.5, 0.84)
    style.ChildWindowRounding = 2.0
    style.FrameRounding = 2.0
    style.ItemSpacing = imgui.ImVec2(5.0, 4.0)
    style.ScrollbarSize = 13.0
    style.ScrollbarRounding = 0
    style.GrabMinSize = 8.0
    style.GrabRounding = 1.0

    colors[clr.FrameBg]                = ImVec4(0.16, 0.29, 0.48, 0.54)
    colors[clr.FrameBgHovered]         = ImVec4(0.26, 0.59, 0.98, 0.40)
    colors[clr.FrameBgActive]          = ImVec4(0.26, 0.59, 0.98, 0.67)
    colors[clr.TitleBg]                = ImVec4(0.04, 0.04, 0.04, 1.00)
    colors[clr.TitleBgActive]          = ImVec4(0.16, 0.29, 0.48, 1.00)
    colors[clr.TitleBgCollapsed]       = ImVec4(0.00, 0.00, 0.00, 0.51)
    colors[clr.CheckMark]              = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.SliderGrab]             = ImVec4(0.24, 0.52, 0.88, 1.00)
    colors[clr.SliderGrabActive]       = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.Button]                 = ImVec4(0.26, 0.59, 0.98, 0.40)
    colors[clr.ButtonHovered]          = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ButtonActive]           = ImVec4(0.06, 0.53, 0.98, 1.00)
    colors[clr.Header]                 = ImVec4(0.26, 0.59, 0.98, 0.31)
    colors[clr.HeaderHovered]          = ImVec4(0.26, 0.59, 0.98, 0.80)
    colors[clr.HeaderActive]           = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.Separator]              = colors[clr.Border]
    colors[clr.SeparatorHovered]       = ImVec4(0.26, 0.59, 0.98, 0.78)
    colors[clr.SeparatorActive]        = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ResizeGrip]             = ImVec4(0.26, 0.59, 0.98, 0.25)
    colors[clr.ResizeGripHovered]      = ImVec4(0.26, 0.59, 0.98, 0.67)
    colors[clr.ResizeGripActive]       = ImVec4(0.26, 0.59, 0.98, 0.95)
    colors[clr.TextSelectedBg]         = ImVec4(0.26, 0.59, 0.98, 0.35)
    colors[clr.Text]                   = ImVec4(1.00, 1.00, 1.00, 1.00)
    colors[clr.TextDisabled]           = ImVec4(0.50, 0.50, 0.50, 1.00)
    colors[clr.WindowBg]               = ImVec4(0.06, 0.06, 0.06, 0.94)
    colors[clr.ChildWindowBg]          = ImVec4(1.00, 1.00, 1.00, 0.00)
    colors[clr.PopupBg]                = ImVec4(0.08, 0.08, 0.08, 0.94)
    colors[clr.ComboBg]                = colors[clr.PopupBg]
    colors[clr.Border]                 = ImVec4(0.43, 0.43, 0.50, 0.50)
    colors[clr.BorderShadow]           = ImVec4(0.00, 0.00, 0.00, 0.00)
    colors[clr.MenuBarBg]              = ImVec4(0.14, 0.14, 0.14, 1.00)
    colors[clr.ScrollbarBg]            = ImVec4(0.02, 0.02, 0.02, 0.53)
    colors[clr.ScrollbarGrab]          = ImVec4(0.31, 0.31, 0.31, 1.00)
    colors[clr.ScrollbarGrabHovered]   = ImVec4(0.41, 0.41, 0.41, 1.00)
    colors[clr.ScrollbarGrabActive]    = ImVec4(0.51, 0.51, 0.51, 1.00)
    colors[clr.CloseButton]            = ImVec4(0.41, 0.41, 0.41, 0.50)
    colors[clr.CloseButtonHovered]     = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.CloseButtonActive]      = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.PlotLines]              = ImVec4(0.61, 0.61, 0.61, 1.00)
    colors[clr.PlotLinesHovered]       = ImVec4(1.00, 0.43, 0.35, 1.00)
    colors[clr.PlotHistogram]          = ImVec4(0.90, 0.70, 0.00, 1.00)
    colors[clr.PlotHistogramHovered]   = ImVec4(1.00, 0.60, 0.00, 1.00)
    colors[clr.ModalWindowDarkening]   = ImVec4(0.80, 0.80, 0.80, 0.35)
end

Открывается/закрывается командой cmd
 

Kecer

Участник
Автор темы
241
11
Lua:
local imgui = require 'imgui'
local on = require'lib.samp.events'

local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local main_window_state = imgui.ImBool(false)
local Buffer = imgui.ImBuffer(256)
local dial, but1, but2, tt = '', 'ОК', 'НЕ ОК', 'Nick_Nick'

function on.onShowDialog(did, style, title, b1, b2, text)
    if style == 1 and text:find('Жалоба/Вопрос от (%w+_%w+)%[(%d+)%]') then
        dial, but1, but2, tt = did, b1, b2, text:gsub('{%P+}','')
        main_window_state.v = true
    end
end

function imgui.OnDrawFrame()
    st()
    if main_window_state.v then
        imgui.SetNextWindowSize(imgui.ImVec2(250, 150), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'Ответ на вопрос '..tt:match('(%w+_%w+)'), main_window_state, imgui.WindowFlags.NoResize)
                imgui.Text(u8(tt))

                imgui.PushItemWidth(230)
                imgui.InputText(' ', Buffer)
                imgui.PopItemWidth()
              
                if imgui.Button(u8(but1),imgui.ImVec2(112, 20)) and Buffer.v ~= nil and Buffer.v ~= '' then
                    sampSendDialogResponse(dial,1, _,u8:decode(Buffer.v))
                    sampCloseCurrentDialogWithButton(0)
                    Buffer.v = ''
                    --main_window_state.v = false
                end
                    imgui.SameLine()
                if imgui.Button(u8(but2),imgui.ImVec2(113, 20)) then
                    sampCloseCurrentDialogWithButton(0)
                    Buffer.v = ''
                    main_window_state.v = false
                end

        imgui.End()
    end
end

function main()
        sampRegisterChatCommand('cmd',function() main_window_state.v = not main_window_state.v print(main_window_state.v) end)
    while true do wait(0)
        imgui.Process = main_window_state.v
    end
end

function st()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local clr = imgui.Col
    local ImVec4 = imgui.ImVec4

    style.WindowRounding = 2.0
    style.WindowTitleAlign = imgui.ImVec2(0.5, 0.84)
    style.ChildWindowRounding = 2.0
    style.FrameRounding = 2.0
    style.ItemSpacing = imgui.ImVec2(5.0, 4.0)
    style.ScrollbarSize = 13.0
    style.ScrollbarRounding = 0
    style.GrabMinSize = 8.0
    style.GrabRounding = 1.0

    colors[clr.FrameBg]                = ImVec4(0.16, 0.29, 0.48, 0.54)
    colors[clr.FrameBgHovered]         = ImVec4(0.26, 0.59, 0.98, 0.40)
    colors[clr.FrameBgActive]          = ImVec4(0.26, 0.59, 0.98, 0.67)
    colors[clr.TitleBg]                = ImVec4(0.04, 0.04, 0.04, 1.00)
    colors[clr.TitleBgActive]          = ImVec4(0.16, 0.29, 0.48, 1.00)
    colors[clr.TitleBgCollapsed]       = ImVec4(0.00, 0.00, 0.00, 0.51)
    colors[clr.CheckMark]              = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.SliderGrab]             = ImVec4(0.24, 0.52, 0.88, 1.00)
    colors[clr.SliderGrabActive]       = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.Button]                 = ImVec4(0.26, 0.59, 0.98, 0.40)
    colors[clr.ButtonHovered]          = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ButtonActive]           = ImVec4(0.06, 0.53, 0.98, 1.00)
    colors[clr.Header]                 = ImVec4(0.26, 0.59, 0.98, 0.31)
    colors[clr.HeaderHovered]          = ImVec4(0.26, 0.59, 0.98, 0.80)
    colors[clr.HeaderActive]           = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.Separator]              = colors[clr.Border]
    colors[clr.SeparatorHovered]       = ImVec4(0.26, 0.59, 0.98, 0.78)
    colors[clr.SeparatorActive]        = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ResizeGrip]             = ImVec4(0.26, 0.59, 0.98, 0.25)
    colors[clr.ResizeGripHovered]      = ImVec4(0.26, 0.59, 0.98, 0.67)
    colors[clr.ResizeGripActive]       = ImVec4(0.26, 0.59, 0.98, 0.95)
    colors[clr.TextSelectedBg]         = ImVec4(0.26, 0.59, 0.98, 0.35)
    colors[clr.Text]                   = ImVec4(1.00, 1.00, 1.00, 1.00)
    colors[clr.TextDisabled]           = ImVec4(0.50, 0.50, 0.50, 1.00)
    colors[clr.WindowBg]               = ImVec4(0.06, 0.06, 0.06, 0.94)
    colors[clr.ChildWindowBg]          = ImVec4(1.00, 1.00, 1.00, 0.00)
    colors[clr.PopupBg]                = ImVec4(0.08, 0.08, 0.08, 0.94)
    colors[clr.ComboBg]                = colors[clr.PopupBg]
    colors[clr.Border]                 = ImVec4(0.43, 0.43, 0.50, 0.50)
    colors[clr.BorderShadow]           = ImVec4(0.00, 0.00, 0.00, 0.00)
    colors[clr.MenuBarBg]              = ImVec4(0.14, 0.14, 0.14, 1.00)
    colors[clr.ScrollbarBg]            = ImVec4(0.02, 0.02, 0.02, 0.53)
    colors[clr.ScrollbarGrab]          = ImVec4(0.31, 0.31, 0.31, 1.00)
    colors[clr.ScrollbarGrabHovered]   = ImVec4(0.41, 0.41, 0.41, 1.00)
    colors[clr.ScrollbarGrabActive]    = ImVec4(0.51, 0.51, 0.51, 1.00)
    colors[clr.CloseButton]            = ImVec4(0.41, 0.41, 0.41, 0.50)
    colors[clr.CloseButtonHovered]     = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.CloseButtonActive]      = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.PlotLines]              = ImVec4(0.61, 0.61, 0.61, 1.00)
    colors[clr.PlotLinesHovered]       = ImVec4(1.00, 0.43, 0.35, 1.00)
    colors[clr.PlotHistogram]          = ImVec4(0.90, 0.70, 0.00, 1.00)
    colors[clr.PlotHistogramHovered]   = ImVec4(1.00, 0.60, 0.00, 1.00)
    colors[clr.ModalWindowDarkening]   = ImVec4(0.80, 0.80, 0.80, 0.35)
end

Открывается/закрывается командой cmd
У меня так же, но мне надо что бы при виде диалога imgui открывался сразу, но увы этого не происходит, и что бы запустить imgui мне надо делать это в ручную через команду
 

qdIbp

Автор темы
Проверенный
1,388
1,146
У меня так же, но мне надо что бы при виде диалога imgui открывался сразу, но увы этого не происходит, и что бы запустить imgui мне надо делать это в ручную через команду
так замени
Lua:
local main_window_state = imgui.ImBool(false)
на
Lua:
local main_window_state = imgui.ImBool(true)
 

Kecer

Участник
Автор темы
241
11
так замени
Lua:
local main_window_state = imgui.ImBool(false)
на
Lua:
local main_window_state = imgui.ImBool(true)
не, тоже не работает, теперь когда я открываю основной imgui, у меня просто вылазиет и этот imgui но при репорте всё так же как и было, самостоятельно тока могу открыть imgui c репортом
 

qdIbp

Автор темы
Проверенный
1,388
1,146
не, тоже не работает, теперь когда я открываю основной imgui, у меня просто вылазиет и этот imgui но при репорте всё так же как и было, самостоятельно тока могу открыть imgui c репортом
ну ка скинь свою беду
 

Kecer

Участник
Автор темы
241
11
ну ка скинь свою беду
Lua:
local report_window_state = imgui.ImBool(true)

function samp.onShowDialog(dialogId, style, title, button1, button2, text)
    diaText = text
    if dialogId == 6370 and text:find('Жалоба/Вопрос от %w+_%w+%[%d+%]') then
        nickrep = text:match('Жалоба/Вопрос от %w+_%w+%[%d+%]')
        if text:find('[c8e464](.*)') then
            reason = text:match('{c8e464}(.*)')
        end
        report_window_state.v = true
    end
end

if imgui.Button(u8"Отправить", imgui.ImVec2(113,0)) then
    sampSendDialogResponse(6370,1, _,u8:decode(text_buffer.v))
    sampCloseCurrentDialogWithButton(1)
    report_window_state.v = false
end