画面上に表示されたメッセージを保存する MessageStore.ks 1. はじめに MessageStoreは、画面に表示された文字を f.messagestore に保存する。 最近のゲームでよくある、ロード画面にセーブ当時の画面上のメッセージを 表示するようなシステムを作る場合に使用する。 2. 使用例 最初に一回だけ、KAGスクリプト(例えばfirst.ks)の頭で以下を実行。 [call storage="MessageStore.ks"] この後、画面上に表示された文字列が f.messagestore に逐次格納 される。f.messagestore は、[cm]、[ct]、[er] でクリアされる。 3. KAGタグリファレンス [ms_clear] 説明: f.messagestore を明示的にクリアする。 引数: なし。 [cm]、[ct] 説明: デフォルト[cm]、[ct]の動作に加え、f.messagestore をクリアする。 引数: なし。 [er ms_noclear] 説明: デフォルト[er]の動作に加え、f.messagestore をクリアする。 引数: ms_noclear= true デフォルト[er]と同じ動作をし、f.messagestoreを クリアしない false(def) 「説明」欄に同じ。 [messagestore_setopt pause=true|false] 説明: f.messagestore に対するオプションを指定する 引数: pause= f.messagesotre への文字列出力を一時停止・再開する。 右クリックルーチンなどで文字列を出力してほしくない時に 使用する。 true f.messagestore への文字列出力を一時停止する false f.messagestore への文字列出力を再開する 4. 保存される文字列の形式 [r]以外の全てのタグは f.messagestore には記録されない。だから、 例えば"フーサバースディハッピー、[r]フーサバースディハッピー"などの 形式で記録される。 5. 注意点 f.messagestore には、[ch] タグで表示した文字列が逐次追記される。 一方、変数 f.* は、「ラベルを通過した時(通常は改ページ直前)に 保存」され、なにもしなければセーブ時にはこの「ラベルを通過した 時の値」がセーブされる。 そのため、「現在の」f.messagestore をセーブするのであれば、 セーブルーチン中で、改めてこの変数を保存する必要があることに注意。 6. 四方山 こういうのを汎用的に実装するのって難しい…。なるべく汎用的に と思って、現在はこのような形になっている。なんかもっとトレビヤンな 方法とかマクロとかがあれば是非ご連絡下され。 あと、やっぱりこういうのはアドオンの形じゃなくてシステムに最初から 作りこまれてないと厳しいなと思ったり思わなかったり。 7. メモ [mr][mp]も追加しようかどうしようか悩み中。 [r]と[p]を乗っ取り、改行・改ページまでのテキストを保存する。