Перезапись ини конфига после обновления скрипта / Lua

optimal user

Известный
Автор темы
107
6
Версия MoonLoader
Другое
Сделал авто обновление скрипта
Допустим, в обновленном скрипте я изменил структуру ини файла, добавив новую переменную
Скрипт обновился, но при заходе в игру во время loadIni летит ошибка, поскольку файл уже существует, но такой переменной в нем нету
Каждый раз удалять его и пересоздавать во время обновления вроде выглядит глупым, поскольку настройки будут сбрасываться
Есть вариант сделать перезапись? Чтобы если такая переменная уже существует - она оставалась, если такой нет - добавлялась
 
Решение
потому что надо создавать и читать кфг так:
Lua:
local inicfg = require('inicfg')
local iniFileName = 'filename.ini'
local ini = inicfg.load({
    main = {
        var1 = 'one'
    },
}, iniFileName)
inicfg.save(ini, iniFileName)

-- ini.main.var1
в таком случае все несуществующие значения будут создаваться

chapo

чопа сребдс // @moujeek
Модератор
8,934
11,701
потому что надо создавать и читать кфг так:
Lua:
local inicfg = require('inicfg')
local iniFileName = 'filename.ini'
local ini = inicfg.load({
    main = {
        var1 = 'one'
    },
}, iniFileName)
inicfg.save(ini, iniFileName)

-- ini.main.var1
в таком случае все несуществующие значения будут создаваться
 

optimal user

Известный
Автор темы
107
6
потому что надо создавать и читать кфг так:
Lua:
local inicfg = require('inicfg')
local iniFileName = 'filename.ini'
local ini = inicfg.load({
    main = {
        var1 = 'one'
    },
}, iniFileName)
inicfg.save(ini, iniFileName)

-- ini.main.var1
в таком случае все несуществующие значения будут создаваться
Попробовал так, ини файл не изменился
 
Последнее редактирование:

optimal user

Известный
Автор темы
107
6
Я подниму пожалуй тему) Метод выше уже созданный ини файл не редактирует
Я вызываю сколько угодно раз saveINI, но ИНИ файл не перезаписывается, ошибки нигде не летят, скрипт дальше работает корректно
value и keys - переменные, которые уже были в ини. test - новая, которую добавил

Lua:
function saveINI()
    inicfg.save({
        sets = {
            value1 = value1.v,
            value2 = value2.v,
            value3 = value3.v,
            value4 = value4.v,
            value5 = value5.v
        },
        keys = {
            key1 = key1,
            key2 = key2,
            test = test
        }
    }, 'example')
end

function loadINI()
    local ini = inicfg.load({
        sets = {
            value1 = value1.v,
            value2 = value2.v,
            value3 = value3.v,
            value4 = value4.v,
            value5 = value5.v
        },
        keys = {
            key1 = key1,
            key2 = key2,
            test = test
        }
    }, 'example')
    if ini == nil then
        saveINI()
    else
        value1.v = ini.sets.value1
        value2.v = ini.sets.value2
        value3.v = ini.sets.value3
        value4.v = ini.sets.value4
        value5.v = ini.sets.value5
        key1 = ini.keys.key1
        key2 = ini.keys.key2
        test = ini.keys.test
    end
end

INI:
[keys]
key1=55
key2=65
[sets]
value1=true
value2=true
value3=true
value4=true
value5=true
 
Последнее редактирование: