全站通知:
模块:U118114p1
刷
历
编
跳到导航
跳到搜索
此模块的文档可以在模块:U118114p1/doc创建
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 .. '<a data-bs-toggle="tooltip" data-bs-html="true" src="./' .. item .. '" data-bs-title="{{#invoke:数据库调用-乘员|Skill|name='.. item .. '|type=简}}">'.. item .. '</a>'
if LineFeed == true then
outputStr = outputStr .. "<br>"
else
outputStr = outputStr .. "、"
end
end
if LineFeed == true then
-- 去掉最后一个<br>
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 -- 返回包含函数和数据的导出表