本WIKI编辑权限开放,欢迎大家共同建设
也可以 收藏本WIKI 防止迷路
编辑帮助:目录
目前Wiki编辑组急缺美术,希望有能力、有意向的老师可以参与一起建设本站
全站通知:
模块:数据库调用-武器
刷
历
编
跳到导航
跳到搜索
简介
本wiki中,大量通用格式的数据是通过Lua(模块)制作的[伪]数据库实现便捷更新管理。
其中涉及到的页面有
相关维护页面 | |||||||||
---|---|---|---|---|---|---|---|---|---|
数据收集表格 | 飞书文档-驱入虚空 bwiki 工作数据表 | ||||||||
Excel转Lua结构 | Widget:ExcelToLuaJson | ||||||||
具装 | 模板:具装 | 模块:数据库调用-具装 | 模块:数据库-具装 | ||||||
武器 | 模板:武器 | 模块:数据库调用-武器 | 模块:数据库-武器 | ||||||
道具 | 模板:道具 | 模块:数据库调用-道具 | 模块:数据库-道具 | ||||||
执行卡 | 模板:执行卡 | 模块:数据库调用-执行卡 | 模块:数据库-执行卡 | ||||||
稳态立方 | 模板:稳态立方索引 立方掉落 立方奖励 |
模块:数据库调用-稳态立方 | 模块:数据库-稳态立方 |
数据库更新方法
此处以具装数据库为例
- 当版本更新,或需要更新数据时,将数据更新在腾讯文档中
- 选择全部数据区块(首行为英文标签行,直到最后一条数据行),复制。
- 打开转换工具页,将复制的excel格式直接复制到上方的输入框中并点击转换.得到转换为Lua代码的数据结构
- 将转换后的lua信息复制,进入模块:数据库-具装:编辑模式,将复制过对应的数据拷贝到p.xxx中,注意保持大括号结构性完好
- 注:具装存在两个组,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 -- 返回包含函数和数据的导出表