inicfg загрузка значений в imgui

Sanurial

Участник
Автор темы
80
12
Версия MoonLoader
.026-beta
1679199392628.png

Не могу понять как работает загрузка конфига. Сохранение сделал спокойно. Но вот загрузку нив какую не выходит...
 
Решение
Со скринами тупанул немного, сорьки :(
Сделал как ты сказал, все ровно не выходит... И по совету выше добавлял .ini в название, так-же не выходит...

Not working...:
--config
local mainIni = inicfg.load({
    main =
    {
      nickname = "NickName",
      textNabor = "Text",
      yaBanda = false
    },
}, "caff")

--imgui
if imgui.Button(u8"Загрузить конфиг") then
    mainIni = inicfg.load(nil, "caff")
    sampAddChatMessage('{ff06ee}Caff >> {ffffff}Конфиг загружен успешно', -1)
end
У меня всё загружает/сохраняет.
изображение_2023-03-19_085518092.png


Lua:
-- config
local mainIni = inicfg.load({
	main = {
		nickname = "NickName",
		textNabor = "text",
		yaBanda = false
	}
}, "caff")

-- переменные, не помню как в обычном imgui объявляются для InputText, так что...

AugustTN

Известный
1,370
470
 

Sanurial

Участник
Автор темы
80
12
Я читал документацию и эту тему тоже, я всеровно не могу понять как загрузить скрипт... Значения сохраняются, но не загружаются при перезагрузке скрипта или по нажатию кнопки "Загрузить конфиг"
1679203115546.png
1679203138266.png
 

Andrinall

Известный
702
518
Я читал документацию и эту тему тоже, я всеровно не могу понять как загрузить скрипт... Значения сохраняются, но не загружаются при перезагрузке скрипта или по нажатию кнопки "Загрузить конфиг"Посмотреть вложение 194159Посмотреть вложение 194160
1. Людям было бы куда проще, если бы ты кидал не скринами, а кодом в блоке [CODE=lua]...[/CODE]
2. Исправь примерно так в некоторых местах
Lua:
-- config
local mainIni = inicfg.load({
    main = {
        nickname = "NickName",
        textNabor = "text",
        yaBanda = false
    }
}, "caff") -- сюда название cfg

-- imgui
if imgui.Button(u8"Загрузить конфиг") then
    mainIni = inicfg.load(nil, "caff") -- переопределение переменной mainIni новой таблицей
    -- тут твой sampAddChatMessage. Было лень переписывать
end
3. Со временем научись понимать документацию.

И ещё учитывай, что... если ты вызываешь inicfg.load с первым агрументом в виде nil, то при отсутствии конфиг-файла метод вернёт nil и скрипт упадёт из-за попытки обратиться к nil по ключу main :D
 
Последнее редактирование:

Sanurial

Участник
Автор темы
80
12
1. Людям было бы куда проще, если бы ты кидал не скринами, а кодом в блоке [CODE=lua]...[/CODE]
2. Исправь примерно так в некоторых местах
Lua:
-- config
local mainIni = inicfg.load({
    main = {
        nickname = "NickName",
        textNabor = "text",
        yaBanda = false
    }
}, "caff") -- сюда название cfg

-- imgui
if imgui.Button(u8"Загрузить конфиг") then
    mainIni = inicfg.load(nil, "caff") -- переопределение переменной mainIni новой таблицей
    -- тут твой sampAddChatMessage. Было лень переписывать
end
3. Со временем научись понимать документацию.

И ещё учитывай, что... если ты вызываешь inicfg.load с первым агрументом в виде nil, то при отсутствии конфиг-файла метод вернёт nil и скрипт упадёт из-за попытки обратиться к nil по ключу main :D

Со скринами тупанул немного, сорьки :(
Сделал как ты сказал, все ровно не выходит... И по совету выше добавлял .ini в название, так-же не выходит...

Not working...:
--config
local mainIni = inicfg.load({
    main =
    {
      nickname = "NickName",
      textNabor = "Text",
      yaBanda = false
    },
}, "caff")

--imgui
if imgui.Button(u8"Загрузить конфиг") then
    mainIni = inicfg.load(nil, "caff")
    sampAddChatMessage('{ff06ee}Caff >> {ffffff}Конфиг загружен успешно', -1)
end

И ещё учитывай, что... если ты вызываешь inicfg.load с первым агрументом в виде nil, то при отсутствии конфиг-файла метод вернёт nil и скрипт упадёт из-за попытки обратиться к nil по ключу main :D
Конфиг существует... Тут такая проблема: таблица загружена, но не передаются значения
MNGRj1J.jpeg


Херня какая-то:
if imgui.Button(u8"DEBUG CFG") then
                    if mainIni then
                        -- Получаем значение из таблицы
                        local nickname = mainIni.main.nickname
                        local textNabor = mainIni.main.textNabor
                        local yaBanda = mainIni.main.yaBanda
                   
                        -- Используем полученные значения
                        print("Nickname: " .. nickname)
                        print("Text Nabor: " .. textNabor)
                        print("yaBanda: " .. tostring(yaBanda))
                    else
                        print("Failed to load config file")
                    end
                end

                if imgui.Button(u8"Загрузить конфиг") then -- Пытался и таким образом загрузить, нечего
                mainIni = inicfg.load(nil, "caff")
                    if mainIni then
                        print("Конфиг загружен")
                        sampAddChatMessage('{ff06ee}Caff >> {ffffff}Конфиг загружен успешно', -1)
                    end
                end
 
Последнее редактирование:

Andrinall

Известный
702
518
Со скринами тупанул немного, сорьки :(
Сделал как ты сказал, все ровно не выходит... И по совету выше добавлял .ini в название, так-же не выходит...

Not working...:
--config
local mainIni = inicfg.load({
    main =
    {
      nickname = "NickName",
      textNabor = "Text",
      yaBanda = false
    },
}, "caff")

--imgui
if imgui.Button(u8"Загрузить конфиг") then
    mainIni = inicfg.load(nil, "caff")
    sampAddChatMessage('{ff06ee}Caff >> {ffffff}Конфиг загружен успешно', -1)
end
У меня всё загружает/сохраняет.
изображение_2023-03-19_085518092.png


Lua:
-- config
local mainIni = inicfg.load({
	main = {
		nickname = "NickName",
		textNabor = "text",
		yaBanda = false
	}
}, "caff")

-- переменные, не помню как в обычном imgui объявляются для InputText, так что в примере для mimgui
local nickname = new.char[256](u8(mainIni.main.nickname))
local nabor = new.char[256](u8(mainIni.main.textNabor)) -- не помню как.. ImBuffer чтоли
local bool = new.bool(mainIni.main.yaBanda) -- ImBool

-- imgui window
imgui.InputText("NickName", nickname, ffi.sizeof(nickname)) -- ffi.sizeof() -> 256
imgui.InputText("Nabor", nabor, ffi.sizeof(nabor)) -- ffi.sizeof() -> 256
if imgui.RadioButtonBool("yaBanda", bool[0]) then bool[0] = not bool[0] end -- bool.v) then bool.v = not bool.v end

if mainIni ~= nil then
	for k, v in pairs(mainIni.main) do
		imgui.Text(k .. ' || ')
		imgui.LinedText(u8(tostring(v))) -- imgui.SameLine(); imgui.Text( ... ), LinedText локальная функа
	end
end
imgui.EndGroup()
if imgui.Button(u8"Загрузить конфиг") then
	mainIni = inicfg.load(nil, "caff")
end
imgui.SameLine()
if imgui.Button(u8"Сохранить конфиг") then
	mainIni.main.nickname = u8:decode(ffi.string(nickname)) -- nickname.v
	mainIni.main.textNabor = u8:decode(ffi.string(nabor)) -- nabor.v
	mainIni.main.yaBanda = bool[0] -- bool.v
    inicfg.save(mainIni, "caff")
end

Со скринами тупанул немного, сорьки :(
Сделал как ты сказал, все ровно не выходит... И по совету выше добавлял .ini в название, так-же не выходит...

Not working...:
--config
local mainIni = inicfg.load({
    main =
    {
      nickname = "NickName",
      textNabor = "Text",
      yaBanda = false
    },
}, "caff")

--imgui
if imgui.Button(u8"Загрузить конфиг") then
    mainIni = inicfg.load(nil, "caff")
    sampAddChatMessage('{ff06ee}Caff >> {ffffff}Конфиг загружен успешно', -1)
end


Конфиг существует... Тут такая проблема:
MNGRj1J.jpeg


Херня какая-то:
if imgui.Button(u8"DEBUG CFG") then
                    if mainIni then
                        -- Получаем значение из таблицы
                        local nickname = mainIni.main.nickname
                        local textNabor = mainIni.main.textNabor
                        local yaBanda = mainIni.main.yaBanda
                    
                        -- Используем полученные значения
                        print("Nickname: " .. nickname)
                        print("Text Nabor: " .. textNabor)
                        print("yaBanda: " .. tostring(yaBanda))
                    else
                        print("Failed to load config file")
                    end
                end

                if imgui.Button(u8"Загрузить конфиг") then -- Пытался и таким образом загрузить, нечего
                mainIni = inicfg.load(nil, "caff")
                    if mainIni then
                        print("Конфиг загружен")
                        sampAddChatMessage('{ff06ee}Caff >> {ffffff}Конфиг загружен успешно', -1)
                    end
                end
При загрузке конфига ты не обновляешь данные переменных.
(ну и я в примере тоже, не сразу понял что надо обновлять при изменении именно самого конфига в процессе игры человеком, а не из кода)

Lua:
-- Button(u8"Загрузка конфига")
mainIni = inicfg.load(nil, "caff")
snickname.v = u8(mainIni.main.nickname)
sobes.v = u8(mainIni.main.textNabor)
sbanda.v = mainIni.main.yaBanda
 
Последнее редактирование:
  • Нравится
Реакции: Sanurial

Sanurial

Участник
Автор темы
80
12
При загрузке конфига ты не обновляешь данные переменных.

Lua:
-- Button(u8"Загрузка конфига")
mainIni = inicfg.load(nil, "caff")
snickname.v = u8(mainIni.main.nickname)
sobes.v = u8(mainIni.main.textNabor)
sbanda.v = mainIni.main.yaBanda
НАКОНЕЦ-ТО, ты просто лучший!)
Спасибо тебе что до конца со мной сидел! Я кстати этим методом тоже пробовал сделать, но не вышло, походу где-то прокосячил...
 
  • Нравится
Реакции: Andrinall