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

无编辑摘要
无编辑摘要
第1行: 第1行:
local p = {}
local p = {}
local db = mw.loadData('模块:角色属性数据')
-- 加载数据
local dataList = db.char_self_data
local db_cn = mw.loadData('模块:角色技能数据中文')
local elements = {"HP", "SP", "ATK", "DEF", "MAG", "MDEF", "CRT", "SPD"}
local db_jp = mw.loadData('模块:角色技能数据日文')
local elementsName = {"HP", "SP", "物攻", "物防", "属攻", "属防", "会心", "速度"}
local query_lang = frame.args['查询语言']
 
if query_lang == "cn" then
    dataList = db_cn.char_skill_data
else
    dataList = db_jp.char_skill_data
end


p["测试调用"] = function(frame)
p["测试调用"] = function(frame)
     local query_num = frame.args['角色编号']
     local query_num = frame.args['角色序号']
    local query_type = frame.args['查询类型']
 
     local html = mw.html.create()
     local html = mw.html.create()


     -- 排序属性
     for _, skillList in ipairs(dataList) do
    local function numvalue(char, attr, lang)
         if query_num == skillList.owner_order then
         local attrValues = {}
            for _, skill in ipairs(skillList.owner_skill) do
        for _, data in ipairs(dataList) do
                if skill.skill_parent ~= nil and query_type == skill.skill_type then
            local value = tonumber(lang == "cn" and data.Data_cn and data.Data_cn[attr] or data.Data_jp and data.Data_jp[attr])
                    html:tag('div'):wikitext(skill.skill_name .. skill.skill_content)
            if value then
                 end
                table.insert(attrValues, value)
            end
        end
 
        table.sort(attrValues, function(a, b) return a > b end)
 
        local targetData = tonumber(lang == "cn" and char.Data_cn and char.Data_cn[attr] or char.Data_jp and char.Data_jp[attr])
        for i, value in ipairs(attrValues) do
            if value == targetData then
                 return i
             end
             end
         end
         end
        return "暂无"
     end
     end
 
      
     local function generateTable(char, lang)
        local tableHtml = mw.html.create('table'):addClass('wikitable'):css('width', '100%')
        tableHtml:tag('tr')
            :tag('th'):wikitext('属性'):done()
            :tag('th'):wikitext('Base'):done()
            :tag('th'):wikitext('MAX'):done()
            :done()
 
        for i, element in ipairs(elements) do
            local elementName = elementsName[i]
            local maxAttr = "MAX" .. element
            local baseAttr = "Base" .. element
            local maxAttrValue = lang == "cn" and char.Data_cn and char.Data_cn[maxAttr] or char.Data_jp and char.Data_jp[maxAttr] or ""
            local baseAttrValue = lang == "cn" and char.Data_cn and char.Data_cn[baseAttr] or char.Data_jp and char.Data_jp[baseAttr] or ""
 
            local maxRank = numvalue(char, maxAttr, lang)
            local baseRank = numvalue(char, baseAttr, lang)
 
            tableHtml:tag('tr')
                :tag('td'):wikitext(elementName):done()
                :tag('td'):wikitext(baseAttrValue .. " (" .. baseRank .. ")"):done()
                :tag('td'):wikitext(maxAttrValue .. " (" .. maxRank .. ")"):done()
                :done()
        end
 
        return tableHtml
    end
 
    for _, char in ipairs(dataList) do
        if query_num == char.owner_order then
            html:tag('p'):wikitext("查询角色编号: " .. query_num):done()
            if char.Data_cn then
                local tabberHtml = mw.html.create('div'):addClass('tabber')
                    tabberHtml:tag('ul')
                        :tag('li'):wikitext('国服数据')
                            :tag('div'):addClass('tabbertab'):wikitext(tableToString(generateTable(char, "cn"))):done()
                        :done()
                        :tag('li'):wikitext('日服数据')
                            :tag('div'):addClass('tabbertab'):wikitext(tableToString(generateTable(char, "jp"))):done()
                        :done()
                    :done()
 
                    html:node(tabberHtml)
                   
                    function tableToString(tbl)
                        if type(tbl) == "table" then
                            return mw.text.jsonEncode(tbl)
                        else
                            return tostring(tbl)
                        end
                    end
            else
                local jpTable = generateTable(char, "jp")
                html:node(jpTable)
            end
        end
    end
 
     return tostring(html)
     return tostring(html)
end
end


return p
return p

2024年6月28日 (五) 16:13的版本

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

local p = {}
-- 加载数据
local db_cn = mw.loadData('模块:角色技能数据中文')
local db_jp = mw.loadData('模块:角色技能数据日文')
local query_lang = frame.args['查询语言']

if query_lang == "cn" then
    dataList = db_cn.char_skill_data
else
    dataList = db_jp.char_skill_data
end

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

    local html = mw.html.create()

    for _, skillList in ipairs(dataList) do
        if query_num == skillList.owner_order then
            for _, skill in ipairs(skillList.owner_skill) do
                if skill.skill_parent ~= nil and query_type == skill.skill_type then
                    html:tag('div'):wikitext(skill.skill_name .. skill.skill_content)
                end
            end
        end
    end
    
    return tostring(html)
end

return p