-
Автор темы
- #1
Добрый день, людишки этого прекрасного форума! В этом посту, я вам оставлю сурс код скрипта пресетов (думаю знаете каких, по типу асидтеча, чимеры), сделан он 80% из AI (ChatGPT), остальное я подогнал ручками под API неверлуза.
Чтобы нормально им воспользоваться в своем скрипте, у вас должны быть функции Import и Export.
InsertConfig - функция для создания конфига, содержит 2 (было 3) аргумента: name & content
saveConfig - функция для ИЗМЕНЕНИЯ КОНФИГА, содержит также 2 аргумента: id & content (ID с каждым созданием конфига увеличивается)
Чтобы нормально им воспользоваться в своем скрипте, у вас должны быть функции Import и Export.
InsertConfig - функция для создания конфига, содержит 2 (было 3) аргумента: name & content
saveConfig - функция для ИЗМЕНЕНИЯ КОНФИГА, содержит также 2 аргумента: id & content (ID с каждым созданием конфига увеличивается)
Код:
local inspect = require 'neverlose/inspect' -- @добавлено мной, для дебага ошибок
local data = db.test or {}
local lastId = 0 -- Переменная для отслеживания последнего использованного ID
local tbl = {} -- Таблица для хранения всех доступных конфигураций
local convert = {} -- Таблица для исправления ошибки
-- Создание элементов для удобства в работе с конфигурациями
local group = ui.create("", "")
local configList = group:list("Configurations", {})
local input = group:input('name')
local create = group:button('create')
local save = group:button('save')
local delete = group:button('delete')
local load = group:button('load')
-- Создание функций для работы с конфигурациями
local function createConfig(id, name, content)
-- Создание новой конфигурации
local newConfig = {
id = id,
name = name,
content = content
}
return newConfig
end
local function insertConfig(name, content)
-- Проверка на наличие конфигурации с таким же именем
for _, config in pairs(data) do
if config.name == name then
print("Ошибка: Конфигурация с таким именем уже существует")
return
end
end
lastId = lastId + 1 -- Увеличение последнего использованного ID
-- Вставка новой конфигурации в базу данных
data[lastId] = createConfig(lastId, name, content)
end
local function saveConfig(id, content)
-- Проверка на нулевой ID или nil контент
if id == 0 then
print("Ошибка: ID не может быть нулевым")
return
elseif content == nil then
print("Ошибка: контент не может быть nil")
return
end
-- Обновление содержимого конфигурации в базе данных
if data[id] then
data[id].content = content
end
end
-- Создание списка всех конфигураций
local function update_list(list)
for key, value in pairs(data) do
tbl[#tbl + 1] = key
end
if tbl ~= 0 then
tbl = {}
for k, v in pairs(data) do
tbl[v.name] = v.name
convert[v.name] = {name = v.name, content = v.content, id = v.id}
end
table.sort(tbl)
configList:update(tbl)
configList:set_callback(function() input:set(configList:list()[configList:get()]) end)
end
end
create:set_callback(function()
insertConfig(input:get(), 'Конфигурация создана')
end)
save:set_callback(function()
local content = 'Конфигурация изменена'
local secret = convert[configList:list()[configList:get()]]
saveConfig(secret.id, content)
end)
delete:set_callback(function()
local secret = convert[configList:list()[configList:get()]]
data[secret.id] = nil
end)
load:set_callback(function()
local secret = convert[configList:list()[configList:get()]]
local config = secret.content
-- Загрузка вашей конфигурации
-- LoadConfig(config) -- @закомменчено человеком, ибо тут должна быть ваша функция
end)
-- Функция для сохранения таблицы для удобства работы с конфигурациями
events.render:set(update_list)
-- Функция для сохранения данных перед завершением программы
events.shutdown:set(function()
db.test = data
end)