Сохранение позиции окна

$Mr.R1ch$

Участник
Автор темы
99
25
Версия MoonLoader
Другое
Пытался реализовать функции сохранения позиции окна mimgui, но если нажать на кнопку в скрипте, где прописано условие сохранения, то скрипт просто крашит. Как исправить проблему?

Lua:
local inicfg = require 'inicfg'
local ini = inicfg.load({
wighet = {
       city = false,
       street = false,
       kvadrat = false,
       channel = false,
       hp = false,
       armour = false,
       ping = false,
       time = false,
       menu = false,
       WindowPosX = 1890,
       WindowPosY = 140,
       }
}


local flags = imgui.WindowFlags.NoMove + imgui.WindowFlags.NoDecoration + imgui.WindowFlags.AlwaysAutoResize
    imgui.OnFrame(function() return Vijets[0] and not isGamePaused() end, function()
    imgui.SetNextWindowPos(imgui.ImVec2(ini.wighet.WindowPosX, ini.wighet.WindowPosY), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) -- стандартная позиция окна, читается с inicfg
imgui.SetNextWindowSize(imgui.ImVec2(360), imgui.Cond.Always)
imgui.Begin('MyWindow', Vijets, flags)
Imgui.Text('TEST')
imgui.End()
end)


if imgui.Button(u8'Изменить местоположение', imgui.ImVec2(350, 40)) then --сама кнопка которая позволяет передвигать и сохранять позицию окна
          sampAddChatMessage(tag.. ' Передвигайте окно в любой части экрана. Нажмите повторно чтобы сохранить.', -1)
            ini.wighet.WindowPosX, ini.wighet.WindowPosY = imgui.GetWindowPos()
            flags = (bit.rshift(flags, 2) == 1) and (flags - imgui.WindowFlags.NoMove) or (flags + imgui.WindowFlags.NoMove)
            end
cannot convert 'struct ImVec2' to 'float'
stack traceback:
[C]: in function 'ImVec2'
 

wojciech?

Известный
Проверенный
225
134
GetWindowPos возвращает ImVec2, а не два значения
Lua:
local vec = imgui.GetWindowPos()
ini.wighet.WindowPosX, ini.wighet.WindowPosY = vec.x, vec.y

и зачем ты пытаешься сохранить / установить позицию виджета, если она и так записана в конфиг mimgui (для любого окна работает)?
1715511737908.png
 

$Mr.R1ch$

Участник
Автор темы
99
25
GetWindowPos возвращает ImVec2, а не два значения
Lua:
local vec = imgui.GetWindowPos()
ini.wighet.WindowPosX, ini.wighet.WindowPosY = vec.x, vec.y

и зачем ты пытаешься сохранить / установить позицию виджета, если она и так записана в конфиг mimgui (для любого окна работает)?
Посмотреть вложение 240233
2-ое я пофиксил, не успел обновить тут код