「リダイレクト」の編集履歴(バックアップ)一覧はこちら
リダイレクト - (2013/02/06 (水) 12:52:58) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
----
*■リダイレクトについて
----
:※解説修正情報※|
●&font(12,b){2013-01-15:Targetのリダイレクト先について修正。}
●&font(12,b){2013-01-14:Helperのリダイレクト先について修正。}
----
[[トリガー情報>トリガー情報の一覧]]の前につけることで''指定した相手のトリガー情報''を利用できる。
P2系との違いの解説も。
:リダイレクトの種類|
-''大原則''
--リダイレクトの相手が存在しない場合、条件は上手く処理されない。(0)扱い?
--[[デバッグ]]表示時エラーが流れるため 必ずリダイレクト相手を確認してから使用すること。
---Triggerは一行ごとの参照のため、確認は前の行でNumXXX>0~1を行うこと。
--リダイレクトのリダイレクトはできない。Enemy,Helper,XXXは不可。
-ヘルパー専用
--''Parent,'':自分を射出したキャラを参照。Helperからの射出ならその親Helperを。
---親Helperが既に消失し、存在しない場合エラーが流れるため注意。
--''Root,'':自分を管理しているプレイヤーキャラを参照。Helperからの射出でも本体を。
-ヘルパーを
--''Helper(ヘルパーID).'':指定したヘルパーIDを持つHelperを参照。
---NumHelper(ヘルパーID)>0で数を確認してから使うこと。
---参照できるのは「自分側のHelper」に限る。
----一応、自分のHelperから他の自分のHelperを参照することは可能。
---なお該当Helperが複数ある場合は、その中で最も[[スロットID]]の若いHelperを参照する。
-味方を
--''Partner.'':タッグ時のパートナーを参照。
---NumPartner>0を確認して使うこと。
-相手を
--''Enemy.'':相手を参照。()省略時は(0)と同様。
---''Enemy(0).'':相手の中の1人目を参照。
---''Enemy(1).'':相手の中の2人目を参照。
--''EnemyNear.'':近くの相手を参照。()省略時は(0)と同様。
---''EnemyNear(0).'':相手の中で(X軸基準の)一番近い相手を参照。
---''EnemyNEar(1).'':相手の中で(X軸基準の)二番目に近い相手を参照。
--(1)系の二人目認識はNumEnemy>1を確認して使うこと。
---(0)用のNumEnemy>0は気にする必要はない。
-[[Target]]を 詳しい仕様は該当ページを参照
--''Target,'':攻撃を当てた相手を参照。
---''Target(ヒットID),'':特定の攻撃を当てた相手を参照。
--NumTarget>0、NumTarget(ヒットID)>0を確認して使うこと。
--該当するTargetが複数の場合
---参照先は基本「先にTargetを取った相手」を参照する。
---同時ヒットの場合''攻撃を当てた時点のGameTimeの奇数偶数''で&br()&b(){[[スロットID]]の若い方・大きい方どちらか}が決まる。
---同時時:[[GetHitVar(Damage)>T-/GetHitVar()]]反応時点で偶数ならスロットIDの若い方。奇数ならスロットIDの大きい方。
---同時の対象が3体以上いる場合、スロットIDの一番小さい方・一番大きい方以外は参照されない。
---[[T-/MoveHit]]/[[T-/MoveGuarded]]などヒット・ガードで処理が異なるものすべて、&br()''Target,で参照する側を基本として、もう片方側は反応しない''
----ヒットガードが同時でもTargetで参照する側がガードなら&br()[[T-/MoveGuarded]]などガード系のみ反応し[[T-/MoveHit]]などヒット系は反応しない。
----その際攻撃のPauseTime系もTargetで参照する側ヒットガードを基準とする。
--またステートコントローラーのパラメータ内でTarget,リダイレクトを行うとフリーズすることがある。
---Varに格納して直接パラメータ内への記述を避けることで回避できる。
-特定のキャラを
--&b(){PlayerID([[キャラID>T-/ID]]),}:指定したキャラID([[T-/ID]])のキャラを参照。
---PlayerIDExist(キャラID)=1で確認して使うこと。
--キャラIDを指定できれば相手のHelperでも参照できる。
-なお()内に入れる数字は数式・条件式などでも良い。
----
**■Lv1-使用例・補足・注意点
:記述例|
#aa(){{
[State 190, test]
Type = varset
TriggerAll = !time
Trigger1 = NumPartner > 0
Trigger1 = Partner,Name = "Apple"
Trigger2 = Enemy,Name = "Apple" || Enemy(NumEnemy>1),Name = "Apple"
var(12) = 1
;他のプレイヤーキャラの中に「Apple」というNameのキャラがいないかどうか。
;Trigger2はのEnemy(numenemy>1)は「相手が二人以上なら1=二人目へリダイレクト」の記述。
;相手が一人の場合は(NumEnemy>1)=0なのでEnemy(0),のリダイレクトになる。
}}
:Enemy系リダイレクトとP2系トリガー情報の違い|
-P2系トリガーの情報
--[[T-/P2BodyDist X]]・[[T-/P2BodyDist Y]]・[[T-/P2Dist X]]・[[T-/P2Dist Y]]
--[[T-/P2Life]]・[[T-/P2MoveType]]・[[T-/P2Name]]・[[T-/P2StateNo]]・[[T-/P2StateType]]
--Dist(距離)の情報はP2にしか存在しない。
-参照できる相手
--Enemy系:Helperでない''プレイヤーキャラに限る''。''相手の状態に関わらず参照''。
--P2系:プレイヤーキャラ加え''HelperType=PlayerのHelperも含む''最もX軸の近い相手を参照。
---ただしP2系はStateNo=5150(死亡ステート)にいる相手を参照できない。
---反対にEnemy系は、相手が死んでいても参照してしまう為、制御する必要がある。
-どっちがいいの?
--簡素な仕組みを予定していればP2で構わない。
--ただ参照を制御できるならEnemyNearを利用する方が良い。Dist系はP2でいいが。
-なお、P2系は相手の情報を表示するが「自分のトリガー情報」のため、リダイレクトは使用可能。
:ヘルパーからRoot,Perent,系リダイレクトをする際の注意点|
-[[ステートを奪われている場合>ステート奪取]]、想定外の情報が入る危険がある。
-その為[[T-/Command]]を代表とし[[T-/StateNo]][[T-/Anim]]などは絶対に不可である。
--なおRoot,[[Movetype=H>T-/Movetype]]といった限定方法は不完全。
---奪われている時のステートががMoveType=H以外である場合、暴発する。
----
**■Lv3-細かい技術
:EnemyNear,リダイレクトの制御|
準備:Varを1つ用意する。例では11を使用。実際には空きVarを利用すること。
#aa(){
[State -3, EnemyNear Alive];-3ステートに置く。
Type = varset
Trigger1 = 1
var(11) = ( NumEnemy > 1 && EnemyNear,Alive = 0 )
;相手が二人以上で一番近い相手が死んでいるなら(1)を、そうでないなら(0)を指定。
;EnemyNearをEnemynear(var(11)),とすることで、生きている一番近い相手を参照できる。
}
----
----
*■リダイレクトについて
----
:※解説修正情報※|
●&font(12,b){2014-10-12:Targetのリダイレクト先について。Targetスロットの概念}
●&font(12,b){2013-01-15:Targetのリダイレクト先について修正。}
●&font(12,b){2013-01-14:Helperのリダイレクト先について修正。}
----
[[トリガー情報>トリガー情報の一覧]]の前につけることで''指定した相手のトリガー情報''を利用できる。
P2系との違いの解説も。
:リダイレクトの種類|
-''大原則''
--リダイレクトの相手が存在しない場合、条件は上手く処理されない。(0)扱い?
--[[デバッグ]]表示時エラーが流れるため 必ずリダイレクト相手を確認してから使用すること。
---Triggerは一行ごとの参照のため、確認は前の行でNumXXX>0~1を行うこと。
--リダイレクトのリダイレクトはできない。Enemy,Helper,XXXは不可。
-ヘルパー専用
--''Parent,'':ペアレント(親)。自分を射出したキャラを参照。Helperからの射出ならその親Helperを。
---親がHelperで既に消失していて存在しない場合エラーが流れるため注意。
---親自体の存在を参照するトリガー情報は存在しない。
--''Root,'':ルート(管理者)。自分を管理しているプレイヤーキャラを参照。Helperからの射出でも本体を。
--ParentとRootの違い。例えば本体からHelperA、AからHelperB、BからCを射出した場合、
---本体→A→B→Cの内、 ABCどれからも本体を参照するのが''Root,''
---Aから本体、BからA、CからBを参照するのが''Parent,''
-ヘルパーを
--''Helper(ヘルパーID),'':指定したヘルパーIDを持つHelperを参照。
---[[NumHelper(ヘルパーID)>T-/NumHelper]]>0で数を確認してから使うこと。
---参照できるのは「自分側のHelper」に限る。
----一応、自分のHelperから他の自分のHelperを参照することは可能。
-----本体が同じなら、Helperから射出されたHelperでも参照可能。
----パートナーのHelperは参照できない。
---なお該当Helperが複数ある場合は、その中で最も[[スロットID]]の若いHelperを参照する。
-味方を
--''Partner,'':タッグ時のパートナーを参照。
---[[NumPartner>T-/NumPartner]]>0を確認して使うこと。
-相手を
--''Enemy,'':相手を参照。()省略時は(0)と同様。
---''Enemy(0),'':相手の中の1人目を参照。
---''Enemy(1),'':相手の中の2人目を参照。
--''EnemyNear,'':近くの相手を参照。()省略時は(0)と同様。
---''EnemyNear(0),'':相手の中で(X軸基準の)一番近い相手を参照。
---''EnemyNEar(1),'':相手の中で(X軸基準の)二番目に近い相手を参照。
--(1)系の二人目認識は[[NumEnemy>T-/NumEnemy]]>1を確認して使うこと。
---(0)用のNumEnemy>0は気にする必要はないがしてもよい。
---特殊な状況でなければEnemy(0),がいないことは無いが。
-[[Target]]を 詳しい仕様は該当ページを参照
--''Target,'':攻撃を当てた相手を参照。
---''Target(ヒットID),'':特定の攻撃を当てた相手を参照。
--[[NumTarget>T-/NumTarget]]>0、NumTarget(ヒットID)>0を確認して使うこと。
--該当するTargetが複数の場合
---参照先は基本「先にTargetを取った相手」を参照するが、厳密には異なる。
----実際はABCとTargetを取った後、ABがTargetから外れて、&br()新しくDをTargetに取った場合、Target,で参照するのは''Dとなる''。
----詳しくは[[Target]]のページ中程の''Targetスロットについて''を参照。
---同時ヒットの場合''攻撃を当てた時点のGameTimeの奇数偶数''で&br()&b(){[[スロットID]]の若い方・大きい方どちらか}が決まる。
---同時時:[[GetHitVar(Damage)>T-/GetHitVar()]]反応時点で偶数ならスロットIDの若い方。奇数ならスロットIDの大きい方。
---同時の対象が3体以上いる場合、スロットIDの一番小さい方・一番大きい方以外は参照されない。
---[[T-/MoveHit]]/[[T-/MoveGuarded]]などヒット・ガードで処理が異なるものすべて、&br()''Target,で参照する側を基本として、もう片方側は反応しない''
----ヒットガードが同時でもTargetで参照する側がガードなら&br()[[T-/MoveGuarded]]などガード系のみ反応し[[T-/MoveHit]]などヒット系は反応しない。
----その際攻撃のPauseTime系もTargetで参照する側ヒットガードを基準とする。
--またステートコントローラーのパラメータ内でTarget,リダイレクトを行うとフリーズすることがある。
---Varに格納して直接パラメータ内への記述を避けることで回避できる。
-特定のキャラを
--&b(){PlayerID([[キャラID>T-/ID]]),}:指定したキャラID([[T-/ID]])のキャラを参照。
---[[PlayerIDExist(キャラID)>T-/PlayerIDExist()]]=1で確認して使うこと。
--キャラIDを指定できれば相手のHelperでも参照できる。
-なお()内に入れる数字は数式・条件式などでも良い。
----
**■Lv1-使用例・補足・注意点
:記述例|
#aa(){{
[State 190, test]
Type = varset
TriggerAll = !time
Trigger1 = NumPartner > 0
Trigger1 = Partner,Name = "Apple"
Trigger2 = Enemy,Name = "Apple" || Enemy(NumEnemy>1),Name = "Apple"
var(12) = 1
;他のプレイヤーキャラの中に「Apple」というNameのキャラがいないかどうか。
;Trigger2はのEnemy(numenemy>1)は「相手が二人以上なら1=二人目へリダイレクト」の記述。
;相手が一人の場合は(NumEnemy>1)=0なのでEnemy(0),のリダイレクトになる。
}}
:Enemy系リダイレクトとP2系トリガー情報の違い|
-P2系トリガーの情報
--[[T-/P2BodyDist X]]・[[T-/P2BodyDist Y]]・[[T-/P2Dist X]]・[[T-/P2Dist Y]]
--[[T-/P2Life]]・[[T-/P2MoveType]]・[[T-/P2Name]]・[[T-/P2StateNo]]・[[T-/P2StateType]]
--Dist(距離)の情報はP2にしか存在しない。
-参照できる相手
--Enemy系:Helperでない''プレイヤーキャラに限る''。''相手の状態に関わらず参照''。
--P2系:プレイヤーキャラ加え''HelperType=PlayerのHelperも含む''最もX軸の近い相手を参照。
---ただしP2系はStateNo=5150(死亡ステート)にいる相手を参照できない。
---反対にEnemy系は、相手が死んでいても参照してしまう為、制御する必要がある。
-どっちがいいの?
--P2系の利点:記述が簡素・Player型分身Helper相手にも対応できる
--P2系の欠点:得られる情報が一部のみ・Player型Helperに誤作動する。
--Enemy,利点:自分と同等の情報を得られる・Player型Helperに誤作動しない。
--Enemy,欠点:記述・制御が面倒・Player型分身Helperに対応できない。
---簡素な仕組みを予定していればP2で構わない。
---参照を制御できるならEnemyNearを利用する方が良い。Dist系はP2でいいが。
---Player型Helper極めて特殊な相手のため度外視しても基本的には問題ない。
-なお、P2系は相手の情報を表示するが「自分のトリガー情報」のため、リダイレクトは使用可能。
:ヘルパーからRoot,Perent,系リダイレクトをする際の注意点|
-[[ステートを奪われている場合>ステート奪取]]、想定外の情報が入る危険がある。
-その為[[T-/Command]]を代表とし[[T-/StateNo]][[T-/Anim]]などは絶対に不可である。
--なおRoot,[[Movetype=H>T-/Movetype]]といった限定方法は不完全。
---奪われている時のステートががMoveType=H以外である場合、暴発する。
:(未確認)特殊な環境|
-(改造されたmugenなどで?)同時4人対4人での対戦では、
Enemy(2),やEnemy(3),のリダイレクトは機能するらしいが、
EnemyNear(x),は2~3(3~4人目)のリダイレクトは機能しないとのこと。
----
**■Lv2-バグ回避
:Parentの存在確認|
エラー自体を確実に回避したい場合は同種HelperのHelperID個別管理を徹底し[[T-/NumHelper]]を用いる。
あるいは、消失する予定のHelperからHelperを射出しない、親が消失するHelperでParentを使わない。
エラーが流れても簡単かつ確実に回避したい場合は[[T-/ID]]を参照する。
&b(){「 Parent,ID > 0 」}で親が存在していることを認識できる、はず。それがNum系の役割を果たす。
存在しない場合エラーは流れるが、Parent消失による不具合を抑えられる。
----
**■Lv3-細かい技術
:EnemyNear,リダイレクトの制御|
準備:Varを1つ用意する。例では11を使用。実際には空きVarを利用すること。
#aa(){
[State -3, EnemyNear Alive];-3ステートに置く。
Type = varset
Trigger1 = 1
var(11) = ( NumEnemy > 1 && EnemyNear,Alive = 0 )
;相手が二人以上で一番近い相手が死んでいるなら(1)を、そうでないなら(0)を指定。
;EnemyNearをEnemynear(var(11)),とすることで、生きている一番近い相手を参照できる。
}
----