打开/关闭搜索
搜索
打开/关闭菜单
30
130
5
1.5K
骷髅女孩Wiki
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
上传文件
可选角色
菲莉亚
赛瑞贝拉
孔雀
帕娜索
幸运猫女
痛苦转轮
瓦伦汀
双形
丝瑰丽
大乐队
伊莱莎
芙库亚
贝奥武夫
机械猫女
安妮
小伞
黑色大丽花
玛丽
系统
入门问答
操纵方法
游戏界面
数据图例
启动选项
更新日志
机制
移动
进攻
防守
连段
组队
进阶
杂项
词典
术语
训练室
通知
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
创建账号
登录
查看“模块:MMC”的源代码
来自骷髅女孩Wiki
查看
阅读
查看源代码
查看历史
associated-pages
模块
讨论
更多操作
←
模块:MMC
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local p = {} local mArguments local cargo local cache = {} -- splitStringIntoTable函数以@param2为分隔符,将@param1拆分成字符串并放入表中,如果@param3为true,还要修剪每个部分前后的空白 local splitString = require( 'Module:SplitStringToTable' ).splitStringIntoTable -- 使用cargo查询招式数据并缓存 local function getMovesData( chara, input ) -- 如果cache字符串长度大于0(即有数据)则直接返回缓存 if #cache > 0 then return cache end cargo = require( 'Module:Cargo' ) local tables = 'MoveData' local fields = 'fighter,name,input,subtitle,caption,notation,dmg,meter,guard,properties,startup,active,recovery,hitstop,hitstun,blockstun,onhit,onblock,pic,hitbox' local args = { where = string.format('MoveData.fighter="%s" and MoveData.input="%s"', chara, input), orderBy = '_rowID', limit = "101", } local results = cargo.getQueryResults( tables, fields, args, false ) -- 结果存储于items中,键为input local items = {} for _, result in pairs( results ) do items[result.input] = result end -- 返回包含结果的缓存表 cache = items return cache end -- 从缓存数据中获取匹配的招式,检查是否存在匹配招式,若不存在,报错 -- 若存在,将匹配的招式存储在moves表中并返回 local function getMove( chara, input ) local data = getMovesData( chara, input ) local moves = {} local match = data[ input ] if not match then error( string.format( 'Could not find matching move ( %s: %s)', chara, input ) ) end moves[ input ] = data[ input ] return moves end -- 生成包含招式信息的HTML代码 local function getHTML( move, label, hitboxMode, imageNumber ) -- 创建一个tooltip类的span标签,若写入了@param2标签文本则显示,否则显示传入的move表中的input值 local html = mw.html.create('span'):addClass('tooltip') if label then html:wikitext(label) else html:wikitext( move['input'] ) end -- 如果@param3为true则显示move表中的hitbox,否则显示pic,如果未查询到图片,报错 local imgString if hitboxMode then imgString = move['hitbox'] else imgString = move['pic'] end if not imgString then error( string.format( 'Image not found' ) ) end -- 若未提供imageNumber,默认为1 if not imageNumber then imageNumber = 1 end -- 分隔符是什么呢?暂定为;吧 local imagesTable imagesTable = splitString( imgString, ';' ) -- 创建tooltiptext类的span标签并添加图片和各类招式信息(可更改) local ttText = mw.html.create('span'):addClass('tooltiptext') :tag('span'):addClass('mw-parser-output') :tag('span'):addClass('tmp') :tag('span'):addClass('tmp-image') :wikitext( string.format('[[File:%s|130x200px]]', imagesTable[tonumber(imageNumber)] ) ) :done() :tag('span'):addClass('tmp-items') :tag('span'):addClass('tmp-item') --[[:tag('span'):addClass('tmp-item-label') :wikitext('防御') :done()]] :tag('span'):addClass('tmp-item-data') :wikitext( move['notation'] ) :done() :done() :tag('span'):addClass('tmp-item') --[[:tag('span'):addClass('tmp-item-label') :wikitext('启动帧') :done()]] :tag('span'):addClass('tmp-item-data') :wikitext( move['name'] ) :done() :done() :tag('span'):addClass('tmp-itemm, tmp-item-colspan') --[[:tag('span'):addClass('tmp-item-label') :wikitext('收招帧') :done()]] :tag('span'):addClass('tmp-item-data') :wikitext( move['caption'] ) :done() :done() --[[:tag('span'):addClass('tmp-item') :tag('span'):addClass('tmp-item-label') :wikitext('加减帧') :done() :tag('span'):addClass('tmp-item-data') :wikitext( move['onblock'] ) :done() :done()]] :done() :done() :done() :done() html:node(ttText) html:done() return html end -- 从字符串@param1中删除指定的字符串@param2 function removeSubstring(largerString, substring) local result = largerString:gsub(substring, '') return result end -- 处理模板调用的入口函数,引入Arguments模块获取参数,调用p._main函数处理参数并返回生成的Wiki文本 function p.main(frame) mArguments = require( 'Module:Arguments' ) local args = mArguments.getArgs(frame) return p._main(args) end -- 提取参数表中的各类参数 function p._main( args ) local chara = args['chara'] local input = args['input'] local label = args['label'] local hitboxMode = args['hitboxMode'] local imageNumber = args['imageNumber'] -- 如果input未指定,报错 if not input then error( 'No inputs specified for the template' ) end -- 调用getMove获取匹配的招式数据 local moves = getMove( chara, input ) -- 调用getHTML生成HTML代码并返回 local html = getHTML( moves[input], label, hitboxMode, imageNumber ) -- 添加样式表引用 return tostring(html) .. mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = 'Template:TooltipMovePreview/styles.css' } } end return p
该页面使用的模板:
模块:MMC/doc
(
查看源代码
)
返回
模块:MMC
。