模块: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