- 59
- 13
- Версия MoonLoader
- .026-beta
Короче дела такие, решил сделать первый скрипт с иконками. Но столкнулся с тем, что теперь иногда(довольно часто) крашит игру при вызове меню скрипта.
Также довольно часто происходит такое, что вместо всех букв/иконок рисуются белые квадраты. От этого помогает только полный релог в игру
В скрипте используются несколько шрифтов(разные размеры + иконки)
Также довольно часто происходит такое, что вместо всех букв/иконок рисуются белые квадраты. От этого помогает только полный релог в игру
В скрипте используются несколько шрифтов(разные размеры + иконки)
Пример кода:
imgui.OnInitialize(function()
local glyph_ranges = imgui.GetIO().Fonts:GetGlyphRangesCyrillic()
local path = getFolderPath(0x14) .. '\\trebucbd.ttf'
imgui.GetIO().Fonts:Clear()
imgui.GetIO().Fonts:AddFontFromFileTTF(path, 15.0, nil, glyph_ranges)
-- Icons --
imgui.GetIO().IniFilename = nil
local config = imgui.ImFontConfig()
config.MergeMode = true
config.PixelSnapH = true
iconRanges = imgui.new.ImWchar[3](icons.min_range, icons.max_range, 0)
MIMGUI_FONT[14] = imgui.GetIO().Fonts:AddFontFromFileTTF(path, 14.0, nil, glyph_ranges)
MIMGUI_FONT[18] = imgui.GetIO().Fonts:AddFontFromFileTTF(path, 18.0, nil, glyph_ranges)
MIMGUI_FONT[25] = imgui.GetIO().Fonts:AddFontFromFileTTF(path, 25.0, nil, glyph_ranges)
MIMGUI_FONT[40] = imgui.GetIO().Fonts:AddFontFromFileTTF(path, 40.0, nil, glyph_ranges)
MIMGUI_FONT["icon"] = imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(icons.get_font_data_base85('solid'), 14, nil, iconRanges)
end)
imgui.OnFrame(function() return editCheckpointNamePopUp[0] end, function()
imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.Begin(" ", editCheckpointNamePopUp, imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.AlwaysAutoResize + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
imgui.PushFont(MIMGUI_FONT[18])
imgui.TextColoredRGB("{00FF00}Enter new checkpoint name")
imgui.Spacing()
imgui.PushItemWidth(150)
imgui.InputTextWithHint(" Checkpoint name", "Enter new name", editNameBuf, ffi.sizeof(editNameBuf))
imgui.Spacing()
imgui.SetCursorPosX(imgui.GetWindowWidth() / 3.2);
imgui.PushFont(MIMGUI_FONT["icon"])
imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(0, 1.0, 0, 0.65))
if imgui.Button(icons('floppy_disk').."##save_map_name", imgui.ImVec2(50, 25)) then
local tempName = u8:decode(ffi.string(editNameBuf))
if tempName == "" or tempName == " " then
notfError("Empty input")
else
changeCheckpointName(editCheckpointIndex, tempName)
tempName = ""
editNameBuf = new.char[255]()
editCheckpointIndex = 0
editCheckpointNamePopUp[0] = false
mainMenu[0] = true
end
end
imgui.PopStyleColor(1)
imgui.SameLine(nil, 5)
imgui.PushStyleColor(imgui.Col.Button, imgui.ImVec4(1.0, 0, 0, 0.65))
if imgui.Button(icons('xmark').."##cancel_map_name", imgui.ImVec2(50, 25)) then
tempName = ""
editNameBuf = new.char[255]()
editCheckpointNamePopUp[0] = false
mainMenu[0] = true
end
imgui.PopStyleColor(1)
imgui.PopFont()
imgui.Spacing()
imgui.PopFont()
imgui.End()
end)