さて、前回の答えですが
1 | (1~4の数字) call BIS_fnc_earthQuake ; |
では本題。早速何も考えずに、init.sqfに次の文を書いてください。
1 | [] execVM "script.sqf" ; |
1 |
execVMとは、ちょっとプログラムを触ったことのある人はティン!と来ると思いますが、要はスクリプト呼び出しコマンドなわけです。この場合、引数[]で"script.sqf"を呼び出そうとしたわけですが、この時点ではscript.sqfは作成されていない…はずなのでエラーが発生する、というわけです。
では、init.sqfのときと同じ要領でscript.sqfを作成し、その中に次の文を書いてください。
1 | hint "script.sqf is running!" ; |
では、ここで簡単に実習。先ほど作成したscript.sqfをtest.sqfと改名し、新たに作成したscriptsフォルダの中に入れてください。さあどのように呼び出せばよいでしょうか?
答えは、
1 | [] execVM "scripts\test.sqf" ; |
正しく書いていれば、正しく動くはずです。
さて、そろそろexecVMの前にある空のArrayが気になってくる人もいると思いますが…なんだと思いますか?
この段階では全く意味をなさない適当な引数です。実は、このArray(Array以外も突っ込めますけど)は呼び出したスクリプトの中で引数として使えるんです。
例えば、init.sqfの中身を
1 | [ "Tom" ,22] execVM "scripts\test.sqf" ; |
1 | hint format [ "%1 is %2 age." ,_this select 0,_this select 1] ; |
と、表示されます。説明のために新しく出てきたformatですが、基本はstrと同じです。例えば、
1 | format [ "%1,%2" , "First" , "Second" ] |
1 | First,Second |
…おほん、話が少しずれましたね。先ほどのhintで気が付いてくれると幸いですが、execVMで呼び出すときに引数に["Tom",22]が入りました。その引数はtest.sqf内で_thisとして扱えます。この場合はArrayなので、一つのデータを取り出すためにselectを使用していますが、execVMの引数はString,Number,Booleanなどさまざまなデータを突っ込めます。
このexecVMとスクリプトを使用すれば、ミッション内のスクリプトをモジュール式に管理することが出来、非常に生産性が高まるほか、整備性が高まります。
【実習】scriptsフォルダ内にgetName.sqfを作成し、中身を次のようなスクリプトにする。
適当にプレイヤーの参加にユニットを配置し、そのユニット全員の名前を2秒おきに読み上げる。なお、ユニットの引数はexecVMとともに書く。グループのユニット全員を取得する際は、unitsスクリプト、名前取得はname。
0 件のコメント :
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。