缺氧 wiki 编辑团队提示:注册账号并登录后体验更佳,且可通过参数设置定制优化您的浏览体验!
该站点为镜像站点,如果你想帮助这个由玩家志愿编辑的 wiki 站点,请前往原站点参与编辑,
同时欢迎加入编辑讨论群 851803695 与其他编辑者一起参与建设!
全站通知:
模块:表格/配方
刷
历
编
< 模块:表格
跳到导航
跳到搜索
此模块的文档可以在模块:表格/配方/doc创建
-- Module:表格/配方
local p = {}
local utils = require([[Module:Utils]])
local getEntry = utils.getEntry
local fstr = mw.ustring.format -- shortcut for formattig a string
local po = require([[Module:Po]]).po
local getArgs = require('Module:Dev/Arguments').getArgs
local tb = require([[Module:表格]])
local i18ndb = require([[Module:I18n]]).loadMessages([[Module:i18n/Buildings]])
local buData = mw.loadData([[Module:Data/Buildings]])
local function isDefaultT(s, t) return ("<" .. s .. ">") == t end
-- return {buCode}
local function getBuCode(pagename)
local buCode = i18ndb:msgRev({
key = pagename,
args = {
prefix = "STRINGS.BUILDINGS.PREFABS."
}
} or "")
if buCode == nil or isDefaultT(pagename, buCode) then
error(fstr("找不到建筑物 '%s',请使用参数1或检查 [[%s]]。",pagename, [[Module:Data/Buildings]]))
else
return buCode
end
return nil
end
-- test by : = p.main(require("Module:debug").frame({},{debug=1, pagename="燃气灶"}))
function p.main(frame)
local args = getArgs(frame)
local builds = {}
local pagename = nil
if args.debug then mw.logObject(args, "args") end
if args.pagename then pagename = args.pagename end
local buCode = getBuCode(pagename)
local buId = buCode:match("([%u%d]+).NAME$")
table.insert(builds, {
id = buId,
code = buCode
})
-- 组装信息
local datas = {}
for _, building in ipairs(builds) do
for k, v in pairs(buData) do
if k:upper() == building.id:upper() then
if v.recipes then
for _, recipe in ipairs(v.recipes) do
local infos = {}
local timeSlice = fstr(" %s 秒", recipe.workTime)
local inputs = {}
local outputs = {}
local rec = {}
for _, input in ipairs(recipe.input) do
table.insert(inputs, fstr("{{物品|%s}} %s", getEntry(input.element), utils.kg2str(input.amount, 2)))
end
for _, output in ipairs(recipe.output) do
table.insert(outputs, fstr("{{物品|%s}} %s", getEntry(output.element), utils.kg2str(output.amount, 2)))
table.insert(rec, fstr("{{图|40|%s}}<br/> [[%s]]", getEntry(output.element), getEntry(output.element)))
end
if #rec > 0 then table.insert(infos, rec[1]) end
table.insert(infos,timeSlice)
if #inputs > 0 then table.insert(infos, table.concat(inputs, " <br/>")) end
if #outputs > 0 then table.insert(infos, table.concat(outputs, " <br/>")) end
table.insert(datas,infos)
end
end
end
end
end
local out = {}
for _, v in ipairs(datas) do
if args.input then
if mw.ustring.match(v[3],args.input) then
table.insert(out,v)
break
end
elseif args.result then
if mw.ustring.match(v[4],args.result) then
table.insert(out,v)
break
end
elseif args[1] then
if mw.ustring.match(v[4],args[1]) then
table.insert(out,v)
elseif mw.ustring.match(v[3],args[1]) then
table.insert(out,v)
end
else table.insert(out,v) end
end
if args.debug then mw.logObject(out, "out") end
return mw.ustring.sub(tb.table(out, args),4)
end
return p