模块:CollectGoalTable

来自PRTS
跳转到导航 跳转到搜索

适用于集点活动的限时任务列表书写。

使用

使用时头部:

{{#invoke:CollectGoalTable|table
| 收集道具=
| 道具数量=
}}

其中“道具数量”参数为各档位收集目标达成后获得的道具数量,以双英文半角分号(;;)分割,可以不填,默认值是50;;100;;150。

对于其中的每一项:

| 项目X=
| 目标X-1=
| 目标X-2=
| 目标X-3=
……
  • X的范围为1-50,下属目标数量上限由上面的档位数量决定。
  • 换行请使用<br>。个人意见尽量少用强制换行。

示例

{{#invoke:CollectGoalTable|table
| 收集道具=游击队员徽章

| 项目1=累计消耗理智
| 目标1-1=600
| 目标1-2=1200
| 目标1-3=1800

| 项目2=累计提升干员经验值
| 目标2-1=35000
| 目标2-2=70000
| 目标2-3=100000

| 项目3=在干员升级和晋升中累计消耗龙门币
| 目标3-1=60000
| 目标3-2=120000
| 目标3-3=200000

}}
奖励
50
100
150
任务条件 具体目标
累计消耗理智 600 1200 1800
累计提升干员经验值 35000 70000 100000
在干员升级和晋升中累计消耗龙门币 60000 120000 200000

local p = {}

function p.table(frame)
	local max_task_items = 50
	local args = (frame == mw.getCurrentFrame() and frame.args) or frame
	
	res_table = {}
	
	local item_name = mw.text.trim(args["收集道具"] or "")
    local customfile = args["自定义文件"]
    local customfilelink = mw.text.trim(args["自定义链接"] or "")
    local cssclass = mw.text.trim(args["CSS类"] or "")
    if cssclass ~= "" then
        cssclass = "class=\""..cssclass.."\"|"
    end
	local item_count_table = mw.text.trim(args["道具数量"] or "50;;100;;150")
	item_count_table = mw.text.split(item_count_table, ';;', true)
	local item_icon = {}
	for i=1,#item_count_table do
		item_icon[i] = customfile and frame:expandTemplate{title="数量", args={icon=item_name,num=item_count_table[i],size='50px', link=customfilelink}} or frame:expandTemplate{title="道具图标", args={item_name,item_count_table[i],'50px'}}
	end
	
	local table_class = "wikitable"
	
	table.insert(res_table, string.format("\n{|class=\"%s\" ", table_class))
	table.insert(res_table, "style=\"width:800px;text-align:center;display:table;white-space:normal;\"\n")
	local str = "!class=\"pointcollection_table_desc\"|奖励\n"
	for i=1,#item_count_table do str = str .. "!"..cssclass.."%s\n" end
	table.insert(res_table, string.format(str, unpack(item_icon)))
	table.insert(res_table, string.format("|-\n! 任务条件\n! colspan=%d|具体目标\n", #item_count_table))
	
	for i = 1, max_task_items do
		local task_item_title = mw.text.trim(args["项目" .. i] or "")
		if task_item_title ~= "" then
			local str = string.format("|-\n|%s\n", task_item_title)
			local sub_item_table = {}
			for i2 = 1, #item_count_table do
				sub_item_table[i2] = mw.text.trim(args["目标".. i .. "-" .. i2] or "")
				str = str .. "|%s\n"
			end
			table.insert(res_table, string.format(str, unpack(sub_item_table)))
		end
	end
	
	table.insert(res_table, "|}")
	
	return table.concat(res_table)
end

return p