randomize

2014/10/23

Arma3スクリプティング講座その14:Advanced

ごめんなさい。あのですね、PSO2やってたり動画作ってたりHelicopter DLCのDEVをやって遊んでたら随分時間が経ってました。書きます。第14弾です。

まずは、次の画像を見てください。
ん?ただのAgia Marinaだって?ノンノン、良く見てください。これまでエディッティングに勤しんできた諸君は違和感を覚えると思います。
…その正体は、Post Process Effectです。Post Process Effectっていうのは、つまり後処理画像加工ってことですが、平たく言えば画像の色味を変更するってことです。色味を変更するだけといえばそうなんですが、随分雰囲気が変わるんです。

で、まあ今回はModules(F7)のEnviroments→Post-ProcessのMediterraneanを使ったんですけど、どうせなら自分でも作りたいですよねあなた。えっ、別にいい?知るか、俺は答えがどうなろうと記事を書くんだよ!

でですね、まずは次のスクリプトを起動してみてください。
_ppColor = ppEffectCreate ["colorCorrections",1002] ;
_ppColor ppEffectEnable true ;
_ppColor ppEffectAdjust [1,1,0,[0,0,0,0],[1,0,0,0.8],[1,1,1,1]] ;
_ppColor ppEffectCommit 0 ;
画面が赤みがかりましたね。別にあなたの目が充血してるわけじゃないです。

で、いったい何が起きたのか。のんびり紐解いていきましょう。まずは、ppEffectCreateです。
これは文字通りppEffectを生成するスクリプトです。ぶっちゃけ無くてもいいんですが、これがあったほうがいいです。
今回は["colorCorrections",1002]を引数に起動しました。"colorCorrections"はppEffectの内、色味変更のエフェクトです。1002は、ppEffect用のハンドル数字なので、かぶらない数字なら何でもかまいません。
_ppColorに返り血…もとい返り値としてppEffect用の数字が格納されます。

ppEffectEnableは、ppEffectを有効化します。今回は直前に生成した_ppEffectを有効化します。これが無かったら何も変化しません。

ppEffectAdjustは、_ppEffectの数値を設定します。詳しく見ていきましょう。
"colorCorrections"用は次のように設定します。
[
 0,//明るさ(0-1)
 0,//コントラスト
 0,//オフセット、0のままがいい
 [R,G,B,A],//直接オーバーレイの色、例えば[1,0,0,1]にすると画面が真っ赤に
 [R,G,B,A],//画面の色味調節。[1,0,0,1]にすると、画面から緑と青が消えます
 [R,G,B,A]//上に同じ
]
つまりですね、これをうまいこと使うと青白い画面で寒さを表現したり出来ます。

ま、今回はこんなところで。

次 

8 件のコメント :

  1. このシリーズ、本当のド素人にもわかりやすくて素晴らしいですね。
    是非参考にさせていただきます。

    返信削除
  2. MPでリスポーンする時、init欄の装備をまた読み込ませる様なスクリプトはありませんか?
    使い方等、詳しく教えて頂ければ幸いです;

    返信削除
    返信
    1. addMPEventHandlerの"MPRespawn"が役に立つと思います。
      https://community.bistudio.com/wiki/Arma_3:_Event_Handlers#MPRespawn
      実のことを言うとマルチプレイのスクリプトには疎いんですよね…

      削除
  3. 1年半たっちゃいますよ

    返信削除
    返信
    1. 経っちゃいますね。ネタくれ

      削除
  4. 今更ながらスクリプトに触れてますが、キルのカウントをスクリプトで行うことは可能なのでしょうか?

    返信削除
    返信
    1. つまりキルした時に変数に+1したいわけですよね。
      それなら敵ユニット一人ひとりに
      イベントハンドラKilled(https://community.bistudio.com/wiki/Arma_3:_Event_Handlers#Killed)
      を使えば実現できますけど、正直言って個々にハンドラを設定するのは面倒なので個人的には
      ミッションイベントハンドラ(https://community.bistudio.com/wiki/Arma_3:_Event_Handlers/addMissionEventHandler#EntityKilled)
      をおすすめします。
      後者の場合は_this select 1がplayerだったときに変数を足せばいいんじゃないかと。

      削除
  5. このシリーズ一気に見させていただきました。とてもわかりやすくてよかったです。ありがとうございました。

    返信削除

注: コメントを投稿できるのは、このブログのメンバーだけです。