スクリプト/2回目以降のイベント内容変更(履歴ID:248)

最終投稿者:User icon mini 退会したユーザー 更新:2012/05/06 09:05:50
何回か話しかけるとイベント内容が変わるようにするスクリプトには

様々なやり方がありますが、

最も簡単な形で行くならif文でやるのがお勧めです。

え?そんなの基本中の基本だって?「初心忘れるべからず」ですよ。

特にend忘れとかよくする人は基礎から復習してもいいと思います。


#2回目以降のイベント内容変更
if getFlag("2回目以降のスクリプトフラグ")
  #ここに2回目以降に表示したいスクリプトを書く
else
  #ここに1回目にやりたいスクリプトを書く
  setFlag("2回目以降のスクリプトフラグ", true)
end

setFlag関数でフラグを設定し、

getFlag関数でフラグの状態を取得します。

フラグの中身は
truefalseの2択(正確に言うと何もないnullもあるので3択)なので、

そのままif文に使うことができます。

ただし、変数にもtrueやfalseを入れることはできるので、
実は必ずしも使う必要はありません。

#これは上のスクリプトと同じ動きをします
if getVariable("2回目以降のスクリプトフラグ")
  #ここに2回目以降に表示したいスクリプトを書く
else
  #ここに1回目にやりたいスクリプトを書く
  setVariable("2回目以降のスクリプトフラグ", true)
end

setVariable関数が変数の設定getVariable関数で変数を取得します。

set~は何かしら設定get~は何かしら取得すると覚えておくといいでしょう。


スクリプトに分かれ道を作る文はif文の他にも、case文while文があります。
(というか、この3つしかないので、ぜひおさえておきましょう。)

いずれも、文の最後にendを入れるのを忘れないようにしてください。
#ダメな例
if getFlag("おい待て")
if getFlag("endどこいった")
  speak("これが出たら文法ミスとかない証拠")
end

#良い例
if getFlag("おい待て")
  if getFlag("endどこいった")
    speak("  ↑ちゃんとあるからw")
  end
end

if、case、whileの数だけendも必要です。

if、case、whileを書いた直後に改行してendを書いてしまいましょう。

さて、どうせなのでちょっと応用しますか。

case文を使って、回数に応じて動きを変えてみます。

あ、言い忘れましたが、基本的には変数には最初に何か入れておくことをお勧めします。
#こんな感じに
setVariable("話した回数", 0)

#フラグとして使うならこっちかな
setVariable("2回目以降のスクリプトフラグ", false)

#話した回数に応じて内容を変える
case getVariable("話した回数")
  when 4
    speak("4回目。こんな感じでいくらでも増やせます")
  when 3
    speak("3度目の正直!\nといっても何もないよ")
  when 2
    speak("これ2回目")
  when 1 
    speak("これ1回目")
  else
    speak("5回以上話すと全部こっち")
end

setVariable("話した回数", getVariable("話した回数")  + 1)


あまり知られていませんが、case文でもelseを使うことはできます

話した回数はどんなときでも数えておく必要があるので、
case文の外に出してます。


  • 参考資料
 (ブラウザのお気に入りに入れておくことを推奨します)
 スクリプト言語のマニュアル
 関数リファレンス
 スクリプト/Rmakeで自由なゲームをつくろう / 第01回 スクリプトって何?