#こちらは同じ名前のゴーストを二つインストールし、それらを同時に起動した場合に自分同士での会話を行うパターンです。 「別々に存在する自分同士でお喋りをする」といった特殊なシチュエーションを実装させられるようになります。 ここでは同じゴーストが複数起動されていて、かつそれがゴーストに認識されている状態を便宜上「ダブルモード」と呼ぶ事にします。 *0つつかれ \![raiseother,__SYSTEM_ALL_GHOST__,ダブルモードチェック,あ] _・何か話して _・さっきの話をもう一度 _・なんでもない *ダブルモードチェック \![raiseother,__SYSTEM_ALL_GHOST__,ダブルモードメニュー,あ] *ダブルモードメニュー _・何か話して _・さっきの話をもう一度 _・もう一人の自分と話す _・なんでもない #↑の記述をゴースト内に加えてみてください。ここでは、「0つつかれ」で発生するのは多くのゴーストで普通に使用されているメニューであると考えてください。 この三つのイベントはひとつのセットで、 ※「0つつかれ」でメニューを開く際に、同時に起動している自分以外の全てのゴーストに「ダブルモードチェック」というイベントを実行するように指示を出す。 ※「ダブルモードチェック」というイベントがあるゴーストは、同時に起動している自分以外の全てのゴーストに「ダブルモードメニュー」というイベントを実行するように指示を出し返す。 ※「ダブルモードメニュー」というイベントがあるゴーストはダブルモード用のメニューを開く(この時最初に「0つつかれ」で発生する筈だった通常のメニューは処理が上書きされて表示されない。)。 という処理を行っています。このイベント群の名前をダブルモードを実装するゴースト専用の物にする事で、「全てのゴーストに指示を出しているが、指示を実行出来るのは自分のコピーのみ」という状態を作り出し、自分と同じゴーストが同時に起動している時のみダブルモード用のメニューを表示する事が出来ます。(ダブルモード用のイベントでは全てのゴーストに指示を出す事しか出来ず、「自分と同じ名前を持っているが自分ではないゴースト(自分のコピー)」を選んで指示を出す事は出来ません。) #「\![raiseoter,,,]」は変数なども他のゴーストに送り付ける事が出来るのですが、今回は実行して欲しいイベントはあっても送り付けたい情報という物はないので、便宜的に「あ」という文字を送っています。これには何の意味もありません。受け取って欲しい情報がある場合にはこの「あ」を別の物に書き換えてください(詳しい情報の送り方や使い方はここでは紹介を見送ります)。 #ダブルモード用のトークの書き方には二つのパターンがあります。両方を紹介しますが、先に、実装が楽で誰にでもおすすめだろうと思われる方から紹介します。 #例1 *もう一人の自分と話す :良い天気だね。 \![raiseother,__SYSTEM_ALL_GHOST__,ダブルトーク1,あ] *ダブルトーク1 :そうだね。 \![raiseother,__SYSTEM_ALL_GHOST__,ダブルトーク2,あ] *ダブルトーク2 :明日も晴れるかな。 #例1はダブルモードでの同じゴースト同士のトークの実装例です。ダブルモード用メニューを表示する時と同じように、「自分以外の全てのゴーストに相槌用のトークイベントを発生するように指示を出す」という処理を自分が話し終わるたびに行っています。 #ダブルモード全体の注意点として、自分以外のありとあらゆるゴーストとイベント名が被らないようにしなければいけないため、暗号のように難解なイベント名を設定する必要があります(他のゴーストに偶然同じ名前のイベントが存在した場合、そのゴーストは指示されたイベントを実行してしまいます)。 #次に、実装例の二種類目を紹介します。こちらは例1と比べて実装が比較的手間で、気を付けなければならない点がいくつかある代わりに、内部的には「コミュニケートらしいコミュニケート」として実装する事が出来ます。 #例2 *もう一人の自分と話す $Value0 \0名 :良い天気だね。 *\0名「 良い天気だね。\w9 $Value0 \0名 :そうだね。 *\0名「 そうだね。\w9 :明日も晴れるかな。 #「\0名」はダブルモードを実装するゴーストの\0の名前にしてください。 #例2は、「自分と同時に起動している他のゴーストにコミュニケートを送る「$ Value0」を使って自分と同じ名前の\0に各トークの全文を送り付け、それが対応しているコミュワードを含んでいれば返事をする」という仕組みです。 #コミュワードの判定では「replace_after.txt」に記述している置換は無視されます。そのため、例のように「。」を「。\w9」に置換するようにしている場合などは、改めて「。\w9」のように書かなくてはいけません。 #例2には致命的な欠点があり、「そうだね。」のように極端に短い台詞は他のコミュワードと被ってしまう可能性が高く、更新を続けていく内に思ったように会話が繋がらなくなる場合があります(同一ゴースト同士のトークの種類が増えれば増えるほどこの問題は大きくなっていきます)。 #例1はイベント名が他のあらゆるゴーストと被らないようにしなければいけませんでしたが、例2は代わりに\0の名前が被らないようにしなければいけません。ただし、こちらは名前が被ってもコミュニケートが中断されるだけで、送られた側が意図していないイベントを発生させてしまうといった致命的な不具合は起こりにくくなっています。 #必要であれば、ダブルモード時に片方のシェルを左右反転する為の処理を記述してください。片方のシェルを反転する事で、シェルによっては同じゴースト同士でも向かい合っているように表現する事が簡単に出来ます。 「\0\![set,scaling,-100,100]」と記述されたイベントを通過すると、ゴーストを終了するまで、¥0のシェルの画像が左右反転されます。「\0\![set,scaling,100,100]」で元に戻ります。 ※注意※シェルの画像を加工(左右反転などを含む)して使用する事を禁止しているフリーシェルもありますので、自分で絵を描いたのではないシェルは、利用規約などをもう一度確認してみてください。