わいあーど頭痛

「ロスト・エンド・クレイドル」更新情報などのブログ

バルーンに反応してみる(里々)

バルーンに反応してみる(里々)


17日に投稿した記事です。
2014/12/17 21:30ごろに記述例を修正しました。
2014/12/17 23:00ごろに記述例と見出しを修正しました。
2014/12/19 23:30ごろに記述例とukadocへのリンクを修正しました。

素敵なバルーンがたくさん公開されているのですから反応してみたいですよね。

事前準備

  • 危険なさくらスクリプトへの対処

外部から渡された文字列*1を読み上げたりするので、「Rポストと狛犬」の「KillDangerousTag」関数*2を使います。

  • ssuとsatori_conf.txtの@SAORIの設定

里々wikiを参照ください。

  • 対応したいものの名前にバイト値1が含まれる場合

引数区切りに使用しているので問題が起こります。使われなさそうな文字列を引数区切りに使用するなどしてください。

  • タブ文字について

【タブ】という文字列に置換しているので、エディタやreplace.txtで置換するなどしてください。

  • 変数・文・単語群の名前被り

同名のものがあるとランダム選択になってよろしくないので、具体例のをそのまま使う場合調べてください。

インストールされた時

インストールが終了すると、OnInstallCompleteEx(ssp)、無ければOnInstallComplete(materia/crow/ssp)が発生します。
バルーン名を読み上げるのをやめ*3、compare関数を使わず「(R0)==balloon」などと比較演算すれば*4、ssuを使わないことができます。
が、演算子が名前に含まれていたりすると文字列比較がよろしくなくなるので推奨しません。

切り替えられた時

OnBalloonChange(SSP)というSHIORI Eventが発生するので書いておきましょう。

特定のバルーンに切り替える

\![change,balloon,ほにゃらら]というさくらスクリプトを使いましょう。(SSP)
下の例だと、OnNotifySelfInfo(SSP)の(R5)のバルーン名を変数に入れておいて、現在のバルーンをお気に入りにするとか。ただしさくらスクリプトでバルーンを切り替えた場合はOnNotifySelfInfoが発生しません。
このSHIORI Eventは(R3)で現在のシェル名を教えてくれるので、そういう応用もできます。

具体例

  • 2014年12月19日23:30ごろ

when関数の区切りを(バイト値、1)のように括弧で呼び出すとよくないそうなので(参考)修正しました。
具体的にはwhen関数内の(バイト値、1)を読点に。

  • 2014年12月17日23:00ごろ

自分用の記述が混ざっていたのを修正しましたその2。
あと説明を少し書き足しました。
 修正前「(b1)」
 修正後「(バイト値、1)」

  • 2014年12月17日21:30ごろ

自分用の記述が混ざっていたのを修正しました。
 修正前×「システム:」
 修正後○「:」

#---------------- ssp以外(201410時点) ----------------
*OnInstallComplete
$インストール物種類	(call(バイト値、1)KillDangerousTag(バイト値、1)(R0))
$インストール物名前	(call(バイト値、1)KillDangerousTag(バイト値、1)(R1))
>(インストール物種類)インストール反応(インストール物名前)
:\_qインストール完了\n[half]
(インストール物名前) / (インストール物種類)φ
(インストール後どうするか)\_q

#---------------- ssp(201410時点) ----------------
*OnInstallCompleteEx
$インストール物種類	(call(バイト値、1)KillDangerousTag(バイト値、1)(R0))
$インストール物名前	(call(バイト値、1)KillDangerousTag(バイト値、1)(R1))
>(インストール物種類)インストール反応(インストール物名前)
>(インストール物種類)インストール反応汎用
:\_qインストール完了\n[half]
(インストール物名前) / (インストール物種類)φ
(インストール後どうするか)\_q

#----------------  ----------------
#ベースウェアごとに対応をわけています
#この例ではSSPとmateriaとcrowのみ
#将来的に高機能な別のベースウェアが公開された場合は追加するなどしてください
@インストール後どうするか
(when,(単語群「インストール後どうするか(Sender)」の存在)==1,(インストール後どうするか(Sender)),)

@インストール後どうするかSSP
(when、(compare,(インストール物種類),ghost)==1||(compare,(インストール物種類),shell)==1||(compare,(インストール物種類),balloon)==1、\n\n[half]◆\q[切り替え,インストール後切り替えるよSSP]、)(when、(compare,(インストール物種類),ghost)==1、\n◆\q[呼び出し,インストール後呼び出すよSSP]、)(when、(compare,(インストール物種類),ghost)==1||(compare,(インストール物種類),shell)==1||(compare,(インストール物種類),balloon)==1、\n◆\q[そのまま,script:\e]、)
@インストール後どうするかembryo
(when、(compare,(インストール物種類),ghost)==1、\n\n[half]◆\q[切り替え,インストール後切り替えるよembryo]\n◆\q[そのまま,とじるよ]、)
@インストール後どうするかcrow
(when、(compare,(インストール物種類),ghost)==1||(compare,(インストール物種類),shell)==1、\n\n[half]◆\q[切り替え,インストール後切り替えるよcrow]\n◆\q[そのまま,とじるよ]、)

*とじるよ
:\c\b[-1]

#----------------  ----------------
*インストール後切り替えるよSSP
>インストール後切り替えるよSSPバルーン【タブ】(インストール物種類)==balloon
:\_q切り替えます...\_q\![change,(インストール物種類),lastinstalled]
*インストール後呼び出すよSSP
:\![call,ghost,lastinstalled]\_q呼び出しています...\_q
*インストール後切り替えるよSSPバルーン
$タグによるバルーン切り替え【タブ】インストール直後
\![change,balloon,lastinstalled]

*インストール後切り替えるよembryo
:\_q切り替えます...\_q\![change,ghost,(インストール物名前)]

*インストール後切り替えるよcrow
:\_q切り替えます...\_q\![change,(インストール物種類),(インストール物名前)]

#----------------  ----------------
*OnNotifySelfInfo
$_b_tmp【タブ】(call(バイト値、1)KillDangerousTag(バイト値、1)(R5))
$いっこ前のバルーン【タブ】(if(バイト値、1)(compare(バイト値、1)(_b_tmp)(バイト値、1)(現在のバルーン))==1(バイト値、1)(いっこ前のバルーン)(バイト値、1)(現在のバルーン))
$現在のバルーン【タブ】(_b_tmp)
$_b_tmp【タブ】
#この例だと2度連続で同じものが来たら無視する
#このイベントは起動時にも来るため、前回終了前の最後の状態と2度連続で同じになることはよくある

#----------------  ----------------
*OnBalloonChange
>(タグによるバルーン切り替え)バルーン切り替え反応
>バルーン切り替え反応(現在のバルーン)
:\_q現在のバルーンは「(現在のバルーン)」です\_q

*インストール直後バルーン切り替え反応
$タグによるバルーン切り替え【タブ】
:\_q切り替えました\_q

*チェンジ要請バルーン切り替え反応
$タグによるバルーン切り替え【タブ】
:\_qバルーンを「(R0)」にしました\_q

#----------------  ----------------
*バルーンメニュー
:\c\_q◆\q[「(いっこ前のバルーン)」に戻す,Onバルーンチェンジ要請,(いっこ前のバルーン)]
◆\q[「(現在のバルーン)」をふぁぼる,Onバルーンふぁぼ要請,(現在のバルーン)]φ
(when、(変数「ふぁぼバルーン」の存在)==1、\n\n[half]【ふぁぼ枠】\n◆\q[「(ふぁぼバルーン)」にする,Onバルーンチェンジ要請,(ふぁぼバルーン)]\n\n[half]、\n\n[half])φ
◆\q[とじる,script:\e]\_q

*Onバルーンふぁぼ要請
$ふぁぼバルーン【タブ】(R0)
:「(R0)」をふぁぼりました\x
>バルーンメニュー

*Onバルーンチェンジ要請
$タグによるバルーン切り替え【タブ】チェンジ要請
$btemp【タブ】(いっこ前のバルーン)
$いっこ前のバルーン【タブ】(現在のバルーン)
$現在のバルーン【タブ】(btemp)
$btemp【タブ】
\![change,balloon,(R0)]

#----------------  ----------------
#名前に危険なさくらスクリプトが含まれている場合、無効化されるのでそのままではない
#\\![vanishbymyself~などと円記号が2つになる
*balloonインストール反応眼鏡のススメ
:\_q(インストール物名前) / (インストール物種類)
眼鏡が好きなんですか?φ(インストール完了)φ
(インストール後どうするか)\_q

#演算子(ここでは+)が名前に含まれる場合、==での文字列比較をしないかcompareで比較するかどっちか
##ex1
##>バルーン切り替え反応(バルーン名)
##ex2
##>バルーン切り替え反応デフォルト【タブ】(compare(バイト値、1)(バルーン名)(バイト値、1)SSPデフォルト+)
*バルーン切り替え反応SSPデフォルト+
:\_q現在のバルーンは「(現在のバルーン)」です\n[half]
わあいデフォルトですね!\_q

*1:バルーンの名前とか

*2:dic00_system.txt

*3:危険なさくらスクリプトへの対処

*4:ghost with balloonとshell with balloonにもバルーンは含まれるがそれはそれで別に対応したほうがいいと思う