Модуль:Песочница/Pok
Материал из Space Station 14 Вики
Для документации этого модуля может быть создана страница Модуль:Песочница/Pok/doc
-- Загрузка данных
local itemData = mw.loadData("Модуль:IanComradeBot/prototypes/fills/Item.json/data")
local p = {}
-- Поиск данных по ID
local function findDataById(id)
for _, item in ipairs(itemData) do
if item.id == id then
return item
end
end
return nil
end
-- Форматирование содержимого
local function formatContent(content)
if not content.id then return "Ошибка: отсутствует id у элемента." end
return string.format("{{Item|%s}}", content.id)
end
-- Обработка EntityTableContainerFill
local function getContainedOutput(id, visited)
visited = visited or {}
if visited[id] then return '' end
visited[id] = true
local item = findDataById(id)
if not item or not item.EntityTableContainerFill then return '' end
local result = {}
local containers = item.EntityTableContainerFill.containers
if containers.entity_storage and containers.entity_storage.children then
for _, child in ipairs(containers.entity_storage.children) do
if child.id then
result[#result + 1] = formatContent(child)
elseif child["!type"] == "GroupSelector" then
for _, groupChild in ipairs(child.children or {}) do
if groupChild.id then
result[#result + 1] = formatContent(groupChild)
end
end
end
end
end
return table.concat(result, '\n')
end
-- Основная функция модуля
function p.main(frame)
local mode = frame.args[1]
local id = frame.args[2]
if not id then return 'Не указан ID.' end
if mode == 'contained' then
return getContainedOutput(id)
else
return 'Неизвестный режим: ' .. mode
end
end
return p