濱田功志そろそろプログラミングらしきことに近づいてきました。今回はフラグを格納する変数についてです。【10-1】フラグ変数とはキャラフレのスクリプトでは、汎用的な変数は実装しておらず、変数的な扱いができるものとして、フラグを格納するための配列のみ用意しています。これはキャラフレ開発以前に、コンシューマーゲーム機版のスクリプトエンジンを開発していたことの名残なのですが、ストーリーで必要なフラグを特定の配列に格納し、そのままごっそりメモリーカードにセーブ/メモリーカードからロードしてしまった方が、シンプルでバグを生みにくいからという理由です。PCゲームやオンラインゲームでは、変数使用の制約は殆どないのですが、セーブ/ロード先をデータベースのフィールドにする場合は、無尽蔵に使うよりもメモリーカードのように決まった領域に納めていく方が自然です。そのような理由で、汎用プログラミング言語のように、自由に名前をつけて使えるような変数は実装していません。frag)その場限りで有効な使い捨てできる変数領域として、lf[]という配列が使えます。配列数には特に制限をかけておりませんので、処理系依存です。一応、整数値を格納する設計なのですが、JavaScriptによる実装のため文字列も格納できてしまいます。使う人がわかっていれば構わないことではありますが、特別な理由がない場合は数値を格納する場所として利用してください。記述例lf[0]=10lf[1]=20lf[]の値は、スクリプトの終了タイミングで破棄されます。値を保存したい場合は後述するsf[]配列変数を使ってください。fragというものもありますが、運営が利用するフラグを上書きされる可能性に配慮して、一般公開はしておりません。使用方法もここには書かないでおきます。string)文字列を格納する用途の配列変数です。10-1で申し上げたとおり、lfとlsの使い分けはシステム上意味がないのですが、スクリプト言語記述のお作法として文字列専用としての使い分けをお薦めします。flag)Quest領域と呼ばれる、個人のストーリー用セーブロード領域に保存することのできる変数です。Quest領域を使うには、スクリプトと対応するクエストを設置する必要があります。カレッジで編集室申請時にsf[]変数を利用したいと伝えれば用意してくれると思います。※sf変数の文字列扱いに不備があることがわかりました。仕様から削除させて頂きますこと、お詫び申し上げます。オートロード/オートセーブされる使い方と、明示的にコマンドでロード/セーブをするやり方があります。スクリプト間でデータを共有したい場合は、明示的にセーブ/ロードを使用しなければなりません。コマンド//クエスト使用の宣言Quest[クエストコード].start//sf変数のロードQuest[クエストコード].loadsf//sf変数のセーブQuest[クエストコード].savesf記述例//QS_001の部分は実際に割り当ててもらったクエストコードに置き換えなければ動作しませんQuest[QS_001].startQuest[QS_001].loadsfsf[1]=200Quest[QS_001].savesf注意点として、loadsfは(使っている/使っていないに関わらず)全てのsf領域をセーブデータで上書きしてしまいます。loadsfをうっかり忘れてsavesfをしてしまうと、sf領域を0で上書きしてしまうことになりますので、スクリプトの先頭で必ずloadsfする習慣をつけましょう。savesfはデータベースへの書き込みを伴いますので、それなりの負荷を伴います。重要な値を保存したらsavesfすることは必要だと思いますが、あまり頻繁に呼び出さないように記述してください。一般的にはスクリプトの終了メニューを選んだ時に保存して、それ以外の終了の仕方(ブラウザ再読み込みなど)をした場合のフラグ消失は見る人の自己責任だと考えます。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。