- 26
- 22
- Версия MoonLoader
- .026-beta
При открытии окна mimgui, оно открывается совершенно не в том месте и не имеет установленных размеров. Ошибок в логе никаких нет.
Исходник взял с темы https://www.blast.hk/threads/37724/
Исходник взял с темы https://www.blast.hk/threads/37724/
Lua:
script_name("Test")
local imgui, ffi = require 'mimgui', require 'ffi'
local new, str = imgui.new, ffi.string
local vkeys = require 'vkeys'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local faicons = require 'fa-icons'
local bWindow = new.bool()
local colorstyle = 0
--local mainc = imgui.ImVec4(0.0, 0.52, 0.74, 1.0) -- Синий
-- local mainc = imgui.ImVec4(0.0, 0.55, 0.0, 1.0) -- Зеленый
-- local mainc = imgui.ImVec4(0.33, 0.0, 0.74, 1.0) -- Фиолетовый
-- local mainc = imgui.ImVec4(0.75, 0.70, 0.4, 1.0) -- Кукурузный
-- local mainc = imgui.ImVec4(0.92, 0.27, 0.92, 1.0) -- Розовый
local mainc = imgui.ImVec4(0.27, 0.63, 0.62, 1.0) -- Хз чо за цвет, похож не берюзовый
function main()
if not isSampfuncsLoaded() or not isSampLoaded() then return end
while not isSampAvailable() do wait(100) end
while not isSampAvailable() do
wait(1000)
end
while true do
wait(0)
if wasKeyPressed(vkeys.VK_L) then
bWindow[0] = not bWindow[0]
end
end
end
function apply_custom_style()
local style = imgui.GetStyle()
local colors = style.Colors
local clr = imgui.Col
local ImVec4 = imgui.ImVec4
style.WindowRounding = 0.5
style.WindowTitleAlign = imgui.ImVec2(0.5, 0.5)
style.FrameRounding = 1.0
style.ItemSpacing = imgui.ImVec2(4.0, 4.0)
style.ScrollbarSize = 13.0
style.ScrollbarRounding = 0
style.GrabMinSize = 8.0
style.GrabRounding = 1.0
style.WindowBorderSize = 0.0
style.WindowPadding = imgui.ImVec2(4.0, 4.0)
style.FramePadding = imgui.ImVec2(2.5, 3.5)
style.ButtonTextAlign = imgui.ImVec2(0.5, 0.35)
colors[clr.Text] = ImVec4(1.00, 1.00, 1.00, 1.00)
colors[clr.TextDisabled] = ImVec4(0.7, 0.7, 0.7, 1.0)
colors[clr.WindowBg] = ImVec4(0.07, 0.07, 0.07, 1.0)
colors[clr.PopupBg] = ImVec4(0.08, 0.08, 0.08, 0.94)
colors[clr.Border] = ImVec4(mainc.x, mainc.y, mainc.z, 0.4)
colors[clr.BorderShadow] = ImVec4(0.00, 0.00, 0.00, 0.00)
colors[clr.FrameBg] = ImVec4(mainc.x, mainc.y, mainc.z, 0.7)
colors[clr.FrameBgHovered] = ImVec4(mainc.x, mainc.y, mainc.z, 0.4)
colors[clr.FrameBgActive] = ImVec4(mainc.x, mainc.y, mainc.z, 0.9)
colors[clr.TitleBg] = ImVec4(mainc.x, mainc.y, mainc.z, 1.0)
colors[clr.TitleBgActive] = ImVec4(mainc.x, mainc.y, mainc.z, 1.0)
colors[clr.TitleBgCollapsed] = ImVec4(mainc.x, mainc.y, mainc.z, 0.79)
colors[clr.MenuBarBg] = ImVec4(0.14, 0.14, 0.14, 1.00)
colors[clr.ScrollbarBg] = ImVec4(0.02, 0.02, 0.02, 0.53)
colors[clr.ScrollbarGrab] = ImVec4(mainc.x, mainc.y, mainc.z, 0.8)
colors[clr.ScrollbarGrabHovered] = ImVec4(0.41, 0.41, 0.41, 1.00)
colors[clr.ScrollbarGrabActive] = ImVec4(0.51, 0.51, 0.51, 1.00)
colors[clr.CheckMark] = ImVec4(mainc.x + 0.13, mainc.y + 0.13, mainc.z + 0.13, 1.00)
colors[clr.SliderGrab] = ImVec4(0.28, 0.28, 0.28, 1.00)
colors[clr.SliderGrabActive] = ImVec4(0.35, 0.35, 0.35, 1.00)
colors[clr.Button] = ImVec4(mainc.x, mainc.y, mainc.z, 0.8)
colors[clr.ButtonHovered] = ImVec4(mainc.x, mainc.y, mainc.z, 0.63)
colors[clr.ButtonActive] = ImVec4(mainc.x, mainc.y, mainc.z, 1.0)
colors[clr.Header] = ImVec4(mainc.x, mainc.y, mainc.z, 0.6)
colors[clr.HeaderHovered] = ImVec4(mainc.x, mainc.y, mainc.z, 0.43)
colors[clr.HeaderActive] = ImVec4(mainc.x, mainc.y, mainc.z, 0.8)
colors[clr.Separator] = colors[clr.Border]
colors[clr.SeparatorHovered] = ImVec4(0.26, 0.59, 0.98, 0.78)
colors[clr.SeparatorActive] = ImVec4(0.26, 0.59, 0.98, 1.00)
colors[clr.ResizeGrip] = ImVec4(mainc.x, mainc.y, mainc.z, 0.8)
colors[clr.ResizeGripHovered] = ImVec4(mainc.x, mainc.y, mainc.z, 0.63)
colors[clr.ResizeGripActive] = ImVec4(mainc.x, mainc.y, mainc.z, 1.0)
colors[clr.PlotLines] = ImVec4(0.61, 0.61, 0.61, 1.00)
colors[clr.PlotLinesHovered] = ImVec4(1.00, 0.43, 0.35, 1.00)
colors[clr.PlotHistogram] = ImVec4(0.90, 0.70, 0.00, 1.00)
colors[clr.PlotHistogramHovered] = ImVec4(1.00, 0.60, 0.00, 1.00)
colors[clr.TextSelectedBg] = ImVec4(0.26, 0.59, 0.98, 0.35)
colors[clr.Tab] = ImVec4(mainc.x, mainc.y, mainc.z, 0.8)
colors[clr.TabHovered] = ImVec4(mainc.x, mainc.y, mainc.z, 0.63)
colors[clr.TabActive] = ImVec4(mainc.x, mainc.y, mainc.z, 1.0)
colors[clr.TabUnfocused] = ImVec4(mainc.x + 0.13, mainc.y + 0.13, mainc.z + 0.13, 1.00)
end
-- imgui.OnInitialize() вызывается всего раз, перед первым показом рендера
imgui.OnInitialize(function()
apply_custom_style() -- применим кастомный стиль
local defGlyph = imgui.GetIO().Fonts.ConfigData.Data[0].GlyphRanges
imgui.GetIO().Fonts:Clear() -- очистим шрифты
local font_config = imgui.ImFontConfig() -- у каждого шрифта есть свой конфиг
font_config.SizePixels = 16.0;
font_config.GlyphExtraSpacing.x = 0.1
-- основной шрифт
local def = imgui.GetIO().Fonts:AddFontFromFileTTF(getFolderPath(0x14) .. '\\arialbd.ttf', font_config.SizePixels, font_config, defGlyph)
local config = imgui.ImFontConfig()
config.MergeMode = true
config.PixelSnapH = true
config.FontDataOwnedByAtlas = false
config.GlyphOffset.y = 1.0 -- смещение на 1 пиксеот вниз
local fa_glyph_ranges = new.ImWchar[3]({ faicons.min_range, faicons.max_range, 0 })
-- иконки
local faicon = imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(faicons.get_font_data_base85(), font_config.SizePixels, config, fa_glyph_ranges)
imgui.GetIO().ConfigWindowsMoveFromTitleBarOnly = true
end)
imgui.OnFrame(function () return bWindow[0] end,
function ()
local sizeX, sizeY = getScreenResolution()
imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(1000, 530), imgui.Cond.FirstUseEver)
imgui.Begin(faicons.ICON_SHIELD .. u8" Теест", bWindow, --[[imgui.WindowFl, ]]imgui.WindowFlags.NoMove--[[ + imgui.WindowFlags.AlwaysAutoResize ]]+ imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
if imgui.BeginTabBar('Tabs') then
if imgui.BeginTabItem(u8'Первая') then -- задаём название первой вкладки
-- далее идёт содержимое вкладки
imgui.Text(u8'Test!')
imgui.Text(u8'Test123.')
imgui.EndTabItem()
end
if imgui.BeginTabItem(u8'Вторая') then -- задаём название второй вкладки
if imgui.Button('Test') then
end
imgui.EndTabItem()
end
imgui.EndTabBar()
end
imgui.End()
end)