匿名
未登录
创建账号
登录
Mindustry中文wiki
搜索
查看“模块:Utils”的源代码
来自Mindustry中文wiki
命名空间
模块
讨论
更多
更多
页面操作
阅读
查看源代码
历史
←
模块:Utils
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于这些用户组的用户执行:
管理员
、editor
您可以查看和复制此页面的源代码。
-- 引入Picture模块 local picture = require('Module:Picture') local p = {} -- 辅助函数:去除字符串尾部的所有空白字符(空格、换行、回车等) local function trimTrailing(str) if str then return str:gsub("%s+$", "") end return str end -- 条件函数,用法:{{#invoke:utils|ifeq|条件|为真输出|为假输出}} function p.ifeq(frame) local cond = frame.args[1] or '' if cond ~= '' then return frame.args[2] else return frame.args[3] end end -- 一个用来打表的函数,会自动适配内容数量,用法:{{#invoke:utils|renderGoals|是否显示(有值为是,空则为否)|目标1|注释1|...}} function p.renderGoals(frame) local args = frame.args local cells = {} -- if判断是否输出目标栏 if not args["是否启用目标栏"] or args["是否启用目标栏"] == "" then return "" end local i = 1 while true do local val1 = args[i] if val1 == nil then break end val1 = trimTrailing(val1) i = i + 1 local val2 = args[i] if val2 == nil then break end val2 = trimTrailing(val2) table.insert(cells,val1.." || "..val2) i = i + 1 end if #cells == 0 then return "no arg" end -- 大粪 return '<div class="mdtMain">\n<div class="mdtHome">\n<div class="mdtPanel mdtHomeSection">\n<h2 class="mdtFoldHeading" style="margin:0 0 8px 0;">目标列表 <span class="mdtFold"></span></h2>\n{| class="mdtSideTable"\n! 目标 !! 注释\n|-\n| ' .. table.concat(cells, '\n|-\n| ') .. '\n|}\n</div>\n</div>' end function p.renderWaves(frame) local args = frame.args if not args["是否启用波次栏"] or args["是否启用波次栏"] == "" then return "" end local waves = {} for key, value in pairs(args) do local num = key:match("^波次(%d+)$") if num then waves[tonumber(num)] = value end end -- 神人写法,这是必要的牺牲 local result = '<div class="mdtLayout mdtLight mdtWrapRail">\n<div class="mdtMain">\n<div class="mdtHome">\n<div class="mdtPanel mdtHomeSection">\n<h2 class="mdtFoldHeading" style="margin:0 0 8px 0;">波次列表<span class="mdtFold"></span></h2>\n{| class="mdtSideTable"' -- 开始遍历波次内容 local i = 1 local chunks = {} while true do local waveText = waves[i] if waveText == nil then break end local parts = {} for item in string.gmatch(waveText, "[^,,]+") do local name, count = string.match(item, "(.+)[*×](%d+)") -- 去除首尾空格 name = name:gsub("^%s*(.-)%s*$", "%1") count = count:gsub("^%s*(.-)%s*$", "%1") -- 配图标 local icon = picture._lookup(name) table.insert(parts,count.."x"..'[[File:'..icon..'.png|18px|link='..name..']]'..'[['..name..']]') end local partsStr = table.concat(parts," || ") table.insert(chunks,'! rowspan="1" | 波次'..i..'\n|'..partsStr) i = i + 1 end local chunksStr = table.concat(chunks,'\n|-') return result..chunksStr..'|}\n</div>\n</div>' end return p
本页使用的模板:
模块:Utils/doc
(
查看源代码
)
返回
模块:Utils
。
导航
导航
塞普罗
-- 战役区块
-- 物品
-- 流体
-- 建筑
-- 单位
埃里克尔
-- 战役区块
-- 物品
-- 流体
-- 建筑
-- 单位
隐藏
-- 物品
-- 液体
-- 建筑
-- 地块介绍
其他
-- 状态效果
-- 天气
-- 星球
教程中心
编辑者
-- 编辑指导
-- 语法指南
-- 表格语法
最近更改
随机页面
MediaWiki帮助
wiki工具
wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志