相方(kero側)のシェルの表示・非表示を切り替える方法【伺か・里々忘備録】

相方(kero側)のシェルの表示・非表示を切り替える方法里々の記述

相方側のシェルの表示・非表示を切り替える記述の覚え書きです。
記述の説明書きも添えて紹介しています。
自分でも、今は記述の構造を理解してても、ちょっと時間経つと全部忘れちゃうので…。

初めてゴーストを作っている!という人にも、極力分かりやすいように書いています。

なお、ここでは里々用の記述を紹介しています。
里々以外の栞を使っている場合はご注意ください。

ケロ側のシェルの表示・非表示を切り替える

kero側、いわゆる相方側のシェルを表示にしたり非表示にできる記述です。
伺的なフォーラム」の#33番さんの投稿を参考にさせて頂きました。

前提となる初期設定として、「ケロ側は非表示」になっている状態であるようにしてください。
つまり、メイン側のキャラのつつきメニューなどからケロ側のキャラを呼び出すことで、はじめてケロ側が表示されるようになるという状態であるということです。

ちなみに、一度ケロ側を表示にしたら、つつきメニューなどから非表示の指定をするまでは消えずにそこにいてくれます。
もちろん起動や終了を挟んでも、勝手に消えるといったことはありません。

記述の書き方

記述の書き方として、ざっくりと流れを確認しておくと以下のような感じです。

  1. satori_conf.txtに前提記述を書く
  2. ケロ側の表示非表示部分の記述
  3. 呼び出し部分の記述

上記のうち、2と3に関しては記述の書き方が2パターンあります。

「ケロ側の表示非表示部分の記述」に関しては、シンプルに表示・非表示を切り替えるだけの方法と、ケロ側の状態によって条件分岐を付けられるようにするという2つの記述を紹介しています。

そして、「呼び出し部分の記述」に関しては、つつきメニューの用意がすでにあるかないかによってコピペで使える記述が異なります。

また、そういったことは良く分からないという人向けにも書き方を書いてありますので、安心してくださいませ。

ではやっていきましょう。

satori_conf.txtに前提記述を書く

まず、以下の記述を「satori_conf.txt」内の「@初期化」のよりも後ろに書いてください。
辞書内に書くものではないのでご注意!

$相方キャラの表示=0
$相方が出現中=いない

ケロ側の表示非表示部分の記述

次に、以下の記述をお好きな辞書内にコピーしてぺっと貼り付けます。
ちなみに辞書とは「dic」という3文字から始まるテキストファイルのことです。

#================================
#ケロ側の表示・非表示切り替え
#================================
#以下が呼び出されるたびに、ケロ側のシェルの表示/非表示を切り替えます。
#変数「$相方キャラの表示」には0なら1を、1なら0を格納しています。
#「相方が非表示」の時はサーフェス10番が表示され、「相方が表示」の時はサーフェス20番が表示される。

*相方を呼び出す
$相方キャラの表示=(calc,(相方キャラの表示)==0)
$デフォルトサーフェス1=(when,(相方キャラの表示)==0,10,20)
:keroを(when,(相方キャラの表示)==0,非表示,表示)にしたよ。

上記のものさえあれば、ケロ側のサーフェスの表示と非表示を切り替えることができるようになります。

なお、シャープ記号「#」から始まる行は注釈ですので、削除しても全然問題ありません。
注釈は必要ないよという場合は、シャープから始まっている行は削除してお使いください。

ケロ側の状態によって条件分岐を付ける場合

ですが、上記の記述ではケロ側のサーフェスの状態によってトークを分岐させる、といったことはできません。
つまり、シンプルにケロ側のサーフェスを表示させたり消したりするだけです。

もしも、「ケロ側のサーフェスが表示されているか?非表示なのか?」という状態によって、トーク内容などを変える予定がある場合。

この場合には、コピペした上記の記述は消して、代わりに以下の記述を使ってください。

#================================
#ケロ側の表示・非表示切り替え(条件分岐対応)
#================================
#以下が呼び出されるたびに、ケロ側のシェルの表示/非表示を切り替えます。
#変数「$相方キャラの表示」には0なら1を、1なら0を格納しています。
#「相方が非表示」の時はサーフェス10番が表示され、「相方が表示」の時はサーフェス20番が表示される。

*相方を呼び出す
$相方キャラの表示=(calc,(相方キャラの表示)==0)
$デフォルトサーフェス1=(when,(相方キャラの表示)==0,10,20)
$相方が出現中=(when,(相方キャラの表示)==0,いない,いる)
:keroを(when,(相方キャラの表示)==0,非表示,表示)にしたよ。

#相方がいない時のみ表示される台詞
*【タブ】(相方が出現中)==いない
:相方はいません。

#相方がいるときのみ表示される台詞
*【タブ】(相方が出現中)==いる
:今は相方がいますよ。
:こんにちは。

このように書くことで、ケロ側が表示されている時のトーク・非表示の時のトークと分岐をつけてトークを書くことができるようになります。

ちなみに、先ほどの記述との違いは、以下の1行があるかないかだけです。

$相方が出現中=(when,(相方キャラの表示)==0,いない,いる)

この1行で、相方が表示されているか非表示なのか?の判定を記録しています。

詳しい解説は後述しますので、詳しく知りたい方は参考までに目を通してみてください。

呼び出し部分の記述

最後に、ケロ側の表示非表示の指示を呼び出す部分を書いていきましょう。

まず、つつきメニューなどの用意がない場合。

この場合は、以下の記述をお好きな辞書内にコピペしてください。
もしくは、ご自分で適当な場所にメニュー表示を仕込むのでも大丈夫です。

*0つつかれ
>メニュー

*メニュー
:メニューです。
_(when,(相方キャラの表示)==0,相方を表示にしたい,相方を非表示にしたい)【タブ】相方を呼び出す

一方で、つつきメニューなどが用意されている場合。

この場合は、下記の1行を既存のメニューの項目内に追記するとすぐに使えるようになります。

 _(when,(相方キャラの表示)==0,相方を表示にしたい,相方を非表示にしたい)【タブ】相方を呼び出す
よく分からない場合

「メニューがあるかないか」という部分がよくわからない場合は、「つつきメニューがない場合」の記述を使ってください。

使い方としては、以下の手順を行えば呼び出せるはずです。

  1. 「つつきメニューがない場合の記述」をお好きな辞書内にコピペ
  2. 辞書を保存する
  3. ゴーストを一度終了させて、再び起動させる
  4. メイン側のキャラクターをつつく(右クリックでクリック)

上記を行うと、メイン側のキャラクターをつついた時に「相方を呼び出す」という選択肢が含まれたバルーン(吹き出し)が表示されるはずです。

あとは、その選択肢をクリックすることで、ケロ側のシェルを表示にしたり非表示にしたりすることができます。

サーフェス画像の設定

上記の記述内では、画像の設定は以下のようになっています。

  • 「相方が非表示」の時は、サーフェス10番が表示される
  • 「相方が表示」の時は、サーフェス20番が表示される

ですので、サーフェス10番の画像には透過画像を用意しておいてください。
そうでないと、ケロ側の画像が消えなくなります。

そして、ケロ側に置きたい画像はサーフェス20番としてファイル内に準備しておきましょう。

書き方が分かる方は、各自お好きに辞書内の数字を書き換えて使ってくださいませ。

記述の解説

記述が残っていても解説がないと私が泣いてしまうので、ここからは忘備録をかねた解説です。

上記の記述がどうやって動いているのかを知りたい場合は、もう少しお付き合いください。

when構文

上記の記述では、whenを使った条件式がたっぷり出てきています。
なので、条件の内容を理解するためにも、まずはwhen構文を知っておきましょう。
なお公式の仕様書を確認したい方は、里々wikiのwhen構文に関する説明のページをどうぞ。

when構文の式は、以下の通り。

(when,式,真の場合[,偽の場合])

つまり、以下の記述が行っているのは、シンプルに言うと「デフォルトサーフェス1」という入れ物の中に「10または20の値」を入れてね!ということになります。

$デフォルトサーフェス1=(when,(相方キャラの表示)==0,10,20)

そして「10と20どっちの値を入れるさ?」という問いに対しては、whenにより「(相方キャラの表示)==0」の部分が指示しています。

もっと詳しくいうと、(相方キャラの表示)という変数の中に「0」という数字が入っていた場合、式が「真」になるので、「デフォルトサーフェス1」には「10」が入るというわけです。
言い換えると、相方キャラを非表示にしたい時に「デフォルトサーフェス1」に「10」を入れている、ということです。

そういった処理を、上記のwhen内で行っているのです。

一方で、以下のwhenでは、また違った使われ方をしています。

:keroを(when,(相方キャラの表示)==0,非表示,表示)にしたよ。

こちらでは、変数になにを入れるか?とかではなく、「式が真の時、この文字を表示してね」といった意味で使っています。

つまり、(相方キャラの表示)の変数の中に「0」が入っているとき、式が真になるので、バルーンには「keroを非表示にしたよ。」という台詞が表示されるというわけですね。
逆に、(相方キャラの表示)の変数の中身が0ではない時、式は偽になるのでバルーンには「keroを表示にしたよ。」という台詞が表示されます。

また、「メニューの項目」部分で使っている以下の記述も、つまりは同じことをしているというわけです。

_(when,(相方キャラの表示)==0,相方を表示にしたい,相方を非表示にしたい)【タブ】相方を呼び出す

一見長々とした記述に見えますが、仕組みを理解するとわりとシンプルです。

デフォルト値を変えるのが仕組み

ここで紹介した、ケロ側の表示非表示を切り替える仕組みは、ケロ側のデフォルトサーフェスの値を変更するという動きで作られています。

以下のこの記述によって、ケロ側のサーフェスの「デフォルト値」を変更しているというわけです。

$デフォルトサーフェス1=(when,(相方キャラの表示)==0,10,20)

このデフォルト値を変更することで、表示と非表示の状態を永続的に切り替えることを実現させてます。

ちなみにこれは、もともとのケロ側サーフェスのデフォルト値は「10」であることを踏まえたうえでの記述です。

今回は「初期状態でケロ側は非表示状態にしておきたい」という前提条件があります。
なので、「surface10.png」には透過画像を設定しておきます。
そして、その代わりに「surface20.png」にケロ側に表示させたいキャラの画像を設定してるわけですね。

逆に「初期状態でケロ側も表示させておきたい」のであれば「surface10.png」にケロ側の画像、「surface20.png」に透過画像を設定すればOKです。

calcで0と1を切り替える

さて、記述の中ではwhen以外にも、calcというものも使われています。
次はcalcについて見ていきましょう。
公式の仕様書を確認したい方は、里々wikiのcalcに関する説明のページをどうぞ。

calcが使われているのは、以下の記述の部分。

$相方キャラの表示=(calc,(相方キャラの表示)==0)

これは、「この記述が読み込まれるたびに、(相方キャラの表示)という変数の中に0もしくは1を入れる」というものです。
そして、calcの仕様上、この中には真と偽を意味する0もしくは1という数字しか入らないので、この記述が読み込まれるたびに0と1を交互に入れてくれることになります。

つまり、(相方キャラの表示)に0が入っていた場合は「1」を入れてくれる。
逆に(相方キャラの表示)に1が入っていた場合は「0」を入れてくれる。
calcによって、そんな動きをする記述なのです。

読んでもよくわからん!の人は、以下のような記述を適当なdic内にぺたっとしてゴーストさんに何度か実行してもらうと一瞬で分かります。

 *calcテスト
$calcテスト=(calc,(calcテスト)==0)
:変数の中身は(calcテスト)ですね。

つつきメニューなどの中にでも、「_calcテスト」と書いておけば、簡単に呼び出すことができます。

上記の記述を実行するごとに、「変数の中身は0」「変数の中身は1」と交互に言われるはずです。
calcが行っていることは、つまりはそういうことです。

条件分岐を付ける仕組み

次に、ケロ側の表示非表示によってトーク内容に分岐を付けるための記述周りに関して説明していきます。

以下の記述は、条件分岐をつけるための変数として追加された記述です。
つまり、「ケロ側の表示非表示を切り替える」という動作には一切関わっていません。

$相方が出現中=(when,(相方キャラの表示)==0,いない,いる)

上記の記述の動きを解説しておくと、以下のような感じになります。

  • 「相方キャラの表示」という変数内に0が入っている時、「相方が出現中」という変数に「いない」という文字が入る
  • 「相方キャラの表示」という変数内に1が入っている時、「相方が出現中」という変数に「いる」という文字が入る

正直なところ、上記の1行がなくても条件分岐をつけることはできます。
というのも、「相方キャラの表示」という名前の変数が、上記のものと同じような役割を果たしているからです。

なのでこの1行は必要ないといえば必要ないのですが、個人的にはランダムトークの分岐を書く時に「0・1」と書いてあるよりも「いる・いない」と書かれていたほうが格段に分かりやすいので、あえて上記の1行を追加しています。
それに、パッと見たときに分かりやすい記述の方が、いらぬミスも減るかなとも思い上記の1行を追加しているのもあります。

条件式の書き方

この「相方が出現中」という変数は、ランダムトークの条件式として使うためだけに追加された変数です。
ケロ側のサーフェスの表示・非表示には全く関係してきません。
なので、この記述部分を消しても問題なく動きます。

例えば、ランダムトークに以下のように書いておいたとします。

 *【タブ】(相方が出現中)==いる
相方だよ!ここにいるよ!
:いるね。

そうすると、「相方のサーフェス」が表示されている時のみ、このランダムトークが話されるようになります。

ちなみに、以下のように書いても、上で書いてあるものと全く同じ意味になります。

 *【タブ】(相方キャラの表示)==1
相方だよ!ここにいるよ!
:いるね。

この点が、先ほど説明させてもらった、「相方キャラの表示」という名前の変数が「相方が出現中」という変数と同じ役割を果たしている、という部分になります。

「(相方キャラの表示)==1」のように書くのであれば、「$相方が出現中=(when,(相方キャラの表示)==0,いない,いる)」という1行は使われないため、削除して全然問題ありません。
なので、記述がちょっとすっきりします。
ここらへんは、完全に好みの問題ということです。

また、以下のように書くと「相方が非表示になっている時のみ表示されるトーク」を書くことができます。

 *【タブ】(相方が出現中)==いない
:ケロ側は今は留守だよ。

もしくは、「(相方キャラの表示)==0」と書いても同じ意味になります。

そして、ケロ側が表示されていようが非表示であろうが、どっちの状態でも表示させたい場合は、条件式をくっつけずにいつもの通りに書けば問題ないです。

コメント

タイトルとURLをコピーしました