全站通知:
模块:成就印迹
刷
历
编
跳到导航
跳到搜索
此模块的文档可以在模块:成就印迹/doc创建
local p = {}
local achievementData = mw.loadData("Module:成就印迹/AchievementData")
local roleAchievementData = mw.loadData("Module:成就印迹/RoleAchievementData")
------成就页面
p["成就页面"] = function (frame)
local achievementType = frame.args[1]
local achievementLevel = tonumber(frame.args[2])
local tempList = {}
for key, achievement in pairs(achievementData) do
if achievementType == achievement.type and achievementLevel == achievement.level then
table.insert(tempList, { key = key, data = achievement })
end
end
table.sort(tempList, function (a, b)
return a.key < b.key
end)
local resultList = {}
for _, item in ipairs(tempList) do
local achievement = item.data
local html = achievement.file.."|'''<big>"..achievement.name.."</big>'''<br /><small>"
..achievement.desc.."</small><br /><br />'''获得方式:'''"..achievement.get
table.insert(resultList, tostring(html))
end
local result = table.concat(resultList, "\n")
return frame:preprocess('\n<gallery mode="packed">\n'..result..'\n</gallery>')
end
p["成就页面光辉事迹"] = function (frame)
local resultList = {}
for key, achievement in pairs(achievementData) do
if achievement.type == "光辉事迹" then
local html = achievement.file.."|'''<big>"..achievement.name.."</big>'''<br /><small>"
..achievement.desc.."</small><br /><br />'''获得方式:'''"..achievement.get
table.insert(resultList, tostring(html))
end
end
local result = table.concat(resultList, "\n")
return frame:preprocess('<gallery mode="packed">\n'..result..'\n</gallery>')
end
------印迹页面、角色印迹模板
function p.main(frame)
local roleAchievement = frame.args[1]
local achievementLevel = tonumber(frame.args[2])
local tempList = {}
for key, achievement in pairs(roleAchievementData) do
if roleAchievement == achievement.role and achievementLevel == achievement.level then
table.insert(tempList, { key = key, data = achievement })
end
end
table.sort(tempList, function (a, b)
return a.key < b.key
end)
local resultList = {}
for _, item in ipairs(tempList) do
local AchievementData = item.data
local html = AchievementData.file.."|'''<big>"..AchievementData.name.."</big>'''<br /><small>"
..AchievementData.desc.."</small><br /><br />'''获得方式:'''"..AchievementData.get
table.insert(resultList, tostring(html))
end
local result = table.concat(resultList, "\n")
return frame:preprocess('\n<gallery mode="packed">\n'..result..'\n</gallery>')
end
------勋章页面印迹勋章部分
function p.main2(frame)
local roleAchievement = frame.args[1]
local groupedAchievements = {}
-- 遍历数据,将同一角色的印迹按组分类,并存储每组的最高等级
for key, achievement in pairs(roleAchievementData) do
if roleAchievement == achievement.role then
-- 获取组的基础ID,通过截取key的前几位实现(例如: 33500014 -> 3350001)
local baseKey = string.sub(key, 1, 7)
groupedAchievements[baseKey] = groupedAchievements[baseKey] or {}
-- 比较并存储每组中的最高等级印迹
if not groupedAchievements[baseKey].maxLevel or achievement.level > groupedAchievements[baseKey].maxLevel then
groupedAchievements[baseKey].maxLevel = achievement.level
groupedAchievements[baseKey].data = achievement
end
end
end
-- 生成最终输出结果
local resultList = {}
for _, groupData in pairs(groupedAchievements) do
local achievement = groupData.data
local html = achievement.file.."|'''<big>"..achievement.name.."</big>'''"
table.insert(resultList, tostring(html))
end
local result = table.concat(resultList, "\n")
return frame:preprocess('\n<gallery mode="packed">\n'..result..'\n</gallery>')
end
return p