Модуль:Prototypes/Механика/Доступ

Материал из Space Station 14 Вики

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

local p = {}

-- Таблица для перевода слов
local translations = {
    ["Command"] = "Командование",
    ["Captain"] = "Капитан",
    ["Head of Personnel"] = "Глава персонала",
    ["Cryogenics"] = "Криогеника",
    ["Head of Security"] = "Глава службы безопасности",
    ["Security"] = "Служба безопасности",
    ["Armory"] = "Оружейная",
    ["Brig"] = "Бриг",
    ["Detective"] = "Детектив",
    ["Chief Engineer"] = "Старший инженер",
    ["Engineering"] = "Инженерный",
    ["Atmospherics"] = "Атмосферный",
    ["Research Director"] = "Научный руководитель",
    ["Research"] = "Научный",
    ["Chief Medical Officer"] = "Главный врач",
    ["Medical"] = "Медицинский",
    ["Chemistry"] = "Химия",
    ["Paramedic"] = "Парамедик",
    ["Quartermaster"] = "Квартирмейстер",
    ["Cargo"] = "Снабжение",
    ["Salvage"] = "Утилизаторский",
    ["Bar"] = "Бар",
    ["Kitchen"] = "Кухня",
    ["Hydroponics"] = "Гидропоника",
    ["Service"] = "Сервис",
    ["Janitor"] = "Уборщик",
    ["Theatre"] = "Театр",
    ["Chapel"] = "Церковь",
    ["Lawyer"] = "Юридический",
    ["Maintenance"] = "Техобслуживание",
    ["External"] = "Внешний",
    ["Nuclear Operative"] = "Ядерный оперативник",
    ["Syndicate Agent"] = "Агент Синдиката",
    ["Central Command"] = "Центральное командование",
    ["Wizard"] = "Волшебник"
}

-- Основная функция модуля
function p.main(frame)
    local id = frame.args[1]
    if not id then
        return "Нет данных для обработки"
    end
    
    -- Загрузка данные доступа
    local accessData = mw.title.new("User:IanComradeBot/prototypes/AccessReader/access.json"):getContent()
    if not accessData then
        return "Ошибка: не удалось загрузить данные доступа"
    end
    
    local success, jsonData = pcall(mw.text.jsonDecode, accessData)
    if not success or type(jsonData) ~= "table" then
        return "Ошибка: некорректный формат данных доступа"
    end
    
    for _, item in ipairs(jsonData) do
        if item.id == id and item.AccessReader and item.AccessReader.access then
            local result = {}
            for _, accessList in ipairs(item.AccessReader.access) do
                for _, access in ipairs(accessList) do
                    table.insert(result, translations[access] or access)
                end
            end
            return table.concat(result, ", ") .. "."
        end
    end
    
    return "Ошибка: ID не найден в данных доступа"
end

return p