模块:勋章
外观
-{}-
if args['cost' .. awardNum] then
local cost = infoTable:tag('tr')
cost
:tag('th')
:wikitext('获取条件')
:done()
:tag('td')
:wikitext(args['cost' .. awardNum])
:done()
end
-{}-
{{勋章
|file1 = [[file:D级消费勋章-同盟DIVE.gif]]
|name1 = 同盟DIVE
|EXP1 = 30天
|author1 = kzdds123
|description1 = 发帖是不可能发帖的,这辈子不可能发帖的, 做活动又不会做 ,就是潜水这种东西 ,才能维持的了生活这样子
}}
-{}-
{{勋章
|file1 = [[File:限制会员勋章.gif]]
|name1 = 限制会员
|author1 = -
|cost1 = -
|EXP1 = 永久
|description1 = 限制在新手村的时候还请好好学习版规噢!
}}
-{}-
{{勋章
|file1 = [[File:限制会员勋章.gif]]
|name1 = LV0:战五路线
|price1 = 5[[节操]]
|Purchase1 = 回帖战斗力+100(触发 100%)
|EXP1 = 永久
|Effect1 = -
|upgrade1 =战斗狂人
|requirements1 = 战斗力≥0
|ability1 = 无效果
|description1 = 主要用于新人因连续两月做降低战斗力任务,<br>
导致战斗力低于-250而无法购买大部分勋章的情况时的补救措施。
}}
LV0:战五路线
| 价格 | 5节操 |
|---|---|
| 购买条件 | 回帖战斗力+100(触发 100%) |
| 效果 | - |
| 有效期 | 永久 |
| 升级说明 | 战斗狂人 |
| 升级要求 | 战斗力≥0 |
| 升级能力 | 无效果 |
| 主要用于新人因连续两月做降低战斗力任务, 导致战斗力低于-250而无法购买大部分勋章的情况时的补救措施。 | |
--
--处理勋章的模块
--
--若要新增参数,
--请在argText里加入参数名称与对应的文字
--并在displayOrder里也加入参数名称(displayOrder里面的参数相对位置代表显示顺序)
--即可完成
local p = {}
--参数对应的文字;大小写有区别
local argText = {
["limited"] = "限定贩售期间",
["cost"] = "获取条件",
["price"] = "价格",
["Purchase"] = "购买条件",
["Effect"] = "效果",
["EXP"] = "有效期",
["upgrade"] = "升级说明",
["requirements"] = "升级要求",
["ability"] = "升级能力",
["ranking"] = "名次",
["author"] = "作者",
["inspiration"] = "灵感",
["testimonials"] = "感言",
}
--用于决定显示顺序;大小写有区别
local displayOrder = {
"limited", "cost", "price", "Purchase",
"Effect", "EXP", "upgrade", "requirements",
"ability", "ranking", "author", "inspiration",
"testimonials",
}
--处理单个勋章
function renderAwardDiv(awardNum, args)
--添加新的div
local awardDiv = mw.html.create('div')
if args['file' .. awardNum] then
awardDiv
--div样式
--:attr('align', 'center')
:css('width', '200px')
:css('margin', '15px')
:css('display', 'inline-block')
:css('vertical-align', 'top')
:css('position', 'relative')
:css('text-align', 'center')
:wikitext(args['file' .. awardNum])
:wikitext('<br>')
:wikitext(args['name' .. awardNum])
end
--创建表格
local infoTable = mw.html.create('table')
infoTable
:css('margin', 'auto')
:css('text-align', 'center')
:css('max-width', '200px')
:css('min-width', '200px')
:attr('border', '1')
:attr('cellspacing', '0')
--依照displayOrder的顺序建立表格内容
for i, arg in ipairs(displayOrder) do
if args[arg .. awardNum] then
local row = infoTable:tag('tr')
row
:tag('th')
:wikitext(argText[arg])
:done()
:tag('td')
:wikitext(args[arg .. awardNum])
:done()
end
end
if args['description' .. awardNum] then
local description = infoTable:tag('tr')
description
:tag('td')
:attr('colspan', '2')
:css('padding', '0 10px 0 10px')
:wikitext(args['description' .. awardNum])
:done()
end
return awardDiv:node(infoTable)
end
--处理表格
function renderMainDiv(awardNums, args)
local mainDiv = mw.html.create('div')--创建mainDiv
--在这里mainDiv添加样式
:css('overflow', 'auto')
:css('max-width', '800px')
--循环处理每一个勋章
--splitCount为分割的数量
local splitCount = tonumber(args['splitCount'])
if splitCount then
for i, awardNum in ipairs(awardNums) do
mainDiv:node(renderAwardDiv(awardNum, args))
if i%splitCount==0 then mainDiv:tag('br') end
end
else
for i, awardNum in ipairs(awardNums) do
mainDiv:node(renderAwardDiv(awardNum, args))
end
end
return mainDiv
end
function p.awards(frame)
local args={}
local awardNums={}
--获取页面传来得参数,而不是模板的参数
local parent_args = frame:getParent().args;
--将获取的参数传给args
for k, v in pairs(parent_args) do
if v ~= 'nil' then
args[k] = v
end
end
for k, v in pairs(args) do
--依靠file个数,计算勋章个数
local awardNum = ('' .. k):match('^file(%d+)$')
if awardNum then table.insert(awardNums, tonumber(awardNum)) end
end
table.sort(awardNums)
--处理勋章
local mainDiv = renderMainDiv(awardNums, args)
return tostring(mainDiv)
end
return p