模块:勋章:修订间差异
跳到导航
跳到搜索
(架构重整;参数的新增应该简单一些) |
无编辑摘要 |
||
第12行: | 第12行: | ||
--参数对应的文字;大小写有区别 | --参数对应的文字;大小写有区别 | ||
local argText = { | local argText = { | ||
limited = "限定贩售期间", | ["limited"] = "限定贩售期间", | ||
cost = "获取条件", | ["cost"] = "获取条件", | ||
price = "价格", | ["price"] = "价格", | ||
Purchace = "购买条件", | ["Purchace"] = "购买条件", | ||
Effect = "效果", | ["Effect"] = "效果", | ||
EXP = "有效期", | ["EXP"] = "有效期", | ||
upgrade = "升级说明", | ["upgrade"] = "升级说明", | ||
requirements = "升级要求", | ["requirements"] = "升级要求", | ||
ability = "升级能力", | ["ability"] = "升级能力", | ||
ranking = "名次", | ["ranking"] = "名次", | ||
author = "作者", | ["author"] = "作者", | ||
inspiration = "灵感", | ["inspiration"] = "灵感", | ||
testimonials = "感言", | ["testimonials"] = "感言", | ||
} | } | ||
--用于决定显示顺序;大小写有区别 | --用于决定显示顺序;大小写有区别 | ||
local displayOrder = { | local displayOrder = { | ||
limited, cost, price, Purchace, | "limited", "cost", "price", "Purchace", | ||
Effect, EXP, upgrade, requirements, | "Effect", "EXP", "upgrade", "requirements", | ||
ability, ranking, author, inspiration, | "ability", "ranking", "author", "inspiration", | ||
testimonials, | "testimonials", | ||
} | } | ||
2022年4月5日 (二) 13:43的版本
-{}- 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而无法购买大部分勋章的情况时的补救措施。 }}
-- --处理勋章的模块 -- --若要新增参数, --请在argText里加入参数名称与对应的文字 --并在displayOrder里也加入参数名称(displayOrder里面的参数相对位置代表显示顺序) --即可完成 local p = {} --参数对应的文字;大小写有区别 local argText = { ["limited"] = "限定贩售期间", ["cost"] = "获取条件", ["price"] = "价格", ["Purchace"] = "购买条件", ["Effect"] = "效果", ["EXP"] = "有效期", ["upgrade"] = "升级说明", ["requirements"] = "升级要求", ["ability"] = "升级能力", ["ranking"] = "名次", ["author"] = "作者", ["inspiration"] = "灵感", ["testimonials"] = "感言", } --用于决定显示顺序;大小写有区别 local displayOrder = { "limited", "cost", "price", "Purchace", "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