Модуль:Prototypes/Механика/Доступ: различия между версиями

мНет описания правки
мНет описания правки
 
(не показаны 2 промежуточные версии этого же участника)
Строка 40: Строка 40:
     ["SyndicateAgent"] = "Агент Синдиката",
     ["SyndicateAgent"] = "Агент Синдиката",
     ["CentralCommand"] = "Центральное командование",
     ["CentralCommand"] = "Центральное командование",
     ["Wizard"] = "Волшебник"
     ["Wizard"] = "Волшебник",
    ["AllAccess"] = "Полный доступ"
}
}


-- Основная функция модуля
-- Основная функция модуля
function p.main(frame)
function p.main(frame)
     local id = frame.args[1]
     local param1 = frame.args[1]
   
    -- Режим перевода
    if param1 == "translate" then
        local key = frame.args[2]
        if not key then
            return "Ошибка: отсутствует ключ для перевода"
        end
        return translations[key] or key
    end
 
    local id = param1
     if not id then
     if not id then
         return "Нет данных для обработки"
         return "Нет данных для обработки"
Строка 54: Строка 66:
     end
     end
      
      
local success, jsonData = pcall(function() return accessData end)
    local success, jsonData = pcall(function() return accessData end)
if not success or type(jsonData) ~= "table" then
    if not success or type(jsonData) ~= "table" then
    return "Ошибка: некорректный формат данных доступа"
        return "Ошибка: некорректный формат данных доступа"
end
    end


   
     for _, item in ipairs(jsonData) do
     for _, item in ipairs(jsonData) do
         if item.id == id and item.AccessReader and item.AccessReader.access then
         if item.id == id and item.AccessReader then
             local result = {}
             local result = {}
             for _, accessList in ipairs(item.AccessReader.access) do
             -- Если присутствует accessGroups, обрабатываем их
                for _, access in ipairs(accessList) do
            if item.AccessReader.accessGroups then
                    table.insert(result, translations[access] or access)
                for _, group in ipairs(item.AccessReader.accessGroups) do
                    for _, access in ipairs(group) do
                        table.insert(result, translations[access] or access)
                    end
                 end
                 end
            -- Если accessGroups отсутствует, используем access
            elseif item.AccessReader.access then
                for _, accessList in ipairs(item.AccessReader.access) do
                    for _, access in ipairs(accessList) do
                        table.insert(result, translations[access] or access)
                    end
                end
            end
            if #result > 0 then
                return table.concat(result, ", ")
             end
             end
            return table.concat(result, ", ")
         end
         end
     end
     end