- FRAXY Try function (Script) -

CHOICEIMAGE "CHOICEIMAGE",itemID,imageID,imagePosX,imagePosY,imageSizeX,imageSizeY,blendMode,blendRate
"CHOICES"の各項目を画像タイプに設定します。
この命令で設定した項目は"CHOICEPOS"で位置を設定する必要があります。
書式"CHOICEIMAGE",int1,int2,int3,int4,int5,int6,int7,int8
int1対象項目ID (0~7)
int2画像ID
int3画像元 X
int4画像元 Y
int5画像サイズ X
int6画像サイズ Y
int7ブレンドモード
3
半透明合成
4
通過色付き半透明合成
5
加算合成
6
減算合成
int8ブレンド率 (0~255)

CHOICEIMAGEFONT "CHOICEIMAGEFONT",itemID,imageID,fontSizeX,fontSizeY,shiftX,shiftY,blendMode,blendRate
"CHOICES"の各項目を画像フォントタイプに設定します。
この命令で設定した項目は"CHOICEPOS"で位置を設定する必要があります。

画像フォントに関しては OBJECTIMAGEFONT を参照してください。
書式"CHOICEIMAGEFONT",int1,int2,int3,int4,int5,int6,int7,int8
int1対象項目ID (0~7)
int2画像ID
int3フォントサイズ X
int4フォントサイズ Y
int51文字ごとの描画位置補正 X
int61文字ごとの描画位置補正 Y
int7ブレンドモード
3
半透明合成
4
通過色付き半透明合成
5
加算合成
6
減算合成
int8ブレンド率 (0~255)

CHOICEPOS "CHOICEPOS",itemID,align,basePos,posX,posY
"CHOICES"の各項目の位置を設定する命令です。
書式"CHOICEPOS",int1,int2,int3,int4,int5
int1対象項目ID (0~7)
int2文字揃え (0~15)
0
左揃え
&1
中央揃え(X)
&2
右揃え
&4
中央揃え(Y)
&8
下揃え
int3基準となる位置
012
345
678
int4位置補正 X (ドット)
int5位置補正 Y (ドット)

CHOICERESET "CHOICERESET",itemID
"CHOICES"の各項目のタイプや位置設定を初期化する命令です。
-1を指定した場合は全ての項目を初期化します。
書式"CHOICERESET",int1
int1初期化する項目ID
-1
全ての項目
0~7
指定した項目

CHOICES "CHOICES","words","words"...
文字列の数だけ選択肢を作り表示する命令です。
どれか一つ選択されるまでスクリプト処理は停止状態になります。
選択されると選択された文字列のインデックスを_statに返し処理が再開されます。
インデックスは各文字列に0から順番に割り振られています。

文字列を""のように省略すると空欄として選択できなくなります。
文字無しで選択できるようにしたい場合は" "のように半角スペースを入れてください。
特殊属性Break属性
書式"CHOICES","str1","str2"...
"str1~8"表示する文字列

CHOICEWORD "CHOICEWORD",itemID
"CHOICES"の各項目を文字列タイプに設定します。
この命令で設定した項目は"CHOICEPOS"で位置を設定する必要があります。
書式"CHOICEWORD",int1
int1対象項目ID (0~7)

CONTINUE "CONTINUE"
ループを継続する命令です。
"REPEAT"と"LOOP"の間で使用してください。
書式"CONTINUE"

DESTROYCHOICES "DESTROYCHOICES",returnvalue
現在表示されている選択肢を破棄します。
この命令は"SETCOOPERATIVE"で協調レベルを 1 に設定したサブスクリプトで使用してください。
書式"DESTROYCHOICES",int1
int1_stat に返す値

ELSE "ELSE"
"IF"の式が成り立たなかった場合のスキップ先を示す命令です。
この命令は必ず"IF"と"ENDIF"の間で使用します。
書式"ELSE"

ENDIF "ENDIF"
"IF"の式の終わりを示す命令です。
この命令は必ず"IF"とセットで使用します。
書式"ENDIF"

EXITLOOP "EXITLOOP"
実行中のループから強制的に抜ける命令です。
書式"EXITLOOP"

GOTO "GOTO","labelname"
指定されたラベルがある行にジャンプする命令です。
ラベル名は先頭に * を付けてください。
同名のラベルが複数存在する場合は行の浅い方が有効になります。
書式"GOTO","label1"
"label1"ラベル名

GOSUB "GOSUB","labelname"
指定されたラベルがある行にサブジャンプする命令です。
ラベル名は先頭に * を付けてください。
"GOTO"と違ってジャンプする前の行を記憶し、"RETURN"で戻ってくることができます。
ジャンプ先で処理を終えたら必ず"RETURN"で戻るようにしてください。
最大で16重の多重ジャンプをすることもできます。
書式"GOSUB","label1"
"label1"ラベル名

IF "IF",expression
指定された式を判定する命令です。
この命令は必ず"ENDIF"とセットで使用します。
式が成り立つ場合は次の行へ、成り立たない場合は"ELSE"または"ENDIF"までスキップされます。
式が成り立ちなおかつ"ELSE"が記述されている場合は"ELSE"から"ENDIF"までスキップされます。
書式"IF",int1
int1判定する式

LIMIT "LIMIT",enemyLimit,partsLimit
敵の数やパーツ数が指定された数以下になるまでスクリプトの処理を停止する命令です。
-1を指定するとその制限を無効化します。
特殊属性Break属性
書式"LIMIT",int1,int2
int1敵総数制限数 [-1]
int2パーツ制限数 [-1]

LOOP "LOOP"
ループの終点を指定する命令です。
この命令は必ず"REPEAT"とセットで使用します。
書式"LOOP"

REPEAT "REPEAT",loopNumber
"REPEAT"から"LOOP"までの処理を指定された回数だけ繰り返す命令です。
この命令は必ず"LOOP"とセットで使用します。
最大で16重の多重ループをすることもできます。
ループ中は現在のループのループ回数が変数(_cnt)に代入されます。
指定回数が0の場合は"REPEAT"から"LOOP"までスキップされます。
指定回数が-1の場合は無限ループになります。
無限ループから抜け出す場合は"EXITLOOP"を利用してください。
書式"REPEAT",int1
int1ループ回数
0~
指定回数だけループする
-1
無限ループ

RETURN "RETURN"
"GOSUB"で記憶した行へ戻る命令です。
この命令は必ず"GOSUB"とセットで使用します。
書式"RETURN"

SETSCRIPTADDRESS "SETSCRIPTADDRESS","labelname",scriptID,option
任意のスクリプトIDの実行位置を変更します。
位置はラベルによる指定になります。
gosubを指定した場合は一時的なサブルーチンジャンプになります。

スクリプトIDには"ADDSUBSCRIPT"で作成したスクリプトID、もしくはメインスクリプト(ID0)を指定します。

これは実行中でない別のスクリプトIDの位置情報を書き換えることができるため、
場合によっては想定外の動作やエラーを誘発するという点に注意してください。
例えば、対象スクリプトがループの最中にgotoで抜けてしまうとスタックに情報が残ったままになります。
この動作を繰り返すと最終的にスタックがオーバーフローしてエラーになります。
この場合は &2 でスタック情報をクリアすることで回避できます。

また、この命令を多用するとスクリプトの制御フローが解りにくくなります。
よってこの命令による強制ジャンプは必要最低限に留めるべきです。
書式"SETSCRIPTADDRESS","label1",int2,int3
"label1"ラベル名
int2スクリプトID
int3制御オプション
0
goto
1
gosub
&2
gotoの場合にスタックをクリアする

WAIT "WAIT",waitFrame
指定されたフレーム値だけスクリプト処理を停止する命令です。
この命令が実行されるとスクリプト処理から抜けてゲームのメインループに戻します。
そのため待ち時間は指定されたフレーム値+1フレームになります。
フレーム値が 0 ならばスクリプト→メインゲーム→スクリプト、
フレーム値が 1 ならばスクリプト→メインゲーム→(1フレーム待ち)→メインゲーム→スクリプト
という流れになります。
特殊属性Break属性
書式"WAIT",int1
int1停止する時間 (フレーム単位)

WAITFOR "WAITFOR",expression,waitFrame
条件指定でスクリプトを停止する命令です。

int1が偽(int1=0)の場合、実行中のスクリプトを中断し(int2)フレームの間停止します。
停止後は再度この命令が実行されます。

int1が真(int1!0)の場合は中断も停止もせずにスクリプトを継続します。
この場合はBreak属性が無視されます。
特殊属性Break属性
書式"WAITFOR",int1,int2
int1条件式や値
int2停止する時間 (フレーム単位)