模块:测试调用数据:修订间差异

无编辑摘要
无编辑摘要
第14行: 第14行:
end
end


local function skillBox(v)
local function skillBox(skill)
     -- 状态图标
     -- 状态图标
     if v.skill_tag2 then
     if skill.skill_tag2 then
         local skillTags2 = split(v.skill_tag2, ",")
         local skillTags2 = split(skill.skill_tag2, ",")
         tag2Html = mw.html.create()
         tag2Html = mw.html.create()
         tag2Html:tag('center')
         tag2Html:tag('center')
第26行: 第26行:


     -- 特性图标
     -- 特性图标
     if v.skill_tag then
     if skill.skill_tag then
         local skillTags = split(v.skill_tag, ",")
         local skillTags = split(skill.skill_tag, ",")
         tagHtml = mw.html.create()
         tagHtml = mw.html.create()
         for _, tagicon in ipairs(skillTags) do
         for _, tagicon in ipairs(skillTags) do
第35行: 第35行:


     -- SP
     -- SP
     if v.skill_sp then
     if skill.skill_sp then
         spHtml = mw.html.create()
         spHtml = mw.html.create()
         spHtml:tag('div')
         spHtml:tag('div')
             :addClass('flex-center text-cen sk-sp'):attr('style', 'border: 1px solid #d0bca7; background-color: #d0bca7; border-radius: 0.5em; padding: 0 15px;')
             :addClass('flex-center text-cen sk-sp'):attr('style', 'border: 1px solid #d0bca7; background-color: #d0bca7; border-radius: 0.5em; padding: 0 15px;')
             :wikitext('消耗精力&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size:1.2rem;">' .. v.skill_sp .. '</span>')
             :wikitext('消耗精力&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size:1.2rem;">' .. skill.skill_sp .. '</span>')
         :done()  
         :done()  
     end
     end


     -- 技能BOOST
     -- 技能BOOST
     if v.skill_boost then
     if skill.skill_boost then
         boostHtml = mw.html.create()
         boostHtml = mw.html.create()
         boostHtml:tag('tr')
         boostHtml:tag('tr')
第51行: 第51行:
             :done()
             :done()
             :tag('td')
             :tag('td')
                 :wikitext(v.skill_boost)
                 :wikitext(skill.skill_boost)
             :done()
             :done()
         :done()
         :done()
第57行: 第57行:


     -- 技能强化效果
     -- 技能强化效果
     if v.skill_up_content then
     if skill.skill_up_content then
         upcontentHtml = mw.html.create()
         upcontentHtml = mw.html.create()
         upcontentHtml:tag('tr')
         upcontentHtml:tag('tr')
第64行: 第64行:
             :done()
             :done()
             :tag('td')
             :tag('td')
                 :tag('li'):wikitext(v.skill_up_content):done()
                 :tag('li'):wikitext(skill.skill_up_content):done()
                 -- 下面的upcontentHtml不能删
                 -- 下面的upcontentHtml不能删
                 if v.skill_up_content2 then
                 if skill.skill_up_content2 then
                     upcontentHtml:tag('li'):wikitext(v.skill_up_content2):done()
                     upcontentHtml:tag('li'):wikitext(skill.skill_up_content2):done()
                 end
                 end
             upcontentHtml:done()
             upcontentHtml:done()
第74行: 第74行:


     -- 技能强化等级
     -- 技能强化等级
     if v.skill_up then
     if skill.skill_up then
         upHtml = mw.html.create()
         upHtml = mw.html.create()
         upHtml:tag('tr')
         upHtml:tag('tr')
第81行: 第81行:
             :done()
             :done()
             :tag('td')
             :tag('td')
                 :tag('li'):wikitext('角色等级达到'.. v.skill_up .. '以上,并习得技能' .. v.skill_name):done()
                 :tag('li'):wikitext('角色等级达到'.. skill.skill_up .. '以上,并习得技能' .. skill.skill_name):done()
                 -- 下面的upHtml不能删
                 -- 下面的upHtml不能删
                 if v.skill_up2 then
                 if skill.skill_up2 then
                     upHtml:tag('li'):wikitext('角色等级达到'.. v.skill_up2 .. '以上,并习得技能' .. v.skill_name):done()
                     upHtml:tag('li'):wikitext('角色等级达到'.. skill.skill_up2 .. '以上,并习得技能' .. skill.skill_name):done()
                 end
                 end
             upHtml:done()
             upHtml:done()
第104行: 第104行:
                 :tag('div'):addClass('flex-center text-left'):attr('style', 'padding: 5px;')
                 :tag('div'):addClass('flex-center text-left'):attr('style', 'padding: 5px;')
                     :tag('span'):attr('style', 'font-size: 1.3rem; font-weight: bold;')
                     :tag('span'):attr('style', 'font-size: 1.3rem; font-weight: bold;')
                         :wikitext(v.skill_name)
                         :wikitext(skill.skill_name)
                     :node(tag2Html) -- 状态图标
                     :node(tag2Html) -- 状态图标
                 :done()
                 :done()
第116行: 第116行:
                     :attr('colspan', '2')
                     :attr('colspan', '2')
                     :attr('style', 'padding: 5px 0px 15px 5px;')
                     :attr('style', 'padding: 5px 0px 15px 5px;')
                     :wikitext(v.skill_content)
                     :wikitext(skill.skill_content)
                 :done()
                 :done()
             :done()
             :done()
第128行: 第128行:
     return skillBoxDiv
     return skillBoxDiv
end
end


p["测试调用"] = function(frame)
p["测试调用"] = function(frame)
第135行: 第134行:
     local query_lang = frame.args['查询语言'] or ""
     local query_lang = frame.args['查询语言'] or ""


    local html = mw.html.create()
     -- 提取数据
 
local dataList = (query_lang == "cn" or query_lang == "国服" or query_lang == "中文") and dataList_cn or dataList_jp
     -- 根据查询语言选择数据列表
     local skillList = {}
    local dataList = (query_lang == "cn" or query_lang == "国服" or query_lang == "中文") and dataList_cn or dataList_jp
     for _, ownerList in ipairs(dataList) do
 
         if query_num == ownerList.owner_order then
    -- 查找匹配的角色数据
             for _, ownerSkill in ipairs(ownerList.owner_skill) do
     local ownerList = nil
                if ownerSkill.skill_type == query_type then
     for _, owner in ipairs(dataList) do
                    table.insert(skillList, ownerSkill)
         if query_num == owner.owner_order then
                end
             ownerList = owner
             end
             break
         end
         end
     end
     end


     -- 如果找到匹配的角色数据,处理技能数据
     local html = mw.html.create()
    if ownerList then
    for _, parent in ipairs(skillList) do
        local skList = ownerList.owner_skill
        if parent.skill_parent == nil then
        for _, parent in ipairs(skList) do
            html:node(skillBox(parent))
            if parent.skill_type == query_type and not parent.skill_parent then
            for _, child in ipairs(skillList) do
                html:node(skillBox(parent))
                if child.skill_parent == parent.skill_order then
                for _, child in ipairs(skList) do
                    html:tag('div'):addClass('parent-description-container'):attr('style', 'padding-left: 20px'):node(skillBox(child)):done()
                    if child.skill_parent == parent.skill_order then
                        html:tag('div')
                            :addClass('parent-description-container')
                            :attr('style', 'padding-left: 20px')
                            :node(skillBox(child))
                    end
                 end
                 end
             end
             end
第169行: 第161行:
     return tostring(html)
     return tostring(html)
end
end


return p
return p

2024年7月5日 (五) 22:44的版本

可在模块:测试调用数据/doc创建此模块的帮助文档

local p = {}
-- 加载数据
local db_cn = mw.loadData('模块:角色技能数据中文')
local dataList_cn = db_cn.char_skill_data
local db_jp = mw.loadData('模块:角色技能数据日文')
local dataList_jp = db_jp.char_skill_data
-- 手搓split
local function split(input, delimiter)
    local result = {}
    for match in (input .. delimiter):gmatch("(.-)" .. delimiter) do
        table.insert(result, match)
    end
    return result
end

local function skillBox(skill)
    -- 状态图标
    if skill.skill_tag2 then
        local skillTags2 = split(skill.skill_tag2, ",")
        tag2Html = mw.html.create()
        tag2Html:tag('center')
        for _, tagicon2 in ipairs(skillTags2) do
            tag2Html:wikitext(string.format('[[File:icon-%s.png|20px]]', tagicon2))
        end
    end

    -- 特性图标
    if skill.skill_tag then
        local skillTags = split(skill.skill_tag, ",")
        tagHtml = mw.html.create()
        for _, tagicon in ipairs(skillTags) do
            tagHtml:wikitext(string.format('[[File:icon-%s.png|32px]]', tagicon))
        end
    end

    -- SP
    if skill.skill_sp then
        spHtml = mw.html.create()
        spHtml:tag('div')
            :addClass('flex-center text-cen sk-sp'):attr('style', 'border: 1px solid #d0bca7; background-color: #d0bca7; border-radius: 0.5em; padding: 0 15px;')
            :wikitext('消耗精力&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size:1.2rem;">' .. skill.skill_sp .. '</span>')
        :done() 
    end

    -- 技能BOOST
    if skill.skill_boost then
        boostHtml = mw.html.create()
        boostHtml:tag('tr')
            :tag('td'):attr('style', 'width: 130px; font-weight: bold;')
                :wikitext('【BP加成效果】')
            :done()
            :tag('td')
                :wikitext(skill.skill_boost)
            :done()
        :done()
    end

    -- 技能强化效果
    if skill.skill_up_content then
        upcontentHtml = mw.html.create()
        upcontentHtml:tag('tr')
            :tag('td'):attr('style', 'font-weight: bold;')
                :wikitext('【能力强化效果】')
            :done()
            :tag('td')
                :tag('li'):wikitext(skill.skill_up_content):done()
                -- 下面的upcontentHtml不能删
                if skill.skill_up_content2 then
                    upcontentHtml:tag('li'):wikitext(skill.skill_up_content2):done()
                end
            upcontentHtml:done()
        upcontentHtml:done()
    end

    -- 技能强化等级
    if skill.skill_up then
        upHtml = mw.html.create()
        upHtml:tag('tr')
            :tag('td'):attr('style', 'font-weight: bold;')
                :wikitext('【强化学习条件】')
            :done()
            :tag('td')
                :tag('li'):wikitext('角色等级达到'.. skill.skill_up .. '以上,并习得技能' .. skill.skill_name):done()
                -- 下面的upHtml不能删
                if skill.skill_up2 then
                    upHtml:tag('li'):wikitext('角色等级达到'.. skill.skill_up2 .. '以上,并习得技能' .. skill.skill_name):done()
                end
            upHtml:done()
        upHtml:done()
    end

    -- 展示内容
    local skillBoxDiv = mw.html.create()
    

    skillBoxDiv:tag('div'):addClass('description-container'):attr('style', 'margin: 15px 0 15px 0; padding: 20px 10px; background-color: #fbf9f1;')
	    
        :tag('div'):addClass('description-display width-5 hidden-xs'):attr('style', 'vertical-align: top; padding: 10px 5px 0 0;')
            :node(tagHtml) -- 特性图标
        :done()

        :tag('div'):addClass('description-display')
            :tag('div'):addClass('flex-row-btw')
                :tag('div'):addClass('flex-center text-left'):attr('style', 'padding: 5px;')
                    :tag('span'):attr('style', 'font-size: 1.3rem; font-weight: bold;')
                        :wikitext(skill.skill_name)
                    :node(tag2Html) -- 状态图标
                :done()
            :done()
            :node(spHtml) -- SP
        :done()

        :tag('table'):addClass('w-100 text-left'):attr('style', 'text-align: left;')
            :tag('tr')
                :tag('td')
                    :attr('colspan', '2')
                    :attr('style', 'padding: 5px 0px 15px 5px;')
                    :wikitext(skill.skill_content)
                :done()
            :done()
            :node(boostHtml) -- BP
            :node(upcontentHtml) -- 强化条件
            :node(upHtml) -- 强化等级
        :done()

    :done()
    
    return skillBoxDiv
end

p["测试调用"] = function(frame)
    local query_num = frame.args['角色序号']
    local query_type = frame.args['查询类型']
    local query_lang = frame.args['查询语言'] or ""

    -- 提取数据
	local dataList = (query_lang == "cn" or query_lang == "国服" or query_lang == "中文") and dataList_cn or dataList_jp
    local skillList = {}
    for _, ownerList in ipairs(dataList) do
        if query_num == ownerList.owner_order then
            for _, ownerSkill in ipairs(ownerList.owner_skill) do
                if ownerSkill.skill_type == query_type then
                    table.insert(skillList, ownerSkill)
                end
            end
        end
    end

    local html = mw.html.create()
    for _, parent in ipairs(skillList) do
        if parent.skill_parent == nil then
            html:node(skillBox(parent))
            for _, child in ipairs(skillList) do
                if child.skill_parent == parent.skill_order then
                    html:tag('div'):addClass('parent-description-container'):attr('style', 'padding-left: 20px'):node(skillBox(child)):done()
                end
            end
        end
    end

    return tostring(html)
end


return p