ちょっと買い物に行くから、そろそろ学校の時間だから……などなど、ゴーストを終了するタイミングってありますよね。
その時、終了の理由をゴーストに伝えて、それに対して反応してもらえたらちょっとテンションあがりませんか?
私はばくあがりです。
ってわけなので、それを実現させるための記述の紹介です。
こういう臨機応変的な反応が返ってくるようにするたび、ゴーストがもっと生きてる感じがしてうれしくなる。
里々以外の栞を使っている場合はご注意。
できるようになること
この記述を書くことで、こんなことができるゴーストさんになれます。
- 終了時の理由を伝え、それによって異なる終了の台詞を返してくる
- 次回起動した時、前回の終了理由によって異なる台詞を返してくる
さらに、時間経過の分岐などを加えればこんなこともできるようになります。
例えば…
- 前回の終了理由が「ちょっとコンビニ行ってくる」で、次に起動したのが3日後だった時に「ずいぶん遠くにあるコンビニだね」などと言われる
- クリスマスの日の午前中に終了理由「仕事に行く」を選択すると、「クリスマスなのにお仕事なんだね…頑張ってね…」などと言って終了する
- その10分後にまた起動したら「お仕事行かなくていいの?」と言われる。しかし、もし次の日に起動したら「昨日はお仕事お疲れさま!」と言ってくれる
分岐は無限大!
終了の理由をゴーストに伝える記述
基本的な書き方は簡単です。
終了用の記述を新しく書いて、あとは元からあるゴーストさんの起動時の台詞にちょちょっと手を加えるだけ。
まずは終了の理由をゴーストに伝えて、ゴーストを終了させるための記述を書いていきましょう。
以下の記述を、お好きなdicのどこかにまるっとコピペしてください。
#===========================================
#終了する理由を伝えて終了
#============================================
*終了する_メニュー
:終了する理由をえらんでね。
_スーパーに買い物行ってくる
_ゲームがしたい
_料理する
_もう寝る
*スーパーに買い物行ってくる
$終了理由=スーパー
:ぼくハンバーグが食べたい!
またね!
>終了します
*ゲームがしたい
$終了理由=ゲーム
:ここで見てちゃだめ?
だめか~・・・。
ばいばい!
>終了します
*料理する
$終了理由=料理
:たまごやきって難しいよね~!
ぼくもなんか食べてこよ~。またね!
>終了します
*もう寝る
$終了理由=寝る
:わあ!おやすみ!
また明日ね!
>終了します
*もう寝る【タブ】(現在時)>=8&&(現在時)<=10
$終了理由=寝る
:まだ朝だよ!
しょ~がないなぁ~!
おやすみ!
>終了します
#————————————-
#以下はただの終了コマンド(¥-)です
*終了します
\w9¥-
記述の解説
さくっと記述の解説。
ゴーストを終了するスクリプト
>終了します
このジャンプ先は、のちのちなにか調整したくなった時のために書いてるだけです。
上記の記述では終了コマンド前に\w9でウェイトをつけて、トークがしゃべり終わって即終了されてしまうのを防いでいます。
お好みでこのように書いても問題ありません。
*スーパーに買い物行ってくる
:ぼくハンバーグが食べたい!
またね!¥-
条件分岐をつけてみる
以下のこの部分は、「朝の時間帯」のみ表示されるトークです。
$終了理由=寝る
:まだ朝だよ!おやすみ!
>終了します
午前8時~10時の間のみ、このトークが表示されるようになっています。
また、以下のように書けば、「夏の月」のみ表示されるセリフになります。
$終了理由=寝る
:エアコン直撃で寝ると風邪ひいちゃうんだからね!おやすみ!
>終了します
これは6~8月の間のみ表示されるセリフです。
こんな感じで条件分岐をつけるとよりリアル感が増して楽しい、はず。
次回起動時に、反応をしてもらう記述
「終了理由を伝えて終了」したあと、次に起動する時に前回終了理由に対するトークをしてもらうための記述です。
まず、OnBootなどの起動イベントに以下を仕込みます。
*OnBoot
>前回終了理由に対する起動トーク【タブ】(終了理由)!=0
>起動のランダムトーク
OnBootに起動時のランダムトークのジャンプ>がある場合は、その記述よりも上に追記してくださいね。
あと、【タブ】と書かれている部分は、【タブ】の文字を消して、その場所でTABキーを押して空白を挿入してください。
上記のこの部分をちょっと解説。
「!=」というのは、「右と左が同じ値ではない時」という意味です。
つまりここでは、「終了理由に何かしらの値が書かれているとき、前回終了理由に対する起動トークを表示してね」という意味になります。
ちなみに、OnBootは「ゴーストの交代」などで起動がかかったときは経由されないイベントです。
どこから起動がかかっても、「前回終了理由に対する反応トーク」を表示させたい!という場合は里々wikiの「起動・終了・呼出・交代時に発生するイベントまとめ(SSP調べ)」を見てがんばってください。
上記ページの簡易チャートを見てもらうと分かる通り、通常の起動であればOnBootが経由されるので、よくわからんの場合はとりあえずOnBootに書いておけば問題ないです。
OnBootに上記のものを仕込めたら、反応トークを書けば準備OKです。
こんな感じ:
*前回終了理由に対する起動トーク【タブ】(終了理由)==寝る
$(終了理由)=【タブ】
:おはよう!
よく眠れた?
*前回終了理由に対する起動トーク【タブ】(終了理由)==料理
$(終了理由)=【タブ】
:こんにちは!
ぼくはオムライスを食べたよ!
(ユーザ)はなにを作ったの?おいしかった?
ここでも【タブ】と書かれている部分は、【タブ】の文字を消して、その場所でTABキーを押して空白を挿入しておいてください。
$(終了理由)=【タブ】
上記の記述によって、「終了理由」の中に書かれた値を削除しています。
ここで削除しておかないと、今回普通に終了させても、次回起動した時にまた「前回終了理由に対する起動トーク」が表示されてしまうので…。
これで、書くべき記述は揃いました。
終了理由を伝えてゴーストさんを終了させて、もう一度起動させてみましょう!
トークがちゃんと表示されたら成功です。
応用編:時間を仕込む
ちょこっと応用編。
起動トークに時間による条件分岐を仕込みます。
例えば、終了理由を伝えてゴーストを終了させたあと、次に起動したのが次の日だった、みたいな場合の起動トークの書き方です。
まず終了理由を伝えたあとのセリフをいじります。
例えば、以下の記述であれば:
*スーパーに買い物行ってくる
$終了理由=スーパー
:ぼくハンバーグが食べたい!
またね!
>終了します
このようにしてください:
*スーパーに買い物行ってくる
$終了理由=スーパー
$前回終了した日にち=(現在日)
:ぼくハンバーグが食べたい!
またね!
>終了します
太字の部分が書き足したものです。
変数を1つ、追加しただけです。
そして、起動トークの方に条件分岐を追加します。
こんな感じ:
*前回終了理由に対する起動トーク【タブ】(終了理由)==スーパー
$(終了理由)=【タブ】
>日付が変わってから起動した【タブ】(前回終了した日にち)!=(現在日)
:おかえりなさい!
ねえねえ何かお菓子買ってきた?
*日付が変わってから起動した
:おかえりなさい!
ずいぶんと遠いスーパーなんだね?
コメント