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

Материал из Space Station 14 Вики
Версия от 22:11, 16 января 2025; Pok (обсуждение | вклад) (Новая страница: «local p = {} -- Загрузка данных local function loadData(filePath) local page = mw.title.new(filePath) local content = page:getContent() return content and mw.text.jsonDecode(content) or nil end -- Поиск данных по 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 --...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

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

local p = {}

-- Загрузка данных
local function loadData(filePath)
    local page = mw.title.new(filePath)
    local content = page:getContent()
    return content and mw.text.jsonDecode(content) or nil
end

-- Поиск данных по 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 vendingMachines = loadData("User:IanComradeBot/prototypes/vending machines.json")
    local restockData = loadData("User:IanComradeBot/prototypes/vending machines/restock.json")
    
    local result = ""
    
    -- Проходим по данным пополнителей
    for _, restock in ipairs(restockData) do
        if restock.canRestock then
            -- Проверяем, если текущий пополнитель может пополнить автомат с данным ID
            for _, canRestockId in ipairs(restock.canRestock) do
                if canRestockId == id then
                    -- Находим соответствующий торговый автомат в vendingMachines
                    for _, vendingMachine in ipairs(vendingMachines) do
                        if vendingMachine.VendingMachine and vendingMachine.VendingMachine.pack == canRestockId then
                            -- Если автомат найден, добавляем его ID в результат
                            result = result .. mw.getCurrentFrame():preprocess("{{LinkСard|image=" .. vendingMachine.id .. "|name={{#invoke:Entity Lookup|getname|" .. vendingMachine.id .. "}}|link=Торговые автоматы#{{#invoke:Entity Lookup|getname|" .. vendingMachine.id .. "}}}}")
                        end
                    end
                end
            end
        end
    end

    return result
end

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

    if not id then return "" end

    return getRestockOutput(id)
end

return p