幻日幻月環

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

重要トークを確実に見てもらう

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

今回は、「大事なトークを確実に見てもらう」。
たとえば、何か条件を満たした時、起動時やメニューから、重要なトークをさせることもあると思います。
しかし、マウスクリックしたり、時報トークが入ったり、アンカーをクリックしたりして、トークが中断されることがあります。
だけど、フラグは立つのでもう見ることもできない・・・という悲劇を回避する方法を紹介します。

詳細は続きに。
まず、サンプルが以下です。
3時間以上起動していると、次の起動時に好きか嫌いか聞かれます。
このとき、マウス反応などが無視され、選択肢タイムアウトも起こりません。
なおかつ、トーク中に無理矢理終了させても、フラグは立っていません。
最後までトークを見た場合のみ、フラグが立ちます。

これを見ながら、サンプルより下にある解説を読むと分かりやすいと思います。
【タブ】はタブキーを押して出力される空白に置き換えてください。

*起動
>重要トーク【タブ】(累計時)>2&&(重要フラグ)==0

*重要トーク
$今回は自動アンカー=無効
\t\*:えっとね、話があるんだ・・・。
:すまんけど答えてくれや。
:私のこと・・・好き?
_好き【タブ】重要トーク好き
_嫌い【タブ】重要トーク嫌い

*重要トーク好き
$今回は自動アンカー=無効
\t:ありがとう! うれしい!
実はずっと言いたかったんだよ。
\![raise,重要トーク見終わった]

*重要トーク見終わった
$重要フラグ【タブ】1

*重要トーク嫌い
$今回は自動アンカー=無効
\t:がーん。

1.アンカーを無効化する
里々の機能$今回は自動アンカーを使用します。
dicAnchor○○.txtを使った自動アンカー機能は便利ですが、どんなトークにもアンカーを張ってしまうので、大事なトークにアンカーのある単語が出ると困ったことになります。
そこで、トーク1回だけ自動アンカーを無効化します。
上記の変数に、「無効」を入れるとそのトークのみ自動アンカーが無効化されます。

2.クリックなどマウス反応を無視する
さくらスクリプト\tを使用します。
これがトーク中のどこかにあると、そのトーク中はイベントを無視します。
マウス反応、時報などは無効化されます。
ただし、SSPでは最小化と終了は可能で、トークをせず即終了します。
おそらく、何か急な場合の回避手段です。
SSPはユーザーの利便性を第一とするので、ゴースト側から対処できませんが、これの対処はフラグを立てるタイミングを変更することで行います。

3.選択肢のタイムアウトをしない
さくらスクリプト\*を使用します。
選択肢のタイムアウト時間は、SSP本体設定なのでユーザーごとに設定が異なります。
それを一時的に上書きすることができます。
\![set,choicetimeout,-1]と書いても同じ効果です。

4.トーク途中で終了した場合はフラグを立てない
さくらスクリプト\![raise,イベント名]を使用します。
基本的に、トークは全部展開してからベースウェアが出力するため、例えば、以下はトーク開始時にすでに$好物に「りんご」が入っています。


:私、実は、りんごが大好きなんだ!
好きすぎてりんごと結婚したいくらい。
$好物【タブ】りんご

これは短いので特に困りませんが、例えば\xを利用するような長いトークの場合、なんらかのアクシデントなどで最後まで読んでもらえない可能性があります。
raiseは、ベースウェアにその名前のイベントを呼び出させる機能です。
ページ上部のサンプルの実行は以下のようになります。
・まず、トークを表示
・次に、トーク完了時にベースウェアから「*重要トーク見終わった」が呼び出される
  → トーク中に終了させるとイベントが呼び出されないことに注目
・最後に、呼び出されたイベントが実行されてフラグがたつ

これにより、確実にトーク完了時にフラグを立てることができます。
マウスクリックしてしまった、アンカークリックしてしまった、時報に消されたなどの予期せぬ中断を防ぐことができます。
PageTop

コメント


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