Уведомление mimgui

S1r1k

Новичок
Автор темы
12
0
Привет пользователи Blasthk!
Хочу написать мини скрипт так просто развивать свои навыки, но есть одна проблема что никак не могу нормально написать код на уведомление справа снизу экрана
(додумать не могу)
Я конечно не хочу писать 'ыыы написи то написи эта' но прошу кинуть какой-нибудь пример а дальше я сам разберусь.


Заранее спасибо
 
Последнее редактирование:
Решение

kinamaster22

Известный
1,154
169
Lua:
local imgui = require 'mimgui'
local showMessage = false
local startTime = 0
local alpha = 0
local fadeDuration = 0.5
local displayDuration = 3
local windowWidth, windowHeight = 300, 100
local soundPath = 'moonloader/sounds/notification.mp3'

imgui.OnFrame(function() return showMessage and not isGamePaused() end, function()
    local screenWidth, screenHeight = getScreenResolution()
    imgui.SetNextWindowPos(imgui.ImVec2(screenWidth - windowWidth - 20, screenHeight - windowHeight - 20), imgui.Cond.Always, imgui.ImVec2(1, 1))
    imgui.SetNextWindowSize(imgui.ImVec2(windowWidth, windowHeight), imgui.Cond.Always)
    imgui.PushStyleVarFloat(imgui.StyleVar.Alpha, alpha)
    imgui.Begin('Notification', nil, imgui.WindowFlags.NoMove + imgui.WindowFlags.NoDecoration + imgui.WindowFlags.AlwaysAutoResize)
    imgui.Text('Привет')
    imgui.End()
    imgui.PopStyleVar()
end).HideCursor = true

function playSound(path)
    local handle = loadAudioStream(path)
    if handle then
        setAudioStreamState(handle, 1)
    else
        print("Ошибка: Невозможно загрузить звук по пути " .. path)
    end
end

function showTemporaryMessage()
    showMessage = true
    startTime = os.clock()
    playSound(soundPath)
end

function main()
    if not doesFileExist(soundPath) then
        print("Файл звука не найден: " .. soundPath)
    end

    while true do
        wait(0)
        if showMessage then
            local elapsed = os.clock() - startTime

            if elapsed < fadeDuration then
                alpha = elapsed / fadeDuration
            elseif elapsed < displayDuration - fadeDuration then
                alpha = 1
            elseif elapsed < displayDuration then
                alpha = 1 - (elapsed - (displayDuration - fadeDuration)) / fadeDuration
            else
                showMessage = false
                alpha = 0
            end
        end
    end
end

sampRegisterChatCommand('showmsg', function()
    showTemporaryMessage()
end)
 
  • Эм
Реакции: влад динозавр

Emilia<3

Участник
11
3
 
  • Нравится
Реакции: kinamaster22

S1r1k

Новичок
Автор темы
12
0
Спасибо! Ты друг)

Я только что увидел что там используется imgui а мне нужно mimgui, есть варик какойто другой?
 
Последнее редактирование:

S1r1k

Новичок
Автор темы
12
0
Это для MimGui, просто просто пишется imgui.что-то там(не знаю почему)
Оке кстати там еще одна проблема появилась, то что она именно в самом OnFrame делает уведомление, а мне надо чтобы было на экране (извиняюсь за качество и фпс гифки)
1223.gif
 

Emilia<3

Участник
11
3

S1r1k

Новичок
Автор темы
12
0
Создай новый фрейм и все
Ммм не совсем понял, идиот я.
upd: сделал новый фрейм но типо мне нужно на экране чтобы было, хотя я хз как эт написать и реализовать.... повторюсь идиот я сори за мучение нервов
 
Последнее редактирование:

kinamaster22

Известный
1,154
169
Ммм не совсем понял, идиот я.
upd: сделал новый фрейм но типо мне нужно на экране чтобы было, хотя я хз как эт написать и реализовать.... повторюсь идиот я сори за мучение нервов
Такое типо?
Lua:
function ShowMessage(text, title, style)
    ffi.cdef [[
        int MessageBoxA(
            void* hWnd,
            const char* lpText,
            const char* lpCaption,
            unsigned int uType
        );
    ]]
    local hwnd = ffi.cast('void*', readMemory(0x00C8CF88, 4, false))
    ffi.C.MessageBoxA(hwnd, text,  title, style and (style + 0x50000) or 0x50000)
end

Это на Винду уведомление если что
 

S1r1k

Новичок
Автор темы
12
0
Такое типо?
Lua:
function ShowMessage(text, title, style)
    ffi.cdef [[
        int MessageBoxA(
            void* hWnd,
            const char* lpText,
            const char* lpCaption,
            unsigned int uType
        );
    ]]
    local hwnd = ffi.cast('void*', readMemory(0x00C8CF88, 4, false))
    ffi.C.MessageBoxA(hwnd, text,  title, style and (style + 0x50000) or 0x50000)
end

Это на Винду уведомление если что
типо смотри я нажимаю на кнопку например 'Написать привет' кнопка выполняет свою функцию но еще чтобы появлялось уведомление что она выполнена в игре, типо в экране а не в OnFrame (я хз честно как подробно объяснить)
 

kinamaster22

Известный
1,154
169
типо смотри я нажимаю на кнопку например 'Написать привет' кнопка выполняет свою функцию но еще чтобы появлялось уведомление что она выполнена в игре, типо в экране а не в OnFrame (я хз честно как подробно объяснить)
Если тебе типо такого надо, то я не нашел на mimgui https://www.blast.hk/threads/21619/
 

Kenshi.

Известный
314
149
 
  • Влюблен
  • Нравится
Реакции: Emilia<3 и kinamaster22

Emilia<3

Участник
11
3
Оо, хотела это же скинуть, но увы не нашла