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

Материал из Space Station 14 Вики
мНет описания правки
мНет описания правки
(не показано 5 промежуточных версий этого же участника)
Строка 3: Строка 3:
-- Таблица для перевода слов
-- Таблица для перевода слов
local translations = {
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"] = "Кухня",
     ["Kitchen"] = "Кухня",
     ["Theatre"] = "Театр"
    ["Hydroponics"] = "Гидропоника",
    ["Service"] = "Сервис",
    ["Janitor"] = "Уборщик",
     ["Theatre"] = "Театр",
    ["Chapel"] = "Церковь",
    ["Lawyer"] = "Юридический",
    ["Maintenance"] = "Техобслуживание",
    ["External"] = "Внешний",
    ["Nuclear Operative"] = "Ядерный оперативник",
    ["Syndicate Agent"] = "Агент Синдиката",
    ["Central Command"] = "Центральное командование",
    ["Wizard"] = "Волшебник"
}
}


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


return p
return p

Версия от 08:27, 30 января 2025

Для документации этого модуля может быть создана страница Модуль: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 ""
end

return p