Скрипт не закрывает диалог

Leon_Trotsky

Участник
Автор темы
39
2
Версия MoonLoader
.026-beta
Привет всем.

Скрипт отправляет значение полное, но при этом не закрывает окно.


Код скрипта:
if ReportWindow.v then 
    local sw, sh = getScreenResolution() 
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(465, 215), imgui.Cond.FirstUseEver)
    imgui.Begin(u8'Жалоба/Вопрос', ReportWindow, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoSavedSettings + imgui.WindowFlags.AlwaysAutoResize)
    imgui.Text(u8"Жалоба от: ".. nick_rep .."[".. report_id .."]")
    imgui.SameLine()
    imgui.PushStyleColor(imgui.Col.Text, imgui.ImVec4(0.92549020051956, 0.6745098233223, 0.6745098233223, 1))
    imgui.Text(fa.ICON_FA_DESKTOP..'')
    imgui.PopStyleColor() 
    imgui.SameLine()
    
    if imgui.CogButton() then
        sampSendDialogResponse(20, 1, _, "Уважаемый игрок, начинаю следить за Вами")
        text_buffer_rep.v = ''
        ReportWindow.v = false
        sampSendChat('/re '..report_id)
    end
    imgui.Hint('slejkare', u8'Перейти в слежку за автором репорта')
    imgui.SameLine(435)
    imgui.Text(fa.ICON_FA_WRENCH..'')
    imgui.Hint('helpcur', u8'Если у вас забагался курсор, то пофиксить проблему\nможно переведя раскладку на англ. яз., после откройте чат,\nдалее закройте его, и поле ввода снова станет доступно!')
    imgui.Separator()
    imgui.Text(u8:encode(report_text))
    imgui.Separator()     
    local otvet = text_buffer_rep.v
    if len(text_buffer_rep.v) > 55 then 
        imgui.CenterTextColoredRGB('{fe4e4e} Ответ должен содержать не более 70 символов ['..len(text_buffer_rep.v)..'/70]') 
    end
    imgui.PushItemWidth(415)
    if len(text_buffer_rep.v) >= 70 then 
        imgui.InputText(u8'##sfdkdfkdar', text_buffer_rep, imgui.InputTextFlags.ReadOnly)
    else
        imgui.InputText(u8'##sfdkdfkdar', text_buffer_rep, imgui.InputTextFlags.AutoSelectAll)
    end
    imgui.SameLine()
    imgui.Text(fa.ICON_FA_RETWEET..'')
    if len(text_buffer_rep.v) >= 70 then 
        if imgui.Button(u8'Сбросить поле ввода', imgui.ImVec2(444, 20)) then
            text_buffer_rep.v = ''
        end
    end
    imgui.Separator()
    if imgui.Button(fa.ICON_FA_ROBOT..u8' Слежу за наруш', imgui.ImVec2(145, 20)) then
        if report_text:match("(%d+)") ~= nil then  
            if sampIsPlayerConnected(report_text:gmatch("(%d+)")) then 
                local template = u8:decode(reason_settings_report[4].v)
                local template = template:gsub('{nick_rep}', nick_rep) 
                local template = template:gsub('{my_id}', my_id)
                local template = template:gsub('{id_rep}', id_rep)
                local template = template:gsub('{my_name}', my_name) 
                sampSendDialogResponse(20, 1, _, template)   
                for idjb in report_text:gmatch("(%d+)") do
                    if idjb then 
                        if sampIsPlayerConnected(idjb) then
                            sampSendChat('/re '..idjb ) 
                        end
                    end
                end                     
                text_buffer_rep.v = ''
                reconusers_state.v = true 
                ReportWindow.v = false
            else 
                sampAddChatMessage("{808080}[Слежка] Вы не можете начать следить за нарушителем,т.к не указан айди в репорте или игрок оффлайн.",-1) 
            end 
        end 
    end
    
    imgui.SameLine()
    
    if imgui.Button(fa.ICON_FA_PEOPLE_CARRY..u8' Помочь автору', imgui.ImVec2(145, 20)) then
        local template = u8:decode(reason_settings_report[2].v)
        local template = template:gsub('{nick_rep}', nick_rep) 
        local template = template:gsub('{my_id}', my_id)
        local template = template:gsub('{id_rep}', id_rep)
        local template = template:gsub('{my_name}', my_name) 
        sampSendDialogResponse(20, 1, _, template)
        text_buffer_rep.v = ''
        ReportWindow.v = false
        sampSendChat('/re ' .. report_id) 
        sampAddChatMessage("[Автоматическая слежка] Вы ушли в слежку за " .. nick_rep .. "[" .. report_id .. "]", 14628149) 
    end
    imgui.SameLine()
    if imgui.Button(fa.ICON_FA_COMMENTS..u8' Переслать в /a чат', imgui.ImVec2(145, 20)) then
        sampSendChat("/a >>> [РЕПОРТ] ".. report_name .."[".. report_id .."]: " .. report_text.. " ")
        sampSendDialogResponse(20, 1, _, "Уважаемый игрок, передал Ваш репорт в чат администраторов")
        text_buffer_rep.v = ''
        ReportWindow.v = false
    end
    if imgui.Button(fa.ICON_FA_MAP_MARKED_ALT..u8' Помощь по GPS', imgui.ImVec2(145, 20)) then
        if not doesFileExist(getGameDirectory()..'//moonloader//AdminTools//gps.json') then
            sampAddChatMessage(tag..'У вас отсутствует файл с навигацией для GPS!', -1)
        else
            imgui.OpenPopup(u8'Помощь по GPS')
        end
    end
    
    if imgui.BeginPopupModal(u8'Помощь по GPS', ReportWindow, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar) then
        local gps = io.open('moonloader\\AdminTools\\gps.json', 'a+')
        gpsqwd = decodeJson(gps:read('*a'))
        gps:close()
        imgui.PushItemWidth(-1)
        imgui.InputText(u8"##4112dasdasadsads4124124124124", buffer34)
        imgui.PopItemWidth()
        if imgui.Button(u8'Закрыть', imgui.ImVec2(510, 25)) then
            imgui.CloseCurrentPopup()
        end
        lua_thread.create(function()
            local search = u8:decode(buffer34.v)
            if search ~= '' then
                searchv = true
                for i, v in ipairs(gpsqwd) do
                    local ansi_v = u8:decode(v)
                    if ansi_v ~= nil then
                        otvetslow = rusLower(ansi_v)
                        searchlow = rusLower(search)
                        if string.find(otvetslow, searchlow, 1, true) then
                            if imgui.Button(v, imgui.ImVec2(510, 25)) then
                                sampSendDialogResponse(20, 1, _, ansi_v)
                                text_buffer_rep.v = ''
                                imgui.Process = false                                           
                            end
                        end
                    end
                end
            else 
                searchv = false
            end
        end)
        for i, v in ipairs(gpsqwd) do
            if not searchv then
                if imgui.Button(v, imgui.ImVec2(510, 25)) then
                    local ansi_v = u8:decode(v)
                    sampSendDialogResponse(20, 1, _, ansi_v)
                    text_buffer_rep.v = ''
                    imgui.Process = false
                end
            end
        end
    imgui.EndPopup()
    end
    imgui.SameLine()
    if imgui.Button(fa.ICON_FA_LEVEL_UP_ALT..u8' ТП к игроку', imgui.ImVec2(145, 20)) then
            sampSendDialogResponse(20, 1, _, 'Уважаемый игрок, сейчас попробую вам помочь!')                
            text_buffer_rep.v = ''
            ReportWindow.v = false
            sampSendChat('/g ' ..report_id)
    end
    imgui.SameLine()
    if imgui.Button(fa.ICON_FA_TABLET_ALT..u8' Список команд', imgui.ImVec2(145, 20)) then
        if not doesFileExist(getGameDirectory()..'//moonloader//AdminTools//commands.json') then
            sampAddChatMessage(tag..'У вас отсутствует файл со списком команд!', -1)
        else
            imgui.OpenPopup(u8'Список команд')
        end
    end
    
    if imgui.BeginPopupModal(u8'Список команд', ReportWindow, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar) then
        local commands = io.open('moonloader\\AdminTools\\commands.json', 'a+')
        commandsqwd = decodeJson(commands:read('*a'))
        ommands:close()
        imgui.PushItemWidth(-1)
        imgui.InputText(u8"##4112dasdasadsads4124124124124", buffer38)
        imgui.PopItemWidth()
        if imgui.Button(u8'Закрыть', imgui.ImVec2(510, 25)) then
            imgui.CloseCurrentPopup()
        end
        lua_thread.create(function()
            local search = u8:decode(buffer38.v)
            if search ~= '' then
                searchv = true
                for i, v in ipairs(commandsqwd) do
                    local ansi_v = u8:decode(v)
                    if ansi_v ~= nil then
                        otvetslow = rusLower(ansi_v)
                        searchlow = rusLower(search)
                        if string.find(otvetslow, searchlow, 1, true) then
                            if imgui.Button(v, imgui.ImVec2(510, 25)) then
                                sampSendDialogResponse(20, 1, _, ansi_v)
                                text_buffer_rep.v = ''
                                imgui.Process = false                                           
                            end
                        end
                    end
                end
            else
                searchv = false
            end
        end)
        for i, v in ipairs(commandsqwd) do
            if not searchv then
                if imgui.Button(v, imgui.ImVec2(510, 25)) then
                    local ansi_v = u8:decode(v)
                    sampSendDialogResponse(20, 1, _, ansi_v)
                    text_buffer_rep.v = ''
                    imgui.Process = false
                end
            end
        end
    imgui.EndPopup()
    end
    if imgui.Button(fa.ICON_FA_PALETTE..u8' Таблица цветов', imgui.ImVec2(145, 20)) then
        ColorsWindow.v = not ColorsWindow.v
        imgui.Process = ColorsWindow.v 
    end
    imgui.SameLine()
            
    if imgui.Button(fa.ICON_FA_CAR_CRASH..u8' Флипнуть', imgui.ImVec2(145, 20)) then
        sampSendChat('/flip '..report_id)
        sampSendDialogResponse(20, 1, _, 'Уважаемый '..nick_rep..', флипнул Вас.')
        text_buffer_rep.v = ''
        ReportWindow.v = false
    end
    imgui.SameLine()
    if imgui.Button(fa.ICON_FA_USER..u8' Заспавнить', imgui.ImVec2(145, 20)) then
        sampSendChat('/spawn ' .. report_id)
        local template = u8:decode(reason_settings_report[6].v)
        local template = template:gsub('{nick_rep}', nick_rep) 
        local template = template:gsub('{my_id}', my_id)
        local template = template:gsub('{id_rep}', id_rep)
        local template = template:gsub('{my_name}', my_name) 
        sampSendDialogResponse(20, 1, _, template)
        text_buffer_rep.v = ''
        ReportWindow.v = false
    end
    if imgui.Button(fa.ICON_FA_MEDKIT..u8' Выдать HP', imgui.ImVec2(445, 20)) then
        sampSendChat('/hp ' .. report_id .. ' 100')
        local template = u8:decode(reason_settings_report[7].v)
        local template = template:gsub('{nick_rep}', nick_rep) 
        local template = template:gsub('{my_id}', my_id)
        local template = template:gsub('{id_rep}', id_rep)
        local template = template:gsub('{my_name}', my_name)
        sampSendDialogResponse(20, 1, _, template)
        text_buffer_rep.v = ''
        ReportWindow.v = false
    end
    imgui.Separator()
    reportenter = 0
    for qw, er in pairs(cfg.reportname) do
        if imgui.Button(u8(er), imgui.ImVec2(145, 20)) then
            if cfg.reportstyle[qw] == 0 then
                if cfg.reportotvet[qw] ~= "" then
                    sampSendDialogResponse(20, 1, _, cfg.reportotvet[qw])
                    ReportWindow.v = false
                else
                    sampAddChatMessage("[Ошибка] Введите ответ. Либо закройте репорт.", 14628149)
                end
            elseif cfg.reportstyle[qw] == 1 then
                text_buffer_rep.v = u8(cfg.reportotvet[qw])
            end
        end
        reportenter = reportenter + 1
        if reportenter == 3 then
            reportenter = 0
        elseif #cfg.reportname ~= qw then
            imgui.SameLine()
        end
    end
    imgui.Separator()
    imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.090196080505848, 0.52549022436142, 0.52549022436142, 1))
    if imgui.Button(u8'Отправить',imgui.ImVec2(145, 20)) then 
        sampSendDialogResponse(20, 1, _, u8:decode(otvet))
        text_buffer_rep.v = ''
        ReportWindow.v = false
    end
    imgui.SameLine()
    imgui.SetCursorPosX(308)
    if imgui.Button(u8'Закрыть',imgui.ImVec2(145, 20)) then
        imgui.OpenPopup(u8'Подтверждение закрытия')  
    end
    imgui.PopStyleColor()
    if imgui.BeginPopupModal(u8'Подтверждение закрытия', ReportWindow, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoScrollbar + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoMove) then
        local size = imgui.GetWindowSize()
        btns_sizeX = size.x / 2 - 10
        imgui.Text(u8'Вы действительно хотите закрыть репорт?')
            if imgui.Button(u8' Да',imgui.ImVec2(btns_sizeX,20)) then ReportWindow.v = false imgui.CloseCurrentPopup()   end
                imgui.SameLine()
                if imgui.Button(u8' Нет', imgui.ImVec2(btns_sizeX, 20)) then
                    imgui.CloseCurrentPopup()
                end
                imgui.EndPopup()
            end
    imgui.End()
    end
 
Последнее редактирование: