Вопрос [nl] pinned presets

  • Автор темы Автор темы amiiiil
  • Дата начала Дата начала
Read Only
Read Only
Статус
Оффлайн
Регистрация
2 Май 2022
Сообщения
460
Реакции
68
каким образом их можно закрепить в листе неверлуза?
формат моих пресетов таков: database[name] = content;

функция апдейта листа:

Код:
Expand Collapse Copy
local function update()
    local list = {};
    
    for k, v in next, database do
        list[k] = k
    end
    
    menu.list:update(list);
end
к примеру мне надо закрепить мои два пресета, как это сделать?
 
каким образом их можно закрепить в листе неверлуза?
формат моих пресетов таков: database[name] = content;

функция апдейта листа:

Код:
Expand Collapse Copy
local function update()
    local list = {};
   
    for k, v in next, database do
        list[k] = k
    end
   
    menu.list:update(list);
end
к примеру мне надо закрепить мои два пресета, как это сделать?
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
без индексов желательно
ты их на верх никак не поднимешь без индексов, либо храни строковой индекс самого первого пресета в константе и просто на его место пихай свой пиннед и двигай весь лист, и это будет ужасно запутано ведь ключ останется от прошлого элемента, и в общем затратно, либо юзай индексы, это не так уж затратно, всего одна внешняя переменная. Ну ещё есть варик помечать пинеды прям в структуре, но тогда все равно придется юзать инсерт.

Вставить в верх листа можно только индексом. Ты так же можешь просто удалить элемент который будешь закреплять и просто вставить его по индексу(индексы - пинны, ключи - остальное), насколько я знаю next и pairs читает сначала индексы начиная с 1 а потом все остальное (<=0 и ключи)
 
без индексов желательно
Код:
Expand Collapse Copy
local database = {
    ["Preset1"] = "data1",
    ["Preset2"] = "data2",
    ["Preset3"] = "data3",
}

local pinned = { "Preset1", "Preset2" }

local function update()
    local list = {}

    for _, name in ipairs(pinned) do
        if database[name] then
            list[#list + 1] = name
        end
    end

    for name, _ in pairs(database) do
        local already_added = false
        for _, added_name in ipairs(list) do
            if added_name == name then
                already_added = true
                break
            end
        end
        if not already_added then
            list[#list + 1] = name
        end
    end

    menu.list:update(list)
end
 
Код:
Expand Collapse Copy
local database = {
    ["Preset1"] = "data1",
    ["Preset2"] = "data2",
    ["Preset3"] = "data3",
}

local pinned = { "Preset1", "Preset2" }

local function update()
    local list = {}

    for _, name in ipairs(pinned) do
        if database[name] then
            list[#list + 1] = name
        end
    end

    for name, _ in pairs(database) do
        local already_added = false
        for _, added_name in ipairs(list) do
            if added_name == name then
                already_added = true
                break
            end
        end
        if not already_added then
            list[#list + 1] = name
        end
    end

    menu.list:update(list)
end
огромное спасибо!
 
Назад
Сверху Снизу