power spot. 2023/08/29 22:11

カスタムメニュープラグイン講座(第12回)「戦闘中の呼び出し・メモタグの利用・出来ないこと」

RPGツクールMZ向けのトリアコンタン氏のプラグイン「カスタムメニュープラグイン(SceneCustomMenu.js)」の使い方講座です。

リンク:
カスタムメニュー作成プラグインを調べてみた(とんびさん)
RPGツクールMZ プラグイン講座
RPGツクールVXAce & MV & MZスクリプトwikiとプラグイン

Download → RPGツクールMZ データベース用リファレンス

Download → RPGツクールMZ ゲームデータ用リファレンス


今回は、戦闘中の呼び出し、メモタグの利用と、カスタムメニュープラグインで出来ないことを紹介します。


【1】カスタムメニュープラグインと戦闘シーンについて

カスタムメニュープラグインは戦闘中に呼び出すことが可能です。※ただし、通常のメインメニューから呼び出す場合と違う振る舞いをします。

設定方法は大まかに以下の手順です。
・カスタムメニューAを作成
・コモンイベントBにカスタムメニューA呼び出しのスクリプトを記述
・アイテム、もしくはスキルの使用効果に、上記のコモンイベントBを設定
・戦闘中にアイテム、スキルを使用

前回までの講座で作成したカスタムメニューを呼び出してみました。
かなり無理やり呼び出している感じがしますね。パラメータなどを細かく設定すると見栄えがよくなります。

【2】戦闘用カスタムメニューの設定

前回までのカスタムメニューを戦闘中に呼び出すと、背景はマップシーンの状態が表示されます。これでは戦闘中に呼び出しても魅力が半減してしまいます。
背景を戦闘シーンにするためには、スクリプトコマンドを使用します。

SceneManager.snapForBackground();//画像をスナップ


この場合、コモンイベントを使用してカスタムメニューを呼び出す処理の直前に入れてあります。

これに加え、メニュー呼び出し時の背景ぼかしをオフにします。

以上2つを設定した動作は以下の動画のようになります。

キャンセルイベントでマップシーンに戻るように設定してあるので、戦闘が強○終了しています。


拙作にて、戦闘中にカスタムメニューを呼び出しているシーンを紹介します(開発途中で申し訳ありません)

https://twitter.com/jidoripowerspot/status/1560627540179333120

戦闘中もほぼシームレスに呼び出せれば、特殊なメニューなども違和感なく簡単に作れると思います。


【3】メモタグの利用

ツクールのデータには「メモ欄」が用意されています。これは簡易的なメモを記述するだけではなく、スクリプトを利用して内容を参照することが出来ます。

例えば、データベースのアクターのメモ欄に<value>と記述してあるとします。
アクター1の<value>を参照するためのコードは以下のようになります。

$dataActors[1].meta['value']
$dataActors[1].meta.value

どちらでも参照することが出来ます。
ただし、下の記述の場合は全角文字は参照出来ませんので注意が必要です。

フィルタスクリプト内のテンプレートには以下のような記述があります。

item.meta['value']; // メモ欄に<value>の記述がある

これは一覧取得スクリプトで得たデータがitemとなっているので、一覧取得スクリプトが $dataActors.filter(data => !!data); を選んでいればアクターのデータベースにあるメモ欄を取得出来ます。



一覧取得スクリプトが $gameParty.members(); // パーティメンバー の場合は、やり方が少し変わります。
$gameParty.members(); にした場合、項目描写などでitemと記述すれば、パーティーに居るアクターを一人ずつ参照します。ですが、この$gamePartyで参照されるパーティーメンバー配列のアクターには、メモ欄の情報はありません
パーティーメンバーに居るアクター1のメモ欄を参照するためには、以下のようなコードが必要です。

$dataActors[item._actorId].meta['value'];

順番に見ていくと、

$dataActors[n] → n番目のアクター(データベース)
$dataActors[n].meta['value']; → n番目のアクター(データベース)のメモ欄の<value>
$dataActors[item._actorId].meta['value']; → item(この時はパーティーメンバーのアクター)のアクターIDのデータベースのメモ欄の<value>

となります。記述しているコードが複雑に見えますが、順序良く見ていく(カッコ内やパラメータの値など)ことで、理解しやすくなると思います。

【4】カスタムメニュープラグインで出来ないこと

さまざまな可能性を秘めているカスタムメニュープラグインですが、どうしても出来ないことがありました。それは複数のカーソルを同時に動かす(アクティブにする)ことです

例えばコマンドを横に4つ備えたコマンドウィンドウAがあったとします。それとは別に立てに4つの項目が描写されているウィンドウBがあったとします。

左右のボタンはウィンドウAしか操作できません。
上下のボタンはウィンドウBしか操作できません。

なので、このウィンドウを同時にアクティブにすることが出来れば、左右でAを、上下でBを操作出来るのでは無いかと思いますね。でも、プラグインの仕様で不可となっております


同時にアクティブに出来れば、一回分の操作が省略出来そうだが・・・

さて、講座は今回で一区切りとさせてください。
お伝えしたいことは、大まかではありますが伝えられたと思っております。

次回からは、拙作 Eternal Dragon 続編のメニュー画面を実際に制作していく過程をお伝えしたいと思います。

ありがとうございました。