[简易教程]影之克隆、时间停止写法概述

转自贴吧,作者:eagrose

影之克隆就是【真实分身】,不受注销影响的分身。
从螺丝完成影之克隆的代码,到现在有一些年头了,
当时应该也有一些人物在尝试编写分身,只是可能依旧惧怕注销,或者只是纯proj的无敌分身。
当然,现在这种分身应该普及了,不过依旧有很多人询问,因此螺丝大致科普一下。

至于时停,这个技能年代更加久远,warusaki3所作的Dio的时停算是非常具有代表意义的。
时停本质很简单,螺丝这里只是拎出时停对于其他技能的影响,大致的说一下这个细节。

影之克隆:(免疫注销的完善分身)
只拎出主干,动画特效和技能条等其他细节就不涉及了。
————————————————————————————————————————本体召唤分身helper
注意,必须helpertype = player,类型为player型。

[State 3000, Helper]; ---- Shadow Clone Igniz
type = Helper
triggerall = !numhelper(97864)
trigger1 = animelem = 10, >=61
helpertype = player
name = "Shadow Clone Igniz"
ID = 97864 ; ---- MUST NOT change this !
stateno = 3099
pos = 60,0
postype = p1 ;p2,front,back,left,right
facing = 1
keyctrl = 1
ownpal = 1
supermovetime = 172
pausemovetime = 172

在分身helper的初始化state里(这里是3099),再创建一个“重建系统”helper

[State 3099, Helper]; ---- Shadow Clone Igniz recreater system helper
type = Helper
triggerall = !root,NumHelper(46879)
trigger1 = 1
helpertype = normal
name = "Shadow Clone Igniz recreater system helper"
ID = 46879 ; ---- MUST NOT change this !
stateno = 3098
pos = 0,0
postype = p1 ;p2,front,back,left,right
facing = 1
keyctrl = 0
ownpal = 1

“重建系统”helper常时绑定位置到父helper(即parent)
这里必须明确:重建helper和分身helper是“子与父”关系。重建系统helper里常时检测其父是否存在,如果不存在,那么分身helper就是被注销了(被敌人当身反转了)
如果检测到了,那么重新创建分身helper。
创建位置为重建系统helper的位置。由于重建系统helper始终和之前的分身绑定位置,所以看上去新的分身位置不变。被重新创建的新的分身helper,进入一个无敌的“假”挨打动作。
其血量则通过之前的变量记录,保证重建过程分身的血量不变。当新的分身创建完毕后,【旧的分身创建的那个“重建系统helper”】自我注销。
新的分身再创建属于它自己的【新的“重建系统helper”】
如此确保,分身永远是其对应的重建系统的“父”,否则重建系统的检测不便。值得注意的是,几种情况下分身消失了却不应该重建,
比如非战斗roundstate != 2,分身确实的死亡(生命0且stateno = 5150)等。
———————————————————————————————————————
-2下应该设置一些必要的系统:

当分身死亡时,应selfstate到挨打动作。变量记录血量,以便重建时使用。

值得注意的是,mugen容易引起一些BUG,比如分身奇怪的将本体抓入无效的p2state,或者反之本体抓了分身。
这时候用target,ID判断是不是抓错人了,用targetstate纠错一下。

另外mugen每一局结束时应该消除所有helper,但是偶尔BUG会导致没消除, 于是下一局开场roundstate<2时注销一下。

————————————————————————————————————————
其他全局细节:

由于player型helper会触发所有-1 -2 -3,因此-1 -2 -3【全部】控制器必须检查一遍
检查当控制器被分身helper而非本体执行时,是否产生问题。
如果不产生问题,则无所谓。如果产生问题,须增加!ishelper条件以区分。如果写有AI,AI不增加!ishelper条件,则AI将同时作用于分身。此即分身共享了本体的AI。
如果分身AI有特别要求,就以ishelper作为大前提条件,编写额外AI。

另外,【所有】招式代码里,含有诸如绑定位置到root的设置,必须按本体和分身helper加以区分
否则会造成“分身发出飞行道具,却从本体的位置出现”等瑕疵。
区分办法为ishelper、!ishelper时,分别绑定到parent。

招式中对某个【独有】helper、proj等有条件要求的,也必须按本体和分身helper加以区分
否则会造成“本体圣光之刃命中,允许梦幻取消,分身却也被允许取消”等瑕疵。
区分办法为创建的时候,本体和分身使用不同的helper ID、proj ID等。

————————————————————————————————————————
关于神代码:
分身重建机制对于通过【混线】来取得任意非开幕永久helper的神角色代码无效。


时间停止:(时停、延时特效)
只拎出主干,动画特效和技能条等其他细节就不涉及了。
————————————————————————————————————————
时停的本质就是一个长时间的superpause。
设置superpause的movetime等于time,时停时自己始终可动。
superpause的unhittable=1,时停无敌(但不免疫对手的当身)时停本身很简单,就是上面一句话。

但是时停对于技能的影响则迥然不同。本体的技能,hitdef、reversaldef正常作用。
飞行道具projectile正常作用,但是如果proj的supermovetime为0,则时停时proj也被静止

helper的supermovetime若为0,则时停时被静止。

explod贴图也一样。带有p2stateno的技能,命中对手后,对手由于无法动作,将卡在p2stateno第一帧。

所以时停时不建议使用投技等通常带有p2state的技能,而是尽可能使用projectile等飞行道具。
————————————————————————————————————————
-2下应该设置一些必要的系统:

时停时,自己虽然无敌,但依旧会被对手当身到。
若挨打,应selfstate以避免卡在敌方的静止的p2state里。

可以考虑时停时noko断言,以免被当身即死。

————————————————————————————————————————
其他全局细节:延时技能究竟延长多久,决定于时停时能动多久。
如上所述,
proj决定于supermovetime
helper也决定于supermovetime

举例,希望时停时,黑粒子只发出第一下光圈,那么黑粒子helper的supermovetime设置一个很小的值,
当黑粒子只活动了几帧就被静止即可。

再举例,希望时停时,阳光只隐隐照耀出一点儿,那么阳光explod贴图也将supermovetime设置一个很小的值。另外时停时,和平时的性能需要变得不一样的技能,应设置变量区分。
比如时停的阳光不可打断,则应区别对待创建的阳光helper,
指定时停时放出的阳光helper,在本体挨打时也不注销,继续攻击。
等等。

————————————————————————————————————————
如果对手恰好同时放出一个超级暂停,则对手能继续活动直至其超级暂停的时间耗尽。关于神代码:
时停对于通过【开幕超级暂停】来无视暂停的神角色代码无效。

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