Как сделать, чтобы конфиг сохранял несколько строк в одной переменной

.KOHTOP.

Активный
Автор темы
219
35
Версия MoonLoader
.027.0-preview
Мне нужно сделать так, чтобы создавался кфг с строчками
Lua:
--конфиг
    binder = {
        safety =
            '/me 1 строка',
            '/me 2 строка',
            '/me 3 строка'
я это вывожу в многострочный импуттекст и надо, чтобы с задержкой по одной строке это выводилось в чат
 

RedHolms

Известный
Проверенный
617
360
используй json ('encodeJson' и 'decodeJson')
придётся вручную писать в файл
небольшой пример:
Lua:
saveJson = function(filepath, data)
  local encoded = encodeJson(data)

  local file, errorinfo = io.open(filepath, "w+")

  if not file then
    print("failed to save JSON")
    print("Filepath: ", filepath)
    print("Error info: ", errorinfo)

    printChatError("Не удалось сохранить JSON файл. Подробности смотрите в консоли")

    return
  end

  file:write(encoded)
  file:close()
end
 
  • Грустно
Реакции: MLycoris

.KOHTOP.

Активный
Автор темы
219
35
используй json ('encodeJson' и 'decodeJson')
придётся вручную писать в файл
небольшой пример:
Lua:
saveJson = function(filepath, data)
  local encoded = encodeJson(data)

  local file, errorinfo = io.open(filepath, "w+")

  if not file then
    print("failed to save JSON")
    print("Filepath: ", filepath)
    print("Error info: ", errorinfo)

    printChatError("Не удалось сохранить JSON файл. Подробности смотрите в консоли")

    return
  end

  file:write(encoded)
  file:close()
end
Объясни как работать с JSon, просто раньше даже не смотрел в сторону этой библиотеки, ибо считаю, что очень сложно для меня
 

RedHolms

Известный
Проверенный
617
360
Объясни как работать с JSon, просто раньше даже не смотрел в сторону этой библиотеки, ибо считаю, что очень сложно для меня
json сохраняет любую lua таблицу в текст, и обратно. Намного удобнее, чем ini, поскольку можем вкладывать таблицы друг в друга сколько захотим:
Lua:
-- заменить "ИМЯ ФАЙЛА" на желаемое имя файла настроек
local SETTINGS_FILE_PATH = getGameDirectory() .. "/moonloader/config/ИМЯ ФАЙЛА.json"

-- наши настройки
-- внутри можем хранить почти любые данные
local Settings = {
  somekey = "sometext",
  subtable = {
    subkey = "subvalue",
    anothervalue = "hell ye",
    list = {
      "element1",
      "element2"
    },
    tablelist = {
      { x=0, y=0, z=0 },
      { x=1, y=0, z=0 }
    }
  }
}

function saveSettings()
  local encoded = encodeJson(data)

  local file, errorinfo = io.open(SETTINGS_FILE_PATH, "w+")

  if not file then
    print("failed to save JSON")
    print("Filepath: ", filepath)
    print("Error info: ", errorinfo)

    return
  end

  file:write(encoded)
  file:close()
end

function loadSettings()
  local file, errorinfo = io.open(SETTINGS_FILE_PATH, "r")

  if not file then
    print("failed to load JSON")
    print("Filepath: ", filepath)
    print("Error info: ", errorinfo)

    error(errorinfo)
  end

  local content = file:read("a")
  local decoded = decodeJson(content)

  Settings = decoded
end

функции saveSettings и loadSettings для сохранения и загрузки настроек соответственно