|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
22263
mugen人物制作第五讲,cmd文件指令编辑
海影神
2013-6-29 17:13
1
这两天又做人物又写教程的真是满累,今天本来做着人物,正一张一张截图,改图呢,抽空上论坛看看发现有人想赶紧接着学,既然大家这么有热情那我就先写教程好了。(这次的教程是octopus2的,我做了些改动,我觉得他写得很全面,我也在一起跟大家学习)
今天我们讲CMD,CMD文件设置出招的按键定义,CMD为COMMAND的缩写,意思为命令
建议大家一边对照已经做好的人物代码一边看本文,其实入门的编辑很容易,大家不要觉得难就灰心丧气,坚持就是胜利
由于CMD是跟CNS密切相关的,他说明了在CNS中定义的招数应该按什么键来用。
我们先看下FF的编辑界面:
这是一个傻瓜式编辑出招按键地方,大家一看就应该明白,不明白的话我们看后面的代码
这就相对复杂了,不过没关系,看完后面的各个代码就知道都是做什么的了
关于按键设置:a,b,c,X,Y,Z六个控制键,F,B,D,U四个方向控制键,F---前(FORWARD) B---后(BACK) D---下(DOWN)
U---上 (UP) ,用法为:例如要发 "下,前,a"三个键的组和,则键入 D,DF,F,a DF为方向的过渡.
其它用法6 M: L8 p3 s3 H0 N
1.保持状态 (/) 例如:/D 意思为必须保持 "下" 这个按键不放.
当然也可以用在一组命令里,意为在按下控制键之前方向键保持按下状态,当然/后可以用控制键,不光是方向键
注意:标记"~"用于设置按键状态为放开 例如: ~a表示这个键不用保持按下状态,可以按下后即放开.
在~前加一个数字,用于表达按下时间的长短.例如:
2.动作方向 ($) 例如: $D 意为DB,DF 也在.
3.按键同时 (+) 例如:a+b+c 意为这三个键同时按下
这些命令是可以组合的,例如: ~30$D,a+b
附加项介绍 注意:这些项目可以随意选加.)
1.时间 (time = 时间长度) 意为允许多长时间做这个命令,为常数值.(默认数值:15)
注意,冲突命令是不可以同时使用的,例如:
再后面的命令段里,有许多注意,大家可以参考命令旁边注释,与上文来一点一滴的揣摩CMD命令的含义,有些地方已经给;出,很容易看明白的
让我们先来读一段CMD
[Command] ;命令定义为COMMAND,按键
name = "kenzien" ;定义名称,以后会用到,这个名称用于识别命令,经常使用好记的名字例如:STRONG KICK,为重脚
command = ~D, DB, B, b ;按键设置
这一部分显然为快退,或快进,或跑动部分.
[Command]
name = "FF" ;必要部分
command = F, F
time = 10
[Command]
name = BB
command = B, B
time = 10
[Command]
name = "recovery" ;注意"RECOVERY" 意为恢复
command = a+b ;用到了双键同时按下
time = 1
[Command]
name = ab
command = a+b
time = 1
;大家也许都知道了,这一部分的意思显然是后退,前进,蹲下时发招的样式
[Command]
name = "fwd_a"
command = /F,a
time = 1
[Command]
name = "fwd_b"
command = /F,b
time = 1
[Command]
name = "fwd_c"
command = /F,c
time = 1
[Command]
name = "fwd_x"
command = /F,x
time = 1
[Command]
name = "fwd_y"
command = /F,y
time = 1
[Command]
name = "fwd_z"
command = /F,z
time = 1
[Command]
name = "back_a"
command = /B,a
time = 1
[Command]
name = "back_b"
command = /B,b
time = 1
[Command]
name = "back_c"
command = /B,c
time = 1
[Command]
name = "down_a"
command = /$D,a
time = 1
[Command]
name = "down_b"
command = /$D,b
time = 1
[Command]
name = "down_c"
command = /$D,c
time = 1
[Command]
name = "fwd_ab"
command = /F, a+b
time = 1
[Command]
name = "back_ab"
command = /B, a+b
time = 1
[Command]
name = "a"
command = a
time = 1 ;注意:单个键的TIME数值就要设置小一点了,着点必须考虑到,做人物时必须要用心考虑每一步.关于这些方面;;还要多参考功夫人
的CMD,CNS来体会
[Command]
name = "holdfwd" ;必须部分 注释:这一部分是保持一个见的状态,看看TIME只有一,只是后跳躲开一下,大家想到了么?
command = /$F
time = 1
英文单词归纳
HOLD:保持
DEFINITION:定义
CONDITION:条件
INFORMATION:信息
COMMAND:命令
SPECIAL:特殊的
TRIGGERS
(状态设置)
注意:这一部分也很重要,它是规定按键将对应什么状态.(判定);
注意:DEF为缩写,意为信息 OR 设置.
关于状态设置的格式
一般的,格式为
[STATE -1,设置标记] 设置标记可以随便设置,以后用于识别这里所定义的状态.
TYPE意思为类型.一般的,都设置为CHANGESTATE,在CMD中请不要改动,即:type = ChangeState.
VALUE意思为值.后面要设置为需要的数值,与CNS中的动作对应,如果在CNS中设置了一个动作,赋值1000,这里用
VALUE=1000可以表示.
TRIGGER意为触发器.第一个触发器名为TRIGGER1,然后为~2,3.
TRIGGER逻辑简介
TRIGGER的逻辑是这样的,例如TRIGGER1的所有条件为真,则激活它定义的按键控制,否则测试TRIGGER2是否为真,直到没;有TRIGGER(好象类似OR逻辑)
编号被跳过
如果有TRIGGER1,2,4,但没有TRIGGER3,则TRIGGER4将被忽略.
一个以上的条件
如果你有一个以上的条件要被激活,可以这样.
假如一个玩家的手(当然是他所选择的人物)超出了屏幕可看见范围,则可
TRIGGER1 = 屏幕上 > 0
TRIGGER1 = 屏幕下 > 0
这样即可判断两个都大于零
一个TRIGGER可以有两个以上的条件
两个TRIGGER的同时使用
TRIGGER1 = VEL Y > 0
TRIGGER1 = POS Y > 0
TRIGGER2 = TIME = 5 (这里的TIME 为状态时间)
这个逻辑将激活TRIGGER1,或状态时间是五.
可以说
相同编号的TRIGGER将激活一个对应按键,或其它控制,但前提是所有相同编号的TRIGGER设置的条件为真.
不同编号的TRIGGER将激动所有定义按键,或其它控制,但前提是它们中的一个或更多的TRIGGER的条件为真.
所以TRIGGER的基本格式为:
TRIGGER编号 = TRIGGER类型 测试TRIGGER
关于TRIGGER的类型有许多,这些将在CNS里面提到,还有TRIGGER的其它用法也将在CNS中提到,还有好多.....请参考;CNS部分
STATE TYPE
可以为S\C\A:目前人物的状态 S:站 C:蹲 A:空中
CTRL
0或1:0为人物不可控制,1则相反.
STATENO
玩家状态数值
MOVECONTACT
0或1:1为玩家上次攻击打到了对方,0则相反
COMMAND
COMMAND为CMD文件中定义好的动作的名称
例如:TRIGGER1 = COMMAND = SPECIAL KICK意为判断命令是否为CMD中定义NAME = "SPECIAL KICK"
POWER
即为玩家现在的能量值
例如:TRIGGER1 = POWER <= 1000意为判断玩家目前能量是否小于1000
TRIGGERALL
顾名思义,这个命令很有用,他的作用是用来判断条件是否符合所有TRIGGER.
好了,说了这些,也该实际看一看真正的STATE部分了,说的不少,其实原理很简单,看了我上面的说明,应该可以明;;白下面的代码都是什么意思.
编码分析
[State -1]
type = ChangeState ;意思为改变状态,在CNS部分中会提到
value = 1030 ;
triggerall = command = special kick ;调用SPECIAL KICK按键设置,用来判断
trigger1 = statetype != A ;请看CNS部分解释
trigger1 = ctrl = 1 ;可控
trigger2 = command = special kick
trigger2 = stateno = 610
trigger3 = command = special kick
trigger3 = stateno = 610
trigger3 = statetime <= 2 ;状态时间
trigger4 = command = special kick
trigger4 = stateno = 210
trigger4 = movecontact = 10
trigger5 = command = special kick
trigger5 = stateno = 610
trigger6 = command = special kick
trigger6 = stateno = 610
trigger6 = movecontact = 1
[State -1]
type = null; ChangeState
value = 900
triggerall = statetype = S
triggerall = ctrl = 1
triggerall = p2bodydist X < 5 ;接近 P2
trigger1 = command = fwd_b ; P2 站着
trigger1 = stateno != 100 ;未跑动
trigger1 = p2statetype = S ; P2STATETYPE在CNS中有介绍,这里的意思是判断P2的STATETYPE 是否为S---STAND(站立)*
trigger1 = p2movetype != H ;同理,判断 P2MOVETYPE,是否为H----HIGH(高)
trigger2 = command = fwd_b ; P2 蹲着
trigger2 = stateno != 100 ;未跑动
trigger2 = p2statetype = C ;同理
trigger2 = p2movetype != H
trigger3 = command = back_b ; p2 站着
trigger3 = p2statetype = S
trigger3 = p2movetype != H
trigger4 = command = back_b ; p2 蹲着
trigger4 = p2statetype = C
trigger4 = p2movetype != H |
|