本WIKI编辑权限开放,欢迎大家共同建设
也可以 收藏本WIKI 防止迷路
编辑帮助:目录
目前Wiki编辑组急缺美术,希望有能力、有意向的老师可以参与一起建设本站
全站通知:
模块:数据库调用-稳态立方
刷
历
编
跳到导航
跳到搜索
简介
本wiki中,大量通用格式的数据是通过Lua(模块)制作的[伪]数据库实现便捷更新管理。
其中涉及到的页面有
相关维护页面 | |||||||||
---|---|---|---|---|---|---|---|---|---|
数据收集表格 | 飞书文档-驱入虚空 bwiki 工作数据表 | ||||||||
Excel转Lua结构 | Widget:ExcelToLuaJson | ||||||||
具装 | 模板:具装 | 模块:数据库调用-具装 | 模块:数据库-具装 | ||||||
武器 | 模板:武器 | 模块:数据库调用-武器 | 模块:数据库-武器 | ||||||
道具 | 模板:道具 | 模块:数据库调用-道具 | 模块:数据库-道具 | ||||||
执行卡 | 模板:执行卡 | 模块:数据库调用-执行卡 | 模块:数据库-执行卡 | ||||||
稳态立方 | 模板:稳态立方索引 立方掉落 立方奖励 |
模块:数据库调用-稳态立方 | 模块:数据库-稳态立方 |
数据库更新方法
此处以具装数据库为例
- 当版本更新,或需要更新数据时,将数据更新在腾讯文档中
- 选择全部数据区块(首行为英文标签行,直到最后一条数据行),复制。
- 打开转换工具页,将复制的excel格式直接复制到上方的输入框中并点击转换.得到转换为Lua代码的数据结构
- 将转换后的lua信息复制,进入模块:数据库-具装:编辑模式,将复制过对应的数据拷贝到p.xxx中,注意保持大括号结构性完好
- 注:具装存在两个组,role记录基础信息,和skill记录技能信息
local p = {}
local getJsonPage = require('模块:数据库-稳态立方')
function p.gets(frame)
local data = mw.text.jsonDecode(mw.title.new('Test.json'):getContent())
local output = ""
for i, item in ipairs(data) do
local formattedData = get_formatData(item)
formattedData["1"] = "获取"
output = output ..
frame:expandTemplate {
title = '稳态立方索引',
args = formattedData
}
end
return output
end
function get_formatData(item)
local formattedData = {}
formattedData["map"] = item.map
formattedData["region"] = item.region
formattedData["pattern"] = item.pattern
formattedData["round"] = item.round
formattedData["content"] = item.content
local contentSplit = mw.text.split(item.content, ",")
formattedData["content-tag"] = contentTags(contentSplit)
formattedData["content-show"] = contentShow(contentSplit)
return formattedData
end
function contentTags(split)
local result = {}
local seen = {}
for _, item in ipairs(split) do
-- 添加完整值
if not seen[item] then
table.insert(result, item)
seen[item] = true
end
-- 拆分前缀和后缀
local prefix = item:sub(1, 2)
local suffix = item:sub(3)
-- 添加前缀
if not seen[prefix] then
table.insert(result, prefix)
seen[prefix] = true
end
-- 添加后缀
if suffix ~= "" and not seen[suffix] then
table.insert(result, suffix)
seen[suffix] = true
end
end
return table.concat(result, ",")
end
function contentShow(split)
local result = {}
for _, item in ipairs(split) do
local prefix = item:sub(1, 2)
if prefix == "T1" then
table.insert(result, "稳态立方" .. item:sub(3))
elseif prefix == "T2" then
table.insert(result, "递归立方" .. item:sub(3))
elseif prefix == "T3" then
table.insert(result, "超流立方" .. item:sub(3))
elseif prefix == "T4" then
table.insert(result, "简并立方" .. item:sub(3))
else
table.insert(result, item)
end
end
return table.concat(result, ",")
end
function p.contents(frame)
local output = ""
for i, data in ipairs(getJsonPage.content) do
local formattedData = content_formatData(data)
formattedData["1"] = "奖励"
output = output ..
frame:expandTemplate {
title = '稳态立方索引',
args = formattedData
}
end
return output
end
function content_formatData(data)
local formattedData = {}
local parsedContent, frontPart, backPart = parseId(data["id"])
formattedData["2"] = parsedContent .. backPart
formattedData["type"] = frontPart
formattedData["subId"] = backPart
parsePage("A", data["iA"], formattedData)
parsePage("B1", data["iB1"], formattedData)
parsePage("B2", data["iB2"], formattedData)
parsePage("C1", data["iC1"], formattedData)
parsePage("C2", data["iC2"], formattedData)
parsePage("C3", data["iC3"], formattedData)
return formattedData
end
function parseId(dataId)
-- 根据 dataId 的前缀进行转换
local idPrefix = dataId:sub(1, 2)
local parsedContent
if idPrefix == "T1" then
parsedContent = "稳态立方"
elseif idPrefix == "T2" then
parsedContent = "递归立方"
elseif idPrefix == "T3" then
parsedContent = "超流立方"
elseif idPrefix == "T4" then
parsedContent = "简并立方"
else
parsedContent = dataId -- 默认情况
end
local frontPart = idPrefix
local backPart = dataId:sub(3)
return parsedContent, frontPart, backPart
end
function parsePage(postfix, dataId, formattedData)
-- 检查 dataId 为 nil 则终止
if not dataId then return nil end
-- 将传入的数据通过 '-' 分割为数组
local parts = mw.text.split(dataId, '-')
local page = "私法_" .. parts[1]
local show = dataId
local link = parts[1]
-- 检查页面是否存在
if mw.title.new(page).exists then
show = "私法 " .. dataId
link = "私法_" .. parts[1]
end
formattedData[postfix] = show
formattedData["link" .. postfix] = link
end
function p.test()
local data = mw.text.jsonDecode(mw.title.new('Test.json'):getContent())
local output = ""
for i, item in ipairs(data) do
output = output .. "区域: " .. item.region .. "\n"
output = output .. "地图: " .. item.map .. "\n"
output = output .. "模式: " .. item.pattern .. "\n"
output = output .. "轮次: " .. item.round .. "\n"
output = output .. "内容: " .. item.content .. "\n\n"
end
return output
end
return p