TACS for Flash 講座


ここではシナリオソースの基本的な書き方を説明します。
では、サンプルゲーム殺人事件のシナリオソースを例にとって、説明致しましょう。

まずは、シナリオソースをみてみましょう。
下記リンクのシナリオソースをテキストエディタで開いて下さい。
http://atelier-c.fiw-web.net/tacs_samplegame/game1/tacs.avg

■1行目(最初の行)と138行目(最後の行)
&tacsscenariodata=
&
この表記は必須です。
TACSはこの記述の間に記載されている内容を、シナリオソースとして認識致します。


■3〜21行目
//----------------------------------------

#タイトル画面

//ポーズボタン設置
PIC -1,data/nextbutton01.swf
FRAME_POS -1,270,260

//選択肢ウインドウ設置
PIC 0,data/selectwindow01.swf
FRAME_POS 0,370,160

FRAME_SCALE 5,125,127
PIC 5,data/title.jpg
pause
#>最初の海岸


//----------------------------------------
// はコメント行です。ゲーム中には無視される命令なので、作成中のシナリオソースの整理などにご利用下さい。

PIC -1,data/nextbutton01.swf で、ゲーム中にマウスクリック待ち状態(PAUSE 命令)にした際に、表示するマウスクリック待ちオブジェを読み込みます。-1番レイヤーはマウスクリック待ちオブジェ専用のレイヤーです。
FRAME_POS -1,270,260 で、マウスクリック待ちオブジェの表示位置を指定しています。
この命令をする前にマウスクリック待ち命令の pause を実行した場合。マウスクリック待ちオブジェが読み込まれてない事になり、TACSの動作はストップしてしまいます。ご注意下さい。

PIC 0,data/selectwindow01.swf で、選択肢ウインドウを読み込みます。0番レイヤーは選択肢ウインドウ専用のレイヤーです。
FRAME_POS 0,370,160 で、選択肢ウインドウの表示位置を指定しています。
この命令をする前に選択肢表示命令 * を実行した場合。選択肢ウインドウが読み込まれてない事になり、TACSの動作はストップしてしまいます。ご注意下さい。

FRAME_SCALE 5,125,127
PIC 5,data/title.jpg

このサンプルゲーム中の5番レイヤーは、少し小さめの画像データを表示するのに使用しようと考えています。
なので5番レイヤーの縮尺を予め大きくしておいた後から、その5番レイヤーに title.jpeg を表示させています。


■3〜21行目
*はい。かしこまりました
	"よし",1;pause
	"",1
	FRAME_ALPHA 1,0
	#>地図確認
*やなこった
	"なめてんのか、こら。\nいいな!?解決しろよ!?",1
選択肢と、その選択肢を選んだ結果の記述方法の一例です。私なりにわかりやすくしようとタブを入れておりますが、タブ自体は入れても入れなくても動作致します。

"",1
FRAME_ALPHA 1,0

このサンプルゲーム中で、メッセージ表示ウインドウにしていた1番レイヤーを、一時的に非表示にしようとしています。
ウインドウの非表示自体は FRAME_ALPHA 1,0 で透明化することにより非表示可能なのですが、表示しているメッセージ(文字)自体はFlashの性質上、透明化できない場合がありますので、 "",1 で、1番レイヤーに指示してある、メッセージ表示のデータを削除しています。


■75〜80行目
?knock=0;*灯台に入る
?knock=0;"ノックぐらいしろ!",1;!knock=1
?knock=1;*ノックする
	"返事があって、人がでてきた。",1
	pause
	#>灯台の人と対峙
フラグの使い方の一例です。
一度も設定してないフラグは、? 命令でチェックした際データの中身は 0 として扱います。

このソースの注目点は、!knock=1?knock=1の表記してある位置です。
!knock=1がこの位置にないと、*ノックするが無効化したままなので、以下の "返事があっ〜 の命令が実行されてしまったのですが、直前に!knock=1があった為に、*ノックするが有効化。以降の命令が*ノックするを選んだ時のものになるので、選択肢の再表示に戻っております。

わかりやすく表記するのなら、以下のようにするのもオススメです。
?knock=0;*灯台に入る
?knock=0;"ノックぐらいしろ!",1;!knock=1
?knock=1;*ノックする
?knock=1;		"返事があって、人がでてきた。",1
?knock=1;		pause
?knock=1;		#>灯台の人と対峙