cmd文件主要负责角色的按键对应的招式。目前FF没有针对cmd文件进行编写,所以只能用记事本或其他相关软件来编写。这里依然以中文功夫男的cmd文件为例,强烈建议下载观看,其中详细记录了cmd的细节规则和大量实例,本章教程只做简单介绍。
1、全局设定
cmd最开头会有remap和Defaults两部分,一般用默认的就可以。
[Remap]
x = x
y = y
z = z
a = a
b = b
c = c
s = s
这一段可以让玩家简单的重新排列该人物的攻击按键。格式是“以前对应的键 = 修改后的键”,如果不填写修改后的键,则以前对应的键将失效。
[Defaults]
command.time = 15 ;默认接受指令的时间,最小为1。
command.buffer.time = 1 ;默认指令蓄力的时间,最小为1,最大为30。
这一段主要是指令的相关默认参数,包括按键容错时间和按住蓄力的默认时间。
2、招式
全局设定往下就要编写每一个招式了。每一个招式由两部分构成,操作指令和触发条件,而这两部分分别写在不同的地方。我们先来说操作指令。
2.1、操作指令
一个招式的操作指令的语法规范如下:
[Command]
name = "指令名" ;指令的名字,不可重复,因为后面的触发条件会调用这个名字,指令名区分大小写。
command = 按键输入 ;按键输入,输入的按键的列表。每一个键由逗号隔开,方向键和攻击键之前可以用特殊符号来达到一些效果,详细见下面的按键说明。
time = 接受指令输入的时间 (可选) ;接受指令输入的时间,以帧为单位。默认值可以在[Defaults]条目修改,通常为15。
buffer.time = 输入缓存的时间 (可选) ;输入的指令被缓存的时间。当一个指令被输入时,它在这段时间里都是有效的。
以“破裂功夫升龙”这招为例:
[Command]
name = "破裂功夫升龙" ;招式名为破裂功夫升龙
command = ~D, DB, B, D, DB, B, x ;出招指令为↓↙←↓↙←X,也就是下后下后拳
time = 20 ;在上一个按键输入后的20帧内按下的按键为有效按键
2.2、按键说明:
注意: 按键和招式名分大小写。
八个方向分别是:
B, DB, D, DF, F, UF, U, UB (全大写)
对应后,下后,下,下前,前,前上,上,上后。
六个按键是:
a, b, c, x, y, z (全小写)
在默认按键的情况下,xyz在上排,abc在下排。
推荐使用xyz作为拳,abc作为脚。
方向键和攻击键之前可以用特殊符号来达到一些效果,比如:
斜杠 (/) - 表示之后的一个键必须被按住不放
举例, command = /D 按住不放下方向键
command = /DB, a 按住不放下后方向键的时候按a
波浪号 (~) - 表示按键被松开
举例, command = ~a 松开a键
command = ~D, F, a 松开下方向键,按前方向键,再按a
如果你想让某个键蓄力一段时间再放开,可以再波浪号之后加入你想保持蓄力的时间(以帧为单位)
举例, command = ~30a 按住a30帧,再松开
美金 ($) - 仅限上下左右方向键。表示包括正和斜方向
举例, command = $D 包括下,下后和下前
command = $B 包括后,下后和上后
加号 (+) - 仅限攻击键。表示同时按多个键。
举例, command = a+b 同时按a和b
command = x+y+z 同时按x,y和z
大于号 (>) - 表示上一次按键和这一次按键之中不能掺杂其他的按键
举例, command = a, >~a 按下a再松开a,而其中不按下或者松开其他键
这些符号可以组合使用:
举例, command = ~30$D, a+b 按住下,下后或者下前30帧,松开,然后同时按a和b
注意: 连续按方向键的指令会被MUGEN引擎自动理解如下:
举例,cmd文件中的定义:
command = F, F
会被引擎理解成:
command = F, >~F, >F
对于有多个方向键的定义,例如四分之一圈下前,为了让招数能更容易的使出,最好在定义由一个"松开方向键"起始。
3、触发条件
有些招式的发动会有特殊条件,比如基本的蹲重拳、下脚,再比如耗气、限定空中释放,还包括派生技、格挡、GG的爆BURST条也都在这里定义。
所有招式的触发条件都要写在cmd文件最下面的[Statedef -1]下,-1是系统的固定编号,不可更改。无论人物处于哪个state,-1这个state每一帧都会执行。
一个招式的触发条件就是一个state,所以书写格式和前面章节提到过的state类似,我们依然以功夫男的“破裂功夫升龙”这招为例:
[State -1, 破裂功夫升龙]
type = ChangeState ;类型必须是这个
value = 3050 ;跳转至cns中的第3050号statedef,也就是引用这个编号状态的所有参数
triggerall = command = "破裂功夫升龙" ;必须和招式的name一致
triggerall = power >= 1000 ;气大等于于1000时可发动,1000等于1气
triggerall = statetype != A ;不处于空中时可发动
trigger1 = ctrl ;角色当前可控制时可发动,倒地等状态为不可控制
trigger2 = hitdefattr = SC, NA, SA, HA ;当游戏者正在站立或者蹲下时发动打击技能的时候可发动
trigger2 = stateno != [3050,3100) ;角色状态号(statedef)不在3050到3100之间时可发动(包含3050,不包含3100,这个区间对应功夫男的超必杀状态)
trigger2 = movecontact ;命中对方或被对方防住时可发动
trigger3 = stateno = 1310 || stateno = 1330 ;角色状态号(statedef)为1310或1330时可发动。(这两个状态号都是格挡的状态号)
这里对trigger稍微解释一下,trigger1表示在正常状态下可以发动,trigger2表示在发动攻击时可以发动,以便于可以进行连段,trigger3表示在格挡的时候可以发动,以便于凹招反击