着せ替えをメニューで非表示にする

Last-modified: 2023-02-23 (木) 20:11:41

執筆者:もっしょくし  ※編集に許可は不要ですが、相談には応じます。

着せ替えをユーザに切り替えてもらうのではなく、ゴースト側で状況に応じてON/OFFしたい場合や、何らかのフラグが立った時にのみ、ゴーストのバルーンメニューから着せ替えが行えるようにしたい場合など、着せ替えの一部/全部をメニューに表示したくない事があるかもしれません。
そうした時に使えるテクニックです。

 

一部ゴースト側での対応が必要な方法もあります。


目次


着せ替えの一部をメニューで非表示にする

結論を先にすると、「sakura.menuitem*,ID」の設定がなければそのIDの着せ替えは表示されません。

 

シェルに着せ替え機能を付けたい場合、シェルのdescript.txtにいくつかの設定をする必要があります。
例えば\0側に設定を行うとして、「sakura.menuitem*,ID」「sakura.bindgroup*.name,カテゴリ名,パーツ名,サムネイル名」などを書く事になるでしょう。
後者は着せ替えにカテゴリー名や名前を与えるための設定で、前者がメニューでの表示位置の設定です。

 

もし、メニュー上で非表示にしたい項目は、前者の「sakura.menuitem*,ID」を設定しないままにしておけばいいだけです。
(ただし、後述しますが、着せ替えの全項目を非表示にしたい場合はこれではうまくいきません)
※例はゴースト「伊丹」さんの追加シェル「月蝕」です。

descript側設定例メニュー表示例
(着せ替えのbindgroup*.name部分)1-1_1.png
menuitem指定あり1-2.png2-1.png
menuitem指定なし1-3.png2-2.png
 

なお「sakura.bindgroup*.name,カテゴリ名,パーツ名,サムネイル名」の設定を行わないと、さくらスクリプトタグの\![bind,]などを用いて着せ替えをON/OFFすることができないので、ゴーストの辞書側から呼び出す専門の着せ替えとして使うような場合には気を付けてください。

着せ替え自体をメニューで非表示にする

menuitemを設定しないことによる方法

一部を非表示にする方法と同様、全ての項目について「sakura.menuitem*」を指定しなければよいように思われますが、これだと思ったようにいきません。

 

SSPは、「sakura.menuitem*」が一切設定されておらず、着せ替えメニューに表示するものが何もない場合に、もし「sakura.bindgroup*,name」の設定があると、その内容に応じて自動的に着せ替えメニューを構築してしまいます。
sakura.menu,autoが指定されたのと同様の処理です。
※例は拙作ゴースト「暦にしき」です。

3.png4.png
シェルのdescript.txt。menuitemを一切設定しないメニュー表示例。自動構築されてしまう
 

そこでもう一工夫して、sakura.menuitemについては、以下の一つだけ設定します。

sakura.menuitem0,-

「sakura.menuitem,数値」の数値には、通常着せ替えのIDを書きますが、ここにハイフン「-」を記入する事で、メニュー内にセパレータ(罫線)を表示できる仕組みがあります。
このセパレータもメニューの一項目として扱われるので、これ一つだけ書けばメニューが自動構築されることはありません。

 

難点としては、少なくとも何らかの着せ替えがある事自体はメニューを見るとバレてしまいます。
そのためこの方法は、着せ替えがある事自体をなるべく伏せておきたいようなケースには使えません。

5.png6.png
シェルのdescript.txtセパレータのみが表示された着せ替えメニュー

dressuprootbutton.visibleによる方法

この方法は、ゴースト側での対応が必要です。

 

SHIORI Eventの中には、メニューの表示内容をどのようにするかを栞(ゴースト)側に問い合わせるためのものがあります。
そのうちの一種である、dressuprootbutton.visibleというIDのSHIORI Eventに対して、「0」が返却されると、SSP(と、materia)は、着せ替えメニューを非アクティブに(着せ替えがない場合のように)します。

7.png8.png
里々での記述例着せ替えが無効になっているメニュー
 

具体的に辞書にどう書けばよいのかは、栞によって異なります。
ここでは里々およびYAYAでの例を挙げておきます。
以下のような記述が辞書中にあればよいです。
里々での例

@dressuprootbutton.visible
0

YAYAでの例

On_dressuprootbutton.visible{'0'}
 

難点としては、ユーザ側のSSP設定で「ゴースト(1)」の「ゴースト定義メニューを使わない」にチェックが入っている場合、この設定は無視されてしまいます。
またこの方法は\0、\1というスコープごとの制御ができないため、\1のみ着せ替えを封印したいというような場合には向きません。

sakura.menu,hiddenによる方法

最も新しい方法で、SSP2.3.00から実装されました。

 

シェル側のdescript.txtに、以下のように記述します。

sakura.menu,hidden

これで着せ替えメニューが非アクティブになります。
「sakura」の部分を、\1側ならkero、\p[2]以降ならchar2、char3、...とすることで、各スコープについて指定できます。
※例は「とらふぃっく☆とれいん」さん

9.png10.png11.png
descriptへの記述例着せ替えが無効になっている\1側メニューと有効なままの\0側メニュー
 

難点としては、2.2.x以前のSSPを使っているユーザ環境では設定が無効な(メニューに表示されてしまう)事が挙げられますが、これは時間が解決してくれるのを待ちましょう。

このページへのコメント

このページに関係する内容

Tag: シェル 着せ替え descript.txt ゴースト オーナードローメニュー