Модуль:Prototypes/Объект/Торгомат/Пополнение

Материал из Space Station 14 Вики
Версия от 09:33, 4 апреля 2025; Pok (обсуждение | вклад)

(разн.) ← Предыдущая версия | Подтверждённая версия (разн.) | Текущая версия (разн.) | Следующая версия → (разн.)

Для документации этого модуля может быть создана страница Модуль:Prototypes/Объект/Торгомат/Пополнение/doc

-- Загрузка данных
local vendingMachinesData = mw.loadData("Модуль:IanComradeBot/prototypes/vending machines.json/data")
local restockData = mw.loadData("Модуль:IanComradeBot/prototypes/vending machines/restock.json/data")

local p = {}

-- Поиск данных по ID
local function findDataById(data, id)
    if not data then return nil end
    for _, item in ipairs(data) do
        if item.id == id then
            return item
        end
    end
    return nil
end

-- Получение списка торговых автоматов, которые могут быть пополнены данным пополнителем
local function getRestockOutput(id)
    local result = ""
    
    -- Находим пополнителя по ID
    local restockItem = findDataById(restockData, id)
    if not restockItem then
        return "Пополнитель не найден"
    end
    
    -- Для каждого объекта в canRestock ищем соответствующие автоматы
    if restockItem.VendingMachineRestock and restockItem.VendingMachineRestock.canRestock then
        for _, canRestockId in ipairs(restockItem.VendingMachineRestock.canRestock) do
            -- Ищем все автоматы, где pack соответствует значению canRestock
            for _, vendingMachine in ipairs(vendingMachinesData) do
                if vendingMachine.VendingMachine and vendingMachine.VendingMachine.pack == canRestockId then
                    -- Добавляем ID найденного автомата в результат
                    result = result .. mw.getCurrentFrame():preprocess("{{#invoke:Предмет|main|" ..  vendingMachine.id .. "|repository=|wrapper=|link=}}")
                end
            end
        end
    end

    return result
end

-- Основная функция модуля
function p.main(frame)
    local id = frame.args[1]

    if not id then return "" end

    return getRestockOutput(id)
end

return p