------------------------------------------------------------
HitDef
[State ???]
type = HitDef
attr = arg1, arg2
------------------------------------------------------------
(注释:INT表示这个参数是整数,FLOAT表示这个参数是小数,string表示这个参数是字符串)
定义一个人物的攻击. 如果人物的攻击判定框和对手的存在判定框重叠,并且在这个时候有HITDEF STATE被定义, 指定事件就会发生. 这是个相对复杂,但是很常用的STATE.
一个 HitDef 只对一个攻击有效. 想在一个动作里连续有多次攻击, 必须用多个 trigger 引发多次HITDEF STATE.
必要参数:
attr = hit_attribute (string)
这是攻击的属性. 用于检测这个攻击是否直接打到对手,它的格式:
attr = arg1, arg2
其中:
- arg1 是 "S", "C" 或者 "A". 类似StateDef里的"statetype" ,
说明这个状态是站着,蹲着或者是直接攻击.
- arg2 是2个字母.
第一个字母是 "N" (普通), "S"(特殊), 或者"H" (无敌),
第2个字母是"A"(直接攻击), "P"(发射道具), 或者"T"(抓投).
hitflag = hit_flags (string)
这个参数用于控制对手被攻击以后的动作(受创后仰姿势)和能否被追打.
hit_flags 是可以包含下列字母的字符串:
"H" -- 上段, "L" -- 下段 "A" --空中. "M" -- 中段,相当与“HL”
"F" -- 坠落追打, 如果有这个字母将可以追打到被攻击后飞到天上的对手.
"D"--地面追, 如果有这个字母将可以追打到被攻击后倒地的对手.
还有2个可以选用的字符是 "+" 和 "-".
如果有"+"那么攻击只在对手处于gethit state时有效
这常用于第一下没有击中后面的都不会影响对手的连续动作.
如果有"-"那么攻击只在对手不在gethit state时候有效
这常用于抓投和其他动作(下面这句不明白什么意思)
和其他你在攻击状态时不希望对手被其他攻击打到的时候用。
例如自己在抓投对手的准备姿势中防止被对手打到而破坏了抓投.
"+" 和 "-" 不能同时用
如果省略这个参数,默认为"MAF".
guardflag = hit_flags (string)
这个参数用于检测对手的姿势能否防御住这个攻击.
hit_flags可以是下列字符的组合:
"H" 上段, "L" 下段 或者 "A" 空中. "M" 中段,相当于"HL".
affectteam = team_type (string)
team_type 说明哪个队的人物可以被击中:
B 两队(全部人物)
E 敌方
F 友方(你的队友).
默认为 E.
animtype = anim_type (字符串)
anim_type 说明对手被攻击以后的受创animation,对应5000以后的ANIM。
可以从"light", "medium", "hard", "back", "up"或者"diagup"中选择
前3个从字面意思就可以明白,是受轻、中、重攻击.
"Back" 是对手被绊倒.
"Up" 是对手打的被垂直飞起,
"DiagUp" 是对手被打到向斜后起,最后头着地.
默认为 "Light" .
air.animtype = anim_type (string)
类似上一个animtype,不过是在对手跳在空中的时候起作用.
默认也是"Light" .
fall.animtype = anim_type (string)
同上,在对手在被击后飞在空的时候起作用。如果省略则同air.animtype,
比如air.animtype是"up"这个也会是UP,air.animtype省略则这个就是"light"
priority = hit_prior (整数), hit_type (字符串)
hit_prior说明攻击的优先次序.同时出手的优先高的攻击会比优先低的攻击先打到对手.
有效的hit_prior值为1-7.默认是4.
hit_type, 说明双方在同样的hit_prior优先级同时击中对手的时候如何反应,可以是:
Dodge,Hit,Miss
效果如下:
Hit vs. Hit: 双方都被打
Hit vs. Miss: 是Hit的被打,是Miss的没打中
Hit vs. Dodge: 都不被打
Dodge vs. Dodge: 都不被打
Dodge vs. Miss: 都不被打
Miss vs. Miss: 都不被打
(注意miss和dodge的不同)
注意即使都不被打, 各自的HitDefs仍然是有效的.
damage = hit_damage, guard_damage (int)
hit_damage 是对手被打受到的伤害值即掉多少血.
guard_damage 是对手防住这个攻击的话受到的伤害值.
2个省略的话默认都是0
pausetime = p1_pausetime, p2_shaketime (int)
这个参数是描述双方在这次攻击打到时的停顿时间.
p1_pausetime 是自己的人物攻击打中时的停顿时间,单位是game-ticks.
p2_pausetime 是对手被被打中后,向后滑移前的震动时间
省略的话默认是0,0
guard.pausetime = p1_pausetime, p2_shaketime (int)
类似"pausetime" 参数,不过是这个攻击被对手防御时候起作用。
如果省略的话同"pausetime"中已经设定的值
sparkno = action_no (int)
这个参数说明攻击成功的话显示的火花anim号.
如果想从人物自己的AIR文件中播放指定的火花anim就在action_no前+上字母S
省略的话取在人物变量中设置的默认值(人物CNS文件前面部分).
guard.sparkno = action_no (int)
同sparkno,指定攻击被防御时候出现的火花.
要从人物自己的AIR中取ANIM同样是在前面加上字母S
省略的话取在人物变量中设置的默认值.
sparkxy = spark_x, spark_y (int)
这个参数矫正播放火花的位置到打击点的距离.
spark_x 和对手的位置有关,负数会更深入对手,正数远离对手。
spark_y is 和自己位置有关,负数偏上,正数偏下。
可以用象AirView 这样的工具定位Y坐标
默认为 0,0
hitsound = snd_grp, snd_item (int)
这个参数指定打中的音效(从common.snd中选择).
要从人物自己的SND文件中播放声音,在数字前面加"S".例如:
"hitsound = S1,0".
默认值在人物变量中设置.
guardsound = snd_grp, snd_item (int)
这个参数指定攻击被防御的音效(从common.snd中选择).
要从人物自己的SND文件中播放声音,在数字前面加"S".
默认值在人物变量中设置.
ground.type = attack_type (string)
这个参数是对手在地上站立时攻击的类型
"High" 使对手头后仰
"Low" 是类似打对手腹部
"Trip" 是扫腿
"None" 对对手没有影响
如果设置animtype 是“back"那么"High" 和 "Low" 对对手没有影响.
如果对手被背后攻击, "High" 和 "Low" 就会互换.
即在背后上段攻击对手不会仰头而是低头
默认是"High"
air.type = attack_type (string)
同上一个ground.type,不过在对手在空中的时候起效
省略的话默认和ground.type取相同值
ground.slidetime = slide_time (int)
这个参数是对手被击中向后滑动的时间,单位game-ticks
(不包括对手的pausetime).
只在对手在地面上时候有效.
默认为0.
guard.slidetime = slide_time (int)
同上,在攻击被防御时起效
默认和”guard.hittime"的值相同
ground.hittime = hit_time (int)
对手被击中后处在这个HIT STATE的时间.增加这个数字可能更容易连击.
只在对手保持在地上的时候有效.
默认为0.
guard.hittime = hit_time (int)
同"ground.hittime", 不过是对手防御住的时候.
默认同"ground.hittime"设置的值相同。
air.hittime = hit_time (int)
对手被击中后飞到空中时处在这个HIT STATE的时间,此时间内不能防御。
参数"fall"设为1时候这个参数无效.
默认为20。
guard.dist = x_dist (int)
攻击的“有效警戒距离”(偶自己起的名字),
即双方在这个距离之内攻击发生的话,对手按后会摆防御
默认值在人物变量里设置,一般不需要改变这个值.
yaccel = accel (float)
攻击给对手造成的竖直方向的加速度。
默认为0.35,且该值会随着人物本身的localcoord改变,人物缩放变小,默认yaccel就会按和缩小相同的比例变大
ground.velocity = x_velocity, y_velocity (float)
对手在地面击中时攻击给对手造成的初速度. 如果y_velocity >0对手会被击飞到空中.
默认值x_velocity, y_velocity都为0.
guard.velocity = x_velocity (float)
类似“ground.velocity”,防御住攻击时有效。对手后滑的速度。
默认和ground.velocity的x_velocity值相同。
air.velocity = x_velocity, y_velocity (float)
对手在空中被击中时候造成的初速度.
默认值是0,0.
airguard.velocity = x_velocity, y_velocity (float)
空中防御住攻击造成对手的移动初速度.
默认值是air.velocity = x_velocity, y_velocity中对应值的1/2.
ground.cornerpush.veloff = x_velocity (float)
这个参数是对手在版边时击中对手自己向后滑动的速度。
如果省略,默认的取值跟attr参数有关:
如果arg1是 "A",默认值是0. 否则就是,“guard.velocity”的1.3倍
air.cornerpush.veloff = x_velocity (float)
同上,是对手在空中的时候击中的话自己向后滑动的速度.
默认取“ground.cornerpush.veloff”的值
down.cornerpush.veloff = x_velocity (float)
对手在下蹲状态在版边被击中时攻击者向后滑动的速度。
默认取“ground.cornerpush.veloff”的值
guard.cornerpush.veloff = x_velocity (float)
对手在版边时防御住攻击,攻击者向后滑动的速度。
默认取“ground.cornerpush.veloff”的值.
airguard.cornerpush.veloff = x_velocity (float)
对手在版边,空中防御住攻击的情况下,攻击者向后滑动的速度。
默认取“ground.cornerpush.veloff”的值
guard.ctrltime = ctrl_time(int)
对手在地上防御住攻击后恢复控制的时间.
默认和"guard.slidetime"值相同 即滑动完毕后才可以恢复控制.
airguard.ctrltime = ctrl_time (int)
对手在空中上防御住攻击后恢复控制的时间.
默认和guard.ctrltime相同。
air.juggle = juggle_points (int)
追加连击需要的juggle点数. 不要和juggle参数混淆。
(关于juggle点数详见翻译过的那部分基本教程)
一般不需要用这个参数, 除了发射道具的hitdef state.
默认为0。
mindist = x_pos, y_pos (int)
maxdist = x_pos, y_pos (int)
这2个参数用于控制攻击以后双方移动的最远距离. 这2个参数不常用。
默认不改变对手的位置.
snap = x_pos, y_pos (int)
这个参数用于击中的时候让对手立即移动到相对攻击者的指定位置. 这个参数通常不用. 如果想定义一个抓投让对手立刻移动到指定位置, 推荐在攻击者的抓投state里使用 "TargetBind"controller.
默认不改变对手的位置。
p1sprpriority = drawing_priority (int)
p2sprpriority = drawing_priority (int)
这2个参数决定这个攻击击中或者被防御后攻击者和对手谁在靠前的图层,
默认p1sprpriority = 1 p2sprpriority = 0
即攻击者在对手前一层的图层(攻击者的身体会压在对手前面显示)。
p1facing = facing (int)
设置为-1 则攻击者在击中对手时转身.
通常用在抓投中。
默认不改变攻击者的面对方向.
p1getp2facing = facing (int)
设为1 则攻击者在攻击发生时面向对手面向着的方向,
-1 则面向相反方向
默认为0(不改变方向). 如果不是0,则这个参数比p1facing优先起作用.
p2facing = facing (int)
设为1则对手在被击中的时候面向攻击者面对着的方向,
-1反之.
默认为0(不改变).
p1stateno = state_no (int)
用于设置攻击者在攻击成功时转向的STATE号
主要用于抓投.
p2stateno = state_no (int)
用于设置对手在被击中时转向攻击者的人物CNS中的STATE号。
对手将被攻击者指定STATE和ANIM中的内容控制。
主要用于抓投.
p2getp1state = value (int)
设为0则会阻止对手进入攻击者的state和animation内容。
在p2stateno存在时默认是1,不存在则该参数无效。
forcestand = value (int)
设为 1 则当对手处在下蹲状态被击中就会强制他进入站立状态.
一般默认为0,但是如果 "ground.velocity" 参数中y_velocity不为0则默认是1.
fall = value (int)
设为 1 则对手被击中后会进入"fall"状态 (对手被击飞到空中到着地都不受控制)
在想攻击效果令对手被重击飞起时使用.
air.fall = value (int)
设置为1 则攻击击中空中的对手时会使他进入FALL状态
默认同上一个参数fall的值.
fall.xvelocity = x_velocity (float)
这个参数是对手在被打后处在FALL状态时,落地后再弹起时候的水平速度。
默认保持原速度不变.
fall.yvelocity = y_velocity (float)
同上,不过这个是垂直方向的速度。
默认为 -4.5
fall.recover = value (int)
设置为0则对手处在FALL状态时无法恢复.
默认为1(可以恢复).
fall.recovertime = recover_time (int)
这个参数设置对手从进入FALL状态到恢复控制所需要的时间. 其中不包含被攻击时震动的时间.
默认为 4 .
fall.damage = damage_amt (int)
这个参数设置对手在FALL状态坠地时造成的伤害数值。
默认为0 .
down.velocity = x_velocity, y_velocity (float)
这个参数是设定对手倒在地上时被攻击到造成的运动速度。
如果y_velocity 不是0,则对手会被打飞起来. 如果为0则对手会在地面滑动.
默认和 "air.velocity"参数取相同值
down.hittime = hit_time (int)
这个参数设定对手倒在地面时被攻击后沿地后滑动的时间.
如果down.velocity 参数中的y_velocity 是非0值这个参数会被忽略.
down.bounce = value (int)
设置为1 则对手在FALL状态坠地后会弹起一次
(弹起的初速度在 fall.xvelocity 和fall.yvelocity参数中设置)
如果down.velocity 参数中的y_velocity 是非0值这个参数会被忽略.
默认是0 (对手倒地后就停在那里).
id = id_number (int)
主要用于连续成套的攻击动作. 以后可以使用这个NUM检测人物是否被特定ID的hitdef攻击。
这个数字即targetID. 用在诸如 TargetBind controllers,
或者 target(ID) 重定向关键字中使用.
有效值可以是>=1的整数.
默认为0 (无ID). 不要把targetID和PlayerID混淆.
chainID = id_number (int)
主要用于连续成套的攻击动作.
只有对手最近一个是被特定chainID击到,这个参数所在的攻击才会有效。
可以在第一个攻击动作里设定targetID 然后后面的攻击动作里使用这个参数。
注意即使没有ID 和chainID连击也可以连上。
默认为 -1 (可以从任何攻击后连击).
nochainID = nochain_1, nochain_2 (int)
nochainID 设定2 个不能从之连击的chainID。
如果是 -1 (默认值),那么不明确指定从哪个ID的HIT连击会无效。
nochain_2 可以省略. 除了-1, 值不必和chainID对应.
如果对手被当前攻击和前一个攻击之间的另一部分击中这个参数没有影响。
hitonce = hitonce_flag (boolean)
如果设为1,则攻击只对一个目标起作用(多人战)。如果击中一个,其他目标就不会被攻击到.
一般默认为0,只有在"attr"参数里设定此HITDEF是throw type(发射道具), 默认是1。
kill = kill_flag (int)
设为0则攻击命中的话即使对手血再少也不会被这个攻击KO掉(没血的时候被攻击不死).
默认为1.
guard.kill = gkill_flag (int)
设为0则攻击被防御的话即使对手血再少也不会被这个攻击KO掉(没血的时候被攻击不死).
默认为1.
fall.kill = fkill_flag (int)
设为0则在FALL状态的对手血再少也不会被这次攻击KO掉(没血的时候被攻击不死).
默认为1.
numhits = hit_count (int)
hit_count 设定这次攻击会在显示出的连击数字上增加几.
默认为1.
getpower = p1power, p1gpower (int)
p1power 设定攻击命中的话攻击者会增加多少POWER值.
p1gpower 设定攻击被防御到的话攻击者会增加多少POWER值.
如果p1power省略,
默认为hit_damage (在 "damage" 参数中) 乘上data/mugen.cfg里设置的Dfault.Attack.LifeToPowerMul.
如果p1gpower 省略,默认为p1power的1/2.
givepower = p2power, p2gpower (int)
p2power 设定攻击命中的话对手会增加多少POWER值.
p2gpower 设定攻击被防御到的话对手会增加多少POWER值.
如果p2power省略,
默认为hit_damage (在 "damage" 参数中) 乘上data/mugen.cfg里设置的Default.GetHit.LifeToPowerMul.
如果p2gpower 省略,默认为p1power的1/2.
palfx.time = palfx_time (int)
palfx.mul = r1, g1, b1 (int)
palfx.add = r2, g2, b2 (int)
这些参数可以在攻击命中时候,通过颜色表影响对手的外表.
palfx_time 是对手颜色表被改变的时,单位game-ticks,默认是0 (无影响).
另外2个参数同在PalFX controller中的用法.
(那些被火烧以后的效果可能和这个有关吧)
envshake.time = envshake_time (int)
envshake.freq = envshake_freq (float)
envshake.ampl = envshake_ampl (int)
envshake.phase = envshake_phase (float)
用这些参数可以在攻击命中的时候造成整个屏幕震动的效果。
envshake_time 是震动时间,单位game-ticks.
另外2个参数同在EnvShake controller中的用法.
fall.envshake.time = envshake_time (int)
fall.envshake.freq = envshake_freq (float)
fall.envshake.ampl = envshake_ampl (int)
fall.envshake.phase = envshake_phase (float)
类似那些envshake.* 参数, 不过是在对手坠地时候造成屏幕震动.
attack.width = z1, z2 (int)