[简易教程]影之克隆、时间停止写法概述
mugen吧
全部回复
仅看楼主
level 10
Eagrose 楼主
1L度娘

(加班)
2012年11月04日 05点11分 1
level 10
Eagrose 楼主
影之克隆就是【真实分身】,不受注销影响的分身。
从螺丝完成影之克隆的代码,到现在有一些年头了,
当时应该也有一些人物在尝试编写分身,只是可能依旧惧怕注销,或者只是纯proj的无敌分身。
当然,现在这种分身应该普及了,不过依旧有很多人询问,因此螺丝大致科普一下。
至于时停,这个技能年代更加久远,warusaki3所作的Dio的时停算是非常具有代表意义的。
时停本质很简单,螺丝这里只是拎出时停对于其他技能的影响,大致的说一下这个细节。
另外刚刚完成雏形的组队独特技能(复活队友、生命分担)还存有瑕疵,下次螺丝整理完毕再科普了(那个写法有点乱)
2012年11月04日 05点11分 2
level 10
Eagrose 楼主
影之克隆:(免疫注销的完善分身)
只拎出主干,动画特效和技能条等其他细节就不涉及了。
————————————————————————————————————————本体召唤分身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的神角色代码无效。
2012年11月04日 05点11分 3
level 10
Eagrose 楼主
时间停止:(时停、延时特效)
只拎出主干,动画特效和技能条等其他细节就不涉及了。
————————————————————————————————————————
时停的本质就是一个长时间的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,在本体挨打时也不注销,继续攻击。
等等。
————————————————————————————————————————
如果对手恰好同时放出一个超级暂停,则对手能继续活动直至其超级暂停的时间耗尽。关于神代码:
时停对于通过【开幕超级暂停】来无视暂停的神角色代码无效。
2012年11月04日 05点11分 4
level 12
螺丝你这是把老本给掏出了么233[睡觉]
大致能明白,的确是很原理,真的要写起来各种麻烦233
另外问一下,有些神人物即使是低P也有无视superpause而随时随地活动是怎么个回事呢
2012年11月04日 07点11分 5
本体常时执行999999999的pause和superpause,然后自身召唤个带有0的pasue和superpasue的helper并立即destroyself然后重新召唤
2012年11月04日 08点11分
回复 Gustab·M :恩,巴蜀也说了一样的东西,暂停的无效化,不过没提到本体的时常pause。。。
2012年11月04日 09点11分
老本不至于...代码这种东西写出来就是一种思路,和素材不一样,代码通用性很高,越得到推广越好。组队模式独特技能也是这个目的。
2012年11月04日 11点11分
level 12

helpertype是不是player都可以....只是凶恶的一般都是用player罢了

(苦逼)
2012年11月04日 07点11分 6
无论是本体还是分身,它们只不过是执行你给它们的代码而已..
2012年11月04日 07点11分
回复 龙白方 :【真实分身】的意思是,它和双打模式多出的一个人物本体没有区别,因此必须能够导致敌方转身,导致敌方AI以它为目标之一等等。这些情形【必须】用player型实现。
2012年11月04日 11点11分
回复 龙白方 :另外【只有】player型helper才能读取-3、-2、-1下的指令,无论是AI还是其他代码都会因此变得方便(normal型无法读取负数所以凶恶向才必须用player型)。综上所述,真实分身【必须】用player型写。
2012年11月04日 11点11分
回复@龙白方 :傻子
2012年11月04日 13点11分
level 9
虽不明,但觉厉~ 问下螺丝,现在的老E是没有单独的带分身的模式了么? 我记得老版本几P是只有分身,没有援助的啊
2012年11月04日 07点11分 7
[睡觉]你不知道HELPER写的都是分身,同时也是援护么
2012年11月04日 07点11分
回复 龙白方 :我不知道啊~ 我这是个凡人啊,不懂代码的。。。
2012年11月04日 08点11分
回复 zinclee123 :援护是normal型helper写的,分身是player型写的。至于单独带分身却不带援护...确实没有设置,不过这个想法很好,下次加个开关吧...
2012年11月04日 11点11分
level 10
书签
2012年11月04日 12点11分 8
level 14
我分身和你不同,我是本体召唤分身。
分身在召唤个即时跟随的不消除援护。分身被消除就在当前位置召唤个。
2012年11月04日 13点11分 9
本体召唤分身这一点一样的。只是关于重建用的helper,PP你的是常时不变,我则是每次分身重建后,重建helper本身也重建。进一步导致的区别则是,PP你是使用numhelper和重定向去获知分身情况,我则直接取parent。
2012年11月04日 14点11分
我的写法相对复杂少许,显得有些没必要。其实则是当初认为,parent重定向比numhelper、helperID重定向更加“稳定”不易BUG,比如本体被当身后敌方又召唤了一个同ID的helper之类的。不过其实这样的可能性微乎其微,真遇到了也多半是神角色,在混线面前这些稳定性也没意义...不过后来也就懒得改了。
2012年11月04日 14点11分
对了,顺便询问一个神代码细节,我对混线了解不深,不过貌似混线对于开幕创建,从不注销,不含hitdef,从不被受击的helper没有办法?这也是最近偶然发现的...
2012年11月04日 14点11分
不,混线就是对付你说的那种
2012年11月04日 14点11分
level 10
教程支持
2012年11月04日 17点11分 10
有爱的学员裁判[唠叨]boss
2012年11月08日 16点11分
level 11
支持[顶]
2012年11月04日 20点11分 11
level 9
大蛇对老E的视频很精彩啊
2012年11月06日 12点11分 12
感谢支持。
2012年11月07日 06点11分
level 3
有范例吗?
2012年11月07日 06点11分 13
时间停止:WArusaki3所做的Dio系列,或者你查看Orochi-EV的12P梦魇模式代码也可以。影之克隆,查看Igniz-EV的12P梦魇模式代码,或者PP氏的Igniz-BOSS的6P。
2012年11月07日 06点11分
level 8
支持技术贴~~!!!
2012年11月08日 16点11分 14
1