全站通知:
            
            
        
模块:成就印迹
                  
                  
                  刷
                  
                     
                               
                               历
                            
                  
                    
                      
                        
                        编
                      
                    
                
            
            
            
            
            
            跳到导航
            跳到搜索
            
            
                
            
            
            
            
        
    此模块的文档可以在模块:成就印迹/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
                
                    沪公网安备 31011002002714 号