|
|
| 第1行: |
第1行: |
| -- 模块:SkillTree —— 技能树模块
| |
| -- 当前阶段:数据源探针(验证 mw.xbdb.query 直查 SQLite 的能力边界)
| |
| -- 测试完成后:p.probe 保留作数据源探测工具,p.main 改写为树渲染本体
| |
| local p = {}
| |
|
| |
|
| local xbdb = mw.xbdb
| |
|
| |
| local function tryDesc(label, fn)
| |
| local ok, result = pcall(fn)
| |
| if not ok then
| |
| return "== " .. label .. " ==\n探针失败:" .. tostring(result)
| |
| end
| |
| local ok2, encoded = pcall(mw.text.jsonEncode, result)
| |
| if ok2 then
| |
| return "== " .. label .. " ==\n" .. encoded
| |
| end
| |
| return "== " .. label .. " ==\n(返回内容无法 JSON 化)" .. tostring(result)
| |
| end
| |
|
| |
| -- 数据源探测入口:沙盒里 {{#invoke:SkillTree|probe}} 调用
| |
| function p.probe(frame)
| |
| local out = {}
| |
|
| |
| -- 1. env():扩展环境信息
| |
| out[#out + 1] = tryDesc("1. env()", function() return xbdb.env() end)
| |
|
| |
| -- 2. query 通道可用性:sqlite_master 表清单
| |
| out[#out + 1] = tryDesc("2. query: sqlite_master 前30表",
| |
| function() return xbdb.query("SELECT name FROM sqlite_master WHERE type='table' ORDER BY name LIMIT 30", "cn") end)
| |
|
| |
| -- 3. 全库表总数(对照契约测试的 9042)
| |
| out[#out + 1] = tryDesc("3. query: 表总数",
| |
| function() return xbdb.query("SELECT COUNT(*) AS n FROM sqlite_master WHERE type='table'", "cn") end)
| |
|
| |
| -- 4. AP 成长表直查(未注册解析器,若成功=绕过迁移限制)
| |
| out[#out + 1] = tryDesc("4. query: grow_arts_base",
| |
| function() return xbdb.query("SELECT * FROM bdat_common.grow_arts_base LIMIT 3", "cn") end)
| |
|
| |
| -- 5. 技能树表直查(同名探测)
| |
| out[#out + 1] = tryDesc("5. query: pc_treelist",
| |
| function() return xbdb.query("SELECT * FROM bdat_common.pc_treelist LIMIT 3", "cn") end)
| |
|
| |
| -- 6. schema 参数取值探测
| |
| out[#out + 1] = tryDesc("6. query: schema='data'",
| |
| function() return xbdb.query("SELECT COUNT(*) AS n FROM sqlite_master WHERE type='table'", "data") end)
| |
|
| |
| return table.concat(out, "\n\n")
| |
| end
| |
|
| |
| -- 正式渲染入口:待数据源确认后实现
| |
| function p.main(frame)
| |
| return "SkillTree 模块:渲染入口待实现(当前处于数据源探测阶段)"
| |
| end
| |
|
| |
| return p
| |