- 30
- 4
Lua::
script_name("Bus Helper")
script_author("Maksim(Jake)")
script_version("1.0")
----------------- [Библиотеки] ---------------------------
local sampev = require("samp.events")
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local new = imgui.new
require 'lib.moonloader'
local ffi = require 'ffi'
local inicfg = require 'inicfg'
local fa = require("fAwesome6")
local sizeX, sizeY = getScreenResolution()
local http = require("socket.http")
local ltn12 = require("ltn12")
local lfs = require("lfs")
local WinState = imgui.new.bool()
local settings = {}
local default_settings = {
general ={
custom_dpi = 1.0,
autofind_dpi = false,
},
theme = {
moonmonet_theme_enable = true,
moonmonet_theme_color = 61951,
}
}
local configDirectory = getWorkingDirectory():gsub('\\','/') .. "/Bus Helper"
local path = configDirectory .. "/Bus Helper.json"
function load_settings()
if not doesDirectoryExist(configDirectory) then
createDirectory(configDirectory)
end
if not doesFileExist(path) then
settings = default_settings
print('Файл с настройками не найден, использую стандартные настройки!')
else
local file = io.open(path, 'r')
if file then
local contents = file:read('*a')
file:close()
if #contents == 0 then
settings = default_settings
print(' Не удалось открыть файл с настройками, использую стандартные настройки!')
else
local result, loaded = pcall(decodeJson, contents)
if result then
settings = loaded
for category, _ in pairs(default_settings) do
if settings[category] == nil then
settings[category] = {}
end
for key, value in pairs(default_settings[category]) do
if settings[category][key] == nil then
settings[category][key] = value
end
end
end
print('Настройки успешно загружены!')
else
print('Не удалось открыть файл с настройками, использую стандартные настройки!')
end
end
else
settings = default_settings
print('Не удалось открыть файл с настройками, использую стандартные настройки!')
end
end
end
function save()
local file, errstr = io.open(path, 'w')
if file then
local result, encoded = pcall(encodeJson, settings)
file:write(result and encoded or "")
file:close()
print(' Настройки сохранены!')
return result
else
print('Не удалось сохранить настройки хелпера, ошибка: ', errstr)
return false
end
end
load_settings()
--------------------------------------------------------------------
local theme = imgui.new.int(0)
slider_dpi = imgui.new.float(tonumber(settings.general.custom_dpi) or 1)
--------------------------------------------------------------------
imgui.OnInitialize(function()
imgui.GetIO().IniFilename = nil
local config = imgui.ImFontConfig()
config.MergeMode = true
config.PixelSnapH = true
iconRanges = imgui.new.ImWchar[3](fa.min_range, fa.max_range, 0)
imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(fa.get_font_data_base85('light'), 29, config, iconRanges)
end)
-------------------------------------------- MoonMonet ----------------------------------------------------
local monet_no_errors, moon_monet = pcall(require, 'MoonMonet') -- безопасно подключаем библиотеку
local message_color = 0x009EFF
local message_color_hex = '{009EFF}'
if settings.theme.moonmonet_theme_enable and monet_no_errors then
function rgbToHex(rgb)
local r = bit.band(bit.rshift(rgb, 16), 0xFF)
local g = bit.band(bit.rshift(rgb, 8), 0xFF)
local b = bit.band(rgb, 0xFF)
local hex = string.format("%02X%02X%02X", r, g, b)
return hex
end
message_color = settings.theme.moonmonet_theme_color
message_color_hex = '{' .. rgbToHex(settings.theme.moonmonet_theme_color) .. '}'
theme[0] = 1
else
theme[0] = 0
end
local tmp = imgui.ColorConvertU32ToFloat4(0x00000000)
local mmcolor = imgui.new.float[3](tmp.z, tmp.y, tmp.x)
if settings.theme.moonmonet_theme_enable and monet_no_errors then
apply_moonmonet_theme()
else
apply_dark_theme()
end
imgui.OnFrame(
function() return WinState[0] end,
function(player)
imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(600 * settings.general.custom_dpi, 425 * settings.general.custom_dpi), imgui.Cond.FirstUseEver)
imgui.Begin(fa.BUS .. " Bus Helper##main", WinState, imgui.WindowFlags.NoCollapse)
if imgui.BeginTabBar('Tabs') then
if imgui.BeginTabItem(fa.GEAR .. u8' Основное') then
imgui.EndTabItem()
end
if imgui.BeginTabItem(fa.GEAR .. u8' Настройки') then
imgui.BeginChild('##1', imgui.ImVec2(589 * MONET_DPI_SCALE, 117 * MONET_DPI_SCALE), true)
imgui.CenterText(fa.CIRCLE_INFO .. u8' Дополнительная информация про хелпер')
imgui.Separator()
imgui.Text(fa.CIRCLE_USER..u8" Разработчик данного хелпера: Maksim(Jake)")
imgui.Separator()
imgui.Text(fa.CIRCLE_INFO..u8' Установленная версия хелпера ' .. thisScript().version)
imgui.SameLine()
if imgui.SmallButton(u8' Обновить(НЕ НАЖИМАТЬ ЕЩЕ НЕ СДЕЛАЛ)') then
updateScript(lmUrl, lmPath)
end
imgui.Separator()
imgui.Text(fa.HEADSET..u8" Тех.поддержка по хелперу:")
imgui.SameLine()
if imgui.SmallButton('Telegram') then
openLink('https://t.me/Jake_S2')
end
imgui.Separator()
imgui.Text(fa.GLOBE..u8" Тема хелпера на форуме BlastHack:")
imgui.SameLine()
if imgui.SmallButton(u8' Нету ') then
openLink('')
end
imgui.EndChild()
imgui.BeginChild('##3', imgui.ImVec2(589 * MONET_DPI_SCALE, 87 * MONET_DPI_SCALE), true)
imgui.CenterText(fa.PALETTE .. u8' Цветовая тема хелпера:')
imgui.Separator()
if imgui.RadioButtonIntPtr(u8" Dark Theme ", theme, 0) then
theme[0] = 0
message_color = 0x009EFF
message_color_hex = '{009EFF}'
settings.theme.moonmonet_theme_enable = false
save()
apply_dark_theme()
end
if monet_no_errors then
if imgui.RadioButtonIntPtr(u8" MoonMonet Theme ", theme, 1) then
theme[0] = 1
local r,g,b = mmcolor[0] * 255, mmcolor[1] * 255, mmcolor[2] * 255
local argb = join_argb(0, r, g, b)
settings.theme.moonmonet_theme_enable = true
settings.theme.moonmonet_theme_color = argb
message_color = "0x" .. argbToHexWithoutAlpha(0, r, g, b)
message_color_hex = '{' .. argbToHexWithoutAlpha(0, r, g, b) .. '}'
apply_moonmonet_theme()
save()
end
imgui.SameLine()
if theme[0] == 1 and imgui.ColorEdit3('## COLOR', mmcolor, imgui.ColorEditFlags.NoInputs) then
local r,g,b = mmcolor[0] * 255, mmcolor[1] * 255, mmcolor[2] * 255
local argb = join_argb(0, r, g, b)
-- settings.general.message_color =
-- settings.general.message_color_hex =
settings.theme.moonmonet_theme_color = argb
message_color = "0x" .. argbToHexWithoutAlpha(0, r, g, b)
message_color_hex = '{' .. argbToHexWithoutAlpha(0, r, g, b) .. '}'
if theme[0] == 1 then
apply_moonmonet_theme()
save()
end
end
else
if imgui.RadioButtonIntPtr(u8" MoonMonet Theme | "..fa.TRIANGLE_EXCLAMATION .. u8' Ошибка: отсуствуют файлы библиотеки!', theme, 1) then
theme[0] = 0
end
end
imgui.EndChild()
imgui.BeginChild("##4",imgui.ImVec2(589 * MONET_DPI_SCALE, 42 * MONET_DPI_SCALE),true)
if imgui.Button(fa.ROTATE_RIGHT .. u8" Перезагрузка ", imgui.ImVec2(imgui.GetMiddleButtonX(4), 25 * MONET_DPI_SCALE)) then
reload_script = true
script_reload()
end
imgui.SameLine()
if imgui.Button(fa.ROTATE_RIGHT .. u8" Выключить ", imgui.ImVec2(imgui.GetMiddleButtonX(4), 25 * MONET_DPI_SCALE)) then
reload_script = true
script_unload()
end
imgui.EndTabItem()
end
imgui.EndTabBar()
end
imgui.End()
end)
function main()
if not isSampfuncsLoaded() or not isSampLoaded() then return end
while not isSampAvailable() do wait(100) end
while not sampIsLocalPlayerSpawned() do wait(0) end
sampAddChatMessage('[Bus Helper] {ffffff}Загрузка хелпера прошла успешно!', message_color)
show_arz_notify('info', 'Bus Helper', "Загрузка хелпера прошла успешно!", 3000)
print(' Загрузка хелпера прошла успешно!')
sampAddChatMessage('[Bus Helper]{ffffff}Чтоб открыть меню хелпера введите команду {009EFF}/bh',message_color)
sampRegisterChatCommand('bh', function() WinState[0] = not WinState[0] end)
end
function show_arz_notify(type, title, text, time)
if MONET_VERSION ~= nil then
if type == 'info' then
type = 3
elseif type == 'error' then
type = 2
elseif type == 'success' then
type = 1
end
local bs = raknetNewBitStream()
raknetBitStreamWriteInt8(bs, 62)
raknetBitStreamWriteInt8(bs, 6)
raknetBitStreamWriteBool(bs, true)
raknetEmulPacketReceiveBitStream(220, bs)
raknetDeleteBitStream(bs)
local json = encodeJson({
styleInt = type,
title = title,
text = text,
duration = time
})
local interfaceid = 6
local subid = 0
local bs = raknetNewBitStream()
raknetBitStreamWriteInt8(bs, 84)
raknetBitStreamWriteInt8(bs, interfaceid)
raknetBitStreamWriteInt8(bs, subid)
raknetBitStreamWriteInt32(bs, #json)
raknetBitStreamWriteString(bs, json)
raknetEmulPacketReceiveBitStream(220, bs)
raknetDeleteBitStream(bs)
else
local str = ('window.executeEvent(\'event.notify.initialize\', \'["%s", "%s", "%s", "%s"]\');'):format(type, title, text, time)
local bs = raknetNewBitStream()
raknetBitStreamWriteInt8(bs, 17)
raknetBitStreamWriteInt32(bs, 0)
raknetBitStreamWriteInt32(bs, #str)
raknetBitStreamWriteString(bs, str)
raknetEmulPacketReceiveBitStream(220, bs)
raknetDeleteBitStream(bs)
end
end
function script_reload()
lua_thread.create(function()
show_arz_notify('info', 'Bus Helper', "Перезагрузка....!", 500)
wait(0)
thisScript():reload()
end)
end
function script_unload()
lua_thread.create(function()
show_arz_notify('info', 'Bus Helper', "Выключение....!", 500)
wait(0)
thisScript():unload()
end)
end
function iniSave()
settings.cfgtheme.theme = theme[0]
inicfg.save(ini, path)
end
function isMonetLoader() return MONET_VERSION ~= nil end
if isMonetLoader() then
gta = ffi.load('GTASA')
ffi.cdef[[
void _Z12AND_OpenLinkPKc(const char* link);
]]
function openLink(link)
gta._Z12AND_OpenLinkPKc(link)
end
if not settings.general.autofind_dpi then
print('[Bus Helper] Применение авто-размера менюшек...')
if isMonetLoader() then
settings.general.custom_dpi = MONET_DPI_SCALE
else
local base_width = 1366
local base_height = 768
local current_width, current_height = getScreenResolution()
local width_scale = current_width / base_width
local height_scale = current_height / base_height
settings.general.custom_dpi = (width_scale + height_scale) / 2
end
settings.general.autofind_dpi = true
print('[Bus Helper] Установлено значение: ' .. settings.general.custom_dpi)
save()
end
function imgui.CenterText(text)
local width = imgui.GetWindowWidth()
local calc = imgui.CalcTextSize(text)
imgui.SetCursorPosX( width / 2 - calc.x / 2 )
imgui.Text(text)
end
function imgui.CenterTextDisabled(text)
local width = imgui.GetWindowWidth()
local calc = imgui.CalcTextSize(text)
imgui.SetCursorPosX( width / 2 - calc.x / 2 )
imgui.TextDisabled(text)
end
function imgui.CenterColumnText(text)
imgui.SetCursorPosX((imgui.GetColumnOffset() + (imgui.GetColumnWidth() / 2)) - imgui.CalcTextSize(text).x / 2)
imgui.Text(text)
end
function imgui.CenterColumnTextDisabled(text)
imgui.SetCursorPosX((imgui.GetColumnOffset() + (imgui.GetColumnWidth() / 2)) - imgui.CalcTextSize(text).x / 2)
imgui.TextDisabled(text)
end
function imgui.CenterColumnColorText(imgui_RGBA, text)
imgui.SetCursorPosX((imgui.GetColumnOffset() + (imgui.GetColumnWidth() / 2)) - imgui.CalcTextSize(text).x / 2)
imgui.TextColored(imgui_RGBA, text)
end
function imgui.CenterButton(text)
local width = imgui.GetWindowWidth()
local calc = imgui.CalcTextSize(text)
imgui.SetCursorPosX( width / 2 - calc.x / 2 )
if imgui.Button(text) then
return true
else
return false
end
end
function imgui.CenterColumnButton(text)
if text:find('(.+)##(.+)') then
local text1, text2 = text:match('(.+)##(.+)')
imgui.SetCursorPosX((imgui.GetColumnOffset() + (imgui.GetColumnWidth() / 2)) - imgui.CalcTextSize(text1).x / 2)
else
imgui.SetCursorPosX((imgui.GetColumnOffset() + (imgui.GetColumnWidth() / 2)) - imgui.CalcTextSize(text).x / 2)
end
if imgui.Button(text) then
return true
else
return false
end
end
function imgui.CenterColumnSmallButton(text)
if text:find('(.+)##(.+)') then
local text1, text2 = text:match('(.+)##(.+)')
imgui.SetCursorPosX((imgui.GetColumnOffset() + (imgui.GetColumnWidth() / 2)) - imgui.CalcTextSize(text1).x / 2)
else
imgui.SetCursorPosX((imgui.GetColumnOffset() + (imgui.GetColumnWidth() / 2)) - imgui.CalcTextSize(text).x / 2)
end
if imgui.SmallButton(text) then
return true
else
return false
end
end
function imgui.GetMiddleButtonX(count)
local width = imgui.GetWindowContentRegionWidth()
local space = imgui.GetStyle().ItemSpacing.x
return count == 1 and width or width/count - ((space * (count-1)) / count)
end
function apply_dark_theme()
imgui.SwitchContext()
imgui.GetStyle().WindowPadding = imgui.ImVec2(5 * MONET_DPI_SCALE, 5 * MONET_DPI_SCALE)
imgui.GetStyle().FramePadding = imgui.ImVec2(5 * MONET_DPI_SCALE, 5 * MONET_DPI_SCALE)
imgui.GetStyle().ItemSpacing = imgui.ImVec2(5 * MONET_DPI_SCALE, 5 * MONET_DPI_SCALE)
imgui.GetStyle().ItemInnerSpacing = imgui.ImVec2(2 * MONET_DPI_SCALE, 2 * MONET_DPI_SCALE)
imgui.GetStyle().TouchExtraPadding = imgui.ImVec2(0, 0)
imgui.GetStyle().IndentSpacing = 0
imgui.GetStyle().ScrollbarSize = 10 * MONET_DPI_SCALE
imgui.GetStyle().GrabMinSize = 10 * MONET_DPI_SCALE
imgui.GetStyle().WindowBorderSize = 1 * MONET_DPI_SCALE
imgui.GetStyle().ChildBorderSize = 1 * MONET_DPI_SCALE
imgui.GetStyle().PopupBorderSize = 1 * MONET_DPI_SCALE
imgui.GetStyle().FrameBorderSize = 1 * MONET_DPI_SCALE
imgui.GetStyle().TabBorderSize = 1 * MONET_DPI_SCALE
imgui.GetStyle().WindowRounding = 8 * MONET_DPI_SCALE
imgui.GetStyle().ChildRounding = 8 * MONET_DPI_SCALE
imgui.GetStyle().FrameRounding = 8 * MONET_DPI_SCALE
imgui.GetStyle().PopupRounding = 8 * MONET_DPI_SCALE
imgui.GetStyle().ScrollbarRounding = 8 * MONET_DPI_SCALE
imgui.GetStyle().GrabRounding = 8 * MONET_DPI_SCALE
imgui.GetStyle().TabRounding = 8 * MONET_DPI_SCALE
imgui.GetStyle().WindowTitleAlign = imgui.ImVec2(0.5, 0.5)
imgui.GetStyle().ButtonTextAlign = imgui.ImVec2(0.5, 0.5)
imgui.GetStyle().SelectableTextAlign = imgui.ImVec2(0.5, 0.5)
imgui.GetStyle().Colors[imgui.Col.Text] = imgui.ImVec4(1.00, 1.00, 1.00, 1.00)
imgui.GetStyle().Colors[imgui.Col.TextDisabled] = imgui.ImVec4(0.50, 0.50, 0.50, 1.00)
imgui.GetStyle().Colors[imgui.Col.WindowBg] = imgui.ImVec4(0.07, 0.07, 0.07, 1.00)
imgui.GetStyle().Colors[imgui.Col.ChildBg] = imgui.ImVec4(0.07, 0.07, 0.07, 1.00)
imgui.GetStyle().Colors[imgui.Col.PopupBg] = imgui.ImVec4(0.07, 0.07, 0.07, 1.00)
imgui.GetStyle().Colors[imgui.Col.Border] = imgui.ImVec4(0.25, 0.25, 0.26, 0.54)
imgui.GetStyle().Colors[imgui.Col.BorderShadow] = imgui.ImVec4(0.00, 0.00, 0.00, 0.00)
imgui.GetStyle().Colors[imgui.Col.FrameBg] = imgui.ImVec4(0.12, 0.12, 0.12, 1.00)
imgui.GetStyle().Colors[imgui.Col.FrameBgHovered] = imgui.ImVec4(0.25, 0.25, 0.26, 1.00)
imgui.GetStyle().Colors[imgui.Col.FrameBgActive] = imgui.ImVec4(0.25, 0.25, 0.26, 1.00)
imgui.GetStyle().Colors[imgui.Col.TitleBg] = imgui.ImVec4(0.12, 0.12, 0.12, 1.00)
imgui.GetStyle().Colors[imgui.Col.TitleBgActive] = imgui.ImVec4(0.12, 0.12, 0.12, 1.00)
imgui.GetStyle().Colors[imgui.Col.TitleBgCollapsed] = imgui.ImVec4(0.12, 0.12, 0.12, 1.00)
imgui.GetStyle().Colors[imgui.Col.MenuBarBg] = imgui.ImVec4(0.12, 0.12, 0.12, 1.00)
imgui.GetStyle().Colors[imgui.Col.ScrollbarBg] = imgui.ImVec4(0.12, 0.12, 0.12, 1.00)
imgui.GetStyle().Colors[imgui.Col.ScrollbarGrab] = imgui.ImVec4(0.00, 0.00, 0.00, 1.00)
imgui.GetStyle().Colors[imgui.Col.ScrollbarGrabHovered] = imgui.ImVec4(0.41, 0.41, 0.41, 1.00)
imgui.GetStyle().Colors[imgui.Col.ScrollbarGrabActive] = imgui.ImVec4(0.51, 0.51, 0.51, 1.00)
imgui.GetStyle().Colors[imgui.Col.CheckMark] = imgui.ImVec4(1.00, 1.00, 1.00, 1.00)
imgui.GetStyle().Colors[imgui.Col.SliderGrab] = imgui.ImVec4(0.21, 0.20, 0.20, 1.00)
imgui.GetStyle().Colors[imgui.Col.SliderGrabActive] = imgui.ImVec4(0.21, 0.20, 0.20, 1.00)
imgui.GetStyle().Colors[imgui.Col.Button] = imgui.ImVec4(0.12, 0.12, 0.12, 1.00)
imgui.GetStyle().Colors[imgui.Col.ButtonHovered] = imgui.ImVec4(0.21, 0.20, 0.20, 1.00)
imgui.GetStyle().Colors[imgui.Col.ButtonActive] = imgui.ImVec4(0.41, 0.41, 0.41, 1.00)
imgui.GetStyle().Colors[imgui.Col.Header] = imgui.ImVec4(0.12, 0.12, 0.12, 1.00)
imgui.GetStyle().Colors[imgui.Col.HeaderHovered] = imgui.ImVec4(0.20, 0.20, 0.20, 1.00)
imgui.GetStyle().Colors[imgui.Col.HeaderActive] = imgui.ImVec4(0.47, 0.47, 0.47, 1.00)
imgui.GetStyle().Colors[imgui.Col.Separator] = imgui.ImVec4(0.12, 0.12, 0.12, 1.00)
imgui.GetStyle().Colors[imgui.Col.SeparatorHovered] = imgui.ImVec4(0.12, 0.12, 0.12, 1.00)
imgui.GetStyle().Colors[imgui.Col.SeparatorActive] = imgui.ImVec4(0.12, 0.12, 0.12, 1.00)
imgui.GetStyle().Colors[imgui.Col.ResizeGrip] = imgui.ImVec4(1.00, 1.00, 1.00, 0.25)
imgui.GetStyle().Colors[imgui.Col.ResizeGripHovered] = imgui.ImVec4(1.00, 1.00, 1.00, 0.67)
imgui.GetStyle().Colors[imgui.Col.ResizeGripActive] = imgui.ImVec4(1.00, 1.00, 1.00, 0.95)
imgui.GetStyle().Colors[imgui.Col.Tab] = imgui.ImVec4(0.12, 0.12, 0.12, 1.00)
imgui.GetStyle().Colors[imgui.Col.TabHovered] = imgui.ImVec4(0.28, 0.28, 0.28, 1.00)
imgui.GetStyle().Colors[imgui.Col.TabActive] = imgui.ImVec4(0.30, 0.30, 0.30, 1.00)
imgui.GetStyle().Colors[imgui.Col.TabUnfocused] = imgui.ImVec4(0.07, 0.10, 0.15, 0.97)
imgui.GetStyle().Colors[imgui.Col.TabUnfocusedActive] = imgui.ImVec4(0.14, 0.26, 0.42, 1.00)
imgui.GetStyle().Colors[imgui.Col.PlotLines] = imgui.ImVec4(0.61, 0.61, 0.61, 1.00)
imgui.GetStyle().Colors[imgui.Col.PlotLinesHovered] = imgui.ImVec4(1.00, 0.43, 0.35, 1.00)
imgui.GetStyle().Colors[imgui.Col.PlotHistogram] = imgui.ImVec4(0.90, 0.70, 0.00, 1.00)
imgui.GetStyle().Colors[imgui.Col.PlotHistogramHovered] = imgui.ImVec4(1.00, 0.60, 0.00, 1.00)
imgui.GetStyle().Colors[imgui.Col.TextSelectedBg] = imgui.ImVec4(1.00, 0.00, 0.00, 0.35)
imgui.GetStyle().Colors[imgui.Col.DragDropTarget] = imgui.ImVec4(1.00, 1.00, 0.00, 0.90)
imgui.GetStyle().Colors[imgui.Col.NavHighlight] = imgui.ImVec4(0.26, 0.59, 0.98, 1.00)
imgui.GetStyle().Colors[imgui.Col.NavWindowingHighlight] = imgui.ImVec4(1.00, 1.00, 1.00, 0.70)
imgui.GetStyle().Colors[imgui.Col.NavWindowingDimBg] = imgui.ImVec4(0.80, 0.80, 0.80, 0.20)
imgui.GetStyle().Colors[imgui.Col.ModalWindowDimBg] = imgui.ImVec4(0.12, 0.12, 0.12, 0.95)
end
function apply_moonmonet_theme()
local generated_color = moon_monet.buildColors(settings.theme.moonmonet_theme_color, 1.0, true)
imgui.SwitchContext()
imgui.GetStyle().WindowPadding = imgui.ImVec2(5 * settings.general.custom_dpi, 5 * settings.general.custom_dpi)
imgui.GetStyle().FramePadding = imgui.ImVec2(5 * settings.general.custom_dpi, 5 * settings.general.custom_dpi)
imgui.GetStyle().ItemSpacing = imgui.ImVec2(5 * settings.general.custom_dpi, 5 * settings.general.custom_dpi)
imgui.GetStyle().ItemInnerSpacing = imgui.ImVec2(2 * settings.general.custom_dpi, 2 * settings.general.custom_dpi)
imgui.GetStyle().TouchExtraPadding = imgui.ImVec2(0, 0)
imgui.GetStyle().IndentSpacing = 0
imgui.GetStyle().ScrollbarSize = 10 * settings.general.custom_dpi
imgui.GetStyle().GrabMinSize = 10 * settings.general.custom_dpi
imgui.GetStyle().WindowBorderSize = 1 * settings.general.custom_dpi
imgui.GetStyle().ChildBorderSize = 1 * settings.general.custom_dpi
imgui.GetStyle().PopupBorderSize = 1 * settings.general.custom_dpi
imgui.GetStyle().FrameBorderSize = 1 * settings.general.custom_dpi
imgui.GetStyle().TabBorderSize = 1 * settings.general.custom_dpi
imgui.GetStyle().WindowRounding = 8 * settings.general.custom_dpi
imgui.GetStyle().ChildRounding = 8 * settings.general.custom_dpi
imgui.GetStyle().FrameRounding = 8 * settings.general.custom_dpi
imgui.GetStyle().PopupRounding = 8 * settings.general.custom_dpi
imgui.GetStyle().ScrollbarRounding = 8 * settings.general.custom_dpi
imgui.GetStyle().GrabRounding = 8 * settings.general.custom_dpi
imgui.GetStyle().TabRounding = 8 * settings.general.custom_dpi
imgui.GetStyle().WindowTitleAlign = imgui.ImVec2(0.5, 0.5)
imgui.GetStyle().ButtonTextAlign = imgui.ImVec2(0.5, 0.5)
imgui.GetStyle().SelectableTextAlign = imgui.ImVec2(0.5, 0.5)
imgui.GetStyle().Colors[imgui.Col.Text] = ColorAccentsAdapter(generated_color.accent2.color_50):as_vec4()
imgui.GetStyle().Colors[imgui.Col.TextDisabled] = ColorAccentsAdapter(generated_color.neutral1.color_600):as_vec4()
imgui.GetStyle().Colors[imgui.Col.WindowBg] = ColorAccentsAdapter(generated_color.accent2.color_900):as_vec4()
imgui.GetStyle().Colors[imgui.Col.ChildBg] = ColorAccentsAdapter(generated_color.accent2.color_800):as_vec4()
imgui.GetStyle().Colors[imgui.Col.PopupBg] = ColorAccentsAdapter(generated_color.accent2.color_700):as_vec4()
imgui.GetStyle().Colors[imgui.Col.Border] = ColorAccentsAdapter(generated_color.accent1.color_200):apply_alpha(0xcc):as_vec4()
imgui.GetStyle().Colors[imgui.Col.Separator] = ColorAccentsAdapter(generated_color.accent1.color_200):apply_alpha(0xcc):as_vec4()
imgui.GetStyle().Colors[imgui.Col.BorderShadow] = imgui.ImVec4(0.00, 0.00, 0.00, 0.00)
imgui.GetStyle().Colors[imgui.Col.FrameBg] = ColorAccentsAdapter(generated_color.accent1.color_600):apply_alpha(0x60):as_vec4()
imgui.GetStyle().Colors[imgui.Col.FrameBgHovered] = ColorAccentsAdapter(generated_color.accent1.color_600):apply_alpha(0x70):as_vec4()
imgui.GetStyle().Colors[imgui.Col.FrameBgActive] = ColorAccentsAdapter(generated_color.accent1.color_600):apply_alpha(0x50):as_vec4()
imgui.GetStyle().Colors[imgui.Col.TitleBg] = ColorAccentsAdapter(generated_color.accent2.color_700):apply_alpha(0xcc):as_vec4()
imgui.GetStyle().Colors[imgui.Col.TitleBgCollapsed] = ColorAccentsAdapter(generated_color.accent2.color_700):apply_alpha(0x7f):as_vec4()
imgui.GetStyle().Colors[imgui.Col.TitleBgActive] = ColorAccentsAdapter(generated_color.accent2.color_700):as_vec4()
imgui.GetStyle().Colors[imgui.Col.MenuBarBg] = ColorAccentsAdapter(generated_color.accent1.color_600):apply_alpha(0x91):as_vec4()
imgui.GetStyle().Colors[imgui.Col.ScrollbarBg] = imgui.ImVec4(0,0,0,0)
imgui.GetStyle().Colors[imgui.Col.ScrollbarGrab] = ColorAccentsAdapter(generated_color.accent1.color_600):apply_alpha(0x85):as_vec4()
imgui.GetStyle().Colors[imgui.Col.ScrollbarGrabHovered] = ColorAccentsAdapter(generated_color.accent1.color_600):as_vec4()
imgui.GetStyle().Colors[imgui.Col.ScrollbarGrabActive] = ColorAccentsAdapter(generated_color.accent1.color_600):apply_alpha(0xb3):as_vec4()
imgui.GetStyle().Colors[imgui.Col.CheckMark] = ColorAccentsAdapter(generated_color.accent1.color_600):apply_alpha(0xcc):as_vec4()
imgui.GetStyle().Colors[imgui.Col.SliderGrab] = ColorAccentsAdapter(generated_color.accent1.color_600):apply_alpha(0xcc):as_vec4()
imgui.GetStyle().Colors[imgui.Col.SliderGrabActive] = ColorAccentsAdapter(generated_color.accent1.color_600):apply_alpha(0x80):as_vec4()
imgui.GetStyle().Colors[imgui.Col.Button] = ColorAccentsAdapter(generated_color.accent1.color_600):apply_alpha(0xcc):as_vec4()
imgui.GetStyle().Colors[imgui.Col.ButtonHovered] = ColorAccentsAdapter(generated_color.accent1.color_200):apply_alpha(0xb3):as_vec4()
imgui.GetStyle().Colors[imgui.Col.ButtonActive] = ColorAccentsAdapter(generated_color.accent1.color_600):apply_alpha(0xb3):as_vec4()
imgui.GetStyle().Colors[imgui.Col.Tab] = ColorAccentsAdapter(generated_color.accent1.color_600):apply_alpha(0xcc):as_vec4()
imgui.GetStyle().Colors[imgui.Col.TabActive] = ColorAccentsAdapter(generated_color.accent1.color_200):apply_alpha(0xb3):as_vec4()
imgui.GetStyle().Colors[imgui.Col.TabHovered] = ColorAccentsAdapter(generated_color.accent1.color_200):apply_alpha(0xb3):as_vec4()
imgui.GetStyle().Colors[imgui.Col.Header] = ColorAccentsAdapter(generated_color.accent1.color_600):apply_alpha(0xcc):as_vec4()
imgui.GetStyle().Colors[imgui.Col.HeaderHovered] = ColorAccentsAdapter(generated_color.accent1.color_600):as_vec4()
imgui.GetStyle().Colors[imgui.Col.HeaderActive] = ColorAccentsAdapter(generated_color.accent1.color_600):apply_alpha(0xb3):as_vec4()
imgui.GetStyle().Colors[imgui.Col.ResizeGrip] = ColorAccentsAdapter(generated_color.accent2.color_700):apply_alpha(0xcc):as_vec4()
imgui.GetStyle().Colors[imgui.Col.ResizeGripHovered] = ColorAccentsAdapter(generated_color.accent2.color_700):as_vec4()
imgui.GetStyle().Colors[imgui.Col.ResizeGripActive] = ColorAccentsAdapter(generated_color.accent2.color_700):apply_alpha(0xb3):as_vec4()
imgui.GetStyle().Colors[imgui.Col.PlotLines] = ColorAccentsAdapter(generated_color.accent2.color_600):as_vec4()
imgui.GetStyle().Colors[imgui.Col.PlotLinesHovered] = ColorAccentsAdapter(generated_color.accent1.color_600):as_vec4()
imgui.GetStyle().Colors[imgui.Col.PlotHistogram] = ColorAccentsAdapter(generated_color.accent2.color_600):as_vec4()
imgui.GetStyle().Colors[imgui.Col.PlotHistogramHovered] = ColorAccentsAdapter(generated_color.accent1.color_600):as_vec4()
imgui.GetStyle().Colors[imgui.Col.TextSelectedBg] = ColorAccentsAdapter(generated_color.accent1.color_600):as_vec4()
imgui.GetStyle().Colors[imgui.Col.ModalWindowDimBg] = ColorAccentsAdapter(generated_color.accent1.color_200):apply_alpha(0x99):as_vec4()
end
function argbToHexWithoutAlpha(alpha, red, green, blue)
return string.format("%02X%02X%02X", red, green, blue)
end
function rgba_to_argb(rgba_color)
-- Получаем компоненты цвета
local r = bit32.band(bit32.rshift(rgba_color, 24), 0xFF)
local g = bit32.band(bit32.rshift(rgba_color, 16), 0xFF)
local b = bit32.band(bit32.rshift(rgba_color, 8), 0xFF)
local a = bit32.band(rgba_color, 0xFF)
-- Собираем ARGB цвет
local argb_color = bit32.bor(bit32.lshift(a, 24), bit32.lshift(r, 16), bit32.lshift(g, 8), b)
return argb_color
end
function join_argb(a, r, g, b)
local argb = b
argb = bit.bor(argb, bit.lshift(g, 8))
argb = bit.bor(argb, bit.lshift(r, 16))
argb = bit.bor(argb, bit.lshift(a, 24))
return argb
end
function explode_argb(argb)
local a = bit.band(bit.rshift(argb, 24), 0xFF)
local r = bit.band(bit.rshift(argb, 16), 0xFF)
local g = bit.band(bit.rshift(argb, 8), 0xFF)
local b = bit.band(argb, 0xFF)
return a, r, g, b
end
function rgba_to_hex(rgba)
local r = bit.rshift(rgba, 24) % 256
local g = bit.rshift(rgba, 16) % 256
local b = bit.rshift(rgba, 8) % 256
local a = rgba % 256
return string.format("%02X%02X%02X", r, g, b)
end
function ARGBtoRGB(color)
return bit.band(color, 0xFFFFFF)
end
function ColorAccentsAdapter(color)
local a, r, g, b = explode_argb(color)
local ret = {a = a, r = r, g = g, b = b}
function ret:apply_alpha(alpha)
self.a = alpha
return self
end
function ret:as_u32()
return join_argb(self.a, self.b, self.g, self.r)
end
function ret:as_vec4()
return imgui.ImVec4(self.r / 255, self.g / 255, self.b / 255, self.a / 255)
end
function ret:as_argb()
return join_argb(self.a, self.r, self.g, self.b)
end
function ret:as_rgba()
return join_argb(self.r, self.g, self.b, self.a)
end
function ret:as_chat()
return string.format("%06X", ARGBtoRGB(join_argb(self.a, self.r, self.g, self.b)))
end
return ret
end
end
Я не понимаю в чем проблема можете помочь и еще при перезагрузке или когда впервые поставил скрипт то тема окна почему-то стандартная(синяя)
138 строка
Вот код ошибки:
(error) Bus Helper: ...Android/media/com.arizona.game/monetloader/BusHelper.lua:146: attempt to call global 'apply_moonmonet_theme' (a nil value)
stack traceback:
...Android/media/com.arizona.game/monetloader/BusHelper.lua:146: in main chunk
[18:04:27.475451] (error) Bus Helper: Script died due to an error.
Последнее редактирование: