「マッピング:ウェーブ」の編集履歴(バックアップ)一覧はこちら
「マッピング:ウェーブ」(2013/11/07 (木) 07:37:52) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*マッピング:ウェーブ
&bold(){nmsマップは、マップ名(ファイル名)が「nms_」で始まっていなければならない。}
ポイントエンティティ&italic(){overlord_wave_controller}を1個作成する。
これはマップ内の何処に置いても問題無い。
|&bold(){Initial Spawn Count}|ウェーブ1のゾンビスポーン数|
|&bold(){Zombie Increment}|ウェーブ毎のゾンビ増加数|
|&bold(){Resupply Freq.}|物資投下の頻度(ウェーブ)|
|&bold(){NG Freq.}|(未実装)|
|&bold(){Ending Wave}|このウェーブ終了でマップクリア&br()カスタムクリアシナリオを使う場合は後述|
|&bold(){First Runner Wave}|Runner初登場ウェーブ|
|&bold(){First Child Wave}|Kid初登場ウェーブ|
|&bold(){Custom Win Scenario}|&italic(){No}ならば&bold(){Ending Wave}終了でクリア&br()カスタムクリアシナリオを使う場合は&italic(){Yes}にする|
&color(#cccccc){例:&br()&bold(){Initial Spawn Count}が&italic(){50},&bold(){Zombie Increment}が&italic(){10}の場合、&br()ウェーブ15のゾンビスポーン数は (50) + ((15 - 1) * 10 ) = 190 となる。}
|BGCOLOR(#660000):COLOR(white):&bold(){注意}|
|&bold(){Resupply Freq.}は&italic(){2}以上でなければならない。&italic(){2}に設定すると毎ウェーブ物資が来るようになる。&italic(){3}だと2ウェーブ毎、&italic(){4}だと3ウェーブ毎といった風になっている?(未検証)|
|&bold(){First Child Wave}は&b(){First Runner Wave}以上の数値を設定しなければならない?(未検証)|
**特定のウェーブ開始時に出力を発生させるには
ポイントエンティティ&italic(){math_counter}を出力を発生させたいウェーブの個数だけ作成する。
そしてKeyvaluesを以下のように設定する。
|&bold(){Start Disabled}|&italic(){No}|
|&bold(){Initial Value}|&italic(){0}|
|&bold(){Minimum Legal Value}|&italic(){0}|
|&bold(){Maximum Legal Value}|&italic(){開始時に出力を発生させたいウェーブ}|
そしてこの&italic(){math_counter}に、&italic(){overlord_wave_controller}から以下のような出力を送るように設定する。
|&bold(){My output}|&italic(){OnNewWave}|
|&bold(){Via this input}|&italic(){Add}|
|&bold(){With a parameter override}|&italic(){1}|
こうすることにより、各ウェーブ(ウェーブ1を含む)の開始時にカウンターが1ずつ加算されていくようになる。
あとは言うまでも無く、&italic(){math_counter}に&bold(){My output}が&italic(){OnHitMax}の出力をさせればいいだけ。
**カスタムクリアシナリオを使う場合
まず上記の&bold(){Custom Win Scenario}を&italic(){Yes}にする。
&italic(){overload_wave_controller}が&bold(){Ending Wave}のウェーブ終了時に&italic(){OnCustomWinBegin}の出力を
送るようになる?(未検証)ので、この出力でシナリオを開始させる。
|BGCOLOR(#660000):COLOR(white):&bold(){注意}|
|&italic(){OnCustomWinBegin}の出力が発生するのは最終ウェーブ終了時で、次ウェーブは開始しないのでカスタムシナリオの間ゾンビがほぼいないことになる。ゾンビがいる状態でカスタムクリアシナリオを行わせたい場合は、「特定のウェーブ開始時に出力を発生させるには」の方法を使用すること。|
最後にシナリオ終了時に、&italic(){overlord_wave_controller}に対して以下の出力を送るようにする。
|シナリオ成功=クリアの時|&italic(){InputCustomWinComplete}|
|シナリオ失敗=ゲームオーバーの時|&italic(){InputCustomWinFailed}|
**脱出地点型のクリアシナリオを使う場合
カスタムクリアシナリオとして、通常nmoマップで使用する&italic(){nmrih_extract_point}(範囲内に入ったプレイヤーはクリア)を使用することもできる。
これについては[[マッピング:オブジェクティブ>http://www34.atwiki.jp/nmrih/pages/71.html]]を参照。
まず&italic(){nmrih_extract_point}に対して、脱出を有効化するタイミングで&italic(){Start}の出力を送る。
するとnmo同様に&italic(){nmrih_extract_preview}が&bold(){Hold Time}の間プレイヤーの視界をジャックする。
しかしこのままでは全員が脱出してもクリアにならず、また&bold(){Extraction Length}が過ぎても(時間切れになっても)ゲームオーバーにならない。
これをしっかり機能させるには、&italic(){nmrih_extract_point}から&italic(){overlord_wave_controller}に対して、以下のように出力を送る。
||クリア|ゲームオーバー|
|&bold(){My output}|&italic(){OnAllPlayersExtracted}|&italic(){OnExtractionExpired}|
|&bold(){Via this input}|&italic(){InputCustomWinComplete}|&italic(){InputCustomWinFailed}|
もちろん、InputCustomWinFailedは制限時間ではなく、別の方法で(別のエンティティから)送っても良い。
その場合は&bold(){Extraction Length}を&italic(){0}にする?(未検証)のを忘れないこと。(&italic(){0}でダメだった場合は逆に大きな値にしてみてください)
ちなみに&italic(){OnExtractionExpired}:&italic(){InputCustomWinFailed}の出力に&bold(){Delay}を設定すると、
その秒数は「ゲームオーバーは確定したが脱出はできない」という時間になる。
最後にヘリが飛んでいくような凝ったギミックを作るときは、この&bold(){Delay}を設定して、脱出し損ねたプレイヤーに悲壮感を味わわせてやろう。
*マッピング:ウェーブ
&bold(){nmsマップは、マップ名(ファイル名)が「nms_」で始まっていなければならない。}
ポイントエンティティ&italic(){overlord_wave_controller}を1個作成する。
これはマップ内の何処に置いても問題無い。
|&bold(){Initial Spawn Count}|ウェーブ1のゾンビスポーン数|
|&bold(){Zombie Increment}|ウェーブ毎のゾンビ増加数|
|&bold(){Resupply Freq.}|物資投下の頻度(ウェーブ)|
|&bold(){NG Freq.}|(未実装)|
|&bold(){Ending Wave}|このウェーブ終了でマップクリア&br()カスタムクリアシナリオを使う場合は後述|
|&bold(){First Runner Wave}|Runner初登場ウェーブ|
|&bold(){First Child Wave}|Kid初登場ウェーブ|
|&bold(){Custom Win Scenario}|&italic(){No}ならば&bold(){Ending Wave}終了でクリア&br()カスタムクリアシナリオを使う場合は&italic(){Yes}にする|
&color(#cccccc){例:&br()&bold(){Initial Spawn Count}が&italic(){50},&bold(){Zombie Increment}が&italic(){10}の場合、&br()ウェーブ15のゾンビスポーン数は (50) + ((15 - 1) * 10 ) = 190 となる。}
|BGCOLOR(#660000):COLOR(white):&bold(){注意}|
|&bold(){Resupply Freq.}は&italic(){2}以上でなければならない。&italic(){2}に設定すると毎ウェーブ物資が来るようになる。&italic(){3}だと2ウェーブ毎、&italic(){4}だと3ウェーブ毎といった風になっている?(未検証)|
|&bold(){First Child Wave}は&b(){First Runner Wave}以上の数値を設定しなければならない?(未検証)|
**特定のウェーブ開始時に出力を発生させるには
ポイントエンティティ&italic(){math_counter}を出力を発生させたいウェーブの個数だけ作成する。
そしてKeyvaluesを以下のように設定する。
|&bold(){Start Disabled}|&italic(){No}|
|&bold(){Initial Value}|&italic(){0}|
|&bold(){Minimum Legal Value}|&italic(){0}|
|&bold(){Maximum Legal Value}|&italic(){開始時に出力を発生させたいウェーブ}|
そしてこの&italic(){math_counter}に、&italic(){overlord_wave_controller}から以下のような出力を送るように設定する。
|&bold(){My output}|&italic(){OnNewWave}|
|&bold(){Via this input}|&italic(){Add}|
|&bold(){With a parameter override}|&italic(){1}|
こうすることにより、各ウェーブ(ウェーブ1を含む)の開始時にカウンターが1ずつ加算されていくようになる。
あとは言うまでも無く、&italic(){math_counter}に&bold(){My output}が&italic(){OnHitMax}の出力をさせればいいだけ。
**カスタムクリアシナリオを使う場合
まず上記の&bold(){Custom Win Scenario}を&italic(){Yes}にする。
&italic(){overload_wave_controller}が&bold(){Ending Wave}のウェーブ終了時に&italic(){OnCustomWinBegin}の出力を
送るようになる?(未検証)ので、この出力でシナリオを開始させる。
|BGCOLOR(#660000):COLOR(white):&bold(){注意}|
|&s(){&italic(){OnCustomWinBegin}の出力が発生するのは最終ウェーブ終了時で、次ウェーブは開始しないのでカスタムシナリオの間ゾンビがほぼいないことになる。ゾンビがいる状態でカスタムクリアシナリオを行わせたい場合は、「特定のウェーブ開始時に出力を発生させるには」の方法を使用すること。}&br()現在のバージョンでは&italic(){OnCustomWinBegin}だけで大丈夫な気がする。未検証。|
最後にシナリオ終了時に、&italic(){overlord_wave_controller}に対して以下の出力を送るようにする。
|シナリオ成功=クリアの時|&italic(){InputCustomWinComplete}|
|シナリオ失敗=ゲームオーバーの時|&italic(){InputCustomWinFailed}|
**脱出地点型のクリアシナリオを使う場合
カスタムクリアシナリオとして、通常nmoマップで使用する&italic(){nmrih_extract_point}(範囲内に入ったプレイヤーはクリア)を使用することもできる。
これについては[[マッピング:オブジェクティブ>http://www34.atwiki.jp/nmrih/pages/71.html]]を参照。
まず&italic(){nmrih_extract_point}に対して、脱出を有効化するタイミングで&italic(){Start}の出力を送る。
するとnmo同様に&italic(){nmrih_extract_preview}が&bold(){Hold Time}の間プレイヤーの視界をジャックする。
しかしこのままでは全員が脱出してもクリアにならず、また&bold(){Extraction Length}が過ぎても(時間切れになっても)ゲームオーバーにならない。
これをしっかり機能させるには、&italic(){nmrih_extract_point}から&italic(){overlord_wave_controller}に対して、以下のように出力を送る。
||クリア|ゲームオーバー|
|&bold(){My output}|&italic(){OnAllPlayersExtracted}|&italic(){OnExtractionExpired}|
|&bold(){Via this input}|&italic(){InputCustomWinComplete}|&italic(){InputCustomWinFailed}|
もちろん、InputCustomWinFailedは制限時間ではなく、別の方法で(別のエンティティから)送っても良い。
その場合は&bold(){Extraction Length}を&italic(){0}にする?(未検証)のを忘れないこと。(&italic(){0}でダメだった場合は逆に大きな値にしてみてください)
ちなみに&italic(){OnExtractionExpired}:&italic(){InputCustomWinFailed}の出力に&bold(){Delay}を設定すると、
その秒数は「ゲームオーバーは確定したが脱出はできない」という時間になる。
最後にヘリが飛んでいくような凝ったギミックを作るときは、この&bold(){Delay}を設定して、脱出し損ねたプレイヤーに悲壮感を味わわせてやろう。