模块:Hydrogina/sandbox/skill

可在模块:Hydrogina/sandbox/skill/doc创建此模块的帮助文档

--[[
<!--可以使用参数char-->

{{#invoke:Hydrogina/sandbox/skill|get|char=华法琳|skillnum=2|skillrank=7|askitem=描述}}

<!--也可以使用参数preloadstr-->{{#vardefine:str|{{#lsth:银灰|技能}}}}

{{#invoke:Hydrogina/sandbox/skill|get|preloadstr={{#var:str}}|skillnum=2|askitem=技能}}

{{#invoke:Hydrogina/sandbox/skill|get|preloadstr={{#var:str}}|skillnum=2|askitem=图标}}

{{#invoke:Hydrogina/sandbox/skill|get|preloadstr={{#var:str}}|skillnum=2|askitem=名称}}

{{#invoke:Hydrogina/sandbox/skill|get|preloadstr={{#var:str}}|skillnum=2|askitem=方式}}

{{#invoke:Hydrogina/sandbox/skill|get|preloadstr={{#var:str}}|skillnum=2|askitem=攻击范围}}

{{#invoke:Hydrogina/sandbox/skill|get|preloadstr={{#var:str}}|skillnum=2|skillrank=10|askitem=等级}}

{{#invoke:Hydrogina/sandbox/skill|get|preloadstr={{#var:str}}|skillnum=2|skillrank=10|askitem=描述}}

初始:{{#invoke:Hydrogina/sandbox/skill|get|preloadstr={{#var:str}}|skillnum=2|skillrank=10|askitem=初始}}/
消耗:{{#invoke:Hydrogina/sandbox/skill|get|preloadstr={{#var:str}}|skillnum=2|skillrank=10|askitem=消耗}}/
持续:{{#invoke:Hydrogina/sandbox/skill|get|preloadstr={{#var:str}}|skillnum=2|skillrank=10|askitem=持续}}

{{#invoke:Hydrogina/sandbox/skill|get|preloadstr={{#var:str}}|skillnum=2|askitem=备注}}

]]-----------------------------------------------------------------------------------------------------------------

p={}

longsep="\n-------------------------------------------------\n"

function p.get(frame)
	local args = (frame == mw.getCurrentFrame() and frame.args) or frame
	
	local rtn=""
	local rtn2=""
	
	local argv = 0
	while(args[argv+1])do
		argv=argv+1
	end
	
	local char="华法琳"
	local skillnum="1"
	local skillrank="7"
	local askitem="描述"
	local replacehtml="no"
	local replaceln="no"
	local preloadstr=""
	
	if(args["char"])then 
		char=args["char"]end
	
	if(args[1])then
		char=args[1]end
	
	if(args["skillnum"])then
		skillnum=args["skillnum"]end
	
	if(args["skillrank"])then
		skillrank=args["skillrank"]end
	
	if(args["askitem"])then
		askitem=args["askitem"]end
	
	if(args["replacehtml"])then
		replacehtml=args["replacehtml"]end
	
	if(args["replaceln"])then
		replaceln=args["replaceln"]end
	
	if(args["preloadstr"])then
		preloadstr=args["preloadstr"]end
	
	----------------------------------------------------------------------------------
	skillrank=tostring(skillrank)
	if(skillrank=="8")then
		skillrank="Rank Ⅰ"
	elseif(skillrank=="9")then
		skillrank="Rank Ⅱ"
	elseif(skillrank=="10")then
		skillrank="Rank Ⅲ"
	end
	
	----------------------------------------------------------------------------------
	local str=preloadstr
	if(str=="")then
		str=frame:callParserFunction{
			name = '#lsth:'..char, args={
			"技能"
		}}
	end
	
	--rtn2=rtn2..str..longsep
	----------------------------------------------------------------------------------
	
	local sep="\n|}"
	local skilleach=mw.text.split(str, sep ,true)
	

	----------------------------------------------------------------------------------
	
	local fndskill=nil
	for i = 1, #skilleach do
		local fnd=mw.ustring.find( skilleach[i],"技能"..skillnum , 1, true )
		--local fnd=string.find (chareach[i], "%[%["..char.."]]")
		
		if(fnd)then
			fndskill=skilleach[i]
			break
		end
		
	end
	
	--rtn2=rtn2..fndskill..longsep
	----------------------------------------------------------------------------------
	if(fndskill and askitem=="技能")then
		rtn=fndskill..sep
	elseif(fndskill)then
		local sep="|-"
		local lineeach=mw.text.split(fndskill, sep ,true)
		
		local type_askitem=0
		
		local itemlist = {["等级"]=2,["描述"]=3,["初始"]=4,["消耗"]=5,["持续"]=6}
		local itemnum=itemlist[askitem]
		if(itemnum)then
			type_askitem=1
		else
			itemlist = {["图标"]=2,["名称"]=3,["方式"]=4,["攻击范围"]=5}
			itemnum=itemlist[askitem]
			if(itemnum)then
				type_askitem=2
			elseif(askitem=="备注")then
				type_askitem=3
			end
		end
		
		if(type_askitem==1)then
			for i = 1, #lineeach do
				
				local sep="\n|"
				local itemeach=mw.text.split(lineeach[i], sep ,true)
				
				--local fnd=mw.ustring.find( itemeach[1], skillrank , 1, true )
				local fnd=(itemeach[2]==(skillrank))
				
				if(fnd)then
					rtn=itemeach[itemnum]
					break
				end
			end
			
		elseif(type_askitem==2)then
			
			local sep="\n|"
			local itemeach=mw.text.split(lineeach[2], sep ,true)
			rtn=itemeach[itemnum]
			if(not rtn)then
				rtn="" 
			end
		
		elseif(type_askitem==3)then
			
			for i = 1, #lineeach do
				
				local sep="|"
				local itemeach=mw.text.split(lineeach[i], sep ,true)
				
				--local fnd=mw.ustring.find( itemeach[1], skillrank , 1, true )
				local fnd=(itemeach[2]=="备注\n")
				
				if(fnd)then
					rtn=string.gsub(lineeach[i+1],"\n|","")
					break
				end
			end
			
		end
		
		local fnd=mw.ustring.find( rtn,"|", 1, true )
		if(fnd)then
			rtn=string.sub(rtn,fnd+1 )
		end
	end
	
	----------------------------------------------------------------------------------
	
	
	if(replaceln~="no")then
		rtn=string.gsub(rtn,"\n","")
		rtn=string.gsub(rtn,"<br/>","")
	end
	
	if(replacehtml~="no")then
		rtn=string.gsub(rtn,"<.->","")
	end
	----------------------------------------------------------------------------------
	return rtn
end
return p