本WIKI编辑权限开放,欢迎大家共同建设
也可以 收藏本WIKI 防止迷路
编辑帮助:目录
目前Wiki编辑组急缺美术,希望有能力、有意向的老师可以参与一起建设本站

全站通知:

模块:数据库调用-具装

来自驱入虚空WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

简介

本wiki中,大量通用格式的数据是通过Lua(模块)制作的[伪]数据库实现便捷更新管理。
其中涉及到的页面有

相关维护页面
数据收集表格 飞书文档-驱入虚空 bwiki 工作数据表
Excel转Lua结构 Widget:ExcelToLuaJson
具装 模板:具装 模块:数据库调用-具装 模块:数据库-具装
武器 模板:武器 模块:数据库调用-武器 模块:数据库-武器
道具 模板:道具 模块:数据库调用-道具 模块:数据库-道具
执行卡 模板:执行卡 模块:数据库调用-执行卡 模块:数据库-执行卡
稳态立方 模板:稳态立方索引
立方掉落
立方奖励
模块:数据库调用-稳态立方 模块:数据库-稳态立方

模板:制作表格

数据库更新方法

此处以具装数据库为例

2.表格选择区域示例
3.转换工具使用示例
4.数据库更新内容示例
  1. 当版本更新,或需要更新数据时,将数据更新在腾讯文档中
  2. 选择全部数据区块(首行为英文标签行,直到最后一条数据行),复制。
  3. 打开转换工具页,将复制的excel格式直接复制到上方的输入框中并点击转换.得到转换为Lua代码的数据结构
  4. 将转换后的lua信息复制,进入模块:数据库-具装:编辑模式,将复制过对应的数据拷贝到p.xxx中,注意保持大括号结构性完好
    1. 注:具装存在两个组,role记录基础信息,和skill记录技能信息

local p = {}
-- 加载指定页面
local getJsonPage_role = require('模块:数据库-具装')

-- 具装相关参数获取获取

function p.roledatabase(frame)
    local loadJsonBase = mw.text.jsonDecode(
                             mw.title.new('MediaWiki:Role.json'):getContent())

    -- 获取输入角色名
    local input = frame.args["name"]

    for i, data in ipairs(loadJsonBase) do
        if input == data.name then -- 数据已确认,开始填充       
            RoleInfo_Base_Database(frame, data)
            RoleInfo_Value_Database(frame, data)
            break
        end
    end

    local loadSkillJsonBase = mw.text.jsonDecode(mw.title.new(
                                                     'MediaWiki:RoleSkill.json'):getContent())

    for i, data in ipairs(loadSkillJsonBase) do
        if input == data.name then -- 数据已确认,开始填充       
            RoleInfo_Skill_Database(frame, data)
            break
        end
    end
end
-- 数据库版本的基础参数处理
function RoleInfo_Base_Database(frame, data)
    -- 具装名
    frame:callParserFunction{name = '#vardefine', args = {'具装', data.name}}
    -- 角色名
    frame:callParserFunction{
        name = '#vardefine',
        args = {'角色', data.original}
    }
    -- ID
    frame:callParserFunction{name = '#vardefine', args = {'ID', data.id}}
    -- 真实版本
    frame:callParserFunction{
        name = '#vardefine',
        args = {'真实版本', data.realVerson}
    }
    -- 武器类型
    frame:callParserFunction{
        name = '#vardefine',
        args = {'武器类型', data.weapon_Type}
    }

    -- 组织
    frame:callParserFunction{
        name = '#vardefine',
        args = {'组织', data.factions}
    }

    -- 外号
    frame:callParserFunction{
        name = '#vardefine',
        args = {'外号', data.nickname}
    }

    -- 讲述
    frame:callParserFunction{name = '#vardefine', args = {'讲述', data.story}}

    -- 简介
    frame:callParserFunction{name = '#vardefine', args = {'简介', data.intro}}

    -- 标签
    frame:callParserFunction{name = '#vardefine', args = {'标签', data.tag}}

    -- 戏称
    frame:callParserFunction{
        name = '#vardefine',
        args = {'戏称', data.jokingly}
    }

    -- 获取方式
    frame:callParserFunction{
        name = '#vardefine',
        args = {'获取方式', data.acquired}
    }

    -- 价格
    frame:callParserFunction{name = '#vardefine', args = {'价格', data.price}}

    -- 私法版本
    local privateLawValue = data.private_Law
    if privateLawValue == true or privateLawValue == "有" then
        privateLawValue = "有"
    end
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法版本', privateLawValue}
    }
end

-- 数据库版本的数值参数处理
function RoleInfo_Value_Database(frame, data)
    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'生命-初始', data.health_base}
    }

    -- 生命-满级 (基础值 + 300)
    local health_max = (data.health_base or 0) + 300
    frame:callParserFunction{
        name = '#vardefine',
        args = {'生命-满级', health_max}
    }

    -- 护盾-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'护盾-初始', data.shield_base}
    }

    -- 护盾-满级 (基础值 + 150)
    local shield_max = (data.shield_base or 0) + 150
    frame:callParserFunction{
        name = '#vardefine',
        args = {'护盾-满级', shield_max}
    }

    -- 护甲-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'护甲-初始', data.armor_base}
    }

    -- 护甲-满级 (基础值 + 300)
    local armor_max = (data.armor_base or 0) + 300
    frame:callParserFunction{
        name = '#vardefine',
        args = {'护甲-满级', armor_max}
    }

    -- 能量-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'能量-初始', data.power_base}
    }

    -- 能量-满级 (基础值 + 30)
    local power_max = (data.power_base or 0) + 30
    frame:callParserFunction{
        name = '#vardefine',
        args = {'能量-满级', power_max}
    }

    -- ------------------------------------------------------------
    -- 私法版本数据
    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-生命-初始', data.p_health_base}
    }

    -- 生命-满级 (基础值 + 300)
    local p_health_max = (data.p_health_base or 0) + 300
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-生命-满级', p_health_max}
    }

    -- 护盾-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-护盾-初始', data.p_shield_base}
    }

    -- 护盾-满级 (基础值 + 150)
    local p_shield_max = (data.p_shield_base or 0) + 150
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-护盾-满级', p_shield_max}
    }

    -- 护甲-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-护甲-初始', data.p_armor_base}
    }

    -- 护甲-满级 (基础值 + 300)
    local p_armor_max = (data.p_armor_base or 0) + 300
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-护甲-满级', p_armor_max}
    }

    -- 能量-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-能量-初始', data.p_power_base}
    }

    -- 能量-满级 (基础值 + 30)
    local p_power_max = (data.p_power_base or 0) + 30
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-能量-满级', p_power_max}
    }
end

function RoleInfo_Skill_Database(frame, data)
    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'信手技', data.skill_t}
    }
    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'信手技介绍', data.skill_t_intro}
    }

    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'破阵技', data.skill_q}
    }
    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'破阵技介绍', data.skill_q_intro}
    }

    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'被动技', data.skill_p}
    }
    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'被动技介绍', data.skill_p_intro}
    }

    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'风格技', data.skill_s}
    }
    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'风格技介绍', data.skill_s_intro}
    }

    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'位移技', data.skill_c}
    }
    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'位移技介绍', data.skill_c_intro}
    }
    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'位移技图标', data.skill_c_icon}
    }

end

-- 角色获取
function p.Role(frame)
    -- 获取输入角色名
    local input = frame.args["name"]
    local loadJsonBase = getJsonPage_role.role -- 修改这里,直接访问role属性

    for i, data in ipairs(loadJsonBase) do
        if input == data.name then -- 数据已确认,开始填充       
            RoleInfo_Base(frame, data)
            RoleInfo_Value(frame, data)
            break
        end
    end

    local loadJsonSkill = getJsonPage_role.skill -- 修改这里,直接访问role属性
    for i, data in ipairs(loadJsonSkill) do
        if input == data.name then -- 数据已确认,开始填充       
            RoleInfo_Skill(frame, data)
            break
        end
    end
end

-- 基础参数
function RoleInfo_Base(frame, data)
    -- 具装名
    frame:callParserFunction{name = '#vardefine', args = {'具装', data.name}}
    -- 角色名
    frame:callParserFunction{
        name = '#vardefine',
        args = {'角色', data.original}
    }
    -- ID
    frame:callParserFunction{name = '#vardefine', args = {'ID', data.id}}
    -- 真实版本
    frame:callParserFunction{
        name = '#vardefine',
        args = {'真实版本', data.realVerson}
    }
    -- 武器类型
    frame:callParserFunction{
        name = '#vardefine',
        args = {'武器类型', data.weapon_Type}
    }

    -- 组织
    frame:callParserFunction{
        name = '#vardefine',
        args = {'组织', data.factions}
    }

    -- 外号
    frame:callParserFunction{
        name = '#vardefine',
        args = {'外号', data.nickname}
    }

    -- 讲述
    frame:callParserFunction{name = '#vardefine', args = {'讲述', data.story}}

    -- 简介
    frame:callParserFunction{name = '#vardefine', args = {'简介', data.intro}}

    -- 标签
    frame:callParserFunction{name = '#vardefine', args = {'标签', data.tag}}

    -- 戏称
    frame:callParserFunction{
        name = '#vardefine',
        args = {'戏称', data.jokingly}
    }

    -- 获取方式
    frame:callParserFunction{
        name = '#vardefine',
        args = {'获取方式', data.acquired}
    }

    -- 价格
    frame:callParserFunction{name = '#vardefine', args = {'价格', data.price}}

    -- 私法版本
    local privateLawValue = data.private_Law
    if privateLawValue == true or privateLawValue == "有" then
        privateLawValue = "有"
    end
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法版本', privateLawValue}
    }

end

-- 数值参数
function RoleInfo_Value(frame, data)

    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'生命-初始', data.health_base}
    }

    -- 生命-满级
    frame:callParserFunction{
        name = '#vardefine',
        args = {'生命-满级', data.health_max}
    }

    -- 护盾-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'护盾-初始', data.shield_base}
    }

    -- 护盾-满级
    frame:callParserFunction{
        name = '#vardefine',
        args = {'护盾-满级', data.shield_max}
    }

    -- 护甲-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'护甲-初始', data.armor_base}
    }

    -- 护甲-满级
    frame:callParserFunction{
        name = '#vardefine',
        args = {'护甲-满级', data.armor_max}
    }

    -- 能量-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'能量-初始', data.power_base}
    }

    -- 能量-满级
    frame:callParserFunction{
        name = '#vardefine',
        args = {'能量-满级', data.power_max}
    }

    -- ------------------------------------------------------------
    -- 私法版本数据
    -- 生命-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-生命-初始', data.p_health_base}
    }

    -- 生命-满级
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-生命-满级', data.p_health_max}
    }

    -- 护盾-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-护盾-初始', data.p_shield_base}
    }

    -- 护盾-满级
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-护盾-满级', data.p_shield_max}
    }

    -- 护甲-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-护甲-初始', data.p_armor_base}
    }

    -- 护甲-满级
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-护甲-满级', data.p_armor_max}
    }

    -- 能量-初始
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-能量-初始', data.p_power_base}
    }

    -- 能量-满级
    frame:callParserFunction{
        name = '#vardefine',
        args = {'私法-能量-满级', data.p_power_max}
    }
end

function RoleInfo_Skill(frame, data)
    -- 信手技
    frame:callParserFunction{
        name = '#vardefine',
        args = {'信手技', data.skill_t}
    }

    -- 信手技介绍
    frame:callParserFunction{
        name = '#vardefine',
        args = {'信手技介绍', data.skill_t_intro}
    }

    -- 信手技消耗
    frame:callParserFunction{
        name = '#vardefine',
        args = {'信手技消耗', data.skill_t_cost}
    }

    -- 破阵技
    frame:callParserFunction{
        name = '#vardefine',
        args = {'破阵技', data.skill_q}
    }

    -- 破阵技介绍
    frame:callParserFunction{
        name = '#vardefine',
        args = {'破阵技介绍', data.skill_q_intro}
    }

    -- 破阵技消耗
    frame:callParserFunction{
        name = '#vardefine',
        args = {'破阵技消耗', data.skill_q_cost}
    }

    -- 被动技(passive)
    frame:callParserFunction{
        name = '#vardefine',
        args = {'被动技', data.skill_p}
    }

    -- 被动技介绍
    frame:callParserFunction{
        name = '#vardefine',
        args = {'被动技介绍', data.skill_p_intro}
    }

    -- 风格技(shift)
    frame:callParserFunction{
        name = '#vardefine',
        args = {'风格技', data.skill_s}
    }

    -- 风格技介绍
    frame:callParserFunction{
        name = '#vardefine',
        args = {'风格技介绍', data.skill_s_intro}
    }

    -- 位移技(ctrl)
    frame:callParserFunction{
        name = '#vardefine',
        args = {'位移技', data.skill_c}
    }

    -- 位移技介绍
    frame:callParserFunction{
        name = '#vardefine',
        args = {'位移技介绍', data.skill_c_intro}
    }

    -- 位移技图标
    frame:callParserFunction{
        name = '#vardefine',
        args = {'位移技图标', data.skill_c_icon}
    }
end

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