本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_weapon = require('模块:数据库-武器')

-- 具装相关参数获取获取
-- 角色获取
function p.weapon(frame)
    -- 获取输入武器名
    local getName = frame.args["name"]

    local input = string.gsub(getName or "", " ", "_")

    local input2 = string.gsub(getName or "", " ", "-")

    local loadJsonBase = getJsonPage_weapon.weapon -- 修改这里,直接访问role属性

    for i, data in ipairs(loadJsonBase) do
        if input == data.name then -- 数据已确认,开始填充	   
            -- 武器名
            frame:callParserFunction{
                name = '#vardefine',
                args = {'武器', getName}
            }
             -- 武器名
            frame:callParserFunction{
                name = '#vardefine',
                args = {'武器-修正', input2}
            }
            WeaponInfo_Base(frame, data)
            break
        end
    end

end

-- 基础参数
function WeaponInfo_Base(frame, data)
    -- 武器类型
    frame:callParserFunction{
        name = '#vardefine',
        args = {'武器类型', data.type}
    }
    -- 组织
    frame:callParserFunction{
        name = '#vardefine',
        args = {'组织', data.factions}
    }

    if data.intro ~= nil then
        -- 介绍
        frame:callParserFunction{
            name = '#vardefine',
            args = {'介绍', data.intro}
        }
    end

    -- 新增属性
    if data.intro2 ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'介绍2', data.intro2}
        }
    end
    if data.damage ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'伤害', data.damage}
        }
    end
    if data.damage_01 ~= nil then
        local damage_01_parts = {}
        for part in string.gmatch(data.damage_01, "([^_]+)") do
            table.insert(damage_01_parts, part)
        end
        if #damage_01_parts >= 2 then
            frame:callParserFunction{
                name = '#vardefine',
                args = {'伤害1元素', damage_01_parts[1]}
            }
            frame:callParserFunction{
                name = '#vardefine',
                args = {'伤害1', damage_01_parts[2]}
            }
        end
    end
    if data.damage_02 ~= nil then
        local damage_02_parts = {}
        for part in string.gmatch(data.damage_02, "([^_]+)") do
            table.insert(damage_02_parts, part)
        end
        if #damage_02_parts >= 2 then
            frame:callParserFunction{
                name = '#vardefine',
                args = {'伤害2元素', damage_02_parts[1]}
            }
            frame:callParserFunction{
                name = '#vardefine',
                args = {'伤害2', damage_02_parts[2]}
            }
        end
    end
    if data.damage_03 ~= nil then
        local damage_03_parts = {}
        for part in string.gmatch(data.damage_03, "([^_]+)") do
            table.insert(damage_03_parts, part)
        end
        if #damage_03_parts >= 2 then
            frame:callParserFunction{
                name = '#vardefine',
                args = {'伤害3元素', damage_03_parts[1]}
            }
            frame:callParserFunction{
                name = '#vardefine',
                args = {'伤害3', damage_03_parts[2]}
            }
        end
    end
    if data.crit_per ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'暴击率', data.crit_per}
        }
    end
    if data.crit_dmg ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'暴击伤害', data.crit_dmg}
        }
    end
    if data.multi ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'多重射击', data.multi}
        }
    end
    if data.tendency ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'混淆倾向性', data.tendency}
        }
    end
    if data.trigger_prob ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'触发几率', data.trigger_prob}
        }
    end
    if data.speed ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'攻击速度', data.speed}
        }
    end

    if data.scope ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'伤害范围', data.scope}
        }
    end

    if data.magazine ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'弹匣容量', data.magazine}
        }
    end
    if data.reload ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'装填时间', data.reload}
        }
    end
    if data.trigger_type ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'扳机类型', data.trigger_type}
        }
    end
    if data.aim_range ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'智能瞄准范围', data.aim_range}
        }
    end
    if data.shot_range ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'最佳射程', data.shot_range}
        }
    end
    if data.combo_time ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'连击时间', data.combo_time}
        }
    end
    if data.weakness_dmg ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'弱点伤害', data.weakness_dmg}
        }
    end
    if data.pierce_per ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'穿甲率', data.pierce_per}
        }
    end
    if data.pierce_value ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'穿甲值', data.pierce_value}
        }
    end
    if data.damage_charge ~= nil then
        frame:callParserFunction{
            name = '#vardefine',
            args = {'蓄力模式', '蓄力模式'}
        }

        frame:callParserFunction{
            name = '#vardefine',
            args = {'蓄力伤害', data.damage_charge}
        }
    end

    if data.damage_charge_01 ~= nil then
        local damage_charge_01_parts = {}
        for part in string.gmatch(data.damage_charge_01, "([^_]+)") do
            table.insert(damage_charge_01_parts, part)
        end
        if #damage_charge_01_parts >= 2 then
            frame:callParserFunction{
                name = '#vardefine',
                args = {'蓄力伤害1元素', damage_charge_01_parts[1]}
            }
            frame:callParserFunction{
                name = '#vardefine',
                args = {'蓄力伤害1', damage_charge_01_parts[2]}
            }
        end
    end
    if data.damage_charge_02 ~= nil then
        local damage_charge_02_parts = {}
        for part in string.gmatch(data.damage_charge_02, "([^_]+)") do
            table.insert(damage_charge_02_parts, part)
        end
        if #damage_charge_02_parts >= 2 then
            frame:callParserFunction{
                name = '#vardefine',
                args = {'蓄力伤害2元素', damage_charge_02_parts[1]}
            }
            frame:callParserFunction{
                name = '#vardefine',
                args = {'蓄力伤害2', damage_charge_02_parts[2]}
            }
        end
    end
    if data.damage_charge_03 ~= nil then
        local damage_charge_03_parts = {}
        for part in string.gmatch(data.damage_charge_03, "([^_]+)") do
            table.insert(damage_charge_03_parts, part)
        end
        if #damage_charge_03_parts >= 2 then
            frame:callParserFunction{
                name = '#vardefine',
                args = {'蓄力伤害3元素', damage_charge_03_parts[1]}
            }
            frame:callParserFunction{
                name = '#vardefine',
                args = {'蓄力伤害3', damage_charge_03_parts[2]}
            }
        end
    end
end

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