特定のゴーストなどがインストールされているかどうか調べる
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
ベースウェア(SSPなど)に特定のゴーストやシェルやバルーン...
ここにあるような方法で調べておけば、たとえば特定のゴース...
なおこのページにある内容には''SSP専用''のものがあります。~
~
----
#contents
----
~
*里々バージョンMc155-1以降の場合 [#c24a8e53]
[[情報取得変数>情報取得変数#yc9319e3]]で、カッコ1つで取得...
「[[$NOTIFYの自動保存>特殊変数#qe216ebc]]」を有効にする...
~
''&color(#0000ff){以下の情報は里々Mc154-1以前を対象とした...
*事前準備 [#b96748b2]
まず最初に、以下の説明で「[[バイト値>内部関数#c2695bea]]...
これはゴースト名などの「どんな文字が入ってるか分からない...
なのでよくわからないかもしれませんが''[[replace.txt>ファ...
何も見えないと思いますが、''タブ文字やバイト値1と2が隠...
|B1|
|B2|
*NOTIFYイベントを使う・基本編 [#f39b3ef6]
参考:
- [[ukadoc「SHIORI Event」>http://ssp.shillest.net/ukadoc...
**サンプル [#k4c579b8]
「ほげほげ」というゴーストがインストールされている事を確認
*installedghostname
$ほげほげ導入済【タブ】0
(times,(Rの数),
(when|B1|[(R(C0))]==[ほげほげ]
|B1|(set,ほげほげ導入済,1)
)
)
↑で立てたフラグを利用する例
*切り替えメニュー
:φ
_ランダム切替
_次のゴーストに切替
(when、(ほげほげ導入済)、\q[ほげほげに切替,ほげほげに...
*ランダム切替
:ランダム切替実行!\![change,ghost,random]
*次のゴーストに切替
:次のゴーストに切替実行!\![change,ghost,sequential]
*ほげほげに切替
:ほげほげに切替実行!\![change,ghost,ほげほげ]
**解説 [#rd108346]
まず最初の「ほげほげ導入済」は、「ほげほげ」というゴース...
0を初期値として入れておいて、もし調べてもインストールさ...
~
ポイントになるのは[[installedghostname>http://ssp.shilles...
長くなるので、SHIORI Eventについて詳しく知りたい方は以下...
参考:
- [[栞としての里々>栞としての里々#gc01536d]]
- [[ukadoc「補足:SHIORI Eventとは」>http://ssp.shillest....
~
installedghostnameは、起動時などに発生し、ベースウェアに...
まあ要は、*installedghostnameという文を用意して、その中...
後はそのゴースト名全部について、今探している「ほげほげ」...
~
文字列の比較も==でやればいいのですが、もしゴースト名が数...
そこで==の両辺をそれぞれ「[]」で囲います。このように前後...
~
|B1|という邪魔っ気なやつは里々特有の弱点が絡んだ記述なの...
とりあえずはそういうものなんだと思って先に進んでしまって...
参考:
- [[引数区切り文字問題>関数#wbedea1a]]
- [[when,times,while,forでバイト値を引数区切り文字にする...
~
名前が一致すると、[[when>内部関数#c8fbcc67]]は真の場合の...
もし全ての名前を調べても一致する名前がなければ、フラグは...
これが基本的な仕組みです。~
~
ところがここで一つ困った事があります。~
ユーザによってインストールされているゴーストの数は全然違...
そこで登場するのがループ関数の[[times>内部関数#ad356074]]...
これによって、R*があるだけ同じ処理を何度も繰り返してく...
~
利用例は、フラグが立っている場合のみメニューにそのゴース...
**補足 [#i0bcafcc]
- もしゴースト起動中に新たにゴーストがインストールされた...
- installedghostnameの代わりに[[installedshellname>http:/...
基本的なスクリプトは変わりません。文の名前だけそれぞれ*i...
変数名も「シェルほげげ導入済」などと、自分で解りやすく工...
※シェル、バルーンはMATERIAだと動きません。
**長所と短所 [#ocdc57ff]
:長所|
比較的簡単だし記述も短いし利用もシンプル。
:短所|
ユーザの環境(特にインストールされているゴーストの総数)...
インストール確認の対象とするゴースト数が増えるたびにinsta...
里々のループ処理は重いので、インストールされているゴース...
どうしてもそれに耐えられない場合は、後述のプロパティシス...
*NOTIFYイベントを使う・応用編 [#fae7c5a5]
**サンプル [#yc758d58]
全インストール済みゴーストを記憶
*installedghostname
$導入ゴーストリスト【タブ】
(set|B1|導入ゴーストリスト|B1|
|B2|
(times|B1|(Rの数)|B1|
(R(C0))|B2|
)
)
以下の関数を辞書のどこかに書いておく
@ゴースト導入済判定
(calc,
(count
|B1|(導入ゴーストリスト)
|B1||B2|(A0)|B2|
)>0
)
インストール済ゴーストのチェック例
*切り替えメニュー
_ランダム切替
_次のゴーストに切替
(when、(call,ゴースト導入済判定,ほげほげ)
、\q[ほげほげに切替,ほげほげに切替]
)
(when、(call,ゴースト導入済判定,ふがふが)
、\q[ふがふがに切替,ふがふがに切替]
)
(when、(call,ゴースト導入済判定,ぴよぴよ)
、\q[ふがふがに切替,ぴよぴよに切替]
)
*ランダム切替
:ランダム切替実行!\![change,ghost,random]
*次のゴーストに切替
:次のゴーストに切替実行!\![change,ghost,sequential]
*ほげほげに切替
:ほげほげに切替実行!\![change,ghost,ほげほげ]
*ふがふがに切替
:ふがふがに切替実行!\![change,ghost,ふがふが]
*ぴよぴよに切替
:ぴよぴよに切替実行!\![change,ghost,ぴよぴよ]
**解説 [#sce19a89]
基本編と同じ部分は端折ります。~
~
今回はループの中で、インストール済ゴーストの名前と目的の...
なおその時にゴースト名の前後を「[byte2]ゴースト名1[byte2]...
これは説明するととても長くなるので略しますが、予期せぬ不...
~
こうして最初にリストを作っておいて、後でそのリストから特...
その調べるために使うのが「ゴースト導入済判定」という[[ユ...
ゴースト導入済判定内では、ssu.dllの[[count>外部関数/ssu#f...
countは、ある文字列A中に含まれている文字列Bの数を数えて...
これを利用すれば、導入ゴーストリストという文字列Aの中か...
なお今回は数と言うよりインストールされているかいないか(...
**長所と短所 [#u9c49a6f]
:長所|
インストールを確認したい対象を後から増やしたい場合も、ins...
増やしたからといって処理時間も増えない。
:短所|
里々でループを回すのでやっぱり処理に時間がかかる。~
保存した情報の利用にcallによる関数呼び出しが必要なので不...
*プロパティシステムを使う [#kfc04b0a]
SSP専用の手段です。
参考:
- [[プロパティシステム]]
- [[ukadoc「プロパティシステム」>http://ssp.shillest.net/...
**サンプル [#xa528b5a]
*
\![get,property,ふがふが導入依存トーク,"ghostlist(ふがふ...
*ふがふが導入依存トーク
:そういえば友達に「ふがふが」ってのがいてさー。
>ふがふが未導入トーク【タブ】(is_empty|B1|(R0))
え? インストールしてるの?
じゃあそのうち会うこともあるかもね。
*ふがふが未導入トーク
:ユーザは知らないかー。
よければインストールしてやってね。
**解説 [#c5074abe]
起動中、SSPはインストールされているゴーストの情報(descri...
そうでなければゴースト切り替えメニューにゴースト名を表示...
~
そうしたSSPが起動中に保持している情報(プロパティ)を、ゴ...
これをプロパティシステムと呼びます。~
~
\![get,property,○○,××]
というさくらスクリプトのタグがこの問い合わせの方法です。~
~
○○には「この後発生するイベント名」が入ります。~
イベントってなんじゃという場合は、とりあえず「*○○」とい...
なので上例ではすぐ下に「ふがふが導入依存トーク」というト...
~
××には「問い合わせの内容」が入ります。~
色々ありますが、今は「ghostlist(☆☆).name」という物が入っ...
これは「☆☆」というゴーストのゴースト名を教えてください、...
~
問い合わせの答えがどこでかえってくるかというと、○○という...
[[(R*)>情報取得変数#l0da4eb8]はNOTIFYイベントを使った...
~
さてここが肝ですが、もし問い合わせた☆☆という名前のゴース...
そしてssu.dllには[[is_empty>外部関数/ssu#x9343bf4]]といっ...
従って、
>ふがふが未導入トーク【タブ】(is_empty|B1|(R0))
の行は結局、「問い合わせた『ふがふが』というゴーストがイ...
これで、特定ゴーストがインストールされているかどうかで分...
**補足 [#g5d06697]
- もし上例で
\![get,property,ふがふが導入依存トーク,ghostlist(ふがふ...
の代わりに~
\![get,property,シェルFOO存在依存トーク,"currentghost.sh...
とでもしてやれば、(is_empty|B1|(R0))は「FOO」という...
これで特定シェルがインストールされているかどうかで分岐さ...
- 同様に
\![get,property,バルーンBAR導入依存トーク,balloonlist(BA...
とでもしてやれば、(is_empty|B1|(R0))は「BAR」という...
これで特定のバルーンがインストールされているかどうかでも...
- といったように、
\![get,property,発生させるイベント名,○○]
の○○部分で取得したい内容を色々かえられるので、[[ukadoc>ht...
- ちなみに
\![get,property,略,ghostlist(ふがふが).name,balloonlist(...
などと、複数の内容をいっぺんに取得することも出来ます。こ...
それぞれ(is_empty|B1|(R1))などとすれば、存在してい...
**長所と短所 [#d30ceb77]
:長所|
SSPにゴースト名の検索を任せられるので処理が速い。~
:短所|
一度SHIORI Eventを発生させる必要があるので、処理の流れが...
多くの場所で似たような事をたくさんやる場合に何度も同じよ...
*まとめ [#j038f69e]
''結論:里々でもできるけどすごくめんどくさいので誰か何と...
~
本来やってる事の「本質」はそう難しいことではありません。~
NOTIFYイベントは、ベースウェアが知っている情報を教えてく...
プロパティシステムは、ベースウェアが知っている情報をこち...
~
しかしこのインストール済判定という課題は、里々というSHIOR...
一つには、里々はループ処理が遅いために、不定数のReference...
そしてもう一つは、里々は文字列処理が非常に苦手であり、特...
そのような問題への対策のために、このページでは不要な行数...
~
これらの問題をもっとスマートに解決する方法は……&size(12){...
誰かがSAORIを用意してくれるか、%%いっそ里々が機能を備えて...
終了行:
ベースウェア(SSPなど)に特定のゴーストやシェルやバルーン...
ここにあるような方法で調べておけば、たとえば特定のゴース...
なおこのページにある内容には''SSP専用''のものがあります。~
~
----
#contents
----
~
*里々バージョンMc155-1以降の場合 [#c24a8e53]
[[情報取得変数>情報取得変数#yc9319e3]]で、カッコ1つで取得...
「[[$NOTIFYの自動保存>特殊変数#qe216ebc]]」を有効にする...
~
''&color(#0000ff){以下の情報は里々Mc154-1以前を対象とした...
*事前準備 [#b96748b2]
まず最初に、以下の説明で「[[バイト値>内部関数#c2695bea]]...
これはゴースト名などの「どんな文字が入ってるか分からない...
なのでよくわからないかもしれませんが''[[replace.txt>ファ...
何も見えないと思いますが、''タブ文字やバイト値1と2が隠...
|B1|
|B2|
*NOTIFYイベントを使う・基本編 [#f39b3ef6]
参考:
- [[ukadoc「SHIORI Event」>http://ssp.shillest.net/ukadoc...
**サンプル [#k4c579b8]
「ほげほげ」というゴーストがインストールされている事を確認
*installedghostname
$ほげほげ導入済【タブ】0
(times,(Rの数),
(when|B1|[(R(C0))]==[ほげほげ]
|B1|(set,ほげほげ導入済,1)
)
)
↑で立てたフラグを利用する例
*切り替えメニュー
:φ
_ランダム切替
_次のゴーストに切替
(when、(ほげほげ導入済)、\q[ほげほげに切替,ほげほげに...
*ランダム切替
:ランダム切替実行!\![change,ghost,random]
*次のゴーストに切替
:次のゴーストに切替実行!\![change,ghost,sequential]
*ほげほげに切替
:ほげほげに切替実行!\![change,ghost,ほげほげ]
**解説 [#rd108346]
まず最初の「ほげほげ導入済」は、「ほげほげ」というゴース...
0を初期値として入れておいて、もし調べてもインストールさ...
~
ポイントになるのは[[installedghostname>http://ssp.shilles...
長くなるので、SHIORI Eventについて詳しく知りたい方は以下...
参考:
- [[栞としての里々>栞としての里々#gc01536d]]
- [[ukadoc「補足:SHIORI Eventとは」>http://ssp.shillest....
~
installedghostnameは、起動時などに発生し、ベースウェアに...
まあ要は、*installedghostnameという文を用意して、その中...
後はそのゴースト名全部について、今探している「ほげほげ」...
~
文字列の比較も==でやればいいのですが、もしゴースト名が数...
そこで==の両辺をそれぞれ「[]」で囲います。このように前後...
~
|B1|という邪魔っ気なやつは里々特有の弱点が絡んだ記述なの...
とりあえずはそういうものなんだと思って先に進んでしまって...
参考:
- [[引数区切り文字問題>関数#wbedea1a]]
- [[when,times,while,forでバイト値を引数区切り文字にする...
~
名前が一致すると、[[when>内部関数#c8fbcc67]]は真の場合の...
もし全ての名前を調べても一致する名前がなければ、フラグは...
これが基本的な仕組みです。~
~
ところがここで一つ困った事があります。~
ユーザによってインストールされているゴーストの数は全然違...
そこで登場するのがループ関数の[[times>内部関数#ad356074]]...
これによって、R*があるだけ同じ処理を何度も繰り返してく...
~
利用例は、フラグが立っている場合のみメニューにそのゴース...
**補足 [#i0bcafcc]
- もしゴースト起動中に新たにゴーストがインストールされた...
- installedghostnameの代わりに[[installedshellname>http:/...
基本的なスクリプトは変わりません。文の名前だけそれぞれ*i...
変数名も「シェルほげげ導入済」などと、自分で解りやすく工...
※シェル、バルーンはMATERIAだと動きません。
**長所と短所 [#ocdc57ff]
:長所|
比較的簡単だし記述も短いし利用もシンプル。
:短所|
ユーザの環境(特にインストールされているゴーストの総数)...
インストール確認の対象とするゴースト数が増えるたびにinsta...
里々のループ処理は重いので、インストールされているゴース...
どうしてもそれに耐えられない場合は、後述のプロパティシス...
*NOTIFYイベントを使う・応用編 [#fae7c5a5]
**サンプル [#yc758d58]
全インストール済みゴーストを記憶
*installedghostname
$導入ゴーストリスト【タブ】
(set|B1|導入ゴーストリスト|B1|
|B2|
(times|B1|(Rの数)|B1|
(R(C0))|B2|
)
)
以下の関数を辞書のどこかに書いておく
@ゴースト導入済判定
(calc,
(count
|B1|(導入ゴーストリスト)
|B1||B2|(A0)|B2|
)>0
)
インストール済ゴーストのチェック例
*切り替えメニュー
_ランダム切替
_次のゴーストに切替
(when、(call,ゴースト導入済判定,ほげほげ)
、\q[ほげほげに切替,ほげほげに切替]
)
(when、(call,ゴースト導入済判定,ふがふが)
、\q[ふがふがに切替,ふがふがに切替]
)
(when、(call,ゴースト導入済判定,ぴよぴよ)
、\q[ふがふがに切替,ぴよぴよに切替]
)
*ランダム切替
:ランダム切替実行!\![change,ghost,random]
*次のゴーストに切替
:次のゴーストに切替実行!\![change,ghost,sequential]
*ほげほげに切替
:ほげほげに切替実行!\![change,ghost,ほげほげ]
*ふがふがに切替
:ふがふがに切替実行!\![change,ghost,ふがふが]
*ぴよぴよに切替
:ぴよぴよに切替実行!\![change,ghost,ぴよぴよ]
**解説 [#sce19a89]
基本編と同じ部分は端折ります。~
~
今回はループの中で、インストール済ゴーストの名前と目的の...
なおその時にゴースト名の前後を「[byte2]ゴースト名1[byte2]...
これは説明するととても長くなるので略しますが、予期せぬ不...
~
こうして最初にリストを作っておいて、後でそのリストから特...
その調べるために使うのが「ゴースト導入済判定」という[[ユ...
ゴースト導入済判定内では、ssu.dllの[[count>外部関数/ssu#f...
countは、ある文字列A中に含まれている文字列Bの数を数えて...
これを利用すれば、導入ゴーストリストという文字列Aの中か...
なお今回は数と言うよりインストールされているかいないか(...
**長所と短所 [#u9c49a6f]
:長所|
インストールを確認したい対象を後から増やしたい場合も、ins...
増やしたからといって処理時間も増えない。
:短所|
里々でループを回すのでやっぱり処理に時間がかかる。~
保存した情報の利用にcallによる関数呼び出しが必要なので不...
*プロパティシステムを使う [#kfc04b0a]
SSP専用の手段です。
参考:
- [[プロパティシステム]]
- [[ukadoc「プロパティシステム」>http://ssp.shillest.net/...
**サンプル [#xa528b5a]
*
\![get,property,ふがふが導入依存トーク,"ghostlist(ふがふ...
*ふがふが導入依存トーク
:そういえば友達に「ふがふが」ってのがいてさー。
>ふがふが未導入トーク【タブ】(is_empty|B1|(R0))
え? インストールしてるの?
じゃあそのうち会うこともあるかもね。
*ふがふが未導入トーク
:ユーザは知らないかー。
よければインストールしてやってね。
**解説 [#c5074abe]
起動中、SSPはインストールされているゴーストの情報(descri...
そうでなければゴースト切り替えメニューにゴースト名を表示...
~
そうしたSSPが起動中に保持している情報(プロパティ)を、ゴ...
これをプロパティシステムと呼びます。~
~
\![get,property,○○,××]
というさくらスクリプトのタグがこの問い合わせの方法です。~
~
○○には「この後発生するイベント名」が入ります。~
イベントってなんじゃという場合は、とりあえず「*○○」とい...
なので上例ではすぐ下に「ふがふが導入依存トーク」というト...
~
××には「問い合わせの内容」が入ります。~
色々ありますが、今は「ghostlist(☆☆).name」という物が入っ...
これは「☆☆」というゴーストのゴースト名を教えてください、...
~
問い合わせの答えがどこでかえってくるかというと、○○という...
[[(R*)>情報取得変数#l0da4eb8]はNOTIFYイベントを使った...
~
さてここが肝ですが、もし問い合わせた☆☆という名前のゴース...
そしてssu.dllには[[is_empty>外部関数/ssu#x9343bf4]]といっ...
従って、
>ふがふが未導入トーク【タブ】(is_empty|B1|(R0))
の行は結局、「問い合わせた『ふがふが』というゴーストがイ...
これで、特定ゴーストがインストールされているかどうかで分...
**補足 [#g5d06697]
- もし上例で
\![get,property,ふがふが導入依存トーク,ghostlist(ふがふ...
の代わりに~
\![get,property,シェルFOO存在依存トーク,"currentghost.sh...
とでもしてやれば、(is_empty|B1|(R0))は「FOO」という...
これで特定シェルがインストールされているかどうかで分岐さ...
- 同様に
\![get,property,バルーンBAR導入依存トーク,balloonlist(BA...
とでもしてやれば、(is_empty|B1|(R0))は「BAR」という...
これで特定のバルーンがインストールされているかどうかでも...
- といったように、
\![get,property,発生させるイベント名,○○]
の○○部分で取得したい内容を色々かえられるので、[[ukadoc>ht...
- ちなみに
\![get,property,略,ghostlist(ふがふが).name,balloonlist(...
などと、複数の内容をいっぺんに取得することも出来ます。こ...
それぞれ(is_empty|B1|(R1))などとすれば、存在してい...
**長所と短所 [#d30ceb77]
:長所|
SSPにゴースト名の検索を任せられるので処理が速い。~
:短所|
一度SHIORI Eventを発生させる必要があるので、処理の流れが...
多くの場所で似たような事をたくさんやる場合に何度も同じよ...
*まとめ [#j038f69e]
''結論:里々でもできるけどすごくめんどくさいので誰か何と...
~
本来やってる事の「本質」はそう難しいことではありません。~
NOTIFYイベントは、ベースウェアが知っている情報を教えてく...
プロパティシステムは、ベースウェアが知っている情報をこち...
~
しかしこのインストール済判定という課題は、里々というSHIOR...
一つには、里々はループ処理が遅いために、不定数のReference...
そしてもう一つは、里々は文字列処理が非常に苦手であり、特...
そのような問題への対策のために、このページでは不要な行数...
~
これらの問題をもっとスマートに解決する方法は……&size(12){...
誰かがSAORIを用意してくれるか、%%いっそ里々が機能を備えて...
ページ名: