はじめに

Adventure gear(ADV_FederatedTerritories.txt)のGlobalStoryPatternコマンドを利用したテスト用ストーリーの作成。
以下のテキストファイルをSeriesフォルダ内に作成し、それぞれの内容をコピペする。
ファイル名 種類 説明
TS_GSP_test_STORY.txt Story gear 複数のプロットを管理する
TS_GSP_test_PLOT.txt Plot gear 個々のプロット
TS_GSP_test_SCENE.txt Scene gear プロットで用いるDynamic Scene

準備ができたら新規キャンペーンを開始し、Hogye村を出入りしてプロットがロードされたか確認する(ダイアログにメッセージが出る)。確認できたらHogye村の食堂NPCに話しかけてみよう。


Story Gear

Story
	Name <Story : Test>
	% ファイル冒頭の"Story"はこのファイルがStoryファイルであることを示す。

	% ストーリーのエレメントを記述する。
	% エレメントで指定されたGearのIDはN1~の変数に格納される。
	% Element1(N1) = このストーリーがロードされたマップ(GlobalStoryPatternコマンドで自動的に指定される)。
	% Element2(N2) = プロットをロードするマップの条件。ここではランダムではなくStatを用いてHogye村を指定する。

	Element2 <Scene>
	Stat 2 2

	% ストーリー本体のスクリプトを記述する。
	% 以下はこのストーリーで使う変数。
	%  V1(S1) = 初期化カウンタ
	%  V2(S2) = ストーリー終了フラグ

	% Start : 別のマップに入った直後に処理を実行するトリガー。
	% 初期化およびプロットをロードする処理。
	Start <if= V1 0 else GoCheckEnd StoryLine .testplot else GoError Print 1 V= 1 1>

	% テスト用プロットのファイル名をラベル.testplotで指定。
	% ラベルには好きな名前を付けてよい。
	.testplot <TS_GSP_test_PLOT.txt>

	% ロードに失敗したときの処理。
	% GoErrorなど特に説明がないトリガーもラベルで、elseやGotoの処理の続きを記述する。
	GoError <EndStory Print 2>

	% ストーリーの終了をチェックする処理。
	GoCheckEnd <if= V2 1 EndStory Print 3>

	% メッセージとして表示するテキスト。
	% Printコマンドは画面下部のダイアログにメッセージを表示する。
	Msg1 <テスト用Plotファイルのロードに成功しました。>
	Msg2 <テスト用Plotファイルのロードに失敗しました。テスト用Storyを終了します。>
	Msg3 <テスト用Storyを終了します。>


Plot Gear

Plot 0
	Name <Plot : Test>
	% ファイル冒頭の"Plot 0"はこのファイルがPlotファイルであることを示す。

	% プロットのエレメントを記述する。
	% エレメントで指定されたGearのIDはE1~の変数に格納される。
	% Element1(E1) = 親のStoryファイルのElement 2を参照する(Hogye村)。
	% Element2(E2) = プロットをロードするNPCの条件を指定する(職業がCook、E1にいる)。
	% Element3(E3) = インベントリのGearを参照する(フラグ発生装置)。

	Element1 <Grab 2>
	Element2 <Character Cook !Near 1>
	Element3 <Prefab>

	% プロット本体のスクリプトを記述する。
	% 以下はこのプロットで使う変数。
	%  V1(P1) = 初期化カウンタ
	%  V2(P2) = 戦闘インジケータ(1 : 戦闘開始 2 : 敗北 3 : 勝利)

	% Cleanup : Storyが終了したときに1度だけ実行されるトリガー。
	% プロットを消去する処理のラベルへジャンプ。
	Cleanup <Goto GoCleanDelete>

	% Start : 別のマップに入った直後に処理を実行するトリガー。
	% 初期化およびプロットの消去をチェックする処理。
	Start <ifPersona E2 else GoCleanDelete if= V1 0 Print 1 V= 1 1>

	% プロットを消去する処理。
	GoCleanDelete <ifItemOK E3 else GoDelete DeletekeyItem E3 Goto GoDelete>
	GoDelete <S= 2 1 AdvancePlot 0 Print 2>

	% 戦闘の勝敗について
	%
	% 勝敗の判定には戦闘マップとなるDynamic Sceneのローカル変数を用いることが多い。
	% したがって、判定を行う時点ではそのDynamic Sceneにいることが確実でなければならない。
	% Startのように町に戻った後に実行されるトリガーだと、町マップのローカル変数を参照することになるので不適切。
	%
	% このプロットではNU1トリガーを使い、さらに以下の条件をつけている。
	%
	% V2 = 1 : 戦闘開始後~勝敗のフラグが立つ前
	% T1 = 0 : PC(@)チームが全滅もしくは撤退(T1 = PCチームのメンバー数)
	%
	% トリガーは子Plot → 親Story → Dynamic Sceneの順に実行されるので、
	% PCがDynamic Sceneを去ろうとしたときの処理は以下のようになる。
	%
	% 1. PCがDynamic Sceneを去る
	% 2. PlotのNU1トリガー(勝敗判定の処理)が実行される
	% 3. Dynamic SceneのNU1トリガー(脱出する処理)が実行される
	% 4. PCがHogye村に戻る
	%
	% デバッグ用のメッセージを作って動作を確認してみるといい。

	% NU[n] : チーム[n]のメンバーが変更されたときに処理を実行するトリガー。チーム1は既定でPCチーム。
	% 勝敗の判定を行う処理。
	NU1 <if= V2 1 if= T1 0 if= L2 1 else GoLoss V= 2 3>
	GoLoss <V= 2 2>

	% メッセージとして表示するテキスト。
	Msg1 <テスト用Plotを開始します。>
	Msg2 <テスト用Plotを終了します。>
sub
	% サブコンポーネントには以下のGearを記述することができる。
	% Persona
	% Plot(サブプロット)

	% NPCの会話スクリプトを記述する。
	% このプロットではNPC E2に対応してPersona 2となる。
	% 本来は固有のID番号を付けるが、プロット内ではエレメントのインデックス番号を使用する。
	Persona 2

	% Greeting : 対象のNPCに話したかけたときに処理を実行するトリガー。
	% プロット変数P2(戦闘インジケータ)の値に応じて敗北・勝利・戦闘前の処理に分岐する。
	Greeting <NewChat if= P2 2 else GoCheckWin Say 1 Goto GoCleanDelete>
	GoCheckWin <if= P2 3 else GocheckMission Say 2 Goto GoCleanDelete>
	GoCheckMission <if= P2 0 else GoCleanDelete Say 3 AddChat 1 AddChat 2>

	% プロットを消去する処理。
	GoCleanDelete <ifItemOK E3 else GoDelete DeletekeyItem E3 Goto GoDelete>
	GoDelete <S= 2 1 AdvancePlot 0 Print 101>

	% Result[n] : 選択肢を選んだ後の処理を実行するトリガー。
	% テスト用Dynamic Sceneへ行く選択肢を選んだ後の処理。
	% ここではあらかじめ用意したDynamic Scene用ファイルを使ってマップを生成する。
	Result1 <EndChat Say 4 SavePos LoadD .testscene DynaItemTeam E3 2 P= 2 1>

	% テスト用Dynamic Sceneのファイル名をラベルで指定。
	.testscene <TS_GSP_test_SCENE.txt>

	% テスト用Dynamic Sceneへ行かない選択肢を選んだ後の処理。
	Result2 <EndChat Say 5>

	% メッセージとして表示するテキスト。
	% Sayコマンドは会話画面にメッセージを表示する。
	Msg1 <%JSは敗北した%JG…。>
	Msg2 <%JSは*勝利*した%JG!>
	Msg3 <%JFはテスト用Plotを担当している%JG。テスト用Dynamic Sceneに行く?>
	Msg4 <いってらっしゃい。>
	Msg5 <それじゃ、また後で来るといい%JG。>
	Msg101 <テスト用Plotを終了します。>

	% 選択肢として表示するテキスト。
	Prompt1 <もちろん。>
	Prompt2 <やめとく。>
end
inv
	% インベントリにはこのプロットが生成するNPCやアイテムなどを記述する。
	% Prefabを指定したエレメントはインベントリのGearを上から順に検索する。
	% このプロットではElement3にPrefabが指定されているので、インベントリ中の最初のGearがE3になる。

	STC MONOLITH
	Name <フラグ発生装置>

	% Use : 対象のGearを使用したときに処理を実行するトリガー。
	% 2択を表示する警告画面を出し、勝利フラグを立てる処理。
	Use <if= V1 0 else GoDid ifYesNo 1 2 3 L= 2 1 Print 4 V= 1 1>
	GoDid <Print 5>

	Msg1 <フラグ発生装置だ。勝利フラグを立てますか?>
	Msg2 <勝利フラグを立てる。>
	Msg3 <やめとく。>
	Msg4 <勝利フラグを立てた。>
	Msg5 <もうこの装置に用はない。>
end


Scene Gear

Scene 0 0
	% ファイル冒頭の"Scene"はこのファイルがSceneファイルであることを示す。
	% 最初の数字はScene ID(Dynamic Sceneの場合は0)、次の数字はスケール。

	% マップ本体のスクリプトを記述する。
	% 以下はこのマップで使う変数。
	%  V1(L1) = 初期化カウンタ
	%  V2(L2) = 勝敗フラグ(プロットの方で用いる)

	% マップ全体の地形や特殊な条件。
	WildMap
	Special <ShowAll>

	% Start : 別のマップに入った直後に処理を実行するトリガー。
	% 初期化の処理。
	Start <if= V1 0 Print 1 V= 1 1>

	% NU[n] : チーム[n]のメンバーが変更されたときに処理を実行するトリガー。
	% Dynamic Sceneから脱出する処理。
	NU1 <if= T1 0 Return Print 2>

	% メッセージとして表示するテキスト。
	Msg1 <テスト用Sceneに入った。>
	Msg2 <テスト用Sceneを出た。>
sub
	% サブコンポーネントには以下のGearを記述することができる。
	% Team
	% MapFeature
	% Persona

	% Teamの記述。敵対/友好関係やマップの開始地点(ホーム)を設定する。
	Team 1
	SetAlly 2

	Team 2
	SetAlly 1
	Home <廃墟>

	% MapFeatureの記述。建物などの個別の地形。
	Room 12 12
	BorderType 29
	FloorType  14
	Name <廃墟>
end
inv
	% インベントリにはこのマップが生成するNPCやアイテムなどを記述する。

	Prop 50
	Name <ガラクタ>
	SetTeam 2

	% Use : 対象のGearを使用したときに処理を実行するトリガー。
	% ダイアログにメッセージを表示する処理。
	Use <Print 1>

	Msg1 <何の役にも立たないガラクタがある。>
end

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2013年03月30日 02:13