сдвиг окна при принятии формы

Lance_Sterling

Известный
Автор темы
963
336
Версия MoonLoader
.026-beta
как сделать сдвиг окна, когда форма принята/отклонена/принята другим админом, в вверх?
пытался сделать, но крашит скрипт
p.s я могу накосячить чет, не бейте
Lua:
local formFrame = imgui.OnFrame(
    function() return form_time and form_time ~= -1 and (form_time + 7) >= os.clock() end,
    function(player)
        player.HideCursor = true
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 400, 100
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY - 200), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowBgAlpha(0.3)
        imgui.PushStyleColor(imgui.Col.TitleBg, imgui.GetStyle().Colors[imgui.Col.TitleBgActive])
       
        imgui.Begin(u8'Форма', _, imgui.WindowFlags.NoScrollbar + imgui.WindowFlags.NoScrollWithMouse + imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoResize)
       
        imgui.SetCursorPos(imgui.ImVec2(15, imgui.GetWindowSize().y / 2 - 3))

        imgui.PushStyleColor(imgui.Col.ButtonHovered, imgui.ImVec4(0.88, 0.88, 0.88, 1.00))
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0.77, 0.77, 0.77, 1.00))
        imgui.PushStyleColor(imgui.Col.Text, imgui.ImVec4(0.33, 0.33, 0.33, 1.00))
        imgui.Button(u8(table.concat(rkeys.getKeysName(BINDS.ACCEPT_FORM.v)) or 'error'), imgui.ImVec2(70, 30))
        imgui.PopStyleColor(4)

        imgui.SameLine()
       
        imgui.PushFont(Font[20])
        imgui.Text(u8'Принять форму')
        imgui.PopFont()
       
        if isKeyJustPressed(vkeys.name_to_id(table.concat(rkeys.getKeysName(BINDS.ACCEPT_FORM.v)))) and not sampIsCursorActive() then
            lua_thread.create(function()
                if mainIni.settings.form_ask then
                    if not FORM.CMD:find('.+%, вводи .+') then
                        local punish_form = (FORM.CMD:find('^/ban') or FORM.CMD:find('^/vcmute') or FORM.CMD:find('^/mute') or FORM.CMD:find('^/warn') or FORM.CMD:find('^/prison') or FORM.CMD:find('^/kick') or FORM.CMD:find('^/bgun') and (not FORM.CMD:find('^/un.+ ')) and not not FORM.CMD:find('^/vcun.+ '))
                        if punish_form then
                            sampSendChat('/a '..FORM.NICK:gsub('_.+', '')..', у тебя есть доказательства на '..(FORM.PUN_NICK or 'ID '..FORM.PUN_ID)..'? (+/-)')
                            aform_accept_id = id
                            aform_accept = true
                            wait(10000)
                            if aform_accept and aform_accept_id ~= -1 then
                                aform_accept = false
                                aform_accept_id = -1
                                sampSendChat('/a '..FORM.NICK:gsub('_.+', '')..', время на ответ исчерпано. Форма не принята.')
                            end
                        else
                            sampSendChat(FORM.RENDER)
                            out_render_form = true
                            wait(1000)
                            out_render_form = false
                        end
                    else
                        sampSendChat(FORM.RENDER)
                    end
                else
                    if not FORM.CMD:find('.+%, вводи .+') then
                        sampSendChat(FORM.RENDER)
                        out_render_form = true
                        out_render_form = false
                    else
                        sampSendChat(FORM.RENDER)
                    end
                end
                local time = os.time() + 1
                while time > os.time() do
                    wait(10)
                    -- \\ Тут типо пытался сделать сдвиг окна через imgui.SetWindowPosVec2 вверх на 1 пиксель каждые 10 мс, но вылазит ошибка
                    -- \\ cannot resume non-suspended coroutine
                end
                form_time = -1
            end)
        elseif isKeyJustPressed(vkeys.name_to_id(table.concat(rkeys.getKeysName(BINDS.REJECT_FORM.v)))) and not sampIsCursorActive() then
        end

       
        if out_render_form or aform_accept_id ~= -1 then
            imgui.SetCursorPos(imgui.ImVec2(355, imgui.GetWindowSize().y / 2 + 5))
            imgui.Text(faicons('CHECK'))
        elseif (form_time + 5) <= os.clock() then
            imgui.SetCursorPos(imgui.ImVec2(355, imgui.GetWindowSize().y / 2 + 5))
            imgui.Text(faicons('XMARK'))
        else
            imgui.TimeSpinner((os.clock() - form_time) / 5 * 100, imgui.ImVec2(360, imgui.GetWindowSize().y / 2 + 13), nil, 17)
        end

        imgui.End()
    end
)