作者:不该有名字(四娘)
原帖://tieba.baidu.com/p/1133965971
正文:
凶恶人物解析第二弹:运行顺序
什么是运行顺序?
运行顺序就是指,比如你吃饭,你得先拿起食物,然后将食物放入嘴中,最后才吞下,取决于你吃的是什么你的感觉也会不同
在MUGEN中也同样有这样的情况
让我们看看
首先来说,MUGEN中内置了3个公用状态号和这3个状态号之外的所有正数状态号,以及0
写法为
[statedef -3]
[statedef -2]
[statedef -1]
[statedef 0]
[statedef 1]
.
.
.
同时它们的运行顺序为
-3
-2
-1
然后是其他(由你当前的状态号决定)
在这些状态号中你可以写入各种不同的代码
这些代码的运行,是按照从上至下依次执行的顺序
但这样一个状态号中的代码,并非在任何情况下都会被完整的执行
如果代码中包含有changestate或者selfstate
那么你的状态号会转变为changestate或者selfstate所写上的状态号
而剩下的代码会被忽略掉(即便是-3-2-1中的代码也一样)
当你进入下个状态号时,会再度从该状态号的最初地方开始运行代码
如果没有changestate和selfstate(或者有但条件不满足)
那么在该状态号内的代码全部都运行一次之后,当前帧你所能做的事情就结束了
需要注意的是
-3下的代码只会在自己存在在自己的状态号的情况下才会运行
-2则是在任何状态下都会执行
-1了解过少,无法说明
同时-3-2-1每一帧只会运行一次,changestate和selfstate也不会进入-3-2-1中
当然,自己的-3-2-1只会对自己有效,对敌人毫无效果(除非是会影响到对手的那些代码
举例
-3下写上lifeset并且赋值为0
-2下写上lifeset并且赋值为1000
-1下写上lifeset并且赋值为0
同时你的状态号为100
并且状态号100下写有lifeset并且赋值为100
当前帧运行结束后,你的生命会为100,并且你不会死
如果你在100下有一个满足条件的changestate或者selfstate并且转入状态号200,同时200下还有一个赋值为200的lifeset
你的生命会为200,当然你依然不会死
但如果你再转入一个lifeset赋值为0的状态号并且不转入其他状态号的话
——你已经死了
当前帧和下一帧
任何代码都会在当前帧运行,但一部分代码的效果只有在下一帧才会出现
比如所有会对对手造成影响的代码
这些代码对你的影响优先于你的任何状态号,包含公用状态号
也许这可以被称为"-4"状态号也说不定(笑
这也是为什么targetlifeadd无法杀死一个在-2下有常时lifeset的人物的原因
但如果那个人物被p2stateno或者targetstate影响而进入一个有lifeset赋值为0的状态号时,它的life就会变为0而死亡
(KO判定只会出现在非公用状态号内 描述得有些不够清晰 但总之你只需要记住,只要你在对手的状态号内,你就任由对手摆布,不管你在-3-2-1下写上什么代码也一样——除却一些特定代码外)
总结
def -3 ←拿起食物
def -2 ←将食物放入嘴中(或者将嘴放到食物上?
def -1 ←吞下食物
def 0~任何正数 ←食物到胃里,只有在这个时候你才算是真正吃下东西了 (同时也只有在运行这里的代码时人物才会死亡
做凶恶人物不掌握基础也只能做个劣质出来
========================
一些问题和回复:
油炸香蕉:
这么看targetlife和damage应该在同一阶段清算来着,但以前试验出来的诡异结果还是很难解释。此外还有fall.damage清算的时机,以及140循环之类的自动跳转的时机…
不该有名字:
fall.damage是在非公用状态号时
140循环也一样
damage没怎么研究
ydccdy2010:
一般地:
-3
-2
-1
5900
0
40 20 140....
油炸香蕉:
进入roundstate2的第一帧似乎会自动跳转到0,每个roundstate都有自动跳转的样子……但是跳转的时机是在每次行动的开头还是结尾就不清楚了……应该是结尾吧,所以r3除了几个特殊状态以外的状态锁定会无效,应该就是在行动完以后自动跳转到不正确的状态了(这样其实也说不通,因为就算跳到不正确的状态也是在自己的状态里,p2stateno还是应该无效才对。莫非指向120什么的状态以外的目的的selfstate和changestate也被无效了?)
不该有名字:
不写def 0的话,就会使用系统默认def 0