- 1,361
- 722
JSON, в который после добавления нового элемента, не нужно удалять конфиг, работает как ini, только поддерживает непосекционное расположение
Как установить: Ctrl + C + Ctrl + V -> вверху вашего кода, подгружать и все делать так же, как с ini, только вместо inicfg мы пишем json
Сам JSON:
Пример использования:
Как работает?
При изменении таблицы в коде, если с таблицей в json не совпадает, то просто добавляет новые ключи и значения, либо же удаляет, конец
Как установить: Ctrl + C + Ctrl + V -> вверху вашего кода, подгружать и все делать так же, как с ini, только вместо inicfg мы пишем json
Сам JSON:
Lua:
local json = {}
json.save = function(array, nameFile)
local file = io.open(getWorkingDirectory().."\\config\\"..nameFile, "w")
file:write(encodeJson(array))
file:close()
end
json.checkAdapt = function(defaultArray, nameFile)
local file = io.open(getWorkingDirectory().."\\config\\"..nameFile, "r")
if file then
local currentConfig = decodeJson(file:read("*a"))
file:close()
local function recursiveCheck(default, current)
for key, value in pairs(default) do
if current[key] == nil then
current[key] = value
elseif type(value) == "table" and type(current[key]) == "table" then
recursiveCheck(value, current[key])
end
end
for key in pairs(current) do
if default[key] == nil then
current[key] = nil
end
end
end
recursiveCheck(defaultArray, currentConfig)
json.save(currentConfig, nameFile)
else
json.save(defaultArray, nameFile)
end
end
json.load = function(defaultArray, nameFile)
json.checkAdapt(defaultArray, nameFile)
local file = io.open(getWorkingDirectory().."\\config\\"..nameFile, "r")
if file then
local luaTable = decodeJson(file:read("*a"))
file:close()
return luaTable
else
return defaultArray
end
end
Пример использования:
Lua:
local cfg = json.load({
main = {
test = {
lol = {
jjk = {},
l = 0
}
}
},
raje = {
aim = false,
wh = false,
gm = {
refactor = false,
bullets = false,
hp = false
}
}
}
json.save(cfg, "config.json")
Как работает?
При изменении таблицы в коде, если с таблицей в json не совпадает, то просто добавляет новые ключи и значения, либо же удаляет, конец