Скрипт сохраняет настройки, но не использует их [inicfg]

boy next door

Участник
Автор темы
213
18
Версия MoonLoader
.026-beta
всем привет. столкнулся я с такой проблемой, что при смене темы с 0 на 1 идёт сохранение в ini, но как сразу же перезапущу скрипт - тема стаёт на 0, но остальные переменные в норме.
Lua:
local inicfg = require 'inicfg'
local directIni = 'filename.ini'
local ini = inicfg.load(inicfg.load({
    main = {
        org = 0,
        mesto = 0,
        theme = 0
    },
}, directIni))
inicfg.save(ini, directIni)
local ComboNTest = new.int(ini.main.org)
local ComboMesta_list = new.int(ini.main.mesto)
local colorListNumber = new.int()
colorListNumber[0] = ini.main.theme


function onScriptTerminate(s)
    if s == thisScript() then
        ini.main.org = ComboNTest[0]
        ini.main.mesto = ComboMesta_list[0]
        ini.main.theme = colorListNumber[0]
        inicfg.save(ini, directIni)
    end
end


local colorListNumber = new.int()
local colorList = {u8'SoftBlue', u8'SoftOrange', u8'SoftLight', u8'SoftGrey', u8'SoftGreen', u8'SoftRed', u8'SoftBlack'}
local colorListBuffer = imgui.new['const char*'][#colorList](colorList)

--frame
if imgui.Combo(u8'Выберите стиль',colorListNumber,colorListBuffer, #colorList) then
    theme[colorListNumber[0]+1].change()
    ini.main.theme = colorListNumber[0]
    inicfg.save(ini, directIni)
end
if imgui.Button(u8'Сохранить выбор') then
    sampAddChatMessage('[Shelper]: {ffffff}Настройки успешно сохранены.', 0x63CB00)
    ini.main.theme = colorListNumber[0]
    inicfg.save(ini, directIni)
end
--end frame

up
 
Последнее редактирование:
Решение
в OnInitialize вызывай тему с помощью theme[ini.main.theme].change()
Увы, но ты прогадал.
Я уже решил ошибку, но забыл написать об этом.
Суть в том, что я написал две одинаковые переменные - local colorListNumber = new.int(). Я так посмотрел, заменил ту, что под inicfg.save на local colorListNumber = new.int(ini.main.theme) и убрал local colorListNumber = new.int около local colorList.
Вот код:

Lua:
local inicfg = require 'inicfg'
local directIni = 'filename.ini'
local ini = inicfg.load(inicfg.load({
    main = {
        org = 0,
        mesto = 0,
        theme = 0
    },
}, directIni))
inicfg.save(ini, directIni)
local ComboNTest = new.int(ini.main.org)
local ComboMesta_list =...

boy next door

Участник
Автор темы
213
18
в OnInitialize вызывай тему с помощью theme[ini.main.theme].change()
Увы, но ты прогадал.
Я уже решил ошибку, но забыл написать об этом.
Суть в том, что я написал две одинаковые переменные - local colorListNumber = new.int(). Я так посмотрел, заменил ту, что под inicfg.save на local colorListNumber = new.int(ini.main.theme) и убрал local colorListNumber = new.int около local colorList.
Вот код:

Lua:
local inicfg = require 'inicfg'
local directIni = 'filename.ini'
local ini = inicfg.load(inicfg.load({
    main = {
        org = 0,
        mesto = 0,
        theme = 0
    },
}, directIni))
inicfg.save(ini, directIni)
local ComboNTest = new.int(ini.main.org)
local ComboMesta_list = new.int(ini.main.mesto)
local colorListNumber = new.int(ini.main.theme)


function onScriptTerminate(s)
    if s == thisScript() then
        ini.main.org = ComboNTest[0]
        ini.main.mesto = ComboMesta_list[0]
        ini.main.theme = colorListNumber[0]
        inicfg.save(ini, directIni)
    end
end

local colorList = {u8'SoftBlue', u8'SoftOrange', u8'SoftLight', u8'SoftGrey', u8'SoftGreen', u8'SoftRed', u8'SoftBlack'}
local colorListBuffer = imgui.new['const char*'][#colorList](colorList)

--frame
if imgui.Combo(u8'Выберите стиль',colorListNumber,colorListBuffer, #colorList) then
    theme[colorListNumber[0]+1].change()
    ini.main.theme = colorListNumber[0]
    inicfg.save(ini, directIni)
end
if imgui.Button(u8'Сохранить выбор') then
    sampAddChatMessage('[Shelper]: {ffffff}Настройки успешно сохранены.', 0x63CB00)
    ini.main.theme = colorListNumber[0]
    inicfg.save(ini, directIni)
end
--end frame