#author("2023-11-16T22:15:09+09:00","default:post","post") 複数のシェルを使ったり、特定のシェルによって分岐が必要になる時に。~ 現在使っているバルーン名を保存したい時はこちら→[[現在のバルーン名を取得する]] ---- #contents ---- ~ *概要 [#sa07bc39] 現時点では里々に使用中のシェル名を取得する機能は備わっていません。~ なので、SSPの機能を利用して、使用中のシェル名を得る事になります。~ **記述例 [#g3f024a8] 以下は、いずれも変数&color(#cc0000){(現在のシェル)};に使用中のシェル名を格納する方法の例です。好みで選択して下さい。~ いずれかの方法で値を保存したら、後は分岐する箇所で&color(#cc0000){(現在のシェル)};を使用して下さい。 ***OnNotifyShellInfo [#z8feff24] SSP専用。Notifyイベントなのでトークはできませんが、逆に言えば変数処理を行うにはうってつけのイベントです。 *OnNotifyShellInfo $現在のシェル【タブ】(R0) ***OnShellChanging [#ob952fce] シェル変更を指示された時に通知されるイベントです。 *OnShellChanging $現在のシェル【タブ】(R0) ***OnShellChanged [#i9752edd] シェルの変更を完了した時に通知されるイベントです。 *OnShellChanged $現在のシェル【タブ】(R0) ***プロパティシステム [#tb8e8175] 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) :パリィ! とすると良いでしょう。 *どのイベントを使うのか? [#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};に関してはゴースト起動時にも通知されるメリットもあります。~ 特に動作テストを行う際にシェル変更指示をしなくても良いので、ゴースト制作時に役立つかも知れません。