ゴーストさんの設定で、「変数をオンオフさせるだけ・時間を変更するだけ」のものを書く場面はわりとある気がします。
ここでは、そんな「変数を切り替えるだけ」なタイプの設定を行いたい時に使える、スッキリとした記述の紹介をします。
もちろんここで紹介している書き方だけじゃなく、いろいろな書き方で同じことができるので、ああこんな書き方でも動かせるんだな~程度に思って頂けたら幸い。
なお、今回はさくらスクリプトってなんぞや?という人にも分かりやすいように解説も添えつつ説明していきます。
伺かとかゴーストとかをやってみたいけどよくわからない人や、作り始めたばっかりな人向けに説明しているので、分かっているよという人は解説の部分は読み飛ばしてくださいませ。
すでに熟知している人には眠たいかもしれません。ごめんね。
どこかで誰かのお役にたてたら幸い!
里々以外の栞を使っている場合はご注意。
仕様書
記述の紹介の前に、この記述を使うことで何ができるようになるかの紹介と説明をしておきます。
この記述を使うことでできるようになることは、こんな感じです。
- 選択肢を用意する
- 選択肢をクリックすると、変数の値を変える
- この動作を、なるべく少ないジャンプ先>で実装する
これだけです。
この記述でやっていることは、基本的には「選択肢を用意し、クリックした時に変数の値を変える」ことだけです。
言い換えると、クリックする度にオンとオフが切り替わるボタンが作れます。
さらっと説明をしておくと、この「変数の値を変える」という動作を挟むことで、「オンオフボタン」みたいな使い方ができるようになっています。
さらに、なるべくあちこちにジャンプ先を作ることなく、「設定」関連の項目を増やしたり減らしたりしたい時も、この記述を使うことで辞書内の管理が簡単になります。というかシンプルになります。
つまり別の言い方をすると、さくらスクリプトの「\q[タイトル,OnID,r0,r1,…]」という書き方を使って、書けるものは短く便利に書こうぜ!というわけであります。
メリット:とにかくシンプル
あちこちジャンプさせず、短く書くことのメリットはなんなの?という話ですが、一番は「管理がしやすくなる」ということです。
例えば、「しゃべり頻度を変える」という設定を書こうと思ったときに、以下のようにも書けます。
*しゃべり頻度をかえる :僕がトークをする頻度を設定できるよ。 _1分 _2分 _3分 *1分 $喋り間隔【タブ】60秒 :1分ごとだね。たくさん話すよ。 *2分 $喋り間隔【タブ】120秒 :2分だね。わかったよ。 *3分 $喋り間隔【タブ】180秒 :3分にしたよ。
しかし、もしこのように書いた場合、あとで設定項目を変更したいとなった時に、書き直さなければならない箇所が複数出てきます。
例えば、あとから「4分、5分、10分、15分も追加したいなぁ」と思った場合。
その場合は、追加したい喋り間隔設定の項目の数だけ、下記の項目全てを書き直す必要があります。
- 選択肢
- ジャンプ先の名前
- 変数に代入する秒数
- 「何分にしたよ」というセリフ部分(これはオプション)
また、設定項目を削除する時も同じです。
例えば、「やっぱり喋り間隔2分の選択肢はいらないなぁ」などと思った時は、「2分の選択肢」と「2分の選択肢を選んだあとのジャンプ先」の2カ所を消すことになるはずです。
記述をいじるときはいじる箇所が少ない方が謎の挙動の原因につながる可能性も低くなっていいよねっ、てことで、ここで今回ここで紹介しているさくらスクリプトを使った書き方の出番なのです。
選択肢だけをいじればいい
同じ喋り間隔設定の項目を用意するのであっても、さくらスクリプトを使って書くことでもっとシンプルに記述を書くことができるようになるのですね。
例えば、さくらスクリプトを使うと、設定項目を増やしたり減らしたりしたい時にいじるべき箇所は以下の1か所だけになります。
- 設定の選択肢を増やしたい時は、選択肢だけを追加すればいい
- 選択肢を減らしたい時も、その選択肢だけを消せばいい
つまり、選択肢を増やすときも減らすときも、選択肢そのものだけをいじればいいということです。
というのも、さくらスクリプトを使うことで、選択肢がクリックされた時に飛ばされるジャンプ先を作る必要がなくなるからです。
繰り返しになりますが、いじるべき部分が少ないということは、つまり「それだけエラーやうっかり記述ミスを産む確率が下がる」ということでもあるので、さくらスクリプトをどしどし活用していくのはとってもオススメなのです。
また、実際にさくらスクリプトを使う予定はない人も、こういう書き方もあるのか~と知っておくだけでもいいと思います。
今後ゴーストになにかやらせたいことが出てきた時、もしかしたら使えるかもしれません。
知っておいて損なことはない、ハズ。
記述の書き方
ここからは記述の紹介です。
お試し用のゴーストさんなどを用意して実際に動かしてみると分かりやすいかもしれません。
ここで紹介するのは以下の2つの記述です。
- オンオフを切り替えるだけの記述
- オンオフどちらになっているか表示させるための記述
実際にゴーストで使う時は、どちらを使っても大丈夫です。
上記2つの記述の違いは、オンオフを切り替えるだけで良いのか、それともオンオフどちらになっているかの表示も付け加えたいのか、という点だけです。
ですので、お好みと状況によって使い分けてお使いください。
設定のオンオフを切り替えるだけの記述
まずは「設定のオン・オフを切り替えるだけ」の記述を紹介します。
こちらの記述では、現在その設定がオンオフどちらになっているかは表示されないものになります。
なので、とにかくシンプルでいたい場合は、こっちの記述を使うのでも十分かもしれません。
以下をまるっとコピペして、お好きな辞書内に貼り付けてお使いくださいませ。
#つつきメニューなどで飛んでくる *0headつつかれ :はいどうぞ、メニューだよ。 _設定する【タブ】Onオンオフ設定 #以下が設定画面 *Onオンオフ設定 (when,((R0))==オフ,(set,(R0),オン),(set,(R0),オフ)) :オンオフ設定のデモだよ。切り替えたいものをクリックしてね。 \q[もふもふスイッチ,Onオンオフ設定,もふスイッチ] \q[おこじょスイッチ,Onオンオフ設定,おこじょスイッチ] \q[ぽてとスイッチ,Onオンオフ設定,ぽてとスイッチ]
これで、「選択肢をクリックすると、それに対応する変数のオンオフの切り替えができる」という動作ができるようになりました。
さくらスクリプトの「\q[タイトル,OnID,r0,r1,…]」をもりもりに使っています。
なお、*0headつつかれとあるのは、「メイン側のゴーストの頭がつつかれた時に呼び出す」ということです。
この部分は、お好みのジャンプ先名に書き換えてお使いくださいませ。
ちなみに行頭に#がついているものはコメントアウトです。
コメントアウトは削除しても何の問題もないので、必要に応じて消すなり残すなり煮るなりしてください。
使い方・カスタマイズ方法
選択肢、もとい設定の項目を増やす時は、以下の1行を追加するだけでOK!
上記の「選択肢の名前」と「オンオフするスイッチの名前」の部分だけ書き換えて使ってください。
なお、選択肢、もとい設定項目を減らしたい時も、上記の1行を消すだけで大丈夫です。
「選択肢の名前」は、選択肢の項目として表示されるだけの文字なのでなんでもいいです。
「オンオフするスイッチの名前」は、オンもしくはオフという文字列が入ることになる「変数の名前」です。
なので、オン・オフという文字を入れたい変数の名前をここに書いておきます。
オンとオフどっちになってるか表示する記述
でも、これだけでは「そのスイッチが今オンとオフ、どっちになってるのさ?」が分かりません。
なので、さらに以下のように書くと、スイッチがどっちになっているのか、が分かりやすくなります。
*Onオンオフ設定 (when,((R0))==オフ,(set,(R0),オン),(set,(R0),オフ)) :切り替えたいものをクリックしてね。 \q[もふもふスイッチ「(when,(もふスイッチ)==オフ,オフ,オン)」,Onオンオフ設定,もふスイッチ] \q[おこじょスイッチ「(when,(おこじょスイッチ)==オフ,オフ,オン)」,Onオンオフ設定,おこじょスイッチ] \q[ぽてとスイッチ「(when,(ぽてとスイッチ)==オフ,オフ,オン)」,Onオンオフ設定,ぽてとスイッチ]
whenという、条件分岐のための関数を追加しました。
なんだか q[ 以下の1行が長くなってますが、whenが何なのか、が分かるととっても単純です。
上記で使われているwhenは、こんなことをしてくれています。
- 「スイッチがオフのとき、この文章を表示してね。オフ以外ならこの文章を表示してね」
- 「スイッチがオフだったら、オンに切り替えてね」
つまり、when分岐によってスイッチ変数のオンとオフを切り替えているだけのもの、というわけです。
初期値の設定が必要
ですが、このように「そのスイッチが今オンとオフ、どっちになっているのか?」を表示させる場合は、初期設定として各変数に値を入れておく必要があります。
なので、「satori_conf.txt」の中の「*初期化」の以下に「$もふスイッチ オフ」などと、各変数の分だけ書き加えておいてください。
もし、「*初期化」以下に初期値を書きたくない場合は、whenを以下のように書くことで対処できます。
上記は、(もふスイッチ)に変数が何も入っていない時は「未設定」という言葉を表示してね、といった意味のwhen分岐を付け加えたものです。
ちなみに、上記の一部の区切り文字が、コンマ「,」から句読点「、」にしてあるのは打ち間違いではなく仕様です。
もしかしたらwhenlist関数を使っても、上記のものと同じ意味を示したうえで、もっと短く書くこともできるのかもしれません。
こんな感じ:(whenlist,(もふスイッチ)==,オン,オン,オフ,オフ,未設定)
さくらスクリプトの解説
それと、さくらスクリプトの「\q[タイトル,OnID,r0,r1,…]」の解説もしておきます。
「記述をスッキリ書くため」に、いちばんキモとなる部分です。
変数の値を変える
さくらスクリプトの「\q[タイトル,OnID,r0,r1,…]」を使うと、「On~」からはじまるトーク先に飛んだ時、(R0)(R1)(R2)…の中に自分の指定した文字列を入れることができるのです。
めちゃくちゃ便利です。もうこれだけでなんでもできます。
上記の記述では、以下のように書いてあります。
つまり、この選択肢をクリックすると、以下のような動きが起こります。
- 選択肢がクリックされた
- 再び「Onオンオフ設定」のトークに戻ってくる
- それと同時に、(R0)に「もふスイッチ」という言葉が代入される
肝心なのは、3番目。
「(R0)に「もふスイッチ」という言葉が代入される」これが大切です。
というのも、この(R0)が、when分岐での条件に組み込まれているからです。
以下の部分ですね。
このままでは(R0)と丸カッコだらけで分かりづらいと思うので、(R0)を「もふスイッチ」という言葉に書き換えてみましょう。
すると、こんな風になります。
(R0)になんの言葉が入るかは、どの選択肢がクリックされたか?によって変わります。
つまり、クリックされた選択肢によって(R0)の中の文字列が変わるので、成り立っている記述というわけなのです。
失敗例
ちなみに、ジャンプ先の名前をこのように書くと動作しません。
これは、ジャンプ先「Onオンオフ設定」の「On」の文字をとっぱらったものです。
「On」の文字がないと、(R0)の中にうまく文字列が入らないので、うまく動かすことができなくなります。
なので、(R0)などに任意の文字を入れたい時は、ジャンプ先を必ず「On~」からはじめる必要があるのです。
そこだけご注意。
コメント