スクリプトを書く(6)

◆ コンテナで欲しい情報を取り出す

「コンテナ」を使うと、 ゲーム中のたくさんのデータの中から、 欲しいデータだけを絞り込んで使うことができます。
ここでは、5つのスクリプトコマンドを使います。

コンテナ設定 コンテナに入れるデータの種類を決める。
コンテナ絞り込み コンテナの中のデータを絞り込む。
コンテナ除外 コンテナから特定のデータを除外する。
コンテナソート コンテナの中のデータを並べ替える。
コンテナ選択 コンテナの中から、先頭のデータを取り出す。

※ 上記のコマンド名をクリックすると、詳しい解説を表示します。

コンテナを使ってどのようなことができるのか、下記の例を見てみましょう。
例では、信長が家臣の中で一番武力が高い武将を言い当てています。


例:コンテナを使って、武力1位の武将を取り出す

太閤立志伝5イベントソース

チャプター:{
	イベント:発表!武力ナンバー1の巻{
		属性:一度だけ
		発生契機:評定開始時(織田信長)
		発生条件:{
		}
		スクリプト:{
			会話:(織田信長,小姓)[[評定の前に\n皆に申し伝えておくことがある]]
			代入大名家A:(大名家::織田信長)//準備
			コンテナ設定:(人物,カテゴリ,武将)
			//ここでイベント人物や町人を除くため武将に限定する
			//この時点で、コンテナの中には全武将960人+新武将40人の計1000人が格納される

			コンテナ除外:(人物,死亡フラグ,死亡)
			//死亡している武将を除外
			コンテナ絞り込み:(人物,出現フラグ,出現済み)
			//出現している武将だけを残す
			コンテナ絞り込み:(人物,所属大名家,大名家A)
			//織田家の武将だけを残す
			//この時点でコンテナの中には、生存・出現済みで織田家に所属する武将がすべて格納されている
			//その人数を知りたい時は…
			代入a:(コンテナカウンタ)
			会話:(織田信長,小姓)[[当家に所属する武将は、現在\n<a>名おるが…]]

			調査:(コンテナカウンタ)>(0)
			//0はあり得ないが、一応チェックしておく
			分岐:(真){
				コンテナソート:(人物,武力,降順)
				//高い順なら"降順"、低い順なら"昇順"で、並べ替えることができる
				コンテナ選択:(人物A,先頭)
				//並べ替えたコンテナのうち、先頭の項目を取ってくるコマンド
				調査:(人物A)==(織田信長)
				分岐:(真){
				//除外で信長を除いていないので、本人のこともあり得る
					会話:(織田信長,小姓)[[最も武力が高いのは…わしじゃな!\nわっはっは!]]
				}
				分岐:(偽){
					会話:(織田信長,小姓)[[最も武力が高いのは…\n(人物A)じゃな!\n見事である!]]
				}
			}
			分岐:(偽){
			//織田家に誰もいないとき=あり得ない分岐
				会話:(織田信長,小姓)[[寂しいことよのう…]]
			}
			会話:(織田信長,小姓)[[では、評定に戻る!]]
		}
	}
}

上記の例の手順を追うと、

1.コンテナの中に「すべての人物」のデータを入れ
2.コンテナの中を「織田家の現役武将」にデータを絞り
3.コンテナの中を「武力の高い順」にデータを並べ替え
4.コンテナの中の一番上にあるデータを取り出す

と、なります。

● コンテナにデータを入れる

コンテナを使うには、まず「コンテナ設定」で取り出すデータをおおまかに設定します。


コンテナ設定:(○○,△△,□□)


◎ 「○○」には、データの種類(クラス名)を入れます。
◎ 「△△」には、プロパティを入れます。
◎ 「□□」には、具体的なデータ名(条件)を入れます。

コンテナ設定の例


コンテナ設定:(城,所属大名家,織田信長)
//↑織田家のすべての城をコンテナに入れる

コンテナ設定:(城,城主,織田信長)
//↑織田信長の居城とすべての直轄城をコンテナに入れる

コンテナ設定:(忍者衆,存在,真)
//↑存在するすべての忍者衆をコンテナに入れる

コンテナ設定:(人物,カテゴリ,武将)
//↑イベント人物や町人以外のすべての人物をコンテナに入れる


◎ 人物カテゴリの「武将」は、町人など汎用の人物ではない、固有の姓名を持つ人物という意味です。 「武士」という意味ではないことに注意してください。

● コンテナのデータを絞る

「コンテナ設定」でコンテナに入ったデータの中から、 必要のないデータを、「コンテナ絞り込み」「コンテナ除外」を使って 減らします。
「コンテナ絞り込み」は、設定したデータのみを残すコマンドです。
「コンテナ除外」は、設定したデータのみを除外するコマンドです。


コンテナ絞り込み:(○○,△△,□□)
コンテナ除外:(○○,△△,□□)


◎ 書式は「コンテナ設定」と同じです。

● コンテナのデータを並べ替える

コンテナに入っているデータを、特定の条件によって並べ替えます。
並べ替えは「コンテナソート」を使います。


コンテナソート:(○○,△△,□□)


◎ 「○○」には、データの種類(クラス名)を入れます。
◎ 「△△」には、プロパティを入れます。
◎ 「□□」には、「昇順」または「降順」を入れます。

● コンテナのデータを取り出す

コンテナに入っているデータの先頭または末尾にあるデータを取り出します。
データの取り出しは「コンテナ選択」を使います。


コンテナ選択:(○○,△△)


◎ 「○○」には、代入する変数(「人物A」「大名家B」「城C」など)を入れる。
◎ 「△△」には、「先頭」または「末尾」を入れます。

● コンテナのデータを数える

コンテナに入っているデータ数を数えます。
データ数を数えるには、以下の書式を使います。


代入a:(コンテナカウンタ)


◎ 上記の例では「a」という変数に、コンテナのデータ数が入ります。


表紙に戻るスクリプトを書く(7)コンバートする