Module:Tool:修订间差异

来自Arcaea中文维基
(修正当调用此模块中的Etherdrop方法时,会导致此前的<ref>标签脚注无法正常显示的问题)
(Rain of Conflict in a Radiant Abyss特殊处理)
 
(未显示2个用户的6个中间版本)
第10行: 第10行:
function p.Etherdrop(frame)
function p.Etherdrop(frame)
local text=mw.title.new(':世界模式'):getContent()
local text=mw.title.new(':世界模式'):getContent()
if frame.args.type=="limit" then text=string.match(text," 已关闭的限时 活动 阶梯([%s%S]-)第1章:失落的世界") 
if frame.args.type=="limit" then text=string.match(text," 额外章: 活动([%s%S]-)第1章:失落的世界")
else text=string.match(text," 已关闭的限时 活动 阶梯([%s%S]-) 各章节阶梯和奖励情况示意%(Nintendo Switch版%)") end
else text=string.match(text," 额外章: 活动([%s%S]-)Nintendo Switch版 调整") end
local match=string.gmatch (text,"(%d?%d) 以太之滴")
local match=string.gmatch(text,"(%d?%d) 以太之滴")
local result=0
local result=0
local number=nil
local number=nil
while true
while true
do
do
number=match()
   number=match()
if number==nil then break end
   if number==nil then break end
result=result+number
   result=result+number
end
end
   --这里开始匹配注释
   local commentMatch=string.gmatch(text,"<!%-%-([%s%S]-)%-%->")
   while true
   do
     text=commentMatch()
     if text==nil then break end
     match=string.gmatch(text,"(%d?%d) 以太之滴")
     while true
     do
       number=match()
       if number==nil then break end
       result=result-number
     end
   end
   commentMatch=nil
result=result-17 --这里删掉因为sia和shirabe常驻而多统计的6+11=17个
result=result-17 --这里删掉因为sia和shirabe常驻而多统计的6+11=17个
local text=mw.title.new(':曲包列表'):getContent()
local text=mw.title.new(':曲包列表'):getContent()
第33行: 第48行:
match=string.gmatch(text,"单曲包\n|(%d?%d)")
match=string.gmatch(text,"单曲包\n|(%d?%d)")
number=match()
number=match()
mmr=mmr+number-1 --这里减去guardina
mmr=mmr+number-4 --这里减去guardina innocence desive rainofconflict
ann5=55 --五周年兑换券给的55个
ann5=55 --五周年兑换券给的55个
course=40 --段位模式给的40个
course=40 --段位模式给的40个
mission=15 --新手任务给的15个
if frame.args.type=="purchase" then return mmr
if frame.args.type=="purchase" then return mmr
elseif frame.args.type=="ann5" then return ann5
elseif frame.args.type=="ann5" then return ann5
elseif frame.args.type=="course" then return course
elseif frame.args.type=="course" then return course
elseif frame.args.type=="max" then return result+mmr+ann5+course
elseif frame.args.type=="mission" then return mission
elseif frame.args.type=="max" then return result+mmr+ann5+course+mission
else return result
else return result
end
end

2024年9月12日 (四) 11:21的最新版本

可在Module:Tool/doc创建此模块的帮助文档

local p={}
-- 小工具集

--时间格式转换
function p.time(frame)
	return os.date("%Y/%m/%d", frame.args.time)
end

--获取以太之滴总数
function p.Etherdrop(frame)
	local text=mw.title.new(':世界模式'):getContent()
	if frame.args.type=="limit" then text=string.match(text,"额外章:活动([%s%S]-)第1章:失落的世界")
	else text=string.match(text,"额外章:活动([%s%S]-)Nintendo Switch版调整") end
	local match=string.gmatch(text,"(%d?%d) 以太之滴")
	local result=0
	local number=nil
	while true
	do
	    number=match()
	    if number==nil then break end
	    result=result+number
	end
    --这里开始匹配注释
    local commentMatch=string.gmatch(text,"<!%-%-([%s%S]-)%-%->")
    while true
    do
        text=commentMatch()
        if text==nil then break end
        match=string.gmatch(text,"(%d?%d) 以太之滴")
        while true
        do
            number=match()
            if number==nil then break end
            result=result-number
        end
    end
    commentMatch=nil
	result=result-17 --这里删掉因为sia和shirabe常驻而多统计的6+11=17个
	local text=mw.title.new(':曲包列表'):getContent()
	match=string.gmatch(text,"(%d)00记忆源点/整曲包")
	local mmr=0
	while true
	do
		number=match()
		if number==nil then break end
		mmr=mmr+number
	end
	match=string.gmatch(text,"单曲包\n|(%d?%d)")
	number=match()
	mmr=mmr+number-4 --这里减去guardina innocence desive rainofconflict
	ann5=55 --五周年兑换券给的55个
	course=40 --段位模式给的40个
	mission=15 --新手任务给的15个
	if frame.args.type=="purchase" then return mmr
	elseif frame.args.type=="ann5" then return ann5
	elseif frame.args.type=="course" then return course
	elseif frame.args.type=="mission" then return mission
	elseif frame.args.type=="max" then return result+mmr+ann5+course+mission
	else return result
	end
end

--从字符串中移除某字符
function p.LuaReomve(frame)
	str=frame.args.str
	remove=frame.args.remove
    local lcSubStrTab = {}
    while true do
        local lcPos = string.find(str,remove)
        if not lcPos then
            lcSubStrTab[#lcSubStrTab+1] =  str    
            break
        end
        local lcSubStr  = string.sub(str,1,lcPos-1)
        lcSubStrTab[#lcSubStrTab+1] = lcSubStr
        str = string.sub(str,lcPos+1,#str)
    end
    local lcMergeStr =""
    local lci = 1
    while true do
        if lcSubStrTab[lci] then
            lcMergeStr = lcMergeStr .. lcSubStrTab[lci] 
            lci = lci + 1
        else 
            break
        end
    end
    return lcMergeStr
end

function link(frame)
	local result=""
	for i,k in ipairs(frame.args) do
		result=result..'<span id="'..k..'"></span>'
	end
	
	return result
end

return p