- 追加された行はこの色です。
- 削除された行はこの色です。
複数のシェルを使ったり、特定のシェルによって分岐が必要になる時に。
#author("2023-11-17T21:02:59+09:00","default:post","post")
複数のシェルを使ったり、特定のシェルによって分岐が必要になる時に。~
現在使っているバルーン名を保存したい時はこちら→[[現在のバルーン名を取得する]]
----
#contents
----
~
*概要 [#sa07bc39]
現時点では里々に使用中のシェル名を取得する機能は備わっていません。~
なので、SSPの機能を利用して、使用中のシェル名を得る事になります。~
**記述例 [#g3f024a8]
以下は、いずれも変数&color(#cc0000){(現在のシェル)};に使用中のシェル名を格納する方法の例です。好みで選択して下さい。~
いずれかの方法で値を保存したら、後は分岐する箇所で&color(#cc0000){(現在のシェル)};を使用して下さい。
***OnNotifyShellInfo [#z8feff24]
SSP専用。Notifyイベントなのでトークはできませんが、逆に言えば変数処理を行うにはうってつけのイベントです。
SSP専用。起動時などにNotifyで通知されます。~
Notifyイベントなのでトークはできませんが、逆に言えば変数処理を行うにはうってつけのイベントです。
*OnNotifyShellInfo
$現在のシェル【タブ】(R0)
***OnShellChanging [#ob952fce]
シェル変更を指示された時に通知されるイベントです。
*OnShellChanging
$現在のシェル【タブ】(R0)
***OnShellChanged [#i9752edd]
シェルの変更を完了した時に通知されるイベントです。
*OnShellChanged
$現在のシェル【タブ】(R0)
***プロパティシステム [#tb8e8175]
あまり一般的な方法ではないため詳細は割愛します。~
これはプロパティシステムを参照するさくらスクリプトを実行し、独自イベントを発生させる→独自イベントのリファレンスで目的の値を保存、と2つステップを踏む必要があり、単純に作成に手間がかかるからです。
SSPのプロパティシステムを使い、任意のタイミングで変数に記録します。~
例として以下の一つ目のスクリプトを情報更新したいタイミングに配置し、~
二つ目のOnGetShellNameトークはいずれかの辞書内に記述をしておきます。
\![get,property,OnGetShellName,currentghost.shelllist.current.name]
*OnGetShellName
$現在のシェル【タブ】(R0)
このトークでは変数の制御のみ行っているので、イベントが上書きされず安心です。~
現実的にはすぐに使いたい時にこそ更新したいでしょうから、その場合はraiseを使ってタイミングを制御します。以下例。
*ランダムトーク
\![get,property,OnGetShellName,currentghost.shelllist.current.name]
\![raise,使いたいセクション]
*使いたいセクション
>masterシェルを使っている【タブ】(equal,(現在のシェル),master)
:いつもと一味違う私。
*masterシェルを使っている
:いつも通りの私。
*OnGetShellName
$現在のシェル【タブ】(R0)
*使用例 [#v40fe1c3]
*0Headつつかれ【タブ】(現在のシェル)==master
:パリィ!
これでmasterシェルの時だけ出現する頭つつき反応になります。~
条件式を正確にするなら[[関数のequal>関数一覧#equal]]を使い
*0Headつつかれ【タブ】(equal,(現在のシェル),master)
:パリィ!
とすると良いでしょう。
**変更前のシェルと変更後のシェルによって分岐させる [#d47e7d1b]
同じシェルから同じシェルに変えた(つまり変わってない)時は別の反応をするとか、~
あるシェルから特定のシェルに変えた時のみに分岐するといった時の記述例。~
機会はそうないでしょうが、何かの応用が利くかもしれません。
*OnShellChanging
$直前のシェル【タブ】(現在のシェル)
$現在のシェル【タブ】(R0)
>シェル変更時のトーク
*OnShellChanged
>シェルが変わってない【タブ】(equal,(現在のシェル),(直前のシェル))
>masterシェルに戻った【タブ】(equal,(現在のシェル),master)
>シェル変更完了時のトーク
*シェルが変わってない
:ちょっと! 同じ服なんですけど!?
*masterシェルに戻った
:いつもの服に戻したよ。
*どのイベントを使うのか? [#q00def61]
基本的にはどれを選んでも大丈夫です。~
面倒だから俺は全部記述するぜ!でも構いませんが、実用上はどれか一つで十分です。~
面倒だから俺は全部記述するぜ!でも構いません。~
なお、それぞれの大きな違いは通知されるタイミングです。~
早い順に並べるとこうなります。
+&color(#0000ff){OnShellChanging};
+&color(#0000ff){OnNotifyShellInfo};
+&color(#0000ff){OnShellChanged};
従って、2と3のタイミングで変数を格納している場合、1=&color(#0000ff){OnShellChanging};イベント中に&color(#cc0000){(現在のシェル)};を使おうとすると値が間に合いません。~
この観点で考えると、&color(#0000ff){OnShellChanging};が最も有効かもしれません。~
とはいえ、この場合は(R0)で値を参照すれば良いだけの話なので、やはりどれを選んでも困る事はないでしょう。
なお、&color(#0000ff){OnNotifyShellInfo};に関してはゴースト起動時にも通知されるメリットもあります。~
とはいえ、この場合は(R0)で値を参照すれば良いだけの話なので、やはりどれを選んでも困る事はないでしょう。~
&color(#0000ff){OnNotifyShellInfo};はゴースト起動時にも通知されるメリットもあります。~
特に動作テストを行う際にシェル変更指示をしなくても良いので、ゴースト制作時に役立つかも知れません。