- 77
- 23
- Версия MoonLoader
- .026-beta
Сделал меню для выбора одной из нескольких тем. Создал ini файл, в котором записываю id выбранной темы.
По команде, открывается меню, с помощью RadioButton выбирается тема и по нажатию на кнопку, выбранную тему надо записать в ini.
Пробовал много разных способов записать, но мунлоадер постоянно ругался по разным причинам. Как это можно реализовать?
По команде, открывается меню, с помощью RadioButton выбирается тема и по нажатию на кнопку, выбранную тему надо записать в ini.
Пробовал много разных способов записать, но мунлоадер постоянно ругался по разным причинам. Как это можно реализовать?
Примерно такая выборка из кода по этой ситуации:
require "lib.moonloader"
local keys = require "vkeys"
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local themes = import "resource/imgui_themes.lua"
local directIni = 'moonloader\\settings.ini'
local mainIni = inicfg.load(nil, directIni)
main_window_state = imgui.ImBool(false)
local checked_radio = imgui.ImInt()
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
sampRegisterChatCommand("themes", cmd_themes)
imgui.Process = false
imgui.SwitchContext()
themes.SwitchColorTheme(mainIni.config.id)
while true do
wait(0)
end
function cmd_themes()
main_window_state.v = not main_window_state.v
imgui.Process = main_window_state.v
end
function imgui.OnDrawFrame()
if not main_window_state.v then
imgui.Process = false
end
if main_window_state.v then
local sw, sh = getScreenResolution()
imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(510, 600), imgui.Cond.FirstUseEver)
imgui.Begin('Imgui Themes', main_window_state)
if imgui.Button(u8'Кнопка') then
themes.SwitchColorTheme(2)
end
for id, value in ipairs(themes.colorThemes) do
if imgui.RadioButton(value, checked_radio, id) then
themes.SwitchColorTheme(id)
end
end
if imgui.Button(u8'Запомнить') then
if inicfg.save(NewIni, directIni) then
sampAddChatMessage('Изменения сохранены. Перезагрузите скприпт, нажав CTRL + R', -1)
end
end
NewIni = {
config = {
id = --???
}
}
imgui.End()
end
end