全站通知:
模块:图标
刷
历
编
跳到导航
跳到搜索
此模块的文档可以在模块:图标/doc创建
local p = {}
-- 通用函数:处理道具图标样式
local function icon_style(itemName, itemFile, itemQuality, size, imgSize)
local qualityColor = {
["私服"] = "#F78653",
["传说"] = "#F85555",
["完美"] = "#FFC555",
["卓越"] = "#F285FF",
["精致"] = "#60A3F7",
["初始"] = "#ECECEC",
}
local html = mw.html.create()
local borderColor = qualityColor[itemQuality]
local iconHTML = html
:tag('span'):addClass('items-icon')
:tag('span'):addClass('items-icon-img radius10'):cssText("border-color:"..borderColor):wikitext("[[file:"..
itemFile.."|"..imgSize.."|class=radius10|link=]]"):done()
:tag('span'):addClass('items-icon-text'):cssText("font-size:"..size):wikitext(itemName):done()
:done()
return tostring(iconHTML)
end
-- 通用函数:数据查找
local function find_item_in_data(data, itemName)
for _, item in pairs(data) do
if item.name == itemName then
return item
end
end
return nil
end
function p.main(frame)
local itemType = frame.args["类型"]
local itemName = frame.args[1]
local roleName = frame.args["role"]
local size = frame.args["size"]
local imgSize = frame.args["imgSize"]
local itemIcon = ""
local itemFunctions = {
["时装"] = p["角色时装"],
["外观"] = p["武器外观"],
["礼物"] = p["礼物"],
["喷漆"] = p["喷漆"],
["基板"] = p["基板"],
["封装"] = p["封装"],
["勋章"] = p["勋章"],
["表情"] = p["表情"],
["语音"] = p["语音"],
["动作"] = p["超弦体动作"],
["气泡"] = p["聊天气泡"],
["头套"] = p["头套"],
["卡牌"] = p["生化卡牌"],
["互动"] = p["互动道具"],
[""] = p["功能道具"],
}
if itemFunctions[itemType] then
itemIcon = itemFunctions[itemType](itemName, size, imgSize, roleName)
else
itemIcon = p["其它"](frame.args[1], frame.args["file"], frame.args["quality"], size, imgSize)
end
return itemIcon
end
p["角色时装"] = function (itemName, size, imgSize, roleName)
local data = mw.loadData("模块:角色/SkinData")
if roleName and roleName ~= "" then
-- 只检查指定角色下的时装
local roleData = data[roleName]
if roleData then
local roleSkin = roleData[itemName]
if roleSkin then
return icon_style(
"角色时装:"..itemName,
"角色时装图鉴_"..roleSkin['id']..".png",
roleSkin['稀有度'],
size,
imgSize
)
end
end
else
-- 未指定角色时,需要遍历所有角色
for _, roleData in pairs(data) do
local roleSkin = roleData[itemName]
if roleSkin then
return icon_style(
"角色时装:"..itemName,
"角色时装图鉴_"..roleSkin['id']..".png",
roleSkin['稀有度'],
size,
imgSize
)
end
end
end
return "时装名称错误或无数据"
end
p["武器外观"] = function (itemName, size, imgSize)
local skinData = mw.loadData("模块:武器/SkinData")
local otherSkinData = mw.loadData("模块:武器/OtherSkinData")
local skinList = {}
for k, v in pairs(skinData or {}) do
skinList[k] = v
end
for k, v in pairs(otherSkinData or {}) do
skinList[k] = v
end
local weaponSkinParts = mw.text.split(itemName, "-")
local weaponName = weaponSkinParts[1]
local skinName = weaponSkinParts[2]
local weaponData = skinList[weaponName]
assert(weaponData, "武器名称错误: "..(weaponName or "未知"))
local skinData = weaponData[skinName]
assert(skinData, "外观名称错误: "..(skinName or "未知"))
local weaponSkinIcon = icon_style("武器外观:"..weaponName.."-"..skinName,
"武器外观图鉴_"..skinData['id']..".png",
skinData['稀有度'],
size,
imgSize)
return weaponSkinIcon
end
p["礼物"] = function (itemName, size, imgSize)
local data = mw.loadData("模块:角色礼物/Data")
local item = find_item_in_data(data, itemName)
if item then
local itemIcon = icon_style("礼物:"..item.name, item.file, item.quality, size, imgSize)
return itemIcon
else
return "名称错误或无数据"
end
end
p["喷漆"] = function (itemName, size, imgSize)
local data = mw.loadData("模块:玩家装饰/DecalData")
local item = find_item_in_data(data, itemName)
if item then
local itemIcon = icon_style("喷漆:"..item.name, item.file, item.quality, size, imgSize)
return itemIcon
else
return "名称错误或无数据"
end
end
p["基板"] = function (itemName, size, imgSize)
local data = mw.loadData("模块:玩家装饰/IDCardData")
local item = find_item_in_data(data, itemName)
if item then
local itemIcon = icon_style("基板:"..item.name, item.file, item.quality, size, imgSize)
return itemIcon
else
return "名称错误或无数据"
end
end
p["封装"] = function (itemName, size, imgSize)
local data = mw.loadData("模块:玩家装饰/FrameData")
local item = find_item_in_data(data, itemName)
if item then
local itemIcon = icon_style("封装:"..item.name, item.file, item.quality, size, imgSize)
return itemIcon
else
return "名称错误或无数据"
end
end
p["勋章"] = function (itemName, size, imgSize)
local data = mw.loadData("模块:玩家装饰/BadgeData")
local item = find_item_in_data(data, itemName)
if item then
local itemIcon = icon_style("勋章:"..item.name, item.file, item.quality, size, imgSize)
return itemIcon
else
return "名称错误或无数据"
end
end
p["表情"] = function (itemName, size, imgSize)
local data = mw.loadData("模块:角色表情/Data")
local item = find_item_in_data(data, itemName)
if item then
local itemIcon = icon_style("表情:"..item.name, item.file, item.quality, size, imgSize)
return itemIcon
else
return "名称错误或无数据"
end
end
p["语音"] = function (itemName, size, imgSize)
local voiceFile = "图标-"..itemName.."语音.png"
local voiceIcon = icon_style(itemName.."语音", voiceFile, "精致", size, imgSize)
return voiceIcon
end
p["超弦体动作"] = function (itemName, size, imgSize)
local data = mw.loadData("模块:玩家装饰/RoleActionData")
local item = find_item_in_data(data, itemName)
if item then
local itemIcon = icon_style("超弦体动作:"..item.name, item.file, item.quality, size, imgSize)
return itemIcon
else
return "名称错误或无数据"
end
end
p["聊天气泡"] = function (itemName, size, imgSize)
local data = mw.loadData("模块:玩家装饰/ChatBubblesData")
local item = find_item_in_data(data, itemName)
if item then
local itemIcon = icon_style("聊天气泡:"..item.name, item.file, item.quality, size, imgSize)
return itemIcon
else
return "名称错误或无数据"
end
end
p["头套"] = function (itemName, size, imgSize)
local data = mw.loadData("模块:玩家装饰/MascotHeadData")
local item = find_item_in_data(data, itemName)
if item then
local itemIcon = icon_style("头套:"..item.name, item.file, item.quality, size, imgSize)
return itemIcon
else
return "名称错误或无数据"
end
end
p["生化卡牌"] = function (itemName, size, imgSize)
local data = mw.loadData("模块:生化卡牌/Data")
local item = find_item_in_data(data, itemName)
if item then
local itemIcon = icon_style("卡牌:"..item.name, item.file, item.quality, size, imgSize)
return itemIcon
else
return "名称错误或无数据"
end
end
p["互动道具"] = function (itemName, size, imgSize)
local data = mw.loadData("模块:功能道具/InteractivePropsData")
local item = find_item_in_data(data, itemName)
if item then
local itemIcon = icon_style("互动道具:"..item.name, item.file, item.quality, size, imgSize)
return itemIcon
else
return "名称错误或无数据"
end
end
p["功能道具"] = function (itemName, size, imgSize)
local data = mw.loadData("模块:功能道具/Data")
local item = find_item_in_data(data, itemName)
if item then
local itemIcon = icon_style(item.name, item.file, item.quality, size, imgSize)
return itemIcon
else
return "名称错误或无数据"
end
end
p["其它"] = function (Name, File, Quality, size, imgSize)
local itemIcon = icon_style(Name, File, Quality, size, imgSize)
return itemIcon
end
return p