Помогите найти ошибку. ImGui, шрифты.

A S K I T

Активный
Автор темы
200
69
Версия MoonLoader
.026-beta
Доброе утро. Возникла проблема со шрифтами, в рандомный момент крашит самп с ошибкой:

1633327333188.png


Как мне написали, это из-за шрифтов. Но что тут не так я понять не могу, вроде всё работает, почему именно в рандомный момент крашит - не понятно, ведь никаких особенных функций не вызывается.

Lua:
function imgui.BeforeDrawFrame()
    local icon_font = nil

    if icon_font == nil then
        local icon_glyph_ranges = imgui.ImGlyphRanges({ icon.min_range, icon.max_range })
        local font_config = imgui.ImFontConfig()
        font_config.MergeMode = true
        
        icon_font = imgui.GetIO().Fonts:AddFontFromFileTTF('moonloader/resource/fonts/fa-solid-900.ttf', 13.0, font_config, icon_glyph_ranges)
    end
    if font == nil then
        font = imgui.GetIO().Fonts:AddFontFromFileTTF(getFolderPath(0x14)..'\\trebucbd.ttf', cfg.settings.font_size, nil, imgui.GetIO().Fonts:GetGlyphRangesCyrillic())
    end
end
 

Aniki

🐰
Администратор
1,228
1,558
Доброе утро. Возникла проблема со шрифтами, в рандомный момент крашит самп с ошибкой:

Посмотреть вложение 116733

Как мне написали, это из-за шрифтов. Но что тут не так я понять не могу, вроде всё работает, почему именно в рандомный момент крашит - не понятно, ведь никаких особенных функций не вызывается.

Lua:
function imgui.BeforeDrawFrame()
    local icon_font = nil

    if icon_font == nil then
        local icon_glyph_ranges = imgui.ImGlyphRanges({ icon.min_range, icon.max_range })
        local font_config = imgui.ImFontConfig()
        font_config.MergeMode = true
     
        icon_font = imgui.GetIO().Fonts:AddFontFromFileTTF('moonloader/resource/fonts/fa-solid-900.ttf', 13.0, font_config, icon_glyph_ranges)
    end
    if font == nil then
        font = imgui.GetIO().Fonts:AddFontFromFileTTF(getFolderPath(0x14)..'\\trebucbd.ttf', cfg.settings.font_size, nil, imgui.GetIO().Fonts:GetGlyphRangesCyrillic())
    end
end
Зачем ты объявляешь

Lua:
local icon_font = nil
Внутри тела BeforeDrawFrame? Получается у тебя перед каждым фреймом зануляется icon_font и заново грузится, мб в этом проблема, плюс он не виден глобально, и возможно при подгрузе иконки получается падение скрипта
 

A S K I T

Активный
Автор темы
200
69
Зачем ты объявляешь

Lua:
local icon_font = nil
Внутри тела BeforeDrawFrame? Получается у тебя перед каждым фреймом зануляется icon_font и заново грузится, мб в этом проблема
Я не придал этому значения, вроде и так и так результат будет один. Поставил её на всякий случай перед main()
Но фигня в том что сейчас пытаюсь попытаться исправить ошибку, а она не появляется, хотя я ещё ничего не делал))
 

Rice.

Известный
Модератор
1,756
1,626
Я не придал этому значения, вроде и так и так результат будет один. Поставил её на всякий случай перед main()
Но фигня в том что сейчас пытаюсь попытаться исправить ошибку, а она не появляется, хотя я ещё ничего не делал))
Попробуй изменить немного код:
Lua:
local fa_font = nil
local fa_afont = nil
local fa_glyph_ranges = imgui.ImGlyphRanges({ fa.min_range, fa.max_range })
function imgui.BeforeDrawFrame()
    if fa_font == nil then
        local font_config = imgui.ImFontConfig()
        font_config.MergeMode = true
        fa_font = imgui.GetIO().Fonts:AddFontFromFileTTF('moonloader/resource/fonts/fa-solid-900.ttf', 16.5, font_config, fa_glyph_ranges)
    end
    if fa_afont == nil then
        fa_afont = imgui.GetIO().Fonts:AddFontFromFileTTF(getFolderPath(0x14) .. '\\trebucbd.ttf', 16.5, nil, imgui.GetIO().Fonts:GetGlyphRangesCyrillic()) -- вместо 30 любой нужный размер
    end
end