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

无编辑摘要
无编辑摘要
第38行: 第38行:
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
    for _, char in ipairs(dataList) do
            local elementName = elementsName[i]
        if query_num == char.owner_order then
            local maxAttr = "MAX" .. element
             html:tag('p'):wikitext("查询角色编号: " .. query_num):done()
            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 tableHtml = mw.html.create('table'):addClass('wikitable'):css('width', '100%')
             local baseRank = numvalue(char, baseAttr, lang)


             local tableHtml = tableHtml:tag('tr')
             tableHtml:tag('tr')
                 :tag('th'):wikitext('属性'):done()
                 :tag('td'):wikitext(elementName):done()
                 :tag('th'):wikitext('Base'):done()
                 :tag('td'):wikitext(baseAttrValue .. " (" .. baseRank .. ")"):done()
                 :tag('th'):wikitext('MAX'):done()
                 :tag('td'):wikitext(maxAttrValue .. " (" .. maxRank .. ")"):done()
                 :done()
                 :done()
        end


            for i, element in ipairs(elements) do
        return tableHtml
                local elementName = elementsName[i]
    end
                local maxAttr = "MAX" .. element
                local maxAttrValue = char.Data_jp[maxAttr] or ""
                local baseAttr = "Base" .. element
                local baseAttrValue = char.Data_jp[baseAttr] or ""
 
                -- 获取排名
                local maxRank = numvalue(char, maxAttr)
                local baseRank = numvalue(char, baseAttr)
 
                local tableHtml_jp = tableHtml:tag('tr')
                    :tag('td'):wikitext(elementName):done()
                    :tag('td'):wikitext(baseAttrValue .. " (" .. baseRank .. ")"):done()
                    :tag('td'):wikitext(maxAttrValue .. " (" .. maxRank .. ")"):done()
                    :done()
            end
           
            html:node(tableHtml_jp)


    for _, char in ipairs(dataList) do
        if query_num == char.owner_order then
            html:tag('p'):wikitext("查询角色编号: " .. query_num):done()
            html:node(generateTable(char, "jp"))
             if char.Data_cn then
             if char.Data_cn then
                 for i, element in ipairs(elements) do
                 html:node(generateTable(char, "cn"))
                    local elementName = elementsName[i]
                    local maxAttr = "MAX" .. element
                    local maxAttrValue = char.Data_cn[maxAttr] or ""
                    local baseAttr = "Base" .. element
                    local baseAttrValue = char.Data_cn[baseAttr] or ""
   
                    -- 获取排名
                    local maxRank = numvalue(char, maxAttr, "cn")
                    local baseRank = numvalue(char, baseAttr, "cn")
   
                    local tableHtml_cn = tableHtml:tag('tr')
                        :tag('td'):wikitext(elementName):done()
                        :tag('td'):wikitext(baseAttrValue .. " (" .. baseRank .. ")"):done()
                        :tag('td'):wikitext(maxAttrValue .. " (" .. maxRank .. ")"):done()
                        :done()
                end
             end
             end
            html:node(tableHtml_cn)
         end
         end
     end
     end

2024年6月28日 (五) 12:30的版本

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

local p = {}
local db = mw.loadData('模块:角色属性数据')
local dataList = db.char_self_data
local elements = {"HP", "SP", "ATK", "DEF", "MAG", "MDEF", "CRT", "SPD"}
local elementsName = {"HP", "SP", "物攻", "物防", "属攻", "属防", "会心", "速度"}

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

    -- 排序属性
	local function numvalue(char, attr, lang)
	    -- 提取所有非 nil 值
	    local attrValues = {}
	    for _, data in ipairs(dataList) do
	        local value = nil
	        if lang == "cn" and data.Data_cn and data.Data_cn[attr] then
	            value = tonumber(data.Data_cn[attr])
	        elseif data.Data_jp and data.Data_jp[attr] then
	            value = tonumber(data.Data_jp[attr])
	        end
	        if value then
	            table.insert(attrValues, value)
	        end
	    end
	
	    -- 排序部分
	    table.sort(attrValues, function(a, b) return a > b end)
	
	    local targetData = char.Data_cn and char.Data_cn[attr] or char.Data_jp and char.Data_jp[attr]
	    local charValue = tonumber(targetData)
	    for i, value in ipairs(attrValues) do
	        if value == charValue then
	            return i
	        end
	    end
	    return "暂无"
	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()
            html:node(generateTable(char, "jp"))
            if char.Data_cn then
                html:node(generateTable(char, "cn"))
            end
        end
    end

    return tostring(html)
end

return p