幻日幻月環

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

着せ替えのバルーン自動表示

2017/10/24追記
SSP2.4以降、右クリックメニューに「着せ替えエクスプローラー」が追加されたため、このように着せ替えだけを行うリスト表示は不要になりました。

----
この記事は伺か Advent Calendar 2014に投稿したものです。

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

シェル自体の作り方は、シェルの作り方、着せ替えの作り方は、着せ替えやアニメーションの作り方で確認してみてください。

今回は、着せ替えのバルーン表示。
着せ替えは右クリックから実行しますが、数が多い場合はちょっと面倒になることもあるかもしれません。
そこで、自動でバルーンに着せ替えメニューを表示する方法を示します。
表示した内容をクリックすると、着せ替えが行われます。
また、「終了する」の選択肢を選ぶまで、バルーンが出たままになるので、色々試すことが出来ます。
着せ替えのあるシェルなら自動で着せ替えメニューを生成するので、スクリプトをゴーストの辞書にコピーするだけで使えるようになります。
ただし、全ての着せ替えを表示してしまうので、隠し着せ替えなどがある場合はスクリプトの改造が必要になります。
SSP/2.3.42以降でないと動きません。

詳細は続きに。
以下サンプルは、preタグを使っていますが、場合によってはタブや改行がコピーできないかもしれません。

OnNotifyDressupInfoというSHIORI EVENTを使用します。
辞書に既に記述がないかを確認してください。
テンプレートでは、「Rポストと狛犬」、「ゴーストキット」、「Rポストと狛犬とテンプレート」には記述されていませんので、気にせず使えます。

確認用のシェルを用意しました。
テスト用のゴーストにインストールし、下記のスクリプトを辞書にコピーして試してみてください。
実行すると、このように表示されます。
実行結果
bind_sample01.png
着せ替えパーツ名をバルーン上で選択すると、着せ替えが行われます。

着せ替えの数だけ変数を作るので、セーブデータを汚したくない場合は、終了/ゴースト切り替え時に以下を実行してください。
(着せ替え変数クリア)


*0つつかれ
:メニューです。
_◯着せ替え

*◯着せ替え
(nop,
#どのキャラの着せ替えかを設定する
#0で本体側、1で相方側、2で3人目~
(set,ターゲットスコープ,0)
#これ以降全て処理部、改造しない場合は触らなくて大丈夫
(set,表示フラグ,1)
)(着せ替えメニュー表示)

*OnEndDisplayBindMenu
#\p[(ターゲットスコープ)]どうかな?
#なにかセリフを言わせたい場合は上記のコメントアウト(#)を解除
(nop,
(set,ターゲットスコープ,)
(set,表示フラグ,)


*OnNotifyDressupInfo
(nop,
#さくらスクリプトでは「"」が含まれる着せ替えを操作できないため、存在しないことが前提、区切り文字に使用
(set,引数区切り追加,")
#Rnは[キャラクターID、カテゴリー名、パーツ名、オプション、有効1/無効0、サムネイルパス]のバイト値1区切り
#メニューから開くため、全て保存しておく
(set,着せ替え総数,(calc,(Rの数)-1))
(for,0,(着せ替え総数),1,
(set"着せ替え保存(C0)"(R(C0)))

(set,引数区切り削除,")
)(when、(表示フラグ)、
(着せ替えメニュー表示)


@着せ替え変数クリア
(for,0,(着せ替え総数),1,
(set,着せ替え保存(C0),)


*着せ替えメニュー表示
:\b[2]\*\t\_q着せ替えメニュー(nop,
(set,切り替え座標1,92)
(set,切り替え座標2,184)
(set,現在処理中のカテゴリ,)
(set,改行状態,0)
(set,引数区切り追加,")
)\f[height,10](for,0,(着せ替え総数),1,
(nop,(split"(着せ替え保存(C0))"(バイト値,1)"0"1))
(when,(S0) == (ターゲットスコープ),
(when、!(compare"(S1)"(現在処理中のカテゴリ))、
(set"現在処理中のカテゴリ"(S1))
\n\f[bold,true](現在処理中のカテゴリ)\f[bold,default]\n
(set,改行状態,0)

(when、(改行状態) == 3、
\n(set,改行状態,1)、
(when、(改行状態) == 2、
\_l[(切り替え座標2),](set,改行状態,3)、
(when、(改行状態) == 1、
\_l[(切り替え座標1),](set,改行状態,2)、
(set,改行状態,1)



(when、(S4) && (count、(S3)、mustselect)、
◯(S2)、
\__q[OnChangeBindMenu,"(S1)","(S2)","(S4)"](when,(S4),◯,-)(S2)\__q



\f[bold,true]着せ替え終了\f[bold,default]
\__q[OnEndDisplayBindMenu]終了する\__q\f[height,default]\_q(nop,
(set,中央座標,)
(set,現在処理中のカテゴリ,)
(set,改行状態,)
(set,引数区切り削除,")


*OnChangeBindMenu
\p[(ターゲットスコープ)]\![bind,(R0),(R1),(calc,!(R2))]
PageTop

コメント


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