Модуль:Entity Sprite: различия между версиями

Материал из Space Station 14 Вики
мНет описания правки
мНет описания правки
Метка: ручная отмена
Строка 17: Строка 17:
         return nil
         return nil
     end
     end
    local id = entry.id
    local sprite = entry.Sprite.sprite
     local result = {}
     local result = {}
     table.insert(result, mw.getCurrentFrame():preprocess("{{Entity Sprite|" .. id .. "|" .. sprite .. "}}"))
     table.insert(result, mw.getCurrentFrame():preprocess("{{Entity Sprite|" .. entry.id .. "|" .. entry.Sprite.sprite .. "}}"))
    table.insert(result, mw.getCurrentFrame():preprocess("{{LinkСard|SideStyle=1|image=" .. id .. ".png|name=Имя: {{#invoke:Entity Lookup|getname|" .. id .. "}}<br>Путь: [[:Файл:" .. id .. ".png]]}}"))
 
    table.insert(result, "<div class=\"entity-sprite__strings no-margin-edges\" style=\"white-space: pre; font-family: monospace; background: #d0d0ff0b; padding: 12px 8px;\">")
    table.insert(result, "== Краткое описание ==\n{{Файл\n|Описание = \n|Id = " .. id .. "\n|Сервера = {{abb|SS14}}\n|Источник = \n|Путь = Resources/Textures/" .. id .. ".rsi\n|Теги = \n}}\n")
    table.insert(result, "== Лицензирование ==\n{{CC-BY-SA-3.0}}")
    table.insert(result, "</div>")
 
     return table.concat(result)
     return table.concat(result)
end
end

Версия от 19:47, 20 января 2025

Для документации этого модуля может быть создана страница Модуль:Entity Sprite/doc

local p = {}

local function loadData(filePath)
    local page = mw.title.new(filePath)
    if not page then
        return nil
    end
    local content = page:getContent()
    if not content then
        return nil
    end
    return mw.text.jsonDecode(content)
end

local function generateTemplate(entry)
    if not entry.id or not entry.Sprite or not entry.Sprite.sprite then
        return nil
    end
    local result = {}
    table.insert(result, mw.getCurrentFrame():preprocess("{{Entity Sprite|" .. entry.id .. "|" .. entry.Sprite.sprite .. "}}"))
    return table.concat(result)
end

function p.main(frame)
    local data = loadData('User:IanComradeBot/prototypes/entity sprite.json')
    if not data or type(data) ~= 'table' then
        return 'Ошибка: Невозможно загрузить данные из JSON.'
    end
    
    local result = {}
    for _, entry in ipairs(data) do
        local template = generateTemplate(entry)
        if template then
            table.insert(result, template)
        end
    end
    
    return table.concat(result)
end

return p