[Mimgui] подсказка при наведении мыши

Dewize

Известный
Автор темы
439
89
Версия MoonLoader
.027.0-preview
Есть у кого красивые функции, чтоб глаза не умирали от кринжа и имело кд появления, что то такого типо
 
Решение

а лол я хз, когда 3 в ряд ставишь подсказок. То текст чёрный, а по отдельности работает

аф:
--===== [ 3 кликабельнные иконки ] =====--
             imgui.SetCursorPos(imgui.ImVec2(45, 195)) -- Ставим положение для иконки скрипта
             if imgui.InvisButton(fa('ARROWS_ROTATE'), imgui.ImVec2(30, 30)) then -- Создаём невидемую кнопку в которой будет иконка "ARROWS_ROTATE" и далаем её рзмер 30, 30.
                 lua_thread.create(function() -- Фигня чтоб работала задержка
                    sampAddChatMessage(tag.. 'Начат процесс перезагрузки скрипта!', -1) -- Для красоты
                    window_main[0] = false -- Для красоты
                    wait(2100) -- Красота...

percheklii

Известный
749
279
Есть у кого красивые функции, чтоб глаза не умирали от кринжа и имело кд появления, что то такого типо
ты про это?
1688587216533.png

Lua:
function imgui.TextQuestion(text)
    imgui.TextDisabled("(?)")
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.PushTextWrapPos(450)
        imgui.TextUnformatted(text)
        imgui.PopTextWrapPos()
        imgui.EndTooltip()
    end
end

--где-то в mimgui
imgui.TextQuestion("Hello, World")
 

Dewize

Известный
Автор темы
439
89
ты про это?
Посмотреть вложение 206960
Lua:
function imgui.TextQuestion(text)
    imgui.TextDisabled("(?)")
    if imgui.IsItemHovered() then
        imgui.BeginTooltip()
        imgui.PushTextWrapPos(450)
        imgui.TextUnformatted(text)
        imgui.PopTextWrapPos()
        imgui.EndTooltip()
    end
end

--где-то в mimgui
imgui.TextQuestion("Hello, World")
Да, ток как сделать, чтоб оно плавно появлялось через определённое время
 

percheklii

Известный
749
279
Да, ток как сделать, чтоб оно плавно появлялось через определённое время
Lua:
local tooltipAlpha = 0.0
local tooltipFadeSpeed = 0.02

function imgui.TextQuestion(text)
    imgui.TextDisabled('(?)')
    if imgui.IsItemHovered() then
        if tooltipAlpha < 1.0 then
            tooltipAlpha = math.min(tooltipAlpha + tooltipFadeSpeed, 1.0)
        end
    else
        if tooltipAlpha > 0.0 then
            tooltipAlpha = math.max(tooltipAlpha - tooltipFadeSpeed, 0.0)
        end
    end

    if tooltipAlpha > 0.0 then
        imgui.BeginTooltip()
        imgui.PushStyleColor(imgui.Col.Text, imgui.ImVec4(1.0, 1.0, 1.0, tooltipAlpha))
        imgui.PushTextWrapPos(450)
        imgui.TextUnformatted(text)
        imgui.PopTextWrapPos()
        imgui.PopStyleColor()
        imgui.EndTooltip()
    end
end
 

Dewize

Известный
Автор темы
439
89
Lua:
local tooltipAlpha = 0.0
local tooltipFadeSpeed = 0.02

function imgui.TextQuestion(text)
    imgui.TextDisabled('(?)')
    if imgui.IsItemHovered() then
        if tooltipAlpha < 1.0 then
            tooltipAlpha = math.min(tooltipAlpha + tooltipFadeSpeed, 1.0)
        end
    else
        if tooltipAlpha > 0.0 then
            tooltipAlpha = math.max(tooltipAlpha - tooltipFadeSpeed, 0.0)
        end
    end

    if tooltipAlpha > 0.0 then
        imgui.BeginTooltip()
        imgui.PushStyleColor(imgui.Col.Text, imgui.ImVec4(1.0, 1.0, 1.0, tooltipAlpha))
        imgui.PushTextWrapPos(450)
        imgui.TextUnformatted(text)
        imgui.PopTextWrapPos()
        imgui.PopStyleColor()
        imgui.EndTooltip()
    end
end
1) Текст тёмный 2) Пояснительная бригада нужна
 

percheklii

Известный
749
279
1) Текст тёмный 2) Пояснительная бригада нужна
tooltipAlpha - проверка текущей прозрачности
tooltipFadeSpeed - скорость появления подсказки
и далее оно меняет плавно прозрачность

у меня все норм:
 

MLycoris

Режим чтения
Проверенный
1,831
1,902
 

Dewize

Известный
Автор темы
439
89
01.28.59.750.jpg


это же для имгуи а не мимгуи
 

Dewize

Известный
Автор темы
439
89

а лол я хз, когда 3 в ряд ставишь подсказок. То текст чёрный, а по отдельности работает

аф:
--===== [ 3 кликабельнные иконки ] =====--
             imgui.SetCursorPos(imgui.ImVec2(45, 195)) -- Ставим положение для иконки скрипта
             if imgui.InvisButton(fa('ARROWS_ROTATE'), imgui.ImVec2(30, 30)) then -- Создаём невидемую кнопку в которой будет иконка "ARROWS_ROTATE" и далаем её рзмер 30, 30.
                 lua_thread.create(function() -- Фигня чтоб работала задержка
                    sampAddChatMessage(tag.. 'Начат процесс перезагрузки скрипта!', -1) -- Для красоты
                    window_main[0] = false -- Для красоты
                    wait(2100) -- Красота
                    thisScript():reload() -- Факт
                end)  
            end
            imgui.SameLine() -- Оставляем на линии
            imgui.TextHint(u8'Перезагрузить скрипт.') -- Создаём подсказку

            imgui.SetCursorPosX(85) -- Меняем положение для другой иконки
            if imgui.InvisButton(fa('DOWNLOAD'), imgui.ImVec2(30, 30)) then -- Аналогичнно создаём невидемую кнопку с иконкой ток у же "DOWNLOAD"
                sampAddChatMessage('Проверка наличия обновления...') --СДЕЛАТЬ
            end
            imgui.SameLine() -- Оставляем на лиции
            imgui.TextHint(u8'Установить обновленный скрипт.') -- Снова создаём подсказку

            imgui.SetCursorPosX(130) -- Меняем положение для последней иконки
             if imgui.InvisButton(fa('USER'), imgui.ImVec2(30, 30)) then -- То же самое ток "user"
                    os.execute("start https://vk.com/афыаы")    -- Открывает мою страницу вк
            end
            imgui.TextHint(u8'Связь с автором.') -- Подсказка
              ------------------------------

@chapo , брат где ты когда нужен <3
 
Последнее редактирование:
  • Нравится
Реакции: percheklii

percheklii

Известный
749
279

а лол я хз, когда 3 в ряд ставишь подсказок. То текст чёрный, а по отдельности работает

аф:
--===== [ 3 кликабельнные иконки ] =====--
             imgui.SetCursorPos(imgui.ImVec2(45, 195)) -- Ставим положение для иконки скрипта
             if imgui.InvisButton(fa('ARROWS_ROTATE'), imgui.ImVec2(30, 30)) then -- Создаём невидемую кнопку в которой будет иконка "ARROWS_ROTATE" и далаем её рзмер 30, 30.
                 lua_thread.create(function() -- Фигня чтоб работала задержка
                    sampAddChatMessage(tag.. 'Начат процесс перезагрузки скрипта!', -1) -- Для красоты
                    window_main[0] = false -- Для красоты
                    wait(2100) -- Красота
                    thisScript():reload() -- Факт
                end)
            end
            imgui.SameLine() -- Оставляем на линии
            imgui.TextHint(u8'Перезагрузить скрипт.') -- Создаём подсказку

            imgui.SetCursorPosX(85) -- Меняем положение для другой иконки
            if imgui.InvisButton(fa('DOWNLOAD'), imgui.ImVec2(30, 30)) then -- Аналогичнно создаём невидемую кнопку с иконкой ток у же "DOWNLOAD"
                sampAddChatMessage('Проверка наличия обновления...') --СДЕЛАТЬ
            end
            imgui.SameLine() -- Оставляем на лиции
            imgui.TextHint(u8'Установить обновленный скрипт.') -- Снова создаём подсказку

            imgui.SetCursorPosX(130) -- Меняем положение для последней иконки
             if imgui.InvisButton(fa('USER'), imgui.ImVec2(30, 30)) then -- То же самое ток "user"
                    os.execute("start https://vk.com/афыаы")    -- Открывает мою страницу вк
            end
            imgui.TextHint(u8'Связь с автором.') -- Подсказка
              ------------------------------

@chapo , брат где ты когда нужен <3
Lua:
local tooltipFadeSpeed = 0.02
local tooltipStates = {}

function imgui.TextQuestion(id, text)
    tooltipStates[id] = tooltipStates[id] or { alpha = 0.0 }
    local tooltipState = tooltipStates[id]

    imgui.TextDisabled("(?)")
    if imgui.IsItemHovered() then
        if tooltipState.alpha < 1.0 then
            tooltipState.alpha = math.min(tooltipState.alpha + tooltipFadeSpeed, 1.0)
        end
    else
        if tooltipState.alpha > 0.0 then
            tooltipState.alpha = math.max(tooltipState.alpha - tooltipFadeSpeed, 0.0)
        end
    end

    if tooltipState.alpha > 0.0 then
        imgui.BeginTooltip()
        imgui.PushStyleColor(imgui.Col.Text, imgui.ImVec4(1.0, 1.0, 1.0, tooltipState.alpha))
        imgui.PushTextWrapPos(450)
        imgui.TextUnformatted(text)
        imgui.PopTextWrapPos()
        imgui.PopStyleColor()
        imgui.EndTooltip()
    end
end

--mimgui
imgui.TextQuestion("#1", "Hello, World")
imgui.TextQuestion("#2", "Hello, Everybody")
imgui.TextQuestion("#3", "Hello, Dewize")

терь снова объясни по поводу переменных
Просто сделал таблицу для хранения состояния подсказок. Затем создается состояние для каждого id подсказки
imgui.TextQuestion("#1", "Любой текст") -- #1, это ключ, т.е наш ид, к которому будет потом обращаться, ключ(id) можешь назвать как тебе удобно.
 
Последнее редактирование:
  • Нравится
Реакции: Dewize