Модуль:Prototypes/Механика/Доступ: различия между версиями
Материал из Space Station 14 Вики
Pok (обсуждение | вклад) (Новая страница: «local p = {} function p.parse(frame) -- Получение входных данных local input = frame.args[1] if not input then return "Нет данных для обработки" end -- Декодирование строки JSON в таблицу Lua local success, data = pcall(mw.text.jsonDecode, input) if not success or type(data) ~= "table" then return "Ошибка: некорректный JSON"...») |
Pok (обсуждение | вклад) мНет описания правки |
||
(не показано 6 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
local p = {} | local p = {} | ||
function p. | -- Таблица для перевода слов | ||
local translations = { | |||
local | ["Command"] = "Командование", | ||
if not | ["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 "Нет данных для обработки" | return "Нет данных для обработки" | ||
end | end | ||
-- | -- Загрузка данные доступа | ||
local success, | local accessData = mw.title.new("User:IanComradeBot/prototypes/AccessReader/access.json"):getContent() | ||
if not success or type( | 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 | |||
if item.id == id and item.AccessReader and item.AccessReader.access then | |||
for _, item in ipairs( | local result = {} | ||
if | for _, accessList in ipairs(item.AccessReader.access) do | ||
for _, access in ipairs(accessList) do | |||
table.insert(result, | table.insert(result, translations[access] or access) | ||
end | |||
end | |||
return table.concat(result, ", ") .. "." | |||
end | end | ||
end | end | ||
return "" | |||
return | |||
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