スクリプト/フラグ(履歴ID:63)

最終投稿者:Nyan mini rurun9 更新:2012/03/04 17:22:35
フラグ変数は、true または false のどちらかの値を記録する、完全二択の変数です。
ON-OFFのスイッチみたいなものだと考えて下さい。

フラグをセットするときは次のように書きます。
setFlag( "たわし", true )
setFlag( "Love", false )
フラグ名は、変数名同様に自由に決めて構いません。
このとき、名前は文字列で与えないとダメなのでダブルクォーテーション" "で括って下さい。
・参考 wiki スクリプト/変数

フラグがどちらの値なのかを調べるには
getFlag( "たわし" )
と書きます。
(コレを書いただけでは、何も起こりませんが)スクリプトに getFlag を書くと中身のtrueまたはfalseが返ってくるので、変数に入れたり if文に使う事ができます。
書き方の例は以下のページをご覧下さい
スクリプト言語のマニュアル
・wiki スクリプト/つくってみよう0


このフラグ変数を用意する事で、状況によって異なるイベント処理を行う事ができます。
例えばRPGで
「Bさんに話しかけると、Aさんの話す内容が変わる」
というのをつくってみましょう。


  • Aさんのスクリプト
speak("「聞いてくれよ!\n 今日食べようと思ってとっておいたプリンが無くなってるんだ。」")
if getFlag("プリン")
  speak("「え?\n Bが食べちゃったの!?\n Bの奴、覚えてろよ…」")
  fadeOut(0,0,0)
  setFlag("プリン", false)
  fadeIn()
  speak("…そして一週間が経った。")
else
  speak("「おかしいなぁ。昨日は確かにあったのに。」")
end


  • Bさんのイベントスクリプト
setFlag("プリン", true)
speak("「実は冷蔵庫にあったプリン食べたの、俺なんだよね。」")


フラグ変数「プリン」をつくっています。コレの中身によってAさんの話が分岐します。
最初にAさんに話しかけた場合には
フラグ変数「プリン」は存在しない、すなわち中身はありませんが(null という状態)、とにかくフラグ変数「プリン」の中身が true ではないので、else の方の処理が実行されます。
次にBさんに話しかけると、フラグ「プリン」を true に変更しつつ、プレイヤーに真実が明かされます。
再びAさんに話しかけたら、Bさんが食べた事に気付くのです。
フラグを戻しているのはオマケの演出ですね。


こうしたフラグ変数を利用する事で、色々なイベント処理ができます。

例えばイベントスクリプト左下の「有効条件」欄に
getFlag("フラグ名")

と書く事で、フラグがtrueのときだけ実行されて、falseのときは実行されない(見えない)イベントを設置できたりします。
逆に有効条件を !getFlag("フラグ名") と書けば、フラグがtrueになると消えるイベントになります。

尚、イベントの有効条件の欄には「条件式」だけを書けば動きます。if文を全部書くとエラッタするので間違えないように。
有効条件にフラグを使った場合の設置するキャラクターを、扉などの絵で通行不可にする事で、いわゆる関所みたいなものを作る事もできるのです。