本WIKI由 娃娃鱼报社 运营建设,站长:呆毛

欢迎 收藏本WIKI 防止迷路,本WIKI 编辑权限开放,欢迎大家共同建设。

娃娃鱼报社交流群:838573532 问题反馈 收藏方法

全站通知:

模版:U118114p1

阅读

    

2024-05-09更新

    

最新编辑:nO7

阅读:

  

更新日期:2024-05-09

  

最新编辑:nO7

来自雷索纳斯WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
nO7

local p = {} -- 加载指定页面 local getJsonPage = require('模块:数据库-乘员') local getJsonPage_audio = require('模块:数据库-乘员/音频')

-- 基础参数 function RoleInfo_Base(frame, data)

   -- 稀有度
   frame:callParserFunction{
       name = '#vardefine',
       args = {'稀有度', data.rarity}
   }
   -- 站位
   frame:callParserFunction{name = '#vardefine', args = {'站位', data.row}}
   -- 技能1
   frame:callParserFunction{
       name = '#vardefine',
       args = {'技能1', data.skill1_name}
   }
   -- 技能2
   frame:callParserFunction{
       name = '#vardefine',
       args = {'技能2', data.skill2_name}
   }
   -- 得意技能
   frame:callParserFunction{
       name = '#vardefine',
       args = {'得意技能', data.skill3_name}
   }
   -- 便当
   frame:callParserFunction{name = '#vardefine', args = {'便当', data.bento}}
   -- 便当加值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'便当加值', data.bentoAdd}
   }
   -- 便当保质期
   frame:callParserFunction{
       name = '#vardefine',
       args = {'便当保质期', data.bentoValidity}
   }
   -- 便当便签
   frame:callParserFunction{
       name = '#vardefine',
       args = {'便当便签', data.bentoMemo}
   }

end

-- 等级和默契度面板 function RoleInfo_Value(frame, data)

   -- 等级1数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'等级1数值', data.lv1Value}
   }
   -- 等级1数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'等级7数值', data.lv7Value}
   }
   -- 等级1数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'等级14数值', data.lv14Value}
   }
   -- 等级1数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'等级21数值', data.lv21Value}
   }
   -- 等级1数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'等级28数值', data.lv28Value}
   }
   -- 等级1数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'等级35数值', data.lv35Value}
   }
   -- 等级1数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'等级60数值', data.lv60Value}
   }
   -- 默契度1数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'默契度1数值', data.tacit1Value}
   }
   -- 默契度2数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'默契度2数值', data.tacit2Value}
   }
   -- 默契度3数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'默契度3数值', data.tacit3Value}
   }
   -- 默契度4数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'默契度4数值', data.tacit4Value}
   }
   -- 默契度5数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'默契度5数值', data.tacit5Value}
   }
   -- 默契度6数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'默契度6数值', data.tacit6Value}
   }
   -- 默契度7数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'默契度7数值', data.tacit7Value}
   }
   -- 默契度8数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'默契度8数值', data.tacit8Value}
   }
   -- 默契度9数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'默契度9数值', data.tacit9Value}
   }
   -- 默契度10数值
   frame:callParserFunction{
       name = '#vardefine',
       args = {'默契度10数值', data.tacit10Value}
   }

end

-- 养成(共振+觉醒) function RoleInfo_Development(frame, data)

   -- 共振1名称
   frame:callParserFunction{
       name = '#vardefine',
       args = {'共振1名称', data.syntony1}
   }
   -- 共振1描述
   frame:callParserFunction{
       name = '#vardefine',
       args = {'共振1描述', data.syntony1_info}
   }
   -- 共振2名称
   frame:callParserFunction{
       name = '#vardefine',
       args = {'共振2名称', data.syntony2}
   }
   -- 共振2描述
   frame:callParserFunction{
       name = '#vardefine',
       args = {'共振2描述', data.syntony2_info}
   }
   -- 共振4名称
   frame:callParserFunction{
       name = '#vardefine',
       args = {'共振4名称', data.syntony4}
   }
   -- 共振4描述
   frame:callParserFunction{
       name = '#vardefine',
       args = {'共振4描述', data.syntony4_info}
   }
   -- 共振5名称
   frame:callParserFunction{
       name = '#vardefine',
       args = {'共振5名称', data.syntony5}
   }
   -- 共振5描述
   frame:callParserFunction{
       name = '#vardefine',
       args = {'共振5描述', data.syntony5_info}
   }
   -- 生活技能1名称
   frame:callParserFunction{
       name = '#vardefine',
       args = {'生活技能1名称', data.livingSkill1}
   }
   -- 生活技能1描述
   frame:callParserFunction{
       name = '#vardefine',
       args = {'生活技能1描述', data.livingSkill1_info}
   }
   -- 生活技能2名称
   frame:callParserFunction{
       name = '#vardefine',
       args = {'生活技能2名称', data.livingSkill2}
   }
   -- 生活技能2描述
   frame:callParserFunction{
       name = '#vardefine',
       args = {'生活技能2描述', data.livingSkill2_info}
   }
   -- 生活技能+名称
   frame:callParserFunction{
       name = '#vardefine',
       args = {'生活技能+名称', data.livingSkill5}
   }
   -- 生活技能+描述
   frame:callParserFunction{
       name = '#vardefine',
       args = {'生活技能+描述', data.livingSkill5_info}
   }
   -- 觉醒1名称
   frame:callParserFunction{
       name = '#vardefine',
       args = {'觉醒1名称', data.Awakening1}
   }
   -- 觉醒1描述
   frame:callParserFunction{
       name = '#vardefine',
       args = {'觉醒1描述', data.Awakening1_info}
   }
   -- 觉醒2名称
   frame:callParserFunction{
       name = '#vardefine',
       args = {'觉醒2名称', data.awakening2}
   }
   -- 觉醒2描述
   frame:callParserFunction{
       name = '#vardefine',
       args = {'觉醒2描述', data.awakening2_info}
   }
   local atk_info = "攻击力+"
   local def_info = "防御力+"
   local info3 = ""
   local info4 = ""
   if data.rarity == "SSR" then
       atk_info = atk_info .. "100"
       def_info = def_info .. "100"
   elseif data.rarity == "SR" then
       atk_info = atk_info .. "80"
       def_info = def_info .. "80"
   elseif data.rarity == "R" then
       atk_info = atk_info .. "60"
       def_info = def_info .. "60"
   elseif data.rarity == "N" then
       atk_info = atk_info .. "40"
       def_info = def_info .. "40"
   end
   if data.awakening3 == "强韧" then
       info3 = def_info
   elseif data.awakening3 == "斗志" then
       info3 = atk_info
   end
   if data.awakening4 == "强韧" then
       info4 = def_info
   elseif data.awakening4 == "斗志" then
       info4 = atk_info
   end
   -- 觉醒3名称
   frame:callParserFunction{
       name = '#vardefine',
       args = {'觉醒3名称', data.awakening3}
   }
   -- 觉醒3描述
   frame:callParserFunction{
       name = '#vardefine',
       args = {'觉醒3描述', info3}
   }
   -- 觉醒4名称
   frame:callParserFunction{
       name = '#vardefine',
       args = {'觉醒4名称', data.awakening4}
   }
   -- 觉醒4描述
   frame:callParserFunction{
       name = '#vardefine',
       args = {'觉醒4描述', info4}
   }
   -- 觉醒5名称
   frame:callParserFunction{
       name = '#vardefine',
       args = {'觉醒5名称', data.awakening5}
   }
   -- 觉醒5描述
   frame:callParserFunction{
       name = '#vardefine',
       args = {'觉醒5描述', data.awakening5_info}
   }

end

-- 档案 function RoleInfo_Record(frame, data) -- 中文名

   frame:callParserFunction{
       name = '#vardefine',
       args = {'中文名', data.name}
   }
   -- 英文名
   frame:callParserFunction{
       name = '#vardefine',
       args = {'英文名', data.name_en}
   }
   -- 中文声优
   frame:callParserFunction{
       name = '#vardefine',
       args = {'中文声优', data.cv_zh}
   }
   -- 日文声优
   frame:callParserFunction{
       name = '#vardefine',
       args = {'日文声优', data.cv_jp}
   }
   -- 生日
   frame:callParserFunction{
       name = '#vardefine',
       args = {'生日', data.birthday}
   }
   -- 性别
   frame:callParserFunction{
       name = '#vardefine',
       args = {'性别', data.gender}
   }
   -- 身高
   frame:callParserFunction{
       name = '#vardefine',
       args = {'身高', data.r_height}
   }
   -- 升构能力
   frame:callParserFunction{
       name = '#vardefine',
       args = {'升构能力', data.structure}
   }
   -- 出身地
   frame:callParserFunction{
       name = '#vardefine',
       args = {'出身地', data.hometown}
   }
   -- 现身份
   frame:callParserFunction{
       name = '#vardefine',
       args = {'现身份', data.identity}
   }
   -- 势力
   frame:callParserFunction{
       name = '#vardefine',
       args = {'势力', data.factions}
   }
   -- 自我介绍
   frame:callParserFunction{
       name = '#vardefine',
       args = {'自我介绍', data.selfIntroduction}
   }
   -- 经历
   frame:callParserFunction{
       name = '#vardefine',
       args = {'经历', data.resume}
   } -- 档案1
   frame:callParserFunction{
       name = '#vardefine',
       args = {'档案1', data.archives1}
   } -- 档案2
   frame:callParserFunction{
       name = '#vardefine',
       args = {'档案2', data.archives2}
   } -- 档案3
   frame:callParserFunction{
       name = '#vardefine',
       args = {'档案3', data.archives3}
   } -- 档案4
   frame:callParserFunction{
       name = '#vardefine',
       args = {'档案4', data.archives4}
   }

end

function RoleInfo_Audio(frame, data) frame:callParserFunction{

       name = '#vardefine',
       args = {'中文名', data.name}
   }
   -- 循环获取音频文本
   for i = 1, 21 do
       local loopIndex = string.format("%02d", i) -- 格式化为两位数,不足的补零
       frame:callParserFunction{
           name = '#vardefine',
           args = {'audio_' .. loopIndex, data['audio_' .. loopIndex]}
       }
   end

end

-- 从数据转换到筛选标签 function DataToFilterTag(data)

   local outputStr = "" -- 将outputStr定义为一个字符串
   -- 将"、"替换为逗号
   data = string.gsub(data, "、", ",")
   -- 循环每个数组执行下一步
   for word in string.gmatch(data, "[^,]+") do
       outputStr = outputStr .. word .. ","
   end
   -- 去掉最后一个逗号
   outputStr = string.sub(outputStr, 1, -2)
   return outputStr

end

-- 从数据转换到链接文本 function DataToLinkText(data, LineFeed)

   -- 新建输出项
   local outputStr = ""
   if not LineFeed then LineFeed = false end
   -- 将"、"替换为逗号
   data = string.gsub(data, "、", ",")
   -- 循环每个数组执行下一步
   for item in string.gmatch(data, "[^,]+") do
       outputStr = outputStr .. "" .. item .. ""
       if LineFeed == true then
           outputStr = outputStr .. "
" else outputStr = outputStr .. "、" end end
   if LineFeed == true then
       -- 去掉最后一个
outputStr = string.sub(outputStr, 1, -5) else -- 去掉最后一个顿号 outputStr = string.sub(outputStr, 1, -4) end return outputStr

end

-- 角色获取 function p.Role(frame)

   -- 获取输入角色名
   local input = frame.args["name"]
   local cacheJson = {}
   cacheJson = getJsonPage.role
   for i, data in ipairs(cacheJson) do
       if input == data.name then -- 数据已确认,开始填充       
           RoleInfo_Base(frame, data)
           RoleInfo_Value(frame, data)
           RoleInfo_Development(frame, data)
           RoleInfo_Record(frame, data)
           break
       end
   end
   cacheJson = getJsonPage_audio.roleAudio
   for i, data in ipairs(cacheJson) do
       if input == data.name then -- 数据已确认,开始填充       
           RoleInfo_Audio(frame, data)
           break
       end
   end

end

-- 角色筛选项 function p.RoleFilterItem(frame)

   -- 新建输出对象
   local output = ""
   local cacheJson = getJsonPage.role
   for i, data in ipairs(cacheJson) do
       local formattedData = p.setRoleItemData(data)
       output = output ..
                    frame:expandTemplate{
               title = '乘员筛选/列表',
               args = formattedData
           }
   end
   return output

end

-- 设置角色行所需内容 function p.setRoleItemData(data)

   -- 创建输出对象
   local formattedData = {}
   -- 指定键值对,对应data参数
   formattedData["1"] = data["name"]
   formattedData["2"] = data["rarity"]
   formattedData["3"] = data["gender"]
   formattedData["4"] = data["row"]
   formattedData["5"] = data["factions"]
   formattedData["6"] = DataToLinkText(data["fightTag"])
   formattedData["getTag"] = DataToFilterTag(data["fightTag"])
   formattedData["7"] = DataToLinkText(data["livingSkillType"])
   formattedData["8"] = DataToFilterTag(data["livingSkillType"])
   return formattedData

end

-- 技能调用 因无法处理衍生卡的问题,所以更换新的方式 function p.Skill(frame)

   -- 获取输入技能名
   local input = frame.args["name"]
   local type = frame.args["type"]
   -- 检查输入参数是否存在
   if not type then
       type = "" -- 如果不存在参数 i,则设置一个默认值
   end
   local outputStr = ""
   local cacheJson = {}
   -- 从全局变量getJsonPage中获取技能信息
   cacheJson = getJsonPage.skill
   -- 遍历技能信息数组
   for i, data in ipairs(cacheJson) do
       -- 如果输入技能名匹配,则开始处理
       if input == data.name then
           -- 格式化数据
           local formattedData = p.formatSkillData(frame, data)
           -- 扩展模板并拼接到输出字符串中
           outputStr = outputStr .. frame:expandTemplate{
               title = '乘员图鉴/技能' .. type,
               args = formattedData
           }
           -- 将"、"替换为逗号
           data.derivedCard = string.gsub(data.derivedCard, "、", ",")
           -- 拆分 derivedCard 字符串并循环处理
           for derived in string.gmatch(data.derivedCard, "[^,]+") do
               for i, data in ipairs(cacheJson) do
                   -- 如果衍生技能匹配,则开始处理
                   if derived == data.name then
                       -- 格式化数据
                       local formattedData = p.formatSkillData(frame, data)
                       formattedData["衍生"] = "是"
                       -- 扩展模板并拼接到输出字符串中
                       outputStr = outputStr .. frame:expandTemplate{
                           title = 'U118114p2' .. type,
                           args = formattedData
                       }
                       break
                   end
               end
           end
           break
       end
   end
   return outputStr

end

-- 技能参数 function p.formatSkillData(frame, data)

   local formattedData = {}
   -- 指定键值对,而不是循环
   formattedData["名称"] = data["name"]
   formattedData["角色"] = data["vestIn"]
   formattedData["费用"] = data["cost"]
   formattedData["张数"] = data["num"]
   formattedData["描述"] = data["describe"]
   formattedData["引用词缀"] = data["affix"]
   formattedData["队长技条件"] = data["captainCondition"]
   return formattedData

end

return p -- 返回包含函数和数据的导出表