ランダムトークに関するTIPS。
ランダムトーク数が増えてくると、
新規追加したランダムトークだけを喋らせる機能が必要になることもあると思います。
新規追加分だけ優先して話させる方法と、
既存のランダムトークと混ぜて、等確率で話させる方法を紹介します。
ランダムトークが新規追加されたものかどうかは、作者が決める必要があります。
更新のたびに、辞書を一部修正しなければなりません。
新しく追加したランダムトークは、今回のサンプルでは以下のように記述します。
複数のランダムトークを追加する場合も、同じ書式で追加します。
*新しいトーク :いっつにゅーとーく! :どうせ次の更新では古くなるんだぞ。
既存のものは、デフォルトであれば以下のように書いておきます。
* :いつものトークだぞー。 :いつもどおりだな。
通常のランダムトークをする選択肢と、新規追加されたランダムトークだけを喋る選択肢を用意します。
以下、体をつつくとメニューが出るゴーストを想定しています。
$次のトークは、次のトークで予約されたトーク名を返します。
予約されたトークがあれば、そのトークを優先して話すようにします。
()は、次のトークがあれば、それを話してくれます。
ssu.dllのcalc関数を使用します。
ssu.dllを使おうを参考に、ssu.dllを使用出来る状態にしておきましょう。
Rポストと狛犬であれば、既に使用可能な状態になっています。
トークに引数区切り文字が入ってると正しく動作しません。
ここでは、最初から使え、かつ、使用頻度の低いと思われる「全角カンマ」を使っています。
半角カンマでない理由は、さくらスクリプトを記述する場合などに使用することがあるためです。
以下のコードのカンマは全て全角なので注意してください。
*0つつかれ :メニューだよ _何か話して _新しいことを話して
*何か話して (when,(次のトーク), (), (ごちゃまぜトーク) )
*ごちゃまぜトーク (when,(乱数1~(calc,(文「」の数)+(文「新しいトーク」の数))) > (文「」の数), (新しいトーク), () )
*新しいことを話して (when,(次のトーク), (), (新しいトーク) )
*OnTalkを修正する必要があります。
メニューからは、新旧のランダムトークを等確率で喋るようにしましたが、
ゴーストが自発的に喋る場合も同じ処理を行う必要があります。
*OnTalk >(R1)【タブ】(R0) (ごちゃまぜトーク)
既存の「*新しいトーク」をただのランダムトークにします。
その後、追加するランダムトークを「*新しいトーク」として記述します。
*新しいトーク :更に新しいトークだぞー! :きりがないからやめーや。
* :いっつにゅーとーく! :どうせ次の更新では古くなるんだぞ。
* :いつものトークだぞー。 :いつもどおりだな。