Модуль:Prototypes/Роль/Лодаут: различия между версиями
Материал из Space Station 14 Вики
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
Строка 10: | Строка 10: | ||
local roleParam = args[2] | local roleParam = args[2] | ||
if not roleParam then | if not roleParam then | ||
return ' | return 'Параметр roleId не указан' | ||
end | end | ||
local roleId = "Job" .. roleParam | local roleId = "Job" .. roleParam | ||
Строка 22: | Строка 22: | ||
end | end | ||
if not role then | if not role then | ||
return ' | return 'Роль с id "' .. roleId .. '" не найдена' | ||
end | end | ||
for _, groupId in ipairs(role.groups or {}) do | for _, groupId in ipairs(role.groups or {}) do | ||
Строка 57: | Строка 57: | ||
local req = eff.requirement | local req = eff.requirement | ||
if req["!type"] == "DepartmentTimeRequirement" and req.department and req.time then | if req["!type"] == "DepartmentTimeRequirement" and req.department and req.time then | ||
extraInfo = extraInfo "{{#invoke:Ftl|main|translation|department-" .. req.department .. "}}: " .. req.time .. "<br>" | extraInfo = extraInfo .. "{{#invoke:Ftl|main|translation|department-" .. req.department .. "}}: " .. req.time .. "<br>" | ||
elseif req["!type"] == "RoleTimeRequirement" and req.role and req.time then | elseif req["!type"] == "RoleTimeRequirement" and req.role and req.time then | ||
extraInfo = extraInfo "{{#invoke:Ftl|main|translation|".. req.role .. "}}: " .. req.time .. "<br>" | extraInfo = extraInfo .. "{{#invoke:Ftl|main|translation|".. req.role .. "}}: " .. req.time .. "<br>" | ||
end | end | ||
end | end | ||
Строка 71: | Строка 71: | ||
end | end | ||
end | end | ||
table.insert(results, extraInfo .. eqValue) | table.insert(results, '<div class="time">' .. extraInfo .. '</div>' .. eqValue) | ||
end | end | ||
end | end |
Версия от 22:01, 13 февраля 2025
Для документации этого модуля может быть создана страница Модуль:Prototypes/Роль/Лодаут/doc
local p = {}
local gearRoleLoadout = mw.loadData("Модуль:IanComradeBot/roleLoadout.json/data")
local gearloadoutGroup = mw.loadData("Модуль:IanComradeBot/loadoutGroup.json/data")
local gearloadout = mw.loadData("Модуль:IanComradeBot/loadout.json/data")
function p.main(frame)
local args = frame.args
local searchKey = args[1]
local roleParam = args[2]
if not roleParam then
return 'Параметр roleId не указан'
end
local roleId = "Job" .. roleParam
local results = {}
local role = nil
for _, r in ipairs(gearRoleLoadout) do
if r.id == roleId then
role = r
break
end
end
if not role then
return 'Роль с id "' .. roleId .. '" не найдена'
end
for _, groupId in ipairs(role.groups or {}) do
local group = nil
for _, g in ipairs(gearloadoutGroup) do
if g.id == groupId then
group = g
break
end
end
if group then
for _, loadoutId in ipairs(group.loadouts or {}) do
local loadout = nil
for _, l in ipairs(gearloadout) do
if l.id == loadoutId then
loadout = l
break
end
end
if loadout and loadout.equipment then
local eqValue = loadout.equipment[searchKey]
if eqValue then
local extraInfo = ""
if loadout.effects then
for _, effect in ipairs(loadout.effects) do
if effect["!type"] == "GroupLoadoutEffect" then
local proto = effect.proto
if proto then
for _, candidate in ipairs(gearloadout) do
if candidate.id == proto then
if candidate.effects then
for _, eff in ipairs(candidate.effects) do
if eff["!type"] == "JobRequirementLoadoutEffect" and eff.requirement then
local req = eff.requirement
if req["!type"] == "DepartmentTimeRequirement" and req.department and req.time then
extraInfo = extraInfo .. "{{#invoke:Ftl|main|translation|department-" .. req.department .. "}}: " .. req.time .. "<br>"
elseif req["!type"] == "RoleTimeRequirement" and req.role and req.time then
extraInfo = extraInfo .. "{{#invoke:Ftl|main|translation|".. req.role .. "}}: " .. req.time .. "<br>"
end
end
end
end
break
end
end
end
end
end
end
table.insert(results, '<div class="time">' .. extraInfo .. '</div>' .. eqValue)
end
end
end
end
end
local output = {}
for _, eq in ipairs(results) do
table.insert(output, '<div class="role">' .. eq .. '</div>')
end
return frame:preprocess(table.concat(output))
end
return p