【mugen】舊神級(jí)技術(shù)講解1基礎(chǔ)原理

==============================
前言
==============================
因?yàn)橛腥讼M野l(fā)一下模板,我想了下深藍(lán)的的確對(duì)于沒(méi)有基礎(chǔ)的人過(guò)于抽象,于是把自己了解的東西寫一下,當(dāng)然可能難免會(huì)有錯(cuò)誤
涉及到隔離的內(nèi)容我會(huì)根據(jù)自己的了解適當(dāng)?shù)闹v一下,匯編以下的程度,隔離輔助的新技術(shù)我不會(huì)講,沒(méi)有研究過(guò)
親變更涉及到刷幾次值之類的運(yùn)算,比起看我寫的,不如直接看別人的,講的多細(xì)取決于我想記起來(lái)多少
順便,找不到封面,拿ff14充數(shù)一下
==============================
正文
==============================
1?基礎(chǔ)原理
基礎(chǔ)原理就是所謂的“三大bug”,即內(nèi)存溢出(超即死等),proj的親為本體(各種貫通炮),永續(xù)target,然而混線的原理實(shí)際上游離于三大bug之外(永續(xù)target只是其中一半)
本章講解神級(jí)基礎(chǔ)的技術(shù)原理,大傷害等普通人很好理解的內(nèi)容,各種后續(xù)派生技將在今后更新
1.1 內(nèi)存溢出
其實(shí)是各種程序普遍會(huì)有的一個(gè)bug,一般程序需要分配內(nèi)存空間,如果你使用的部分超出了預(yù)先分配好的內(nèi)存空間,就會(huì)造成溢出,占用其他內(nèi)容的內(nèi)存,從而產(chǎn)生數(shù)據(jù)覆蓋的現(xiàn)象,早年游戲的各種bug(常見(jiàn)于口袋妖怪)都是內(nèi)存溢出的現(xiàn)象
從性質(zhì)上來(lái)講,mugen中大部分修改內(nèi)存的途徑都是內(nèi)存溢出,statedef溢出、512超越本質(zhì)并無(wú)不同
理論上來(lái)說(shuō)任何程序?qū)τ趦?nèi)存溢出都有保護(hù)措施,mugen也不例外,但是通過(guò)某些手段可以越過(guò)這些措施以達(dá)到修改內(nèi)存的目的
1.1.1 512超越
mugen對(duì)于一個(gè)state(角色當(dāng)前的狀態(tài))在同一f(即mugen內(nèi)部的最小時(shí)間單位)可以同時(shí)運(yùn)作的控制器的上限是512個(gè),超過(guò)就會(huì)自動(dòng)報(bào)錯(cuò)
但是在角色有hitpausetime(擊中暫停時(shí)間)的情況下,則不會(huì)報(bào)錯(cuò),同時(shí)會(huì)因?yàn)閮?nèi)存溢出,達(dá)到覆蓋內(nèi)存數(shù)值的效果,這就是512超越
1.1.2 hitpausetime
角色的一個(gè)屬性,本質(zhì)是格斗游戲中擊中或者被擊中時(shí)為了增加打擊感產(chǎn)生的停頓時(shí)間,在mugen里用hitpausetime表示
hitpausetime可以防止512報(bào)錯(cuò),是神級(jí)實(shí)現(xiàn)內(nèi)存修改(現(xiàn)在看來(lái)比較low的遠(yuǎn)古隔離機(jī)也是這么玩的)的必要條件
取得hitpausetime有兩種方法,一是通過(guò)hitdef擊中對(duì)方(或者被對(duì)方reversaldef當(dāng)身),二是通過(guò)reversaldef當(dāng)身對(duì)方(或者自己的helper)的hitdef
需要注意的是,雖然被對(duì)方擊中也會(huì)產(chǎn)生停頓,但是此時(shí)并不是hitpausetime,而是被稱為hitshaketime的參量,兩個(gè)不可混淆
projectile控制器無(wú)法產(chǎn)生hitpausetime
hitpausetime防止512報(bào)錯(cuò)的原因不需要了解
1.1.3 控制器范例
以下是我的角色使用的一個(gè)范例
[State ]
type=Hitdef
trigger1=sysvar(4)<60
trigger2=time<60
trigger3 = 1
numhits=0
attr=C,HA
priority=7,hit
sparkno=-1
guard.sparkno=-1
pausetime=9+random%13,0
ignorehitpause=1
需要獲得hitpausetime,只需要注意紅色部分即可,前面的數(shù)字是給予自己的hitpausetime,后面是給予對(duì)方的hitshaketime
需要給對(duì)方賦予hitpausetime只需要讓對(duì)方進(jìn)入此狀態(tài)即可
但是hitdef的hitpausetime會(huì)被受到reversaldef的hitpausetime所覆蓋,一般來(lái)說(shuō)使用reversaldef的更多
以下為reversaldef的范例
[State ]
type=Reversaldef
trigger1=sysvar(4)=[60,90]
trigger2=time=[60,90]
numhits=0
reversal.attr=SCA,AA,AT,AP
sparkno=-1
guard.sparkno=-1
pausetime=9+random%13,0
ignorehitpause=1
紅色部分與hitdef相同,不多做贅述(實(shí)際上hitdef、reversaldef、projeile三者有很多重復(fù)的參量)
reversaldef的優(yōu)點(diǎn)在于不會(huì)被其他控制器干擾,并且可以通過(guò)自己的helper觸發(fā)
同時(shí)也可以給予對(duì)方hitpausetime,只要將pausetime的第二個(gè)數(shù)字修改即可
1.1.4 512超越范例
這里我只是寫出典型的512超越范例,各種派生技術(shù),之后在寫
獲取了hitpausetime之后,轉(zhuǎn)移到有對(duì)應(yīng)控制器數(shù)量的狀態(tài),即可發(fā)生溢出修改對(duì)應(yīng)內(nèi)存位置的值,注意修改對(duì)應(yīng)位置的控制器,其ignorehitpause=1這條必須要有(自己加上即可),這樣才會(huì)在有hitpausetime的時(shí)候真正工作
需要注意的是除了親變更以外(至于隔離輔助需不需要刷那么多,我也不知道),大部分控制器個(gè)數(shù)在500多個(gè),這個(gè)區(qū)域是自己的內(nèi)存,所以要么是自己進(jìn)去刷自己的值(如palno,damage等)要么是讓對(duì)方進(jìn)去刷值(如超即死),所以很容易理解,對(duì)脫離效果很弱(應(yīng)該不會(huì)有人寫ignorehitpause=0的脫離的吧)
;超即死
[statedef 99999999]
type = U
movetype = U
physics = N
ctrl = 0
[state 1]?
type=null
trigger1=1
[state 2]
type=null
trigger1=1
[state 3]?
type=null
trigger1=1
……
……
……
[state 553]?
type=null
trigger1=1
ignorehitpause=1
[state 554]?
type=null
trigger1= 1
ignorehitpause=1
[state 555]?
type=null
trigger1= 1
ignorehitpause=1
[state 556]?
type=null
trigger1= 1
ignorehitpause=1
state之后的數(shù)字是控制器的編號(hào),方便記憶自己寫了多少個(gè)
553-556是自身alive的位置,所以這些控制器下要加ignorehitpause=1,即可超即死對(duì)方(是讓對(duì)方進(jìn)入這個(gè)狀態(tài),不是自己進(jìn)去,自己進(jìn)去對(duì)面死,那是直死,需要的控制器……嗯6、7千個(gè)吧……)
1.2 porj親為本體
看起來(lái)比較難理解,畢竟親(parent)、本體(root)是比較編程的講法,但是制作神級(jí)不需要懂那么多,這里我也不會(huì)
需要知道的只是,你的helper發(fā)出的proj(飛行道具,mugen中所有的飛行道具定義為有projectile控制器產(chǎn)生的),相當(dāng)于你本體發(fā)出的
那么關(guān)鍵的一點(diǎn)是其中的p1stateno屬性(p1跳轉(zhuǎn)狀態(tài),即proj擊中對(duì)方后,自己會(huì)跳轉(zhuǎn)到指定狀態(tài))會(huì)作用在你的本體上,而不是你的helper上,也就是說(shuō)你的helper發(fā)出一個(gè)proj擊中了別人,假如這個(gè)proj有一個(gè)p1stateno的屬性,那么你的本體會(huì)跳轉(zhuǎn)到指定狀態(tài)而非發(fā)出proj的helper
proj bug是mugen神級(jí)最直接的殺傷手段,絕大部分常用技術(shù)建立在proj bug上,這類技術(shù)統(tǒng)稱proj返
1.2.1?proj返范例
以下是我人物中的proj返,在這里并不詳細(xì)寫各種proj返的范例,只是指出關(guān)鍵的屬性,具體派生技術(shù)會(huì)在之后寫
[State Projectile];欠損殺手?
type =Projectile
trigger1=root,alive
trigger1=root,name="E youmu"
projId=1
attr = C,NP
projanim =231
projpriority = 999
numhits = 0
projscale = 1,1
sparkno = -1
hitsound ?= -1
projremovetime = 100
projedgebound = 9999
projstagebound = 9999
projheightbound = -9999,9999
hitflag = MAFD
hitonce = 1
postype = p1
offset = 0,99
pausetime = 0,0
p1stateno =ifelse(root,gethitvar(fall.damage),5110,4026)
projsprpriority = -1
ignorehitpause = 1
supermovetime = 2147483647
Pausemovetime = 2147483647
紅色部分即為proj返的關(guān)鍵,擊中后就會(huì)將本體跳轉(zhuǎn)到指定的狀態(tài)號(hào),從而達(dá)成殺傷的效果
一般proj返是配合混線讓對(duì)方的helper發(fā)射,從而達(dá)到控制對(duì)方狀態(tài)的目的
因?yàn)橐话闶亲寣?duì)方helper發(fā)射proj,所以注意的地方較多,我會(huì)之后寫
1.3 永續(xù)target和混線
現(xiàn)在狂級(jí)也很常見(jiàn)的利用,就是獲取對(duì)方target之后,用一個(gè)時(shí)常觸發(fā)的reversaldef控制器,能保持對(duì)方target不丟失,從而利用target操控的控制器操控對(duì)方
常用的target利用有targetstate,targetlifeadd,targetbind等,很基礎(chǔ)的內(nèi)容,不多做介紹
具體的target操作寫法,會(huì)后續(xù)補(bǔ)充,這里主要介紹混線
1.3.1混線bug
混線的基礎(chǔ)有兩部分組成,永續(xù)target和混線bug(找不到合適的形容)
混線bug指的是,mugen有60個(gè)分配給角色和helper的內(nèi)存空間,其中第1、2、3、4分別是1p、2p、3p、4p,剩下的56個(gè)就是分配給helper的
當(dāng)一個(gè)helper被消除的時(shí)候,其內(nèi)存空間會(huì)空出來(lái),新生成的helper就會(huì)占據(jù)這個(gè)位置
但是當(dāng)被消除的helper1被另一個(gè)helper2獲取了target的時(shí)候(比較繞),后來(lái)填充到這個(gè)位置的helper3,會(huì)被helper2獲取target,即后來(lái)填充的helper會(huì)被helper2所操控
當(dāng)然你只需要知道自己的helper能通過(guò)混線操控后來(lái)填充進(jìn)來(lái)的helper就行了(雙方的都可以)
所謂的混線,就是召喚helper然后獲取其中一部分的target,然后將這部分helper消除,之后等待對(duì)方helper踏入被取得target的位置
1.3.2 混線種類
混線有多種種類,以下做出講解
普通混線:說(shuō)實(shí)話現(xiàn)在很少有普通混線,而且普通混線也不是一個(gè)準(zhǔn)確的定義,我只是為了和之后介紹的完全混線區(qū)分開(kāi)而使用,指的就是普通的混線,不占滿所有helper位置,會(huì)導(dǎo)致對(duì)方一開(kāi)始召喚的helper無(wú)法混線,因?yàn)榇蟛糠纸巧年P(guān)鍵helper都是一開(kāi)始召喚的,所以普通混線的效果十分有限
完全混線:開(kāi)幕直接將所有helper的位置占滿的混線,有點(diǎn)顯而易見(jiàn),對(duì)方所有召喚出的helper都會(huì)進(jìn)入混線的范圍內(nèi),不會(huì)有遺漏,除非自己處于p2側(cè),對(duì)方一開(kāi)始召喚的helper必定無(wú)法混線,這就是大部分神在2p側(cè)殺傷力急劇下降的原因
這是根據(jù)開(kāi)幕占有情況的劃分
多重混線:mugen中一個(gè)對(duì)象最多能獲取8個(gè)target,讓一個(gè)helper獲取1個(gè)以上target的就是多重混線,因?yàn)?對(duì)8的精度會(huì)不夠,對(duì)親變更、gametime貫通等技術(shù)的兼容也不是很好,多見(jiàn)于遠(yuǎn)古神,親變更時(shí)代之后就很少出現(xiàn)了,硬要說(shuō)優(yōu)點(diǎn)的話……使用helper少演出能更豐富?
并列混線:一個(gè)helper對(duì)應(yīng)一個(gè)target,最泛用的形式,同時(shí)完美契合親變更,之后我會(huì)給出范例
重復(fù)混線:多個(gè)helper對(duì)應(yīng)一個(gè)target,據(jù)說(shuō)alaph zero的作者かませ氏就是使用的重復(fù)混線,很難講和并列混線誰(shuí)優(yōu)誰(shuí)劣,かませ氏的角色,他的角色在神最上測(cè)試?yán)锍煽?jī)也不錯(cuò),我覺(jué)得最后的差距不在并列混線和重復(fù)混線上
1.3.3 混線結(jié)構(gòu)
這部分講的是開(kāi)幕召喚helper的部分,可能也是本章最接近實(shí)戰(zhàn)的部分
首先,除了混線用的helper以外,神級(jí)還需要其他的輔助helper,例如永續(xù)、受擊、簡(jiǎn)單探查等
分配好這些helper的召喚順序,就是混線結(jié)構(gòu)
一般來(lái)說(shuō)結(jié)構(gòu)按照這樣的邏輯
第一層:各種功能性helper
第二層:混線helper和占有helper
第三層:最終helper(有些結(jié)構(gòu)為了配合親變更使用的,可以不要)
這樣將所有helper位置占據(jù)
以下是我使用的范例,數(shù)字表示在player列表中的位置,具體helper召喚的寫法我想有志于了解神級(jí)的人應(yīng)該不需要教了吧
1:本體
2:對(duì)方
3:/
4:/
5:裝甲
6:noko
7:時(shí)止解除確保/時(shí)止解除
8:受擊helper
9:making
10:anim習(xí)得用helper
11:state習(xí)得用helper
12:并列混線目標(biāo)1
13:并列混線1
14:并列混線目標(biāo)2
15:并列混線2
16:并列混線目標(biāo)3
17:并列混線3
18:并列混線目標(biāo)4
19:并列混線4
20:并列混線目標(biāo)5
21:并列混線5
22:并列混線目標(biāo)6
23:并列混線6
24:并列混線目標(biāo)7
25:并列混線7
26:并列混線目標(biāo)8
27:并列混線8
28:并列混線目標(biāo)10
29:并列混線10
30:并列混線目標(biāo)11
31:并列混線11
32:并列混線目標(biāo)12
33:并列混線12
34:并列混線目標(biāo)13
35:并列混線13
36:并列混線目標(biāo)14
37:并列混線14
38:并列混線目標(biāo)15
39:并列混線15
40:并列混線目標(biāo)16
41:并列混線16
42:并列混線目標(biāo)17
43:并列混線17
44:并列混線目標(biāo)18
45:并列混線18
46:并列混線目標(biāo)19
47:并列混線19
48:并列混線目標(biāo)20
49:并列混線20
50:并列混線目標(biāo)21
51:并列混線21
52:并列混線目標(biāo)22
53:并列混線22
54:并列混線目標(biāo)23
55:并列混線23
56:并列混線目標(biāo)24
57:并列混線24
58:占有
59:final
當(dāng)然混線結(jié)構(gòu)有很大的自由性,可以隨意參考,我也只是列出我使用的(也許過(guò)時(shí)了很久)
召喚helper時(shí)需要注意的是,混線helper和占有helpe的位置(pos)應(yīng)當(dāng)一一對(duì)應(yīng),以防互相干擾,并列混線來(lái)說(shuō),就是一個(gè)混線和一個(gè)占有的位置一樣,下一對(duì)在其他位置
1.3.4 混線helper
以下為并列混線基本模板(不兼容親變更,親變更兼容版本我后續(xù)再講(您會(huì)嗎?))
;混線
[statedef 100000]
type=a
movetype=i
physics=n
anim=20000000;(攻擊判定anim)
[State 1611, ]
type = ScreenBound
trigger1 = 1
value = 1
movecamera = 0,0
[state ]
type=nothitby
trigger1=ishelper
value=sca,aa,at,ap
time=-1
ignorehitpause=1
防止被干擾的設(shè)定
[state ];攻擊判定anim切換,hitdef攻擊
type=changeanim
trigger1=ishelper(1001)
trigger1=numtarget=0
trigger1=numhelper(1002)>0
trigger2=ishelper(1003)
trigger2=numtarget=0
trigger2=numhelper(1004)>0
trigger3=ishelper(1005)
trigger3=numtarget=0
trigger3=numhelper(1006)>0
trigger4=ishelper(1007)
trigger4=numtarget=0
trigger4=numhelper(1008)>0
trigger5=ishelper(1009)
trigger5=numtarget=0
trigger5=numhelper(1010)>0
trigger6=ishelper(1011)
trigger6=numtarget=0
trigger6=numhelper(1012)>0
trigger7=ishelper(1013)
trigger7=numtarget=0
trigger7=numhelper(1014)>0
trigger8=ishelper(1015)
trigger8=numtarget=0
trigger8=numhelper(1016)>0
trigger9=ishelper(1017)
trigger9=numtarget=0
trigger9=numhelper(1018)>0
trigger10=ishelper(1019)
trigger10=numtarget=0
trigger10=numhelper(1020)>0
trigger11=ishelper(1021)
trigger11=numtarget=0
trigger11=numhelper(1022)>0
trigger12=ishelper(1023)
trigger12=numtarget=0
trigger12=numhelper(1024)>0
trigger13=ishelper(1025)
trigger13=numtarget=0
trigger13=numhelper(1026)>0
trigger14=ishelper(1027)
trigger14=numtarget=0
trigger14=numhelper(1028)>0
trigger15=ishelper(1029)
trigger15=numtarget=0
trigger15=numhelper(1030)>0
trigger16=ishelper(1031)
trigger16=numtarget=0
trigger16=numhelper(1032)>0
trigger17=ishelper(1033)
trigger17=numtarget=0
trigger17=numhelper(1034)>0
trigger18=ishelper(1035)
trigger18=numtarget=0
trigger18=numhelper(1036)>0
trigger19=ishelper(1037)
trigger19=numtarget=0
trigger19=numhelper(1038)>0
trigger20=ishelper(1039)
trigger20=numtarget=0
trigger20=numhelper(1040)>0
trigger21=ishelper(1041)
trigger21=numtarget=0
trigger21=numhelper(1042)>0
trigger22=ishelper(1043)
trigger22=numtarget=0
trigger22=numhelper(1044)>0
trigger23=ishelper(1045)
trigger23=numtarget=0
trigger23=numhelper(1046)>0
trigger24=ishelper(1047)
trigger24=numtarget=0
trigger24=numhelper(1048)>0
value=20000002
ignorehitpause=1
沒(méi)什么可說(shuō)的,混線要獲取target的話,需要hitdef,所以必定是帶紅框的動(dòng)畫,條件一般是自己沒(méi)有helper,而且對(duì)應(yīng)的占用helper id已經(jīng)出現(xiàn)
[state ];狀態(tài)轉(zhuǎn)換,hitdef生效
type=statetypeset
trigger1=ishelper(1001)
trigger1=numtarget=0
trigger1=numhelper(1002)>0
trigger2=ishelper(1003)
trigger2=numtarget=0
trigger2=numhelper(1004)>0
trigger3=ishelper(1005)
trigger3=numtarget=0
trigger3=numhelper(1006)>0
trigger4=ishelper(1007)
trigger4=numtarget=0
trigger4=numhelper(1008)>0
trigger5=ishelper(1009)
trigger5=numtarget=0
trigger5=numhelper(1010)>0
trigger6=ishelper(1011)
trigger6=numtarget=0
trigger6=numhelper(1012)>0
trigger7=ishelper(1013)
trigger7=numtarget=0
trigger7=numhelper(1014)>0
trigger8=ishelper(1015)
trigger8=numtarget=0
trigger8=numhelper(1016)>0
trigger9=ishelper(1017)
trigger9=numtarget=0
trigger9=numhelper(1018)>0
trigger10=ishelper(1019)
trigger10=numtarget=0
trigger10=numhelper(1020)>0
trigger11=ishelper(1021)
trigger11=numtarget=0
trigger11=numhelper(1022)>0
trigger12=ishelper(1023)
trigger12=numtarget=0
trigger12=numhelper(1024)>0
trigger13=ishelper(1025)
trigger13=numtarget=0
trigger13=numhelper(1026)>0
trigger14=ishelper(1027)
trigger14=numtarget=0
trigger14=numhelper(1028)>0
trigger15=ishelper(1029)
trigger15=numtarget=0
trigger15=numhelper(1030)>0
trigger16=ishelper(1031)
trigger16=numtarget=0
trigger16=numhelper(1032)>0
trigger17=ishelper(1033)
trigger17=numtarget=0
trigger17=numhelper(1034)>0
trigger18=ishelper(1035)
trigger18=numtarget=0
trigger18=numhelper(1036)>0
trigger19=ishelper(1037)
trigger19=numtarget=0
trigger19=numhelper(1038)>0
trigger20=ishelper(1039)
trigger20=numtarget=0
trigger20=numhelper(1040)>0
trigger21=ishelper(1041)
trigger21=numtarget=0
trigger21=numhelper(1042)>0
trigger22=ishelper(1043)
trigger22=numtarget=0
trigger22=numhelper(1044)>0
trigger23=ishelper(1045)
trigger23=numtarget=0
trigger23=numhelper(1046)>0
trigger24=ishelper(1047)
trigger24=numtarget=0
trigger24=numhelper(1048)>0
type=a
movetype=a
physics=n
ignorehitpause=1
hitdef需要movetype=A才能生效,所以需要狀態(tài)轉(zhuǎn)換
[State ];目標(biāo)取得用hitdef
type=hitdef
triggerall = (root,var(49) & 2)
triggerall =enemy,name!="Rasetsu-K"?
trigger1=ishelper(1001)
trigger1=numtarget=0
trigger1=numhelper(1002)>0
trigger2=ishelper(1003)
trigger2=numtarget=0
trigger2=numhelper(1004)>0
trigger3=ishelper(1005)
trigger3=numtarget=0
trigger3=numhelper(1006)>0
trigger4=ishelper(1007)
trigger4=numtarget=0
trigger4=numhelper(1008)>0
trigger5=ishelper(1009)
trigger5=numtarget=0
trigger5=numhelper(1010)>0
trigger6=ishelper(1011)
trigger6=numtarget=0
trigger6=numhelper(1012)>0
trigger7=ishelper(1013)
trigger7=numtarget=0
trigger7=numhelper(1014)>0
trigger8=ishelper(1015)
trigger8=numtarget=0
trigger8=numhelper(1016)>0
trigger9=ishelper(1017)
trigger9=numtarget=0
trigger9=numhelper(1018)>0
trigger10=ishelper(1019)
trigger10=numtarget=0
trigger10=numhelper(1020)>0
trigger11=ishelper(1021)
trigger11=numtarget=0
trigger11=numhelper(1022)>0
trigger12=ishelper(1023)
trigger12=numtarget=0
trigger12=numhelper(1024)>0
trigger13=ishelper(1025)
trigger13=numtarget=0
trigger13=numhelper(1026)>0
trigger14=ishelper(1027)
trigger14=numtarget=0
trigger14=numhelper(1028)>0
trigger15=ishelper(1029)
trigger15=numtarget=0
trigger15=numhelper(1030)>0
trigger16=ishelper(1031)
trigger16=numtarget=0
trigger16=numhelper(1032)>0
trigger17=ishelper(1033)
trigger17=numtarget=0
trigger17=numhelper(1034)>0
trigger18=ishelper(1035)
trigger18=numtarget=0
trigger18=numhelper(1036)>0
trigger19=ishelper(1037)
trigger19=numtarget=0
trigger19=numhelper(1038)>0
trigger20=ishelper(1039)
trigger20=numtarget=0
trigger20=numhelper(1040)>0
trigger21=ishelper(1041)
trigger21=numtarget=0
trigger21=numhelper(1042)>0
trigger22=ishelper(1043)
trigger22=numtarget=0
trigger22=numhelper(1044)>0
trigger23=ishelper(1045)
trigger23=numtarget=0
trigger23=numhelper(1046)>0
trigger24=ishelper(1047)
trigger24=numtarget=0
trigger24=numhelper(1048)>0
attr=,na
damage=0,0
numhits=0
guardflag=
hitflag=mafdp
priority=7,hit
pausetime=0,10
sparkno = -1
hitsound = -1
affectteam=f;(重要)
ignorehitpause=1
hitdef部分,以上的affectteam=F是關(guān)鍵,有這個(gè)屬性hitdef才能攻擊到自己的helper取得target
[state ];判定無(wú)anim,保護(hù)
type=changeanim
trigger1=ishelper && numtarget?
value=1
ignorehitpause=1
切換動(dòng)畫到無(wú)框的空白動(dòng)畫,不必須,只是一種保護(hù)和開(kāi)關(guān)
[state ];維持
type=reversaldef
trigger1=ishelper && numtarget?
reversal.attr=sca,aa,at,ap
priority=2147483647
pausetime=0,0
sparkno=-1
hitsound=-1
ignorehitpause=1
[State 0, VarSet]
type = VarSet
trigger1 = ishelper && !numtarget?
v = 51 ? ?;fv = 10
value = 0
ignorehitpause =1?
維持永續(xù)target
[State ];狀態(tài)轉(zhuǎn)換,保護(hù)
type=statetypeset
trigger1=ishelper && numtarget?
type=a
movetype=i
physics=n
ignorehitpause=1
切換狀態(tài),不必須,只是一種保護(hù)和開(kāi)關(guān)
;helper定位?
[State 18001]
type = Bindtoroot
trigger1 = ishelper(1001)||ishelper(1003)||ishelper(1005)||ishelper(1007)||ishelper(1009)||ishelper(1011)||ishelper(1013)||ishelper(1015)
pos = 0,ishelper(1001)+ishelper(1003)*1000+ishelper(1005)*2000+ishelper(1007)*3000+ishelper(1009)*4000+ishelper(1011)*5000+ishelper(1013)*6000+ishelper(1015)*7000
ignorehitpause = 1
;定位2?
[State 18001]
type = Bindtoroot
trigger1 = ishelper(1017)||ishelper(1019)||ishelper(1021)||ishelper(1023)||ishelper(1025)||ishelper(1027)||ishelper(1029)||ishelper(1031)
pos = 0,ishelper(1017)*8000+ishelper(1019)*9000+ishelper(1021)*10000+ishelper(1023)*11000+ishelper(1025)*12000+ishelper(1027)*13000+ishelper(1029)*14000+ishelper(1031)*15000
ignorehitpause = 1
;定位3
[State 18001]
type = Bindtoroot
trigger1 = ishelper(1033)||ishelper(1035)||ishelper(1037)||ishelper(1039)||ishelper(1041)||ishelper(1043)||ishelper(1045)||ishelper(1047)
pos = 0,ishelper(1033)*8000+ishelper(1035)*9000+ishelper(1037)*10000+ishelper(1039)*11000+ishelper(1041)*12000+ishelper(1043)*13000+ishelper(1045)*14000+ishelper(1047)*15000
ignorehitpause = 1
helper位置綁定,寫法不唯一,也可以用posset之類的寫,不過(guò)以本體為參考的bindtoroot也許更精確一點(diǎn),注意每個(gè)位置都不同,以及與之后占有helper的位置對(duì)應(yīng)
[State 2004,5];獲得目標(biāo)綁定到本體,以便于監(jiān)視
type = BindToRoot
trigger1 = ishelper
trigger1 = NumTarget > 0
IgNoreHitPause = 1?
[State 2004,5];獲得目標(biāo)綁定到本體,以便于監(jiān)視
type = targetbind
trigger1 = ishelper
trigger1 = NumTarget > 0
pos = 0,0
IgNoreHitPause = 1?
1.3.5?占有helper
說(shuō)實(shí)話,一個(gè)出來(lái)被打一下就消失的helper沒(méi)什么技術(shù)含量的地方(親變更另說(shuō),其實(shí)也沒(méi)多少)
以下為范例(依舊是非親變更兼容版)
;混線target?
[statedef 100001]
type=s
movetype=h
physics=n
anim=20000001;受擊判斷anim
很自然,是帶藍(lán)框的動(dòng)畫,同時(shí)注意movetype=h
[State 1611, ]
type = ScreenBound
trigger1 = 1
value = 1
movecamera = 0,0
[state ]
type=hitby
Trigger1 = ishelper(1002) && !helper(1001),numtarget
Trigger2 = ishelper(1004) && !helper(1003),numtarget
Trigger3 = ishelper(1006) && !helper(1005),numtarget
Trigger4 = ishelper(1008) && !helper(1007),numtarget
Trigger5 = ishelper(1010) && !helper(1009),numtarget
Trigger6 = ishelper(1012) && !helper(1011),numtarget
Trigger7 = ishelper(1014) && !helper(1013),numtarget
Trigger8 = ishelper(1016) && !helper(1015),numtarget
Trigger9 = ishelper(1018) && !helper(1017),numtarget
Trigger10 = ishelper(1020) && !helper(1019),numtarget
Trigger11 = ishelper(1022) && !helper(1021),numtarget
Trigger12 = ishelper(1024) && !helper(1023),numtarget
Trigger13 = ishelper(1026) && !helper(1025),numtarget
Trigger14 = ishelper(1028) && !helper(1027),numtarget
Trigger15 = ishelper(1030) && !helper(1029),numtarget
Trigger16 = ishelper(1032) && !helper(1031),numtarget
Trigger17 = ishelper(1034) && !helper(1033),numtarget
Trigger18 = ishelper(1036) && !helper(1035),numtarget
Trigger19 = ishelper(1038) && !helper(1037),numtarget
Trigger20 = ishelper(1040) && !helper(1039),numtarget
Trigger21 = ishelper(1042) && !helper(1041),numtarget
Trigger22 = ishelper(1044) && !helper(1043),numtarget
Trigger23 = ishelper(1046) && !helper(1045),numtarget
Trigger24 = ishelper(1048) && !helper(1047),numtarget
value=sca,na
ignorehitpause=1
確定自己會(huì)被打到的hitby控制器
[State ];取得target后消除,
type=destroyself
Trigger1 = ishelper(1002) && helper(1001),numtarget
Trigger2 = ishelper(1004) && helper(1003),numtarget
Trigger3 = ishelper(1006) && helper(1005),numtarget
Trigger4 = ishelper(1008) && helper(1007),numtarget
Trigger5 = ishelper(1010) && helper(1009),numtarget
Trigger6 = ishelper(1012) && helper(1011),numtarget
Trigger7 = ishelper(1014) && helper(1013),numtarget
Trigger8 = ishelper(1016) && helper(1015),numtarget
Trigger9 = ishelper(1018) && helper(1017),numtarget
Trigger10 = ishelper(1020) && helper(1019),numtarget
Trigger11 = ishelper(1022) && helper(1021),numtarget
Trigger12 = ishelper(1024) && helper(1023),numtarget
Trigger13 = ishelper(1026) && helper(1025),numtarget
Trigger14 = ishelper(1028) && helper(1027),numtarget
Trigger15 = ishelper(1030) && helper(1029),numtarget
Trigger16 = ishelper(1032) && helper(1031),numtarget
Trigger17 = ishelper(1034) && helper(1033),numtarget
Trigger18 = ishelper(1036) && helper(1035),numtarget
Trigger19 = ishelper(1038) && helper(1037),numtarget
Trigger20 = ishelper(1040) && helper(1039),numtarget
Trigger21 = ishelper(1042) && helper(1041),numtarget
Trigger22 = ishelper(1044) && helper(1043),numtarget
Trigger23 = ishelper(1046) && helper(1045),numtarget
Trigger24 = ishelper(1048) && helper(1047),numtarget
ignorehitpause = 1
確認(rèn)對(duì)應(yīng)混線獲得helper后消除,寫法不唯一,也可以讓混線helper用targetstate丟進(jìn)消除state里消除,也可以自己用selfstate來(lái)我?消?我 自?己
;helper定位?
[State 18001]
type = Bindtoroot
trigger1 =?ishelper(1002)||ishelper(1004)||ishelper(1006)||ishelper(1008)||ishelper(1010)||ishelper(1012)||ishelper(1014)||ishelper(1016)
pos = 0,ishelper(1002)+ishelper(1004)*1000+ishelper(1006)*2000+ishelper(1008)*3000+ishelper(1010)*4000+ishelper(1012)*5000+ishelper(1014)*6000+ishelper(1016)*7000
ignorehitpause = 1
;定位2?
[State 18001]
type = Bindtoroot
trigger1 = ishelper(1018)||ishelper(1020)||ishelper(1022)||ishelper(1024)||ishelper(1026)||ishelper(1028)||ishelper(1030)||ishelper(1032)
pos = 0,ishelper(1018)*8000+ishelper(1020)*9000+ishelper(1022)*10000+ishelper(1024)*11000+ishelper(1026)*12000+ishelper(1028)*13000+ishelper(1030)*14000+ishelper(1032)*15000
ignorehitpause = 1
;定位3
[State 18001]
type = Bindtoroot
trigger1 = ishelper(1034)||ishelper(1036)||ishelper(1038)||ishelper(1040)||ishelper(1042)||ishelper(1044)||ishelper(1046)||ishelper(1048)
pos = 0,ishelper(1034)*8000+ishelper(1036)*9000+ishelper(1038)*10000+ishelper(1040)*11000+ishelper(1042)*12000+ishelper(1044)*13000+ishelper(1046)*14000+ishelper(1048)*15000
ignorehitpause = 1
helper位置綁定,寫法不唯一,與對(duì)應(yīng)混線位置一一對(duì)應(yīng)
需要注意的是,以上兩個(gè)模板,和我給的混線結(jié)構(gòu)模板并不是對(duì)應(yīng)的,自己寫的時(shí)候請(qǐng)自己考慮模板