目前M.U.G.E.N的官方最新版本是1.1beta

运行顺序

作者:不该有名字(四娘)


原帖://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



你,确定要这么做吗?
正在处理中...