蒙纳多研究本部
菜单
导航
首页
最近更改
随机页面
翻译查询
乐园数据管理室
送行者的收集手册
搜索
链入页面
相关更改
特殊页面
页面信息
最近更改
帮助
登录
模块
查看“︁GemSMW”︁的源代码
←
模块:GemSMW
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
-- 模块:GemSMW —— 宝珠 SMW 注解层 -- 职责:把 xbdb 取到的宝珠数据写成 Semantic MediaWiki 行内注解(#set),供 #ask 查询。 -- 设计原则: -- 1. 注解值全部来自 GemData 取数,不手写; -- 2. 由列表/infobox 渲染时顺带调用(同一页面只注解一次,防重复 set); -- 3. 属性名带 Gem 前缀,避免与站内其他系统的同名属性冲突。 local p = {} local gemData = require("Module:GemData") -- ====== SMW 属性表(需在 wiki 上同步创建 Property: 页面) ====== -- Property:Gem效果值 Number — X 级数值(列表主数值) -- Property:Gem效果值I Number — I 级数值 -- Property:Gem熔炼费用 Number -- Property:Gem归属 Text — 共用 / 武器 / 防具 -- Property:Gem技能ID Number — BTL_skilllist row_id(主键锚点) -- Property:Gem效果描述 Text — 线上 rvs_caption($1 已填充 X 级值) local ATTACH_LABEL = { [0] = "共用", [1] = "武器", [2] = "防具" } local seen = {} -- 每次页面解析内防止同一宝珠重复注解 function p.annotate(gemId, data) gemId = tonumber(gemId) if not gemId or seen[gemId] then return "" end seen[gemId] = true local v10 = gemData.valueAtRank(data, 10) local v1 = gemData.valueAtRank(data, 1) local attach = tonumber(data.attach) local caption = (data.rvs_caption or ""):gsub("%$1", tostring(v10)) -- mw.smw 已由 SemanticScribunto 提供;若不可用(扩展关闭)静默跳过,页面照常渲染 local smw = mw.smw if smw == nil then return "" end smw.set { ["Gem技能ID"] = gemId, ["Gem归属"] = ATTACH_LABEL[attach] or "未知", ["Gem效果值I"] = v1, ["Gem效果值"] = v10, ["Gem熔炼费用"] = tonumber(data.money or 0), ["Gem效果描述"] = caption, } return "" end -- 批量注解:给 list 渲染入口顺带调用 function p.annotateAll(gems) for _, gem in ipairs(gems) do p.annotate(gem.id, gem.data) end return "" end -- ====== 反向查询示例(不直接上页面,只做演示/测试) ====== -- 用法:{{#invoke:GemSMW|queryByAttach|共用}} function p.queryByAttach(frame) local label = frame.args[1] or "共用" local smw = mw.smw if smw == nil then return "(SMW 不可用)" end local query = { "[[Gem归属:" .. label .. "]]", "?Gem效果值", "?Gem熔炼费用", sort = "Gem效果值", order = "desc", } local result = smw.ask(query) if not result or #result == 0 then return "无查询结果" end local out = { '| class="wikitable"', '! 宝珠 !! 效果值 !! 熔炼费用' } for _, row in ipairs(result) do out[#out + 1] = '|-' out[#out + 1] = '| ' .. tostring(row[1] or "?") .. ' || ' .. tostring(row[2] or "?") .. ' || ' .. tostring(row[3] or "?") end return table.concat(out, "\n") end return p
该页面使用的模板:
模块:GemSMW/doc
(
查看源代码
)
返回
模块:GemSMW
。