全站通知:
模块:数据库/sandbox
刷
历
编
< 模块:数据库
跳到导航
跳到搜索
此模块的文档可以在模块:数据库/sandbox/doc创建
local p = {}
local image_data = mw.loadData('模块:卡面数据库内容')
local card_data = require('模块:卡牌数据库内容').cards_set
local sound_module = require('模块:音频数据库内容')
local sound_data = sound_module.sound_set or {}
p["卡牌信息"] = function(frame)
local card_id = tonumber(frame.args["ID"])
if not card_id then
return "Invalid ID."
end
local card = card_data[card_id]
if not card then
return "ID not found."
end
local output = {}
-- 设置基础信息
frame:callParserFunction{name='#vardefine', args={'名字', card.name}}
frame:callParserFunction{name='#vardefine', args={'身份', card.title}}
frame:callParserFunction{name='#vardefine', args={'卡牌介绍', card.text}}
frame:callParserFunction{name='#vardefine', args={'品级', card.rare}}
-- 处理音频数据
local sound_id = tostring(card_id) -- 将ID转换为字符串用于查找
local sound_files = sound_data[sound_id]
if sound_files and #sound_files > 0 then
-- 将音频文件数组转换为字符串,用顿号分隔
local sound_text = table.concat(sound_files, "、")
frame:callParserFunction{name='#vardefine', args={'音频文件', sound_text}}
-- 如果需要单独访问每个音频文件,也可以设置多个变量
for i, sound_file in ipairs(sound_files) do
frame:callParserFunction{name='#vardefine', args={'音频文件' .. i, sound_file}}
end
else
-- 如果没有音频数据,设置空值
frame:callParserFunction{name='#vardefine', args={'音频文件', ''}}
end
-- 原有的标签处理代码
local tag_module = require('模块:Tag对照内容')
local tag_translation = tag_module.tag_translation
local allowed_attr = tag_module.allowed_attr
if card.tag then
local tag_text = {}
local attr_text = {}
for tag_name, value in pairs(card.tag) do
local zh_name = tag_translation[tag_name] or tag_name
table.insert(tag_text, zh_name)
if allowed_attr[zh_name] and value ~= nil then
attr_text[zh_name] = tostring(value)
end
end
table.sort(tag_text)
frame:callParserFunction{name='#vardefine', args={'标签', table.concat(tag_text, "、")}}
if next(attr_text) ~= nil then
frame:callParserFunction{
name = '#vardefine',
args = {'属性', frame:expandTemplate{title='属性', args=attr_text}}
}
end
end
if card.equips then
frame:callParserFunction{name='#vardefine', args={'装备栏', table.concat(card.equips, "、")}}
end
end
p["卡面图片"] = function(frame)
local args = frame.args or {}
local name = args[1] or ""
return image_data[name] or ""
end
-- 功能:根据卡牌 ID 返回音频文件名列表(例如 {"flj001","flj002"})
p.getAudioList = function(card_id)
-- 允许传入数字或字符串
local id = nil
if type(card_id) == "table" and card_id.args then
id = tostring(card_id.args["ID"] or "")
else
id = tostring(card_id or "")
end
if id == "" then
return nil
end
local list = sound_data[id]
if list and type(list) == "table" then
local new_list = {}
for i, v in ipairs(list) do
-- 替换下划线为空格
new_list[i] = string.gsub(v, "_", " ")
end
return new_list
end
return list
end
return p

沪公网安备 31011002002714 号