欢迎查看本站wiki待办,一起参与施工!如有建议或想法,也欢迎加入wiki学会洽谈区QQ群:471292177~目前急缺人手,详情请查看:学会会员招募中
由于近期有用户滥用本wiki内容,再次声明请遵循WIKI社区规则。如有违反会被封禁ip以及用户,被封禁用户会进行公开,请查看封禁公示
欢迎查看本站wiki待办,一起参与施工!如有建议或想法,也欢迎加入wiki学会洽谈区QQ群:471292177~目前急缺人手,详情请查看:学会会员招募中
由于近期有用户滥用本wiki内容,再次声明请遵循WIKI社区规则。如有违反会被封禁ip以及用户,被封禁用户会进行公开,请查看封禁公示
全站通知:

模块:数据库/sandbox

来自苏丹的游戏WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

此模块的文档可以在模块:数据库/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