幻日幻月環

作成した伺かの更新情報などをつぶやくところ

値を設定するバーの作成

2016/01/15修正

----
里々のちょっとしたロジックを提供するコーナー。
全て、里々wikiukadocの情報の組み合わせで作ります。
里々のサンプルゴースト「Rポストと狛犬」を書き換えて自ゴーストを作るくらいの知識が必要です。

今回は、「値を設定するバーの作成」。
サンプルとして、喋り頻度の設定使います。
コピペで動くので適当にカスタマイズしてみてください。

詳細は続きに。
----
使うもの
----
Rポストと狛犬
このゴーストの中身を改変して、動作を確認します。

----
今回触るファイル
----
フォルダ
 R_POST_and_KOMAINU\ghost\master\
ファイル
 dic03_Menu.txt
 satori_conf.txt

----
喋り頻度
----
$喋り間隔に値を入れることで設定できます。
Rポストと狛犬が設定機能を持っていて、多くの里々ゴーストさんがこの機能を搭載しています。
ですが、間隔が1分おきなので結構おおざっぱです。
もっと細かく設定でき、直感的に設定できるようにしてみましょう。

dic03_Menu.txtの34行目、メニュー表示部分

*0Faceつつかれ
:メニューです。

_隣のゴーストにでんぱを送る
_ポストと話したい
_ご意見やご要望など
_喋り頻度
_らぼ

_なんでもありません


戦闘に「_」(全角アンダーバー)で始まる文字を書くと、選択肢になります。
「_喋り頻度」は、選択すると57行目にある「*喋り頻度」が呼び出されます。
メニューの「_喋り頻度」を削って、喋り頻度を設定するバーを出すことを目標とします。

----
完成イメージ
----
10秒間隔で設定できて、バーの部分は太字で表示するようにしましょう。

↓イメージ図
「0」をクリックすると、喋り頻度が0秒に。「|」や「-」をクリックすると、対応した秒数に。

喋り頻度の設定。今の設定…180秒
0||||||||||||||||||--------------------------------


↓適当に真ん中当たりをクリックした場合。

喋り頻度の設定。今の設定…250秒。
0|||||||||||||||||||||||||-------------------------


----
作り方
----
簡単に言うと、選択肢を一杯並べて作ります。
「|」と「-」は全部個別の選択肢として作ります。
作る処理は以下です。
・いちいち表示が終わるのを待ちたくないので、メニューの瞬間表示
・選択肢を表示するSakuraScriptと、選択した時に喋り頻度を設定する処理
・選択肢をいっぱい並べる繰り返し文
・その中で、「|」と「-」のどっちを出すか決める条件文
・バーを太字で表示するためのSakuraScript

----
使うSakuraScriptや里々特殊記号など
----
\_q
SakuraScript
これでサンドイッチされた部分は一瞬で表示されます。
ただし、ウェイトはきちんと働くので無効化しましょう。(後述)

φ
里々特殊記号
文字の持つ効果を無効化します。
たとえば、()と記述するとランダムトークが表示されますが、φ(φ)とかくと「()」が表示できます。
また、この文字はreplace.txtやreplace_after.txtの置き換えも無効化します。
replace_after.txtには、「…」にウェイトをつける記述があるため、「φ…」としないと不自然なウェイトが発生してしまいます。
さらに、文末の改行も無視できます。
以下の2つのトークはバルーンに同じ内容が表示されます。


:あいうえお


:あφ
いうφ
えお

\q[表示文字,イベント,渡す値]
SakuraScript
選択肢の表示。行の先頭でなくても表示可能で、選択した時に値を設定して、使うことが出来ます。




:好きな食べ物はなーに?
\q[ご飯,OnLikeFood,お米]
\q[お菓子,OnLikeFood,甘いもの]

*OnLikeFood
:へー、(R0)が好きなんだ!
#(R0)は「お米」か「甘いもの」に置き換わります


for
繰り返し制御文。今回のように、同じようなものをたくさん出すときに重宝します。
繰り返しをいつまで続けるのかの判定に、1つの数字を使っていて、処理で(C0)と記述するとこの数字を活用することが出来ます。
書き方
(for、最初の値、終了する値、1回ごとに増える値、処理の内容)




:(for、5、14、3、今の値は(C0)だよ。\n)
#\nは改行を意味するSakuraScript


結果
今の値は5だよ。
今の値は8だよ。
今の値は11だよ。
今の値は14だよ。

ちなみに、括弧内のタブや改行は無視されます。


:(for、5、14、3、
今の値は(C0)だよ。\n



と書いてもバルーンの表示は同じです。見やすいように調整すると良いでしょう。

when
条件文。ある条件を満たしたときだけ、違う処理をするために使います。
今回は、for文の中で、「|」か「-」のどちらを表示するか判断するために使います。

\f[bold,パラメータ]
太字の設定。パラメータがtrueで太字開始、falseで太字終了。

----
辞書に書く処理
----
satori_conf.txtの8行目

$喋り間隔	180


dic03_Menu.txtの34行目、メニュー表示部分

*0Faceつつかれ
\_qメニューです。

_隣のゴーストにでんぱを送る
_ポストと話したい
_ご意見やご要望など
喋り頻度の設定。今の設定φ…(喋り間隔)秒。
 \f[bold,true]φ
 \q[0,OnTalkTimeSet,0]φ
(for、60、300、10、
(when、(喋り間隔) >= (C0)、
\q[|,OnTalkTimeSet,(C0)]、
\q[-,OnTalkTimeSet,(C0)]

)\f[bold,false]

_らぼ

_なんでもありません
\_q

*OnTalkTimeSet
$喋り間隔 (R0)
>0Faceつつかれ



----
動作確認
----
実際の動作はこんな感じです

----
コラム
----
「区切り文字」に気をつける
たとえば、以下の文はエラーを起こします。

#変数「今の気分」が不機嫌だと、コミュニケートボックスを開いてくれない
(when,(今の気分)==不機嫌,やだ、聞いてあげない。,何かな。\![open,communicatebox])


なぜか?whenの文と、コミュニケートボックスを開くSakuraScriptの文が混ざってしまっています。
whenは、3つの値を指定する文です。その区切りは、whenの後の文字です。

(when,条件,条件を満たす場合,満たさない場合)

この場合は、「,」が区切り文字となります。
最初から指定されている区切り文字は、「,」「、」「,」などがあり、追加することも出来ます。
例えば、以下の文は正しく動きます。


$引数区切り追加【タブ】☆
(when☆(今の気分)==不機嫌☆怒ってます!☆ご機嫌です。)


「$引数区切り追加」は、終了、リロード、ネットワーク更新成功などで消えるので、使う前に定義するのが安全です。

さて、これを踏まえて、最初の動かない文を見てみましょう。


(when,(今の気分)==不機嫌,やだ、聞いてあげない。,何かな。\![open,communicatebox])


見づらいですが、「,」が4つあり、whenに値を4つ指定してしまっています。
SakuraScriptは「,」でないと動かないので、区切り文字を変えて対応しましょう。
「、」も使っているため、あたらしく区切り文字「☆」を増やして対応しましょう。
最後に、「☆」をトーク中に使う可能性も考えて、区切り文字から削除しておきます。


$引数区切り追加【タブ】☆
(when☆(今の気分)==不機嫌☆やだ、聞いてあげない。☆何かな。\![open,communicatebox])
$引数区切り削除【タブ】☆


区切り文字のミスは意外と気づきにくいので、注意しましょう。
PageTop

コメント


管理者にだけ表示を許可する