[抛砖引玉科普] 于mugen代码,澄清一些误区,重申一些细节
mugen吧
全部回复
仅看楼主
level 10
Eagrose 楼主
1楼喂百度[打酱油]
2012年10月07日 03点10分 1
level 10
Eagrose 楼主
抱歉螺丝效率低下,时间有限,AI helper云云暂时挖坑,
为了AI helper的讨论,以及其他许多不是AI领域代码的讨论,
螺丝先挖这个小坑,以澄清mugen代码上的一些误区、一些细节,
以此为之后的讨论奠定基础、为正在逐渐升温的新人学习活动少走弯路。
部分细节在曾经MC论坛、2D论坛、贴吧内应该有所提及,但貌似还是不够科普,
另外一些则可能鲜有人注意到,故这里螺丝再次啰嗦一下见谅。
2012年10月07日 03点10分 2
查看此帖的请注意!4楼本身关于【nothitby】的结论是错误的。那是一个长久的谬论和误解。具体请看4楼的楼中楼中,“用户名”吧友的回复,以及9楼PP氏的补充说明。
2012年10月07日 10点10分
打错,是5楼。4楼由于链接问题被吞了。
2012年10月07日 11点10分
回复 Eagrose :不行.....大哥 我要看吐了 能不能帮我个小小的忙 实在是谢谢 我有个高尼兹人物 但是 黑暗挽歌近身 真八稚女·蛟 这两个招下血实在是小的不行 一下重击都比黑暗晚歌打血多 求大神的QQ 帮我改下技能伤害啊 感激不尽 731458241 我的QQ 请刘下你的
2013年03月16日 06点03分
回复 vjih68 :QQ很少登陆,673169321。方便的话百度私信我就好。
2013年03月17日 03点03分
level 14
插!!!!!!
2012年10月07日 03点10分 3
节操呢→_→
2012年10月07日 03点10分
回复 众生源殿 :←_←
2012年10月07日 03点10分
跟着PP也插一个
2012年10月07日 03点10分
既然插了就继续插吧233...
2012年10月07日 04点10分
level 10
Eagrose 楼主
第二个问题:
这里重申一下,【hitdef有几个容易混淆的参数】
1)attr
这个参数,表示攻击的“表面上的定义”
HitDefAttr 检测的也正是这个值。这个参数同时也与“hitby、nothitby”遥相呼应。
它的格式,和hitby一样,形如:
SCA,AA,AT,AP (即 SCA,NA,SA,HA,NP,SP,HP,NT,ST,HT )
2)hitflag
这个参数,决定了“对手”处于哪些state状态类型下,自己的攻击方可命中
可选值:HLAFDP+-
H高位,L低位(M同时包括H和L)
A空中,F落下(注意!AF都在空中,但本质不同,挨打movetype=H的空中算F不算A)
(所以hitflag=MAF能打中那些已经挨打的空中目标,但MA打不中!)
(MA常用于普通立回拳脚,因为在有的原作中,地面拳脚只能首发命中空中目标,但后续不能在空中连段,如拳皇)
D倒地(倒地追击即使用该参数,但是注意起身瞬间默认完全无敌,有这个参数也白搭)
P飞行道具(该参数极为特殊,以后详述)
+加号表示该次攻击只能命中“已经挨打的角色”
-减号表示该次攻击只能命中“没有挨打的角色”如普通投
3)guardflag
这个参数,决定了对手如何才能防御自己的这个攻击
(所以注意!绝不是hitflag的攻击身位决定哪些不可防,而是这个参数决定)
可选值:MHLA
M=HL,这里H为站立,L为下蹲。
A即是否允许空中防御。
(不写A虽然理论上不允许空中防御,但某些人物修改了防御代码,空中时“强行”切换到站立防御状态进行防御,那么这个设定也就白搭了。)
(还有一个隐含参数,N或者不写,表示完全的不可防御)
本质上guardflag对应于120-159的【mugen内建机制之一:防御状态】

2012年10月07日 04点10分 6
受香蕉君启发,补充一句:hitflag用于在对方【非防御】时决定能否命中,guardflag用于在对方【防御】时决定能否命中
2012年10月07日 12点10分
level 10
Eagrose 楼主
以上述第二个问题为基础,
第三个问题:
【澄清关于AI重要参数 HitDefAttr 的实际作用机理】
HitDefAttr,顾名思义,返回的是攻击器(hitdef)的攻击类型值(attr)。
1)【它的表达式怎么判断的?】
类似于hitby。
如trigger1 = hitdefattr = SCA,AA
检测【自己】的攻击类型为站蹲空、任何物理攻击时,返回真。
但是!螺丝这里重申一个BUG(mugen BUG真多...)
如果你按照说明文档的例子,写成
trigger1 = hitdefattr != SCA,AA
会怎么样呢?
实验:
-2下加入如下DEBUG信息:
[State -2, DisplayToClipBoard];debug
Type = DisplayToClipBoard
Trigger1 = 1
Text = "inguard=%d, attr.NASAHA=%d, attr.NPSPHP=%d, attr.NTSTHT=%d, "
Params = inguarddist,(hitdefattr=SCA,AA),(hitdefattr=SCA,AP),(hitdefattr=SCA,AT)
IgnoreHitPause = 1
[State -2, DisplayToClipBoard];debug
Type = ApPendToClipBoard
Trigger1 = 1
Text = "\n!attr.NASAHA=%d, !attr.NPSPHP=%d, !attr.NTSTHT=%d, "
Params = (hitdefattr!=SCA,AA),(hitdefattr!=SCA,AP),(hitdefattr!=SCA,AT)
IgnoreHitPause = 1
然后实测:
伊格尼斯的超重击吹飞,攻击类型为物理(SA)
我们可见,hitdefattr=SCA,AA 返回了真,符合我们的设想(是物理攻击)。
hitdefattr=SCA,AP 和 hitdefattr=SCA,AT 返回了假,也符合我们的设想(不是投技也不是飞行道具)
但是诡异的一幕出现了:
hitdefattr!=SCA,AA 也返回了真....
【不等于物理攻击】竟然在物理攻击时,为真...
再看另外两个不等式,
hitdefattr!=SCA,AP 和 hitdefattr!=SCA,AT,
【不等于投技】【不等于飞行道具】此时“应该”为真,但反而为假...
结论:
hitdefattr的判别式,不能用不等号“!=”,因为用了和没用一样,黑白是非颠倒...
(这个BUG让人非常无语)
那么我们如何判断“不等于XXX类型攻击”呢?
答案是,把不等号放在外面,如:
trigger1 = !(hitdefattr=SCA,AA)
先让hitdefattr运算完毕,再取负数。
2012年10月07日 04点10分 7
午饭去了,回来继续...
2012年10月07日 04点10分
level 9
期待下面的教程
2012年10月07日 04点10分 8
level 10
Eagrose 楼主
接上一楼:
2)【hitdefattr的检测对象】
螺丝提及
trigger1 = hitdefattr = SCA,AA
检测的是【自己】,那么检测对手呢?
enemynear(X)重定向即可。
(注意双打模式的“最近之活敌”问题,这个问题螺丝之前在2D、贴吧提过,后面详述)
但是一个显而易见的问题是:
检测“本体”的时候,Helper的能检测到么?Projectile能检测到么?
答案是:都不能...
图中,DEBUG信息不变。
大蛇使用援护(典型的helper),即便已经inguarddist,马上就要挨打
伊格尼斯所有DEBUG信息的hitdefattr依旧均返回“假”。
原因在于
【helper发出的hitdef,参数应该重定向到helper,才能检测到。】
如“helper(XXX),hitdefattr”
问题来了,如何得知对方的helper编号?
这是一个棘手的问题,目前而言最好的办法也只是“遍历所有的helper编号来穷举”
吃力不讨好的“遍历穷举法”还能够用于记忆对手哪些helper具有攻击性,而哪些又是“无害”的。这一点在AI Helper所能达到的极限精度中,是重要的一环(比较繁琐)。
——————————————————————————————
Projectile型飞行道具,也具有attr属性。
但是显然proj没有“重定向”之类的。
我们知道无论是不是helper创造的proj,都属于本体,
是不是可以直接检测本体?
答案是:不能
伊格尼斯放出圣光箭,使用proj编写的飞行道具。
本体debug信息,attr依旧全为假。
——————————————————————————————————
由此可见,mugen的三大控制器,检测attr可以总结如下
自己本体、对手本体的hitdef可检测。(对手要重定向)
对手helper的hitdef难以检测。(非要检测,遍历穷举编号)
projectile 完全无法检测。(无任何办法)
Reversaldef 如果不写attr,检测不到。
(如果写attr会导致另一个严重BUG,后文单独作为一个问题详述)
——————————————————————————————————
那我们要这个参数做什么?
检测本体的攻击。
由于一般只有物理攻击和投技是基于本体的,飞行道具则往往是proj或helper,
所以一般而言这个参数用于检测对手是物理攻击,则AI可用物理当身技,还击对方。
投技呢?如果你的当身技可以反弹投技(...)并且对手不是0帧投,
那么你可以尝试反弹对手。
对于0帧投,等hitdefattr判定返回真时,你已经挨打了,AI没有反应的机会了。
检测本体投技的另一个用处是,非0帧投的时候,你可以尝试后退、跳跃、攻击,
总之AI至少知道不用原地防御/闪避了,因为面对投技,防/闪了也白搭。

2012年10月07日 05点10分 10
level 10
Eagrose 楼主
讲第五个问题之前,插播PP在楼上所提及的一个细节:
【防御僵直时,是否能够被投?】
答案是,至少在拳皇原作中,确实不可投(包括指令投)
按照原作中普通投不能命中已经挨打的敌人,而防御在mugen中其实算作挨打状态,
因此推论应该确实不可投。
指令投又是如何不得而知,于是螺丝干脆测试了下:
为了实现防御僵直和指令投同时出现,用如下测试方法:
大门召唤援护真吾,K'防御真吾。
大门在K'防御僵直时,指令投。
结果:指令投不中。

2012年10月07日 06点10分 13
所以,这一条算是原作的“隐藏性能”。这个性能能够在某些特定环境下,大幅度的提高人物的安全系数,尤其是双打模式。
2012年10月07日 06点10分
level 10
Eagrose 楼主
插播完毕,继续第五个问题。
第五个问题:
依旧是reversaldef的问题。
【如何
正确的
反弹所有projectile型飞行道具,而不干扰物理攻击】
————————————————————————————————
飞行道具返技,要对付的飞行道具类型很多。
本体直接作为飞行道具,attr属于P。
对策:
这...太古怪了,一般情况没人会这么写。
他如果真这么写,被返技返了也是活该了...(汗一个)
helper型外壳,hitdef核心,attr属于P
对策:
hitoverride针对P霸体【沙包】
reversaldef针对P当身【吞噬】
helper型外壳,hitdef核心,attr不属于P(比如写成A甚至T)
对策:
这种写法不自重。
通常作为超杀的一种写法。超杀飞行道具不可反弹,尚且算是可以接受的。
如果是写成普通飞行道具,只有叹气。除非你不在乎飞行道具返技连物理攻击也反了。
projectile型外壳,attr属于P
对策:
hitoverride针对P霸体【沙包】
reversaldef针对P当身【吞噬】
projectile型外壳,attr不属于P(比如写成A甚至T)
对策:
这种写法依旧不自重。
但是,这种写法可以“无瑕疵”的破解。
即反弹这种飞行道具的同时,【不干扰正常的物理攻击、投技】
————————————————————————————————
螺丝这里多嘴一句。
任何带有p2stateno型的攻击,都【无法命中】霸体hitoverride。
两者相撞无任何事情发生。
(所以用投技去打霸体,既不会命中,霸体也不会有僵直,什么事都没有,就像两个当身技相撞一样)
因此,对于带有p2stateno的飞行道具,hitoverride【沙包】无效。
【必须】使用reversaldef进行吞噬。
(虽然其实沙包更好,沙包后飞行道具自己完成注销,有消失动画。
而吞噬,会让飞行道具、helper等直接不见,什么也没了非常突兀)
————————————————————————————————
如何对付【projectile型外壳,attr不属于P】的写法呢?
[State 1023, ReversalDef]; ---- consume any proj
type = ReversalDef
trigger1 = 1
reversal.attr = SCA
pausetime = 0,2
priority = 999, miss
hitflag = P
numhits = 0
sparkno = -1
p1stateno = 1024
p2stateno = 2010
ignorehitpause = 1
注意该reversaldef的两个关键参数:
reversal.attr = SCA
hitflag = P
前者【不能】写任何第二个子项。
后者必须只写P。
该reversaldef的实际效果是:
能够通过当身,吞噬proj(是的,你没看错,吞噬projectile而不是helper)
并且吞噬attr为任何类型的proj(无论P还是A、T)
并且的并且,不影响任何非proj的事物(本体、helper的任何攻击)
即该控制器在确保吞噬【任何projectile】的同时,不干扰正常比赛。
当然除了projectile外,还存在用helper写的飞行道具。
这个就一如往常一样,
用hitoverride沙包处理attr为P的helper(但是无法处理p2stateno型)
或者用reversaldef处理attr为P的helper(立即吞噬,比较突兀)
至于attr不为P的helper...不自重的写法,没有办法,要么妥协要么爆发。
(什么都当身的返技,就变成BT人物了)
————————————————————————————————
总结:
飞行道具返技的极限写法:
【特殊reversaldef】处理attr为任何值的【projectile型飞行道具】
+
【hitoverride】或【正常reversaldef】处理attr为P的【helper型飞行道具】
=
飞行道具返技
2012年10月07日 06点10分 14
没记错的话targetstate对hitoverride也有作用
2012年10月08日 00点10分
回复 Ace最深之蓝 :大小姐说的正确,targetstate无视霸体。但是targetstate已经不属于攻击,而是可以比喻为“从灵魂层面的影响”(...)。mugen只有三大攻击器,hitdef proj reversaldef。而target重定向,和%n的printf、亲变更,本质上原理一样,直接从内存指针层面进行操作。
2012年10月08日 12点10分
回复 Ace最深之蓝 :三大控制器,一旦带有p2stateno,且hitoverride的八个槽针对这些控制器的attr呈霸体,那么均无法影响hitoverride。(reversaldef比较特殊,一般不写attr)
2012年10月08日 12点10分
回复 Ace最深之蓝 :当然...targetstate结合神代码【永续target】以后,霸体也就形同虚设了。不过神代码非常独特,因此就不在本文的讨论之内了...
2012年10月08日 12点10分
level 10
Eagrose 楼主
上一个问题的配图:
GM的蓄力飞行道具,轻拳状态为【helper型,hitdef的attr为P】(自重写法)
卢卡尔的飞行道具返技,正常反弹了【helper型,hitdef的attr为P】的飞行道具。
GM的蓄力飞行道具,重拳状态为【projectile型,hitdef的attr为HA】
(不自重写法,而且Z叔竟然写的是HA,超杀物理攻击)
(注意上文提及,proj的不自重写法,是可以无瑕疵破解的。如果helper这么写就没辙了)
老路妄图返技,失败。(HA型属于物理攻击)
螺丝当年在EV大蛇中,即已采用【特殊reversaldef】
故该类【projectile型,hitdef的attr为HA】的飞行道具被大蛇的反射盾吞噬。
至此有人或许疑惑,连GM的HA型攻击都反弹了,这还是“返技”么?
这已经变成物理攻击当身了吧?
非也。如上文所述【特殊reversaldef】对且仅对proj起作用,
它并不是物理当身,决不干扰比赛!
如图:反弹盾判定存在期间,
任何本体、helper的物理攻击依旧正常作用。
【这不是物理当身!!】
2012年10月07日 06点10分 15
level 10
Eagrose 楼主
第七个问题:
关于AI的另一个极端重要参数“inguarddist”的第二个要点。
(在AI防御面上的重要性,远胜其他一切参数)
【inguarddist的实际生效的时间段】
配图附后,直接说结论了:
和hitdefattr非常类似。
(有一点不同,大前提:自己处于inguarddist检测范围内,否则怎么也检测不到)
若在inguarddist范围内:
刚开始无攻击判定时,inguarddist返回假。
判定出现,返回真。
(这个判定包括hitdef、reversaldef、proj全部三类攻击器,比hitdefattr处理起来方便)
判定结束,打击框消失,依旧返回真。(和hitdefattr的特性一样)
——————————————————————————————————
配图:
大蛇物理攻击,判定出现,左下角伊格尼斯处于检测范围内,inguarddist为真。
大蛇物理攻击,判定结束,左下角伊格尼斯处于检测范围内,inguarddist依旧真。
大蛇当身技,判定出现,左下角伊格尼斯处于检测范围内,inguarddist为真。
(所以注意了,当身技也会导致inguarddist为真!)
大蛇当身技,判定结束,左下角伊格尼斯处于检测范围内,inguarddist依旧真。
大蛇飞行道具,左下角伊格尼斯处于【大蛇本体】的检测范围外,
但是处于【该飞行道具】的检测范围内,inguarddist为真。
如上螺丝所述,飞行道具的基准远点为飞行道具动画本身,而非其拥有者的本体。
伊格尼斯白罗灭精,全屏幕飞行道具。
远在inguarddist检测距离之外。
即使挨打了,依旧inguarddist为假。
因此,有如下重要结论:
【仅仅基于inguarddist的 AI 防御面,无法及时对远处的大范围乃至全屏攻击做出反应】

2012年10月07日 07点10分 17
level 10
Eagrose 楼主
第八个问题:
关于AI的另一个极端重要参数“inguarddist”的第三个要点。
(在AI防御面上的重要性,远胜其他一切参数)
【inguarddist对于背后的攻击,能够检测到么?】
答案是:可以。
因此,在【打背】、【被打背】等AI情景下,inguarddist依旧有“利用价值”。
测试方法:
伊格尼斯通过断言器,常时关闭了【mugen内建机制之一:自动转身】
大蛇跳过去,发招。
大蛇物理攻击,可见:inguarddist对于来自背后的hitdef物理攻击,依旧保持有效。
大蛇飞行道具,可见:inguarddist对于来自背后的proj攻击,依旧保持有效。
helper等造成的攻击不再赘述,结论一样:背后可检测。
(大前提是在第一点所论述的检测范围内)

2012年10月07日 07点10分 18
level 10
Eagrose 楼主
对inguarddist用于AI的最后一点补充:
(涉及下一次讨论的AI Helper,故就不单独列成问题了,这里只概述)
当三大攻击器的guard.dist设置为0时,
诞生一种【非常不自重】的迷惑对手【基于inguarddist的防御AI】的写法。
由于guard.dist=0,inguarddist无论如何都返回假。
【基于inguarddist的防御AI】无法正确的响应对手的攻击意图,
因此该防御面AI【完全报废】!
等同于时时刻刻在面对着超大范围而且不在检测距离的全屏技能。
这种写法的不自重,作者(尤其AI作者)也深深的意识到了,
例如记得在GGXX等系列的人物,人物性能开关中就有选择这个写法开启与否。
由这个写法造成的表象,看上去AI变得神反应,同时对手“变笨了”,
其实则和以前goodman用player型猿魔干扰对手AI,如出一辙,
一个不太恰当的比喻就是,“霍元甲决斗前被人下药了”,是为不自重。
(...螺丝没用过这类写法,但是白罗等全屏技能造成的“不在检测距离之内”则是一个普遍现象)
(作者们也懒得一个个招式单独制定guarddist,其实确实应该这样。打击框范围大则guarddist也大,反之亦然。然而这样特别自重过头的写法,让敌人更容易防御,让自己更吃亏,愿意这样写的作者,太少。)
(不禁让螺丝想起那句话,自重的作者给自己一个气力条,让自己“晕点”;不自重的作者给对方一个防御槽,强迫对方被破防...这样的事,mugen界永远说不清)

2012年10月07日 07点10分 19
提前为AI补充一点,当inguarddist无法作为判别的依据时,movetype=A成为最重要的基石(如果不为A,hitdef等完全无法启动),而hitdefattr则成为“不那么好用”的助手(无法检测proj,检测helper困难重重)。
2012年10月07日 11点10分
level 10
Eagrose 楼主
暂且到此为止吧。
还有一些细节,有的比较特殊,螺丝会单独开帖讲。
有的涉及AI过深,下次AI Helper专题再讨论。
标题为抛砖引玉,即为螺丝清楚自己所言不可能全部正确,
三人行必有我师,欢迎吧友补充、纠错、指教。
2012年10月07日 07点10分 20
level 10
Eagrose 楼主
@未利用的用户名
确实是按照hitdef而非打击框判定。
(官方文档即言明,hitdefattr本来就是检测的hitdef的属性attr)
回答11楼吧友的论据:
实验内容为:
将原本26A链刃的hitdef判定,从各个帧,直接改为“trigger1 = 1”常时触发
施展26A,检测自己的attr:
由于常时触发,hitdef在state开头即成立。
在打击框尚未出现前,attr返回真。
(同样的测试可以发现inguarddist也为真)
打击框未出现,而hitdef已创建,检测自己的attr为真。
打击框未出现,但hitdef已创建,则inguarddist为真。
(前提在guarddist范围内)
2012年10月07日 08点10分 21
谢谢解答
2012年10月07日 08点10分
回复 未利用的用户名 :不客气,通过你的提点,螺丝才注意到这个细节,感谢。对于一部分开头就创建的hitdef,AI就能够有限的获知其攻击类型了。不过对于按部就班等待打击框出现才创建的hitdef,AI依旧比较被动。
2012年10月07日 08点10分
回复 Eagrose :螺丝,问一下你的那个蛇和妮子用于杯赛没问题吧?
2012年10月07日 09点10分
回复 众生源殿 :没有问题,只是螺丝一直觉得性能细节上、AI上有很多下次要修复,最近弄完一套古怪的特别技能后,会再放出一版,希望能继续修复这些问题。(比如AI缺陷,喜欢发某些招式而被厨死的情况,在上次的视频里让自己都觉得太餐具了...)
2012年10月07日 10点10分
level 13
[啊!]好强大的反盾学!
2012年10月07日 13点10分 24
这个飞行道具返技的主要精粹,在于那个“只返任何proj,却不干扰正常比赛的物理拳脚”的特殊Reversaldef写法。螺丝一直的追求,就是在强大和合理之间寻找“平衡点”,因此诞生这样类似的很多东西...
2012年10月08日 12点10分
level 1
太敬业了。。。我来补课了。
2012年10月08日 00点10分 25
level 1
直接看跪了。。。
2012年10月08日 00点10分 26
呃...部分分析可能太过晦涩,请只记忆结论即可。如果是代码初学者,先从基础学起,这些有的太过艰深,暂时不要追究过深。
2012年10月08日 12点10分
level 11

投技呢?如果你的当身技可以反弹投技(...)并且对手不是0帧投,
那么你可以尝试反弹对手。
对于0帧投,等hitdefattr判定返回真时,你已经挨打了,AI没有反应的机会了。
其实就算hitdefattr判定返回真,还是有1f时间反应的...
例如说对方是第一帧就有判定的投技...我方依然可以用stateno105马上转换为statetype=A的状态避开...
还有...对方即使是第一帧就有判定的打击技...我方依然可以成功使用第一帧就有判定的当身...
1f攻击开始
当身成功
并且与P1P2侧无关
2012年10月08日 03点10分 27
恩 这个细节很有深究的意义,但是螺丝测试了一下,却不是这样...不知道是否是测试环节哪儿有问题...
2012年10月08日 12点10分
结论和解释已有,见楼下。测试结果和理论结果...呃...和你的实验不符合...不知道是哪儿有问题。
2012年10月08日 12点10分
回复 Eagrose :嗯嗯是我测错了见下楼...
2012年10月08日 13点10分
level 10
Eagrose 楼主
@口水轩
螺丝实际测试了下,方法为:
将伊格尼斯原本设计的3帧内相杀、3帧外当身物理攻击,
改为0帧当身,当身包含投技。
且当身器从helper被挪到本体上,以避免“helper的执行顺序”之类的干扰。
当身技本身不免疫投技。
1040为当身技状态号。
-2下有如下代码:
[state 0]
type = changestate
trigger1 = ctrl
trigger1 = hitdefattr = SCA,AT
value = 1040
ignorehitpause = 1
大蛇的C投,进入后立即superpause以观察打击框。
过程为:
1)大蛇P1侧,伊格尼斯P2侧。
大蛇首发0帧C投。(P1首发技能)
superpause。
大蛇投技打击框可见(被盖住了不易发现)
(大蛇打击框的左边界那根线在紫色打击框中央,右边界那根线在伊格尼斯“发白的红色框”的中间,也就是伊格尼斯身体中线附近)
伊格尼斯当身技打击框可见(很大...包住身体的是本体的,拖到地底的是helper的。)
(0帧投瞬间,hitdefattr已经令changestate生效)
大蛇正常可挨打(蓝色受击框)
伊格尼斯正常可挨投技、飞行道具(原本的免疫物理攻击没删,虽然这里天蓝色受击框,但是注意这里不是完全无敌)
superpause结束。
大蛇挨打。
2P侧0帧检测hitdefattr成功当身,扭转1P侧0帧投
2)伊格尼斯P1侧,大蛇P2侧。
大蛇首发0帧C投。(P2侧首发技能)
superpause。
大蛇投技打击框可见(小小的那个,和第一种情况里不易发现的那个,是同一个东西)
伊格尼斯当身技打击框【没有】!(0帧投瞬间,hitdefattr【没有】令changestate生效)
大蛇正常(蓝色受击框)
伊格尼斯正常可挨打(天蓝色!【完全不无敌】)
即伊格尼斯压根没有进入1040的当身技状态!(【changestate失败】)
(否则伊格尼斯应该是1040的天蓝色【部分无敌】的受击框,
而不是这样的深蓝色【完全不无敌】,其实就是0号站立姿势。)
superpause结束。
伊格尼斯挨打。
显然是因为,当身技没出来,0帧投获胜。
1P侧0帧检测hitdefattr失败,没有导入当身,2P侧0帧投胜利。
实验结论:
1P侧0帧投 VS 2P侧0帧当身 (投先发) 当身胜利。
1P侧0帧当身 VS 2P侧0帧投 (投先发) 投胜利。
正好和神角色代码的:1P侧优先执行,相反???
匪夷所思...
(或许螺丝有疏漏之处,导致了实验误差?)

2012年10月08日 12点10分 28
或许一个可行的解释,能够和【神代码的顺序】同时契合。执行顺序:左侧-3-2-1,左侧其他state,右侧-3-2-1,右侧其他state。在一帧中,当大蛇处于左侧,大蛇先投,大蛇投技state先于伊格尼斯-2下的检测,因此伊格尼斯检测成功,进入当身,当身胜利。
2012年10月08日 12点10分
而若,大蛇处于右侧,伊格尼斯已经走完了-3-2-1和0号站立,因此大蛇走完-1(玩家手操投技)然后走投技state时,1帧已经结束,伊格尼斯【必须在下一帧才能重回-2,检测attr】。由于1帧已结束,攻击即判定,伊格尼斯【已经没有机会再changestate】!!!
2012年10月08日 12点10分
神代码是,先执行的,先“吃螃蟹”。这里却多了一步检测。因此先执行的,反而被后发而上的对手,【抓住了尾巴】。而后执行的,却能在【下一帧】中【先执行者】执行之前,一锤定胜负!
2012年10月08日 12点10分
回复 Eagrose :换言之:你发招,我检测,你倒霉(P1投,P2当身,当身胜利)。
2012年10月08日 12点10分
1 2 尾页