
2016/01/15修正
----
里々のちょっとしたロジックを提供するコーナー。
全て、里々wikiとukadocの情報の組み合わせで作ります。
里々のサンプルゴースト「Rポストと狛犬」を書き換えて自ゴーストを作るくらいの知識が必要です。
今回は、「値を設定するバーの作成」。
サンプルとして、喋り頻度の設定使います。
コピペで動くので適当にカスタマイズしてみてください。
詳細は続きに。
----
里々のちょっとしたロジックを提供するコーナー。
全て、里々wikiとukadocの情報の組み合わせで作ります。
里々のサンプルゴースト「Rポストと狛犬」を書き換えて自ゴーストを作るくらいの知識が必要です。
今回は、「値を設定するバーの作成」。
サンプルとして、喋り頻度の設定使います。
コピペで動くので適当にカスタマイズしてみてください。
詳細は続きに。
----
使うもの
----
「Rポストと狛犬」
このゴーストの中身を改変して、動作を確認します。
----
今回触るファイル
----
フォルダ
R_POST_and_KOMAINU\ghost\master\
ファイル
dic03_Menu.txt
satori_conf.txt
----
喋り頻度
----
$喋り間隔に値を入れることで設定できます。
Rポストと狛犬が設定機能を持っていて、多くの里々ゴーストさんがこの機能を搭載しています。
ですが、間隔が1分おきなので結構おおざっぱです。
もっと細かく設定でき、直感的に設定できるようにしてみましょう。
dic03_Menu.txtの34行目、メニュー表示部分
戦闘に「_」(全角アンダーバー)で始まる文字を書くと、選択肢になります。
「_喋り頻度」は、選択すると57行目にある「*喋り頻度」が呼び出されます。
メニューの「_喋り頻度」を削って、喋り頻度を設定するバーを出すことを目標とします。
----
完成イメージ
----
10秒間隔で設定できて、バーの部分は太字で表示するようにしましょう。
↓イメージ図
「0」をクリックすると、喋り頻度が0秒に。「|」や「-」をクリックすると、対応した秒数に。
喋り頻度の設定。今の設定…180秒
0||||||||||||||||||--------------------------------
↓適当に真ん中当たりをクリックした場合。
喋り頻度の設定。今の設定…250秒。
0|||||||||||||||||||||||||-------------------------
----
作り方
----
簡単に言うと、選択肢を一杯並べて作ります。
「|」と「-」は全部個別の選択肢として作ります。
作る処理は以下です。
・いちいち表示が終わるのを待ちたくないので、メニューの瞬間表示
・選択肢を表示するSakuraScriptと、選択した時に喋り頻度を設定する処理
・選択肢をいっぱい並べる繰り返し文
・その中で、「|」と「-」のどっちを出すか決める条件文
・バーを太字で表示するためのSakuraScript
----
使うSakuraScriptや里々特殊記号など
----
・\_q
SakuraScript
これでサンドイッチされた部分は一瞬で表示されます。
ただし、ウェイトはきちんと働くので無効化しましょう。(後述)
・φ
里々特殊記号
文字の持つ効果を無効化します。
たとえば、()と記述するとランダムトークが表示されますが、φ(φ)とかくと「()」が表示できます。
また、この文字はreplace.txtやreplace_after.txtの置き換えも無効化します。
replace_after.txtには、「…」にウェイトをつける記述があるため、「φ…」としないと不自然なウェイトが発生してしまいます。
さらに、文末の改行も無視できます。
以下の2つのトークはバルーンに同じ内容が表示されます。
*
:あいうえお
*
:あφ
いうφ
えお
・\q[表示文字,イベント,渡す値]
SakuraScript
選択肢の表示。行の先頭でなくても表示可能で、選択した時に値を設定して、使うことが出来ます。
例
・for
繰り返し制御文。今回のように、同じようなものをたくさん出すときに重宝します。
繰り返しをいつまで続けるのかの判定に、1つの数字を使っていて、処理で(C0)と記述するとこの数字を活用することが出来ます。
書き方
(for、最初の値、終了する値、1回ごとに増える値、処理の内容)
例
結果
今の値は5だよ。
今の値は8だよ。
今の値は11だよ。
今の値は14だよ。
ちなみに、括弧内のタブや改行は無視されます。
と書いてもバルーンの表示は同じです。見やすいように調整すると良いでしょう。
・when
条件文。ある条件を満たしたときだけ、違う処理をするために使います。
今回は、for文の中で、「|」か「-」のどちらを表示するか判断するために使います。
・\f[bold,パラメータ]
太字の設定。パラメータがtrueで太字開始、falseで太字終了。
----
辞書に書く処理
----
satori_conf.txtの8行目
dic03_Menu.txtの34行目、メニュー表示部分
----
動作確認
----
実際の動作はこんな感じです。
----
コラム
----
「区切り文字」に気をつける
たとえば、以下の文はエラーを起こします。
なぜか?whenの文と、コミュニケートボックスを開くSakuraScriptの文が混ざってしまっています。
whenは、3つの値を指定する文です。その区切りは、whenの後の文字です。
この場合は、「,」が区切り文字となります。
最初から指定されている区切り文字は、「,」「、」「,」などがあり、追加することも出来ます。
例えば、以下の文は正しく動きます。
「$引数区切り追加」は、終了、リロード、ネットワーク更新成功などで消えるので、使う前に定義するのが安全です。
さて、これを踏まえて、最初の動かない文を見てみましょう。
見づらいですが、「,」が4つあり、whenに値を4つ指定してしまっています。
SakuraScriptは「,」でないと動かないので、区切り文字を変えて対応しましょう。
「、」も使っているため、あたらしく区切り文字「☆」を増やして対応しましょう。
最後に、「☆」をトーク中に使う可能性も考えて、区切り文字から削除しておきます。
区切り文字のミスは意外と気づきにくいので、注意しましょう。
使うもの
----
「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])
$引数区切り削除【タブ】☆
区切り文字のミスは意外と気づきにくいので、注意しましょう。


