массивы в ini

ice_ice

Участник
Автор темы
62
14
Версия MoonLoader
Другое
Lua:
numbers = {'1', '2', '3'}--к примеру это поместить в ини и потом взаимодействать с этим путем numbers[i]
Возможно ли как то поместить массив в ини и потом взаимодействовать с ним? Если да то как?
 
Решение
Lua:
function cmd_saveNew()
    local file = io.open("moonloader\\config\\table.json", r)
    a = file:read("*a")
    file:close()
    local table = decodeJson(a)
    table["players"]['test']
    encodedTable = encodeJson(table)
    local file = io.open("moonloader\\config\\table.json", "w")
    file:write(encodedTable)
    file:flush()
end
в шестой строке ты обращаешься к элементу, но ничего с ним не делаешь(не присваиваешь)

в пример приведу следующий кусок кода:
Lua:
local settings = {
    uuid = "123123",
    nick = "Liquit",
    authenticated = true,
    token = "yaloh",
    roles = {}
}

local spath = getWorkingDirectory() .. "\\loh\\settings.json"

function main()
    while not isSampAvailable() do wait(0) end
   
    if...

blessave

Известный
362
109
лучше json.
 
  • Нравится
Реакции: ice_ice и qdIbp

ice_ice

Участник
Автор темы
62
14
лучше json.
Спасибо, создал разобрался, но теперь не могу понять как в масив
JSON:
{
    "ress" : [
        "845" , "dor", "1225" , "Des", "246" , "Poop"
    ]
}
добваить еще значений, что то делал как в том примере получилось как то так:
Lua:
function cmd_saveNew()
    local file = io.open("moonloader\\config\\table.json", r)
    a = file:read("*a")
    file:close()
    local table = decodeJson(a)
    table["players"]['test']
    encodedTable = encodeJson(table)
    local file = io.open("moonloader\\config\\table.json", "w")
    file:write(encodedTable)
    file:flush()
end
Но по итогу имею вот это : ML] (error) testjs.lua: ...rs\1\Desktop\GTA San Andreas Clear\moonloader\testjs.lua:36: '=' expected near 'encodedTable'
 

Liquit

Известный
278
108
Lua:
function cmd_saveNew()
    local file = io.open("moonloader\\config\\table.json", r)
    a = file:read("*a")
    file:close()
    local table = decodeJson(a)
    table["players"]['test']
    encodedTable = encodeJson(table)
    local file = io.open("moonloader\\config\\table.json", "w")
    file:write(encodedTable)
    file:flush()
end
в шестой строке ты обращаешься к элементу, но ничего с ним не делаешь(не присваиваешь)

в пример приведу следующий кусок кода:
Lua:
local settings = {
    uuid = "123123",
    nick = "Liquit",
    authenticated = true,
    token = "yaloh",
    roles = {}
}

local spath = getWorkingDirectory() .. "\\loh\\settings.json"

function main()
    while not isSampAvailable() do wait(0) end
   
    if not doesFileExist(spath) then
        sampAddChatMessage('Создаю файл с настройками..', -1)
        save()
    end

    table.insert(settings.roles, "admin")
    table.insert(settings.roles, "player")
    save()

    wait(-1)
end

function save()
    local f = io.open(spath, "w")
    f:write(encodeJson(settings))
    f:close()
end

чтобы добавлять, желательно использовать table.insert(*таблица*, *значение*). стоит учитывать, что значение не обязательно должно быть строкой или числом, это может быть объект. типа:
Lua:
local player = {
    name = "Liquit",
    password = "123123",
}

local players = {}
table.insert(players, player)

в таком случае нужно будет обращаться
players[1].name= "NotLiquit"
 
Последнее редактирование:
  • Нравится
Реакции: ice_ice