randomize

2014/09/12

Arma3スクリプティング講座その5:スクリプトファイル

第五弾、今回からスクリプトファイルを使っていきましょう。そっちの方が管理しやすいしね。

まずは、前回の実習の模範解答。
if (alive player and alive man01) then {hint str getDir player} else {hint str getPos player select 1}
でした。出来たかな?

さて、今回からはユニットのInitializationとはおさらばして、スクリプトファイルを使いましょう。もちろん、ミッションエディタ内だけでミッションを完成させることも出来ますが、外部ファイルを使用することでスクリプトを管理しやすく、そしてより高度なスクリプトを使うことができます。
まずは適当にミッションをセーブしてください。セーブしたミッションファイルがどこに行くかと言えば、
例:C:\Users\ユーザー名\Documents\Arma 3 - Other Profiles\プレイヤー名\missions
の中、またはこの中に無い場合は
例:C:\Users\ユーザー名\Documents\Arma 3\missions
等に収納されているはずです。さてこの中にスクリプトファイルを作っていきますが、一番最初の今回はinit.sqfを作りましょう。
例えば、Stratisでmissionと名前を付けてミッションを保存した場合、mission.stratisというフォルダが生成されます。その中にmission.sqmというファイルがありますが、そこと同じ場所に作ってください。
init.sqfとはミッションが始まった瞬間に動くスクリプトファイルです。では、メモ帳などでinit.sqfを作成し、編集していきましょう。
まずは、init.sqfに次のスクリプトを追加してください。
"Hunter" createVehicle getPos player
createVehicleというのは文字通り乗り物を生成するスクリプトです。今回はHunter MRAPをプレイヤーの位置に生成するスクリプトにしてみました。動かしてみましょう。


何も出てきませんね。
それもそのはず、Hunterという名前ではArma3にHunterをスポーンさせたいということは伝えられないのです。人間用の名前とArma3用の名前は別なのです。このような場合、後者の名前を使わないとスポーンさせられないのです。
では、どうやってその名前を取得するのかといえば、
こうです!今回の場合は"B_MRAP_01_F"です。ちなみに、この名前のことをClassnameと呼びます。あと、Classnameは文字列にして渡さないとダメです。気をつけてください。
改めて、次のスクリプトをinit.sqfで実行してみてください。
"B_MRAP_01_F" createVehicle getPos player
こんな感じになったと思います。今回は車両だけですが、後々ユニット、ユニットを乗車させた車両、などなどどんどんスクリプトの沼に引き込んでいくので、皆さん覚悟はいいですか?

【実習】init.sqfでMH-9 Hummingbirdをスポーンさせる。

 

4 件のコメント :

  1. クラスネームってどっかからコピペできますか?

    返信削除
    返信
    1. メニューや設置したユニットにマウスをあわせると名前の下に表示されます。
      または、ユニットを選択した状態でコンテキストメニューを開き「Log...」から「Log Classes to Clipboard」で取得できます。

      削除
    2. このコメントは投稿者によって削除されました。

      削除
  2. 返信ありがとうございます
    今まで場所もクラスネームも見て写してたのでとても楽になりました

    返信削除

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