全てのトークで使えるTIPS。関連:ランダムトーク




違う台詞を同時に喋る

スコープ切り替え用スクリプト「\0」と「\1」を使用する。例示。

:\0サ\1う\0ン\1に\0バ\1ゅ\0ー\1う\0レ\1ぃ\0イ\1ん\0ン

この際、前後をクイックセクション(「\_q」)で囲めばノーウェイトで表示可能。

:\_q\0サ\1う\0ン\1に\0バ\1ゅ\0ー\1う\0レ\1ぃ\0イ\1ん\0ン\_q

ただし自動挿入ウェイトの倍率や使用する文字(自動挿入ウェイト対象の文字や、replaceでの書き換えでウェイトを挿入している文字)によっては、表示がガタつく。

違う台詞を同時に喋る@さおり

やぎさん製作のSAORI、「parallel」を使えば、スムーズな表示での同時喋りを実現できます。
現在の配布場所はこちら。http://ukgk.s34.xrea.com/poskoma/

記述例

*
(parallel,オロナミンC,リポビタンD)

三人同時喋りにも対応しています。

*
(parallel,大豆,にがり,おいしい水)

起動時間イベント

*OnMinuteChange
>起動時間イベント【タブ】(OS起動分)==0&&(Sender)!=NiseRingo
*起動時間イベント
>起動5時間まで【タブ】(OS起動時)<5
>起動10時間まで【タブ】(OS起動時)<10
>起動15時間まで【タブ】(OS起動時)<15
:起動から(OS起動時)時間。……はぁ。
*起動5時間まで
:起動から(OS起動時)時間経過しました。
*起動10時間まで
:起動から(OS起動時)時間。……まだ続けますか。
*起動15時間まで
:起動から(OS起動時)時間経過したよー……

起動から一時間ごとにイベントトークが発動します。
偽林檎では(OS起動分)が取得できず常にゼロため、(Sender)で分岐させてあげないとトークするたびに起動時間イベントに飛ぶ場合があります。

偶数時間経過ごとにトークの場合
「割り算結果の余り」を求める演算子 % を使ってください。

*起動時間イベント
>何もしない【タブ】(OS起動時)%2==1

とか。

会話にフラグをたてる

例えば、ゴーストからユーザさんに「これあげる」みたいなイベントで。

*プレゼントイベント
>前にもらったことがある【タブ】(プレゼントもらった)
:ね、(ユーザ名)さんにこれあげる。
$プレゼントもらった=1
*前にもらったことがある
:こないだあげたあれ、大事にしてくれてる?

バレンタインイベント等で、チョコを何度もあげないようにしたりほかにもいろいろ応用範囲は広いです。

ループ(簡易)

内部関数のloopを利用した動的なループ

(loop、犬、3)

とすると(犬)(犬)(犬)と同じ意味に。回数を実行時に指定できるのがキモ。
(犬は*犬とか@犬とかトークか単語群等)
加えて、実行中は(犬カウンタ)という変数が1,2,3と順番に設定されます。
終了後に消えます。

(loop、犬、0、3)

と指定することもできます。この場合(犬カウンタ)は0,1,2,3と変化します。
さらに

(loop、犬、1、4、2)

と指定することも。この場合(犬カウンタ)は1,3と変化します。

(loop、犬、4、1、-1)

なんてのも。4,3,2,1と変化。最初の引数にカッコをつけないようご注意。

全てのランダムトークに同じ処理を与える

省略されている場合が多いので気づきにくいのですが、自発的に喋るランダムトークは必ず *OnTalk を経由します。

*OnTalk
>(R1)【タブ】(R0)
()

*OnTalkに何かやらせる場合は上の書式に“追加”する形で記述してください。そうしないと正常に動かなくなります。

では、実際に何か追加してみましょう。

*OnTalk
>(R1)【タブ】(R0)
()
$トーク回数=(トーク回数)+1

こうすればランダムトークの回数を自動的にカウントしてくれます。

*OnTalkの段階で各種トークへの分岐条件を設けるのもありです。

順番に1回だけ読むスクリプト

正確にはランダムトークではないですが関連ということでここに入れておきます。
変数とかの名前は、被らないように適宜変更してくださいな。

*
$カウンタ=(カウンタ)+1
>その(カウンタ)
$カウンタ=(カウンタ)-1
:ネタ切れです。
*その1
:うちの犬が階段でこけました。
怪我はありませんでした。
*その2
:今日のお夕飯はおそばでした。
きざみ海苔が大量にかかってて豪華な気分でした。

一つにはニュース的な用途。それから、ランダムトークなしでこのスクリプトだけってゴーストもありかと思う。ゴーストって「同じネタの繰り返し」が当たり前みたいになってるけど、それが向いてるゴーストばかりじゃないよね。順番じゃなくランダムトークそれぞれを「1回だけ」にしたいって人がいたら、別に方法を考えます。

1日に、1回だけ読むスクリプト。

*日記を読む
>日記初回【タブ】(変数「今回日記」の存在)==0
$前回日記【タブ】(今回日記)
$今回日記【タブ】(現在年)(現在月)(現在日)
>今日の日記はなし【タブ】(compare,(前回日記),(今回日記))
>(現在月)月(現在日)日の日記
>ランダムの日記
*日記初回
$今回日記【タブ】(現在年)(現在月)(現在日)
:初めて日記を書きます。
*今日の日記はなし
:もう読んだでしょ?
#特定で呼び出される日記
*2月14日の日記
:今日はバレンタインですねー。
#ランダムで呼び出される日記
*ランダムの日記
:(現在月)月(現在日)日の日記。
晴れでした。

日記の場合、夕方以降に見れるほうが自然。

>(現在月)月(現在日)日の日記
>ランダムの日記

>(現在月)月(現在日)日の日記【タブ】(現在時)>17
>ランダムの日記【タブ】(現在時)>17
>まだ書いていない
*まだ書いていない
:まだかいてません。

にする。

直前のランダムトークをもう一度喋る

(remember)を使うとイベントトークまで回想してしまうので使わない。
ランダムトークを喋らせる時必ず()の下に「$r_talk【タブ】(H1)」の一行を入れるようにし、回想時に(r_talk)とだけ記述。
(H○)とか使うとバグの元なので、先にr_talkにランダムトークを代入してから喋る方式を推奨します。

*メニュー
:メニューです。

_○何か話して
_○さっきの話をもう一度

*OnTalk
>(R1)【タブ】(R0)
$r_talk【タブ】()
(r_talk)

*○何か話して
$r_talk【タブ】()
(r_talk)

*○さっきの話をもう一度
>まだ何も話してない【タブ】(変数「r_talk」の存在)==0
(r_talk)

*まだ何も話してない
:まだ何も話してないよ~。

単語群のひとつの単語から2語以上拾う

*
$その1【タブ】(split,(ゴーストと相方),~)
$その2【タブ】(S0)
$その3【タブ】(S1)
:さっきね、(その2)に会ったよ。
:おお、(その3)は一緒だったか?

@ゴーストと相方
つぐな~今宵
さくら~うにゅう
双葉~ただきちさん
赤十字遥~タノ

みたいな。 この場合「~」で区切られた文字をそれぞれ、その2、その3に入れてるわけです。
「~」は、「、」とか、自分の好きなように。
(replace系の指定文字とかドットとかコロンとかは避けるべし)
もちろん、

$その1【タブ】(split,(しりとり),、)
$その2【タブ】(S0)
$その3【タブ】(S1)
$その4【タブ】(S2)

@しりとり
りんご、ごりら、らっぱ
たぬき、きつね、ねこ
のびた、たぬきうどん、おまえの負け

:しりとりするぞー。じゃあ、「(その2)」!
:えーっと、「(その3)」。
:(その4)

みたいに3個以上でも使えます。ちなみに、(その1)には、分割した数が入ります。
詳しくは、splitの使い方を。


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-11 (土) 07:27:51