2005/12/20 更新
このファイルはWEBでプレイできるアドヴェンチャーゲーム(ノベルゲーム)システムMaHooのシナリオファイルのコマンド説明です。
シナリオファイルはXMLで記述します。
文字コードはUnicode(UTF-8)です。
Unicode以外で正しく動作するかはFlashPlayer次第で、筆者は確認しておりません。
テキストエディタで編集できますが、XMLエディタを使うと楽に編集できるかと思います。
デフォルトではstart.xmlが読み込まれます。
別のファイルを指定するには mahoo.swf?file=****.xml で指定します。
XMLであるため、コマンドはXML要素(element)、パラメータはXML属性(attribute)の形式となっています。
<cut name="first"> ・・・ </cut>
青文字の部分が要素、赤文字の部分が属性です。
<img src="test.jpg"/>
このような内部要素のないものを空要素タグと呼びます。
<cut [name="カット名"]>
このように[ ]に囲まれている属性は省略できることをあらわします。
シナリオファイルはシーンごとに複数のファイルに分けて記述します。
1つのファイル内に1つのscene要素を記述します。
sceneは複数のcut要素をもちます。
cutがシナリオの基本単位となります。
cutではimg,bgm要素が先に実行され素材がロードされます。
画像をロードして指定レイヤーに表示します。
画像にはJPEG,GIF,PNGを使用できます。
レイヤー番号には0~63が使用できます。0が一番奥になります。
画像の位置が指定されていない場合は中央下に配置されます。
alphaでロード後の半透明度を指定できます。
指定されていない場合は100になります。
フェードインを使うときや、画像をすぐに表示したくない場合は0にする必要があります。
srcの指定がない場合はそのレイヤーの画像が消去されます。
blendには次の番号または名称を指定できます。
指定がない場合は"normal"になります。
番号 | 名称 | 説明 |
1 | "normal" | 画像は、背景の前に表示されます。画像のピクセル値により、 背景のピクセル値が無効になります。画像が透明な部分では、背景が表示されます。 |
3 | "multiply" | 画像のカラーの値と背景色の値とを乗算した後、0xFF で除算して正規化して、 色を暗くします。 |
4 | "screen" | 画像の色の補数 (逆) と背景色の補数を乗算して、ブリーチ効果を得ます。 |
5 | "lighten" | 画像のカラーと背景のカラーの明るい方 (値が大きい方) を選択します。 |
6 | "darken" | 画像のカラーと背景のカラーの暗い方 (値が小さい方) を選択します。 |
7 | "difference" | 画像のカラーとその背景のカラーとを比較し、 明るい方のカラーから暗い方のカラーを減算します。 |
8 | "add" | 結果の上限を 0xFF として、画像のカラーの値をその背景のカラーの値に加算します。 |
9 | "subtract" | 結果の下限を 0 として、画像のカラーの値をその背景のカラーの値から減算します。 |
10 | "invert" | 背景を反転します。 |
11 | "alpha" | 画像の各ピクセルのアルファ値を背景に適用します。 |
12 | "erase" | 画像のアルファ値に基づいて背景を消去します。 |
13 | "overlay" | 背景の暗さに基づいて、色を調整します。 背景が 50% グレーより明るい場合、画像と背景の色が網がけされ、明るくなります。 背景が 50% グレーより暗い場合、色が乗算され、暗くなります。 |
14 | "hardlight" | 画像の暗さに応じて、色を調整します。 画像が 50% のグレーよりも暗い場合、画像と背景の色が網がけされ、明るくなります。 画像が 50% のグレーよりも暗い場合、色の値が乗算され、暗くなります。 |
背景画像をロードして表示します。
システム的にはimgのレイヤー0への画像読み込みです。
キャラクター画像をロードして背景画像の上に重ねて表示します。
システム的にはimgのレイヤー1への画像読み込みです。
サウンドファイルをロードして再生を開始します。
サウンドファイルにはMP3,WAVを使用できます。
cutに1つ指定できます。複数指定された場合は最後に指定されたものが有効になります。
サウンドを停止(stop)、停止したサウンドを開始(start)することができます。
文章を表示します。
pause属性でテキスト表示後にクリックするまで停止するかどうかを指定できます。
省略した場合はクリックするまで停止します。
stream属性でテキストを1文字ずつ表示するかどうかを指定できます。
省略した場合は1文字ずつ表示します。
文章中には変数を含めることができます。文章中の変数は$をつけて指定します。
例) <text>選択されたのは$selectedです。</text>
変数は変数の内容に置き換えられて表示されます。
文章を表示する領域を設定します。
以下のものを必要なものだけ設定できます。
visible | 表示するかどうか(true:表示 false:非表示) |
x | 表示横位置 |
y | 表示縦位置 |
width | 領域横幅 |
height | 領域縦幅 |
color | 領域の色 |
alpha | 領域の半透明度(0~100) |
例) <textarea x="20" y="360" width="600" height="100" color="0x0000ff" alpha="50"/>
表示する文字の設定をします。
以下のものを必要なものだけ設定できます。
size | 文字の大きさ |
leading | 行間の垂直の行送り |
spacing | 文字間のスペース |
bold | 文字を太くするかどうか |
shadow | 文字を影付きにするかどうか |
選択メニューを表示します。
メニュー項目はoption 要素で指定します。
selectは複数のoption要素をもちます。
選ばれたメニュー項目は変数selectedに格納されます。
x | 表示横位置 |
y | 表示縦位置 |
color | メニューの色 |
alpha | メニューの半透明度(0~100) |
scolor | 選択されている項目の色 |
salpha | 選択されている項目の半透明度(0~100) |
メニューの項目を指定します。
goto属性が指定されている場合、この項目が選ばれたとき指定されたカット名のcutに実行が移されます。
指定されたカット名のcutに実行が移されます。
シナリオファイルを超えての移動はできません。
指定されたシナリオが読み込まれ実行が移されます。
変数はクリアされません。
指定秒数進行をストップします。
秒数には実数を指定できます。ただし1/15秒以下にはなりません。
例)<sleep sec="0.5" />
クリックされるまで進行をストップします。
cut内でonclickが指定されている場合、クリックされたonclick要素が実行されます。
複数のonclickの領域が重なっていた場合、先に定義されたonclick要素だけが実行されます。
クリックされる領域を定義します。
この領域がクリックされると内部要素が実行されます。
有効範囲は定義されたcut内で、いくつでも定義できます。
onclickは定義を行うだけです。クリック待ちはclickで行います。
変数に値を代入します。
変数名はアルファベット、数字、アンダーバーだけで指定します。
例)<set name="flag" value="1" />
例)<set name="name" value="西野園" />
valueには式を指定できます。
使える演算子は次の通りです。
+ | 加算、文字列の連結 |
- | 減算 |
* | 乗算 |
/ | 除算 |
% | 剰余 |
[ ] | 配列のインデックス指定 |
( ) | 演算の優先順位指定 |
and | 論理積 |
or | 論理和 |
not | 否定 |
例)<set name="flag" value="flag+1" />
例)<set name="name" value="name+萌絵" />
例)<set name="a[1]" value="b[flag]" />
配列変数にを作成します。
valueにカンマで区切った初期を指定できます。
変数名はアルファベット、数字、アンダーバーだけで指定します。
例)<array name="tbl" />
例)<array name="week" value="日,月,火,水,木,金,土"/>
変数にminからmaxまでのランダムな整数を代入します。
変数名はアルファベット、数字、アンダーバーだけで指定します。
min,maxが指定されていない場合は0~100の整数になります。
例)<rand name="rand" />
条件式が成り立っているなら内部要素を実行します。
内部要素にcut内で使用できる全ての要素が指定できます。
条件式は 式 比較演算子 式 の形式で指定すると左右の式が比較されます。
比較演算子がない場合は式の結果が0の場合は不成立、0以外の場合は成立となります。
例) <if condition="selected==メニュー項目">
例) <if condition="flag}=1">
例) <if condition="flag">
比較演算子には次のものが指定できます。
XMLでは<が使えないのでかなり特殊な仕様となっております(^^;
== | 等しい |
!= | 等しくない |
} | より大きい |
{ | より小さい |
}= | 以上 |
{= | 以下 |
直前のif要素が不成立で条件式が成り立っているなら内部要素を実行します。
条件式に関してはifを参照してください。
直前のifまたはelseif要素が不成立なら内部要素を実行します。
条件が成り立っているなら内部要素を繰り返し実行します。
条件式に関してはifを参照してください。
while要素から抜けます。
break以降の要素は実行されません。
while要素を始から(条件判断から)実行します。
continue以降の要素は実行されません。