SA:MP Как изменять размер окна в зависимости от длины текста?

!casecat

Новичок
Автор темы
3
1
Столкнулся с проблемой, хотел написать некую "вотермарку" и получилось такое:
1736785518156.png

Никнейм намного длиннее окна с "вотермаркой" и хотелось бы узнать, можно ли изменять размер окна в зависимости от длины текста в MIMGUI.

Заранее спасибо!

код "вотермарки":
imgui.OnFrame(function() return watermarkstate[0] end, function(player)
    local nickname = sampGetPlayerNickname(id)
    imgui.SetNextWindowPos(imgui.ImVec2(0,0), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(150, 30), imgui.Cond.Always)
    imgui.Begin(u8'cheapest WATERMARK', watermarkstate, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoMove)
    imgui.Text(u8"Защита Руси :: " .. nickname)
    imgui.End()
end)
 

!casecat

Новичок
Автор темы
3
1
Какой от этого смысл? Отрицательное значение для окна. Скорее всего САМП просто крашнет.

Для этого есть специальный флаг - imgui.WindowFlags.AlwaysAutoResize
Добавил, но оно не работает, скорее всего я криворукий.
1736788089647.png

Код:
imgui.OnFrame(function() return watermarkstate[0] end, function(player)
    local nickname = sampGetPlayerNickname(id)
    imgui.SetNextWindowPos(imgui.ImVec2(0,0), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(100, 30), imgui.Cond.Always)
    imgui.Begin(u8'cheapest WATERMARK', watermarkstate, imgui.WindowFlags.AlwaysAutoResize + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoMove)
    imgui.Text(u8"Защита Руси :: " .. nickname .. " :: " .. os.date('%H:%M:%S'))
    imgui.End()
end)
 
Последнее редактирование:

chapo

чопа сребдс // @moujeek
Модератор
8,986
11,800
Какой от этого смысл? Отрицательное значение для окна. Скорее всего САМП просто крашнет.


Добавил, но оно не работает, скорее всего я криворукий.
Посмотреть вложение 261685
Код:
imgui.OnFrame(function() return watermarkstate[0] end, function(player)
    local nickname = sampGetPlayerNickname(id)
    imgui.SetNextWindowPos(imgui.ImVec2(0,0), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(100, 30), imgui.Cond.Always)
    imgui.Begin(u8'cheapest WATERMARK', watermarkstate, imgui.WindowFlags.AlwaysAutoResize + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoMove)
    imgui.Text(u8"Защита Руси :: " .. nickname .. " :: " .. os.date('%H:%M:%S'))
    imgui.End()
end)
убери 4 строку