При открытие имгуи окна крашит игру

Moorell

Участник
Автор темы
55
12
Начал делать новый скрипт на луа, использую Mimgui.
Столкнулся с проблемой, после открытия любого имгуи окна, через время крашит самп, а если в него запихнуть какой то текст, то крашит сразу.
zg2RJAJ.png
 

Moorell

Участник
Автор темы
55
12
ну ты бы сам код прикрепил, а не окно краша
lua:
stats_window = imgui.OnFrame(function() return stats[0] and isValidMimguiStatus() end,
function(player)
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(600, 300), imgui.Cond.FirstUseEver)
    imgui.Begin("stats", Window, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoScrollbar + imgui.WindowFlags.NoScrollWithMouse + imgui.WindowFlags.NoBackground)
        local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
        local nikname = sampGetPlayerNickname(id)
        local size = imgui.GetWindowSize()
        do
            local dl = imgui.GetWindowDrawList()
            local p = imgui.GetCursorScreenPos()
            imgui.SetCursorPos(imgui.ImVec2(0, 0))
            dl:AddRectFilled(p, imgui.ImVec2(p.x + size.x, p.y + size.y), imgui.GetColorU32Vec4(imgui.ImVec4(0.13, 0.16, 0.2, 0.8)), 0, 1+4)
            imgui.SetCursorPos(imgui.ImVec2(4, 45))
            local p = imgui.GetCursorScreenPos()
            dl:AddRectFilled(p, imgui.ImVec2(p.x + size.x, p.y + size.y), imgui.GetColorU32Vec4(imgui.ImVec4(0.1, 0.13, 0.17, 1.00)), 0, 2+8)
        end
        imgui.SetCursorPos(imgui.ImVec2(10, 52))
        imgui.BeginChild("title", imgui.ImVec2(400, 300), false)
        if active[1] ~= 0 then
            imgui.TextColoredRGB(u8("Имя: " .. sampGetPlayerNickname(IdStatusUser) .. "[" .. IdStatusUser .. "]"))
            imgui.TextColoredRGB(u8("Ранг: " .. rankNamebyId[tonumber(active[3])] .. "[" .. active[3] .. "]"))
            imgui.TextColoredRGB(u8("Отметки за день / за неделю: " .. active[1] .. " / " .. active[2]))
            imgui.TextColoredRGB(u8("Последняя активность: " .. active[4]))
        end
        if #infoPlayer > 0 then
            imgui.SeparatorFix(390, 160)
            imgui.NewLine()
            for i, v in ipairs(infoPlayer) do
                if #infoPlayer == i then
                    imgui.TextColoredRGB(u8("Кто: " .. v[1]))
                    imgui.TextColoredRGB(u8("Действие: " .. v[3]))
                end
            end
        end
        imgui.EndChild()
        imgui.SetCursorPos(imgui.ImVec2(18, 12))
        imgui.PushFont(Font[25])
        imgui.TextColoredRGB(u8("Статистика бойца"))
        imgui.PopFont()
        imgui.SetCursorPos(imgui.ImVec2(548, 10))
       
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(1,1,1,0))
        imgui.PushFont(fa_font)
        if imgui.AnimButton("ESC##11") then
            stats[0] = false
        end
        imgui.PopFont()
        imgui.PopStyleColor(1)
       
    imgui.End()
end)

UP: От содержимого окна мало чего меняется, кроме времени до краша, даже запуская чистое окно, всеровно краш
 

MLycoris

На вид оружие массового семяизвержения
Проверенный
1,993
2,186
lua:
stats_window = imgui.OnFrame(function() return stats[0] and isValidMimguiStatus() end,
function(player)
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(600, 300), imgui.Cond.FirstUseEver)
    imgui.Begin("stats", Window, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoScrollbar + imgui.WindowFlags.NoScrollWithMouse + imgui.WindowFlags.NoBackground)
        local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
        local nikname = sampGetPlayerNickname(id)
        local size = imgui.GetWindowSize()
        do
            local dl = imgui.GetWindowDrawList()
            local p = imgui.GetCursorScreenPos()
            imgui.SetCursorPos(imgui.ImVec2(0, 0))
            dl:AddRectFilled(p, imgui.ImVec2(p.x + size.x, p.y + size.y), imgui.GetColorU32Vec4(imgui.ImVec4(0.13, 0.16, 0.2, 0.8)), 0, 1+4)
            imgui.SetCursorPos(imgui.ImVec2(4, 45))
            local p = imgui.GetCursorScreenPos()
            dl:AddRectFilled(p, imgui.ImVec2(p.x + size.x, p.y + size.y), imgui.GetColorU32Vec4(imgui.ImVec4(0.1, 0.13, 0.17, 1.00)), 0, 2+8)
        end
        imgui.SetCursorPos(imgui.ImVec2(10, 52))
        imgui.BeginChild("title", imgui.ImVec2(400, 300), false)
        if active[1] ~= 0 then
            imgui.TextColoredRGB(u8("Имя: " .. sampGetPlayerNickname(IdStatusUser) .. "[" .. IdStatusUser .. "]"))
            imgui.TextColoredRGB(u8("Ранг: " .. rankNamebyId[tonumber(active[3])] .. "[" .. active[3] .. "]"))
            imgui.TextColoredRGB(u8("Отметки за день / за неделю: " .. active[1] .. " / " .. active[2]))
            imgui.TextColoredRGB(u8("Последняя активность: " .. active[4]))
        end
        if #infoPlayer > 0 then
            imgui.SeparatorFix(390, 160)
            imgui.NewLine()
            for i, v in ipairs(infoPlayer) do
                if #infoPlayer == i then
                    imgui.TextColoredRGB(u8("Кто: " .. v[1]))
                    imgui.TextColoredRGB(u8("Действие: " .. v[3]))
                end
            end
        end
        imgui.EndChild()
        imgui.SetCursorPos(imgui.ImVec2(18, 12))
        imgui.PushFont(Font[25])
        imgui.TextColoredRGB(u8("Статистика бойца"))
        imgui.PopFont()
        imgui.SetCursorPos(imgui.ImVec2(548, 10))
      
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(1,1,1,0))
        imgui.PushFont(fa_font)
        if imgui.AnimButton("ESC##11") then
            stats[0] = false
        end
        imgui.PopFont()
        imgui.PopStyleColor(1)
      
    imgui.End()
end)

UP: От содержимого окна мало чего меняется, кроме времени до краша, даже запуская чистое окно, всеровно краш
это весь код? тебе его случайно не ChatGPT писал?
 

Moorell

Участник
Автор темы
55
12
извини, в последнее время много кто кидал его творения
Да я видел его творения, он использует несуществующие библиотеки и т д.
Но а вот почему мой код крашит. я вообще беспонятия.
 

MLycoris

На вид оружие массового семяизвержения
Проверенный
1,993
2,186
Да я видел его творения, он использует несуществующие библиотеки и т д.
Но а вот почему мой код крашит. я вообще беспонятия.
Ну по-моему это просто фарш. У тебя используется то, что не встроенно в мимгуи и под это надо писать функции. Под те, что есть, у тебя не выделен буфер, не понятно как вызывается это окно

Можешь работать по этому шаблону мимгуи и по тихоньку вставлять что тебе надо
Lua:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8

local renderWindow = imgui.new.bool()

imgui.OnFrame(function() return renderWindow[0] end,
    function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(500,500), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(245, 280), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'Основное', renderWindow, imgui.WindowFlags.NoResize)
        imgui.End()
    end
)

function main()
    sampRegisterChatCommand('cmd', function() renderWindow[0] = not renderWindow[0] end)
    wait(-1)
end
 

Andrinall

Известный
702
518
Или попробуй сделать так.
Lua:
stats_window = imgui.OnFrame(function() return stats[0] and isValidMimguiStatus() end, function()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(600, 300), imgui.Cond.FirstUseEver)
    imgui.Begin("stats", Window, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoScrollbar + imgui.WindowFlags.NoScrollWithMouse + imgui.WindowFlags.NoBackground)
        local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
        local nikname = sampGetPlayerNickname(id)
        local size = imgui.GetWindowSize()

        do
            local dl = imgui.GetWindowDrawList()
            local p = imgui.GetCursorScreenPos()
            imgui.SetCursorPos(imgui.ImVec2(0, 0))
            dl:AddRectFilled(p, imgui.ImVec2(p.x + size.x, p.y + size.y), imgui.GetColorU32Vec4(imgui.ImVec4(0.13, 0.16, 0.2, 0.8)), 0, 1+4)
            imgui.SetCursorPos(imgui.ImVec2(4, 45))
            local p = imgui.GetCursorScreenPos()
            dl:AddRectFilled(p, imgui.ImVec2(p.x + size.x, p.y + size.y), imgui.GetColorU32Vec4(imgui.ImVec4(0.1, 0.13, 0.17, 1.00)), 0, 2+8)
        end

        imgui.SetCursorPos(imgui.ImVec2(10, 52))
        imgui.BeginChild("title", imgui.ImVec2(400, 300), false)

        if active[1] ~= 0 then
            imgui.TextColoredRGB((u8"Имя: %s[%d]"):format(sampGetPlayerNickname(IdStatusUser), IdStatusUser))
            imgui.TextColoredRGB((u8"Ранг: %s[%s]"):format(rankNamebyId[tonumber(active[3])], active[3]))
            imgui.TextColoredRGB((u8"Отметки за день / за неделю: %s / %s"):format(active[1], active[2]))
            imgui.TextColoredRGB((u8"Последняя активность: %s"):format(active[4]))
        end

        if #infoPlayer > 0 then
            imgui.SeparatorFix(390, 160)
            imgui.NewLine()
            for i, v in ipairs(infoPlayer) do
                if #infoPlayer == i then
                    imgui.TextColoredRGB((u8"Кто: %s"):format(v[1]))
                    imgui.TextColoredRGB((u8"Действие: %s"):format(v[3]))
                end
            end
        end
        imgui.EndChild()
        imgui.SetCursorPos(imgui.ImVec2(18, 12))
        imgui.PushFont(Font[25])
        imgui.TextColoredRGB(u8("Статистика бойца"))
        imgui.PopFont()
        imgui.SetCursorPos(imgui.ImVec2(548, 10))
       
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(1,1,1,0))
        imgui.PushFont(fa_font)
        if imgui.AnimButton("ESC##11") then
            stats[0] = false
        end
        imgui.PopFont()
        imgui.PopStyleColor(1)
       
    imgui.End()
end)
 

Moorell

Участник
Автор темы
55
12
Или попробуй сделать так.
Lua:
stats_window = imgui.OnFrame(function() return stats[0] and isValidMimguiStatus() end, function()
    imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    imgui.SetNextWindowSize(imgui.ImVec2(600, 300), imgui.Cond.FirstUseEver)
    imgui.Begin("stats", Window, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoScrollbar + imgui.WindowFlags.NoScrollWithMouse + imgui.WindowFlags.NoBackground)
        local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
        local nikname = sampGetPlayerNickname(id)
        local size = imgui.GetWindowSize()

        do
            local dl = imgui.GetWindowDrawList()
            local p = imgui.GetCursorScreenPos()
            imgui.SetCursorPos(imgui.ImVec2(0, 0))
            dl:AddRectFilled(p, imgui.ImVec2(p.x + size.x, p.y + size.y), imgui.GetColorU32Vec4(imgui.ImVec4(0.13, 0.16, 0.2, 0.8)), 0, 1+4)
            imgui.SetCursorPos(imgui.ImVec2(4, 45))
            local p = imgui.GetCursorScreenPos()
            dl:AddRectFilled(p, imgui.ImVec2(p.x + size.x, p.y + size.y), imgui.GetColorU32Vec4(imgui.ImVec4(0.1, 0.13, 0.17, 1.00)), 0, 2+8)
        end

        imgui.SetCursorPos(imgui.ImVec2(10, 52))
        imgui.BeginChild("title", imgui.ImVec2(400, 300), false)

        if active[1] ~= 0 then
            imgui.TextColoredRGB((u8"Имя: %s[%d]"):format(sampGetPlayerNickname(IdStatusUser), IdStatusUser))
            imgui.TextColoredRGB((u8"Ранг: %s[%s]"):format(rankNamebyId[tonumber(active[3])], active[3]))
            imgui.TextColoredRGB((u8"Отметки за день / за неделю: %s / %s"):format(active[1], active[2]))
            imgui.TextColoredRGB((u8"Последняя активность: %s"):format(active[4]))
        end

        if #infoPlayer > 0 then
            imgui.SeparatorFix(390, 160)
            imgui.NewLine()
            for i, v in ipairs(infoPlayer) do
                if #infoPlayer == i then
                    imgui.TextColoredRGB((u8"Кто: %s"):format(v[1]))
                    imgui.TextColoredRGB((u8"Действие: %s"):format(v[3]))
                end
            end
        end
        imgui.EndChild()
        imgui.SetCursorPos(imgui.ImVec2(18, 12))
        imgui.PushFont(Font[25])
        imgui.TextColoredRGB(u8("Статистика бойца"))
        imgui.PopFont()
        imgui.SetCursorPos(imgui.ImVec2(548, 10))
      
        imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(1,1,1,0))
        imgui.PushFont(fa_font)
        if imgui.AnimButton("ESC##11") then
            stats[0] = false
        end
        imgui.PopFont()
        imgui.PopStyleColor(1)
      
    imgui.End()
end)
Таже история
 

Andrinall

Известный
702
518
после открытия любого имгуи окна, через время крашит самп

Ну тогда, как вариант, переустанови библиотеки или целиком с муном.
Авось :)

У меня как-то раз был случай, когда я чёт там в cdefs.lua написал лишнего пока куда-то пытался печатать и не заметил, закрыл с сохранением и потом думал "что за хрень?".