公式で「隠し機能」と呼んでいる、<<~~>>のような書き方での文字列コマンドのこと。
演算子はイコールではなく【に↓のファイル内容読込】である。
ここを間違えると入力した文字列がそのまま返ってくるので注意。
<<~~>>内部は全て半角大文字。
文字列での戻り値なので、数値に変換する場合は画像参照。
| 書式 | <<GET_SOUNDTIME>>ファイル名 |
| 実装バージョン | 2.264 |
| 効果 | 音声ファイルの再生時間をミリ秒で得る |
| 戻り値 | そのファイルの再生時間 |
SEの再生時間を取得し、その再生が終わってから次のSEを再生しています。
ウェイトだと他のイベントに干渉する恐れがあるので、SEの再生遅延で対応しました。
※ ピクチャ表示・移動や音声の再生などは、基本的に遅延(ディレイ)で対応したほうが後々ラクになります。きっと。
| 書式 | <<GET_FILE_EXIST>>ファイル名 |
| 実装バージョン | 2.271 |
| 効果 | ファイルまたはフォルダが存在するか確認する |
| 戻り値 | 存在で【1】 なければ【0】 |
Data/Pictureフォルダ内部に0.pngから20個の連番画像があるかを調査し、あった場合にだけピクチャコマンドで描画しています。
この場合の戻り値は1と0しかないのと分岐に使用するだけなので、数値に変換はせずに文字列で条件分岐しています。
| 書式 | <<GET_DIRECTORY_EXIST>>ファイル名 |
| 実装バージョン | 3.241 |
| 効果 | フォルダが存在するか確認する |
| 戻り値 | フォルダ存在で【1】 なければ【0】 ※ ファイルは有無両方【0】 |
元となるコモンから呼び出し、ファイル一覧取得→一行カット→そのパスがフォルダかどうか、を判定しています。
フォルダだった場合はルートを記録し、再帰的に自身を呼び出しています。
ファイルだった場合はファイル一覧に記録、文字列がなくなったらその一覧を出力します。
この処理では最初に見つかったファイルのあるフォルダしか一覧が出せませんが、10行目の直前で【現時点でのファイル一覧残り】【現時点でのフォルダパス】を記録しておけば、おそらくDataフォルダ内全ファイルが一覧で出力されるはずです。
| 書式 | <<GET_MAPEVENT_ID_FROM_NAME>>イベント名 |
| 実装バージョン | 3.00 |
| 効果 | マップイベント名からマップイベント番号を得る |
| 戻り値 | そのマップイベントID 同名が複数ある場合は一番大きいID (なければ【-1】) |
マップイベント名→マップイベントIDを得ます。
| 書式 | <<GET_MAPEVENT_NAME_FROM_ID>>イベントID |
| 実装バージョン | 3.00 |
| 効果 | マップイベント番号からマップイベント名を得る |
| 戻り値 | そのマップイベント名 なければ【<<NotFound>>】 |
マップイベントID→マップイベント名を得ます。
| 書式 | <<GET_COMMONEVENT_ID_FROM_NAME>>イベント名 |
| 実装バージョン | 3.00 |
| 効果 | コモンイベント名からコモンイベント番号を得る |
| 戻り値 | そのコモンイベントID 同名が複数ある場合は一番大きいID 存在しなければ【-1】 |
コモンイベントID→コモンイベント名を得ます。
※コモンイベント名→コモンイベントIDを得る方法はありません
| 書式 | <<GET_MAPEV_FILENAME>>イベントID |
| 実装バージョン | 3.00 |
| 効果 | マップイベントIDからマップイベントの画像ファイル名を得る |
| 戻り値 | 画像ファイルの場合:今のキャラチップの画像ファイル タイル画像の場合:<TILE>15(タイルの数字) 設定されていない場合:空白 イベントがない場合:<<NotFound>> |
キャラチップに設定されている画像ファイルを得ます。例では、イベントを全走査してファイル名を列挙しようとしています。
イベントIDは消すと飛ぶので、そのあたりを変数操作+でマップイベント数を取得して処理しています。
このコマンドに限らず、隠しコマンド全般は「取得できない情報を無くす」ような感じで実装されている気がするので、なにかシステムを組むときに余計なDBを増やさずに済むのでありがたいです。
| 書式 | <<GET_TILE_FILENAME>>タイルセット番号 |
| 実装バージョン | 3.00 |
| 効果 | タイルセット番号のタイルファイル名を得る |
| 戻り値 | タイルのファイル名 0なら基本タイル画像、1~31がオートタイル画像 |
例のように「0」を設定すると、そのマップの基本タイルセットファイル「MapChip/Base_BaseChip_pipo.png」が返ります。
「1」を設定すると、1番目のオートタイル画像「MapChip/Auto_Dirt1-Dirt2_pipo.png」が返ります。2以降も同様。設定されていない場合は空白。
【タイルセットの番号】ではなく、そのマップに設定された【タイル番号】であることに注意。
| 書式 | <<GET_FILENAME_FROM_PICTURE>>ピクチャIDの数値 |
| 実装バージョン | 3.00 |
| 効果 | ピクチャの画像ファイル名を得る |
| 戻り値 | ピクチャの画像ファイル名 ピクチャが存在しない場合<<NotFound>> |
そのピクチャ番号に設定されたファイル名を得ます。
<SCREENSHOT>や<SQUARE>はそのままの戻り値ですが、<CUT/X10-150/Y40-300>CharaChip/Animal_Cat_pochi.pngの場合は<~>部分は省略され、ファイル名だけが戻り値となります。
| 書式 | <<GET_STRING_WIDTH_COUNT>>文字列 |
| 実装バージョン | 3.00 |
| 効果 | 文字列の長さを半角1、全角2換算で得る |
| 戻り値 | 半角換算の文字数 改行や特殊文字はカウントしない ただし「\\」(半角¥マーク)は1とカウント |
文字列の長さを取得します。例では半角と全角のそれぞれの数を計算しています。
ループ内部は半角も全角も1文字としてカウントする文字数を、隠し機能では半角1、全角2とした文字数をカウント。ループ終了後に半角全角の数をそれぞれ計算しています。
| 書式 | <<CUT_STRING_WIDTH_COUNT=数値>>文字列 |
| 実装バージョン | 3.23 |
| 効果 | 数値の横幅分で文字列をカットして得る(半角1、全角2換算) |
| 戻り値 |
UI上の制約などでキーボードの入力文字を制限したい場合、バイト数入力制限だとうまくいかない場合が多いです。
半角数字の123...は1バイト、半角カナのアイウ...は3バイトなど、見た目とバイト数が一致しないためです。
フォントにもよりますが、この機能だけで表示幅に悩むことはなくなりそうです。
プロポーショナルフォントなどでどうしても厳密に幅制限したい場合は、0Fでピクチャ表示→ピクチャ幅取得→オーバーしていたら最終文字カット、のようなコモンを作ることで解決しそう。
文字列のコマンドと違い、<~>カッコは二重ではない。
<~>カッコ内は全て半角大文字。
| 書式 | <SCREENSHOT> |
| 効果 | 表示したフレーム時点で画面に映っている内容をそのままピクチャとして取り込み |
スクリーンショットを、拡大率25%、角度30度、赤くして表示してみました。
普通のピクチャとして扱えるので、分割や自由変形もできます。
※ Pro版はファイルとして保存できます。(.jpg .png)
| 書式例 | <CUT/X10-150/Y40-300>ファイル名 |
| 効果 | 画像から指定範囲だけ切り出して表示する 例では、xが10-150、yが40-300の範囲を切り取り |
画像をそのまま表示したもの、x5-60、y5-60の範囲を切り取ったものを表示しています。
会話専用の顔グラ、カットインの画像…のようにたくさんの画像を切り取って素材にしなくても、一枚の画像素材があればある程度自由が効くようになって便利です。
| 書式 | 効果 | 備考 |
| <LINE> | 直線 | 太さ1px |
| <LINE-太さ> | 太さpxの直線 | |
| <SQUARE> | 塗りつぶされた長方形 | <SQUARE>FRAMEで外枠のみ |
| <TRI-UP> | 塗りつぶされた上向き三角形 | <TRI-UP>FRAMEで外枠のみ |
| <TRI-DOWN> | 塗りつぶされた下向き三角形 | <TRI-DOWN>FRAMEで外枠のみ |
| <TRI-LEFT> | 塗りつぶされた左向き三角形 | <TRI-LEFT>FRAMEで外枠のみ |
| <TRI-RIGHT> | 塗りつぶされた右向き三角形 | <TRI-RIGHT>FRAMEで外枠のみ |
| <GRADX-000-999> | 長方形内に横方向のグラデーション | 000-999はRGBの数値 |
| <GRADY-000-999> | 長方形内に縦方向のグラデーション | 000-999はRGBの数値 |
画像は、すべて大きさ40*40で生成した例。
GRADXとGRADYだけ設定数値が特殊。000が黒、999(Rが9、Gが9、Bが9)が白。
0-100の数値をを変換するならX/100*9、0-255ならX/255*9のように、馴染みのない数値になる。
ほかSQUAREなどの色を変えたい場合は、カラーでRGBを0-100で設定すると良い。オール100で白になる。