状态号执行顺序的细节,探讨为什么你锁了血还是会死,你的脱离却总能救你狗命

前言:

依旧感谢某个工具人叫黑桃德尔塔的,他补充了思路细节


正文:

执行顺序在这游戏里面是非常重要的一个细节,如果不学会它,那么你做的人物很多时候出了一堆问题你却以为是出了BUG

但这里不探讨什么selfstate等等控制器的摆放顺序,这里讲状态号,即statedef -3 -2 -1和0(任何非常时状态号此处统称为0)

状态号也是有执行顺序的,依次按照-3→-2→-1→0执行,中间你被殴打或被抓投,从5000路过到急死的3199,也不例外地要全部先路过一遍-3→-2→-1

然后呢,如果你在常时状态下写了一个能被执行的控制器(此处包含被抓投时也能执行的-2状态号),例如脱离,那么它会在检测你的一切数据以后执行,包括最基础的movetype = H时selfstate。注意,此时你的最终结果仍然没有产生!结果是出现在当前帧再也没有可执行的控制器之后!

继续说,一旦这个控制器检测到你的数据并执行了,就像上面的条件,你当前的movetype = H,那么这个selfstate脱离会执行,执行完毕以后,你的状态号会因为这个selfstate被改变,从而使你的movetype不再为H。所以你的脱离总能救你狗命。

lifeset锁血?lifeset跟selfstate实际上是同时执行的。也就是说,你被殴打了,你的血量就快要被扣掉了,但!你的life此时还没有被扣除,gethitvar(damage)还只是一串数字,它却依旧执行了。然后你的血量在突然的0号状态号下,因为movetype = H,从而导致你的life减去了gethitvar(damage),然后你死了。

可是你说你有锁血啊?是啊你锁了啊,上一帧你没锁啊?上一帧你死了啊?都死了你还想怎么锁血?

为什么会这样?因为执行顺序啊。-3→-2→-1→0,你的锁血在-2里执行了,可这关0什么事?除非你能让0不存在扣血的条件。


DIEND!

暂无评论
根据相关规定,发布评论前必须绑定手机前往绑定
你,确定要这么做吗?
正在处理中...