「リダイレクト」の編集履歴(バックアップ)一覧に戻る

リダイレクト - (2013/01/15 (火) 00:06:41) の編集履歴(バックアップ)



■リダイレクトについて


※解説修正情報※
2013-01-15:Targetのリダイレクト先について修正。
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の奇数偶数
        スロットIDの若い方・大きい方どちらか
      • 同時時:GetHitVar(Damage)が反応する時点で偶数ならスロットIDの若い方。奇数ならスロットIDの大きい方。
      • 対象が3体以上いる場合でも、スロットIDの一番小さい方・一番大きい方以外は参照されない。
    • またステートコントローラーのパラメータ内でTarget,リダイレクトを行うとフリーズすることがある。
      • Varに格納して直接パラメータ内への記述を避けることで回避できる。
  • 特定のキャラを
    • PlayerID(キャラID),:指定したキャラID(T-/ID)のキャラを参照。
      • PlayerIDExist(キャラID)=1で確認して使うこと。
    • キャラIDを指定できれば相手のHelperでも参照できる。

  • なお()内に入れる数字は数式・条件式などでも良い。


■Lv1-使用例・補足・注意点

記述例

[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系トリガーの情報
  • 参照できる相手
    • Enemy系:Helperでないプレイヤーキャラに限る相手の状態に関わらず参照
    • P2系:プレイヤーキャラ加えHelperType=PlayerのHelperも含む最もX軸の近い相手を参照。
      • ただしP2系はStateNo=5150(死亡ステート)にいる相手を参照できない。
      • 反対にEnemy系は、相手が死んでいても参照してしまう為、制御する必要がある。
  • どっちがいいの?
    • 簡素な仕組みを予定していればP2で構わない。
    • ただ参照を制御できるならEnemyNearを利用する方が良い。Dist系はP2でいいが。
  • なお、P2系は相手の情報を表示するが「自分のトリガー情報」のため、リダイレクトは使用可能。


■Lv3-細かい技術


EnemyNear,リダイレクトの制御
準備:Varを1つ用意する。例では11を使用。実際には空きVarを利用すること。

[State -3, EnemyNear Alive];-3ステートに置く。
Type = varset
Trigger1 = 1
var(11) = ( NumEnemy > 1 && EnemyNear,Alive = 0 )
;相手が二人以上で一番近い相手が死んでいるなら(1)を、そうでないなら(0)を指定。
;EnemyNearをEnemynear(var(11)),とすることで、生きている一番近い相手を参照できる。