投稿記事

2023年 03月の記事 (3)

power spot. 2023/03/18 22:21

カスタムメニュープラグイン講座(第8回)「各パラメータのリスト化」

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

リンク:
カスタムメニュー作成プラグインを調べてみた(とんびさん)

今回は特にメニューを作成するわけではないですが、メニューで使用する各パラメータのリスト化を紹介したいと思います。


【1】「パラメータのリスト化」とは

カスタムメニュープラグインでは、ゲーム用のスイッチや変数、コモンイベント、スクリプトなど、設定項目が多く存在します。
メニューの規模はウィンドウの数に比例します。もちろんそれだけではありませんが、ウィンドウの数が多くなればなるほど設定項目が増え、作成者自身でも把握困難に陥ることは想像に難しく有りません。筆者も経験上、何度も確認をしました。そこでパラメータのリスト化をすることで、視覚的に簡単に確認出来ます。

リストは講座後半でダウンロード出来ます。

プリントして使用するか、Excelファイルに数値を入力するかして使用してください。
個人的にはプリントして使用する方が効率が良いと思います。

具体的な例ですが、拙作で作成したカスタムメニューの動画と、それ用のパラメータリスト(手書き)を掲載しておきます(Twitter)。

https://twitter.com/jidoripowerspot/status/1601230187093450754拙作のカスタムメニュー(鍛冶屋。武器・防具の製造と改造を処理)



https://twitter.com/jidoripowerspot/status/1628014461394235393手書きのパラメータリスト


【2】主なリスト化すべき内容

  • ウィンドウ識別子ID(Id
  • データスクリプト(DataScript
  • 【変数】インデックス格納変数(IndexVariableId
  • 【イベント】決定イベント(DecisionEvent
  • 【イベント】キャンセルイベント(CancelEvent
  • 【イベント】カーソルイベント(CursorEvent)
  • 【スイッチ】表示用スイッチID(VisibleSwitchId
  • 【スイッチ】再描画用スイッチID(RefreshSwitchId)
  • 【変数】選択項目格納変数(ItemVariableId

上記項目で、【イベント】系につきましては、呼び出すのがコモンイベントなのか、スクリプトで処理するのか、ウィンドウ偏移・スイッチ操作なのかによって内容が変わると思います。


【3】Excel及びPDFファイルのダウンロード

Excel用ファイルとPDFファイルを用意してあります。
Excelのシート1,PDFの1ページ目は【2】でリストアップした項目です。
Excelのシート2、PDFの2ページ目は各スイッチ、変数、コモンイベント用のリストです。

カスタムメニュープラグイン用.xlsx (16.88kB)

ダウンロード

カスタムメニュープラグイン用.pdf (28.89kB)

ダウンロード

カスタムメニューを作成するにあたって、設定するパラメータは多くなります。
整理してわかりやすくしておくことが要領よく作成することにつながると思います。

さて、次はイベントスクリプトについて解説したいのですが、その前にツクール用の簡単なJavaScriptリファレンスを紹介したいと思います。

power spot. 2023/03/12 00:19

カスタムメニュープラグイン講座(第7回)「簡単なメニューの拡張」

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

リンク:
カスタムメニュー作成プラグインを調べてみた(とんびさん)


前回は簡単なメニューを作成してみました。今回はそのメニューを応用・拡張したいと思います。


【1】「固定の項目」から「任意の項目」に変更してみる 


前回作成したメニュー(サウンドテスト)では、指定の項目のみを表示・選択可能でした。
この状態では使い勝手が限定されてしまいます。任意の項目(曲)を表示させるためにはどうすればいいでしょうか。
答えはデータスクリプトにありそうです。

以前にも紹介したデータスクリプトのプリセットです。
この中に、任意の曲を表示させるプリセットはあるのでしょうか。
プリセットを選択するまえにツクールのデータベースを開いてみましょう。
アイテムの設定画面で、こんな項目があります。

隠しアイテムA」というパラメータが存在します。こちらは、プレイヤーが取得してもアイテム欄に表示されることはありません。
この設定項目を使い、「隠しアイテムAに曲を設定し、アイテムを所持している場合のみ表示させる」ということをやってみましょう。

まずは曲リストはアイテムとして作成します。

次にデータスクリプトで「$gameParty.items(); // 所持消耗品」を選択します。

また、前回作成したコマンドリストを削除します。

イベントで、曲のアイテムを所持品に追加させます。

実際にテストします。

表示出来ました。しかし、この状態では、所持しているアイテムすべてを表示してしまいます。

特定のアイテムのみを表示させたいところですね。そこで次は「フィルタスクリプト」を設定します。

プリセットの一番上にある「item.meta['value']; // メモ欄に<value>の記述がある」を選択します。
こちらはプリセットの説明通り、メモ欄に<value>という記述がある場合のみ表示させる、というものです。<value>はプリセットの内容なので、別の名前に変更します。今回は<sound>とします。


先程設定したデータベースの曲用のアイテムのメモ欄に<sound>を記述します。

テストしてみます。

項目の取得は成功しました。


【2】選択項目格納変数の利用

さて、表示させることは成功しましたが、このままでは前回同様に決定キーを押しても何も起こりません(前回の決定イベント用に設定したコモンイベントがそのままであれば、曲は再生されますが、項目と紐付けされているわけではないので意図しない曲が再生されます)。
分岐条件を考えてみましょう。

  • 選択項目を取得(アイテム) → アイテムのパラメータで分岐 → 曲を再生

こんなイメージで考えれば良さそうです。実際に設定してみます。
この時、役に立つのが「選択項目格納変数」です。【重要!】

パラメータの説明にもありますが、「選択中の項目オブジェクトが常に格納される変数」とあります。ツクールMZのゲーム用変数は、数字や文字だけでなく、オブジェクトも格納することが出来ます。【重要!】

オブジェクトの説明はまた別の機会にすることにします。今回の場合は、「変数にアイテムのデータベース情報を格納出来る」という感じです。
実際に選択項目格納変数に代入されたデータが以下の通りです。

色々とパラメータが存在します。わかるのもあればわからないものもあると思います。
今回はアイテムのパラメータで分岐が目標です。何か使えそうなパラメータを探してみましょう。
パラメータにidという項目があります。これはアイテムデータベース用IDで、40となっているのはデータベース上の左の数字です。

このIDで条件分岐をすることが出来れば曲を個別に再生することが出来そうです。
決定イベント用のコモンイベントを開き、条件分岐ウィンドウを開いてみましょう。
タブ4の下にスクリプトとあります。ツクールMZでは、スクリプトの評価で条件分岐を設定することが出来ます【重要!】
では、どのように記述するのでしょうか。

まず、n番目のゲーム用変数を取得するスクリプトは「$gameVariables.value(n)」となります。【重要!】 スクリプト、英語が苦手という方もいるかと思いますが、変数を取得するスクリプトは最低限覚えておきましょう。

項目格納変数nからパラメータidを取得するコードは「$gameVariables.value(n).id」です。

このことから、項目格納変数nのパラメータIDがmと同値の場合、という条件分岐を書くためのコードは「$gameVariables.value(n).id == m」です。

今回は「選択項目格納変数IDは3、アイテムIDが40で戦闘曲を再生」をするとします。実際に条件分岐に記述するコードは以下のようになります。

同様にして他のアイテム用IDから分岐条件を設定します。

わかりやすく曲を入手出来るイベントを配置し、テストしてみます。

思い通りに作ることができました。
今回のようにデータスクリプトを活かすことで、例えば行ったことの無い場所に行ったときに曲目を追加や、楽譜アイテムを入手して曲目を追加、などが出来ると思います。


【3】さらに別のメニュー「テレポート」メニューを考えてみる

サウンドテストメニューに関しては以上になりますが、似たようなメニューで「テレポート」用のメニューを作成出来そうです。
アイテムや条件分岐などは先程の設定を参考に設定します。
次に呼び出し方法ですが、スキルやアイテムでコモンイベントを指定できるので、そちらから呼び出しが出来そうです。今回はスキルから設定してみます。
カスタムメニュープラグイン上で各パラメータを設定後、スキルから呼び出すコモンイベントにカスタムメニューを開くスクリプトを記述します。今回は「Scene_Teleport」としました。

次にスキルにコモンイベントを設定します。

あとはアクターに習得させましょう。

これで設定出来ました。テストしてみます。

上手く動きました。

【4】まとめ

今回サウンドテスト及びテレポートの隠しアイテムを利用する案は、筆者がネットのどこかで拝見したものを参考にしました。ありがとうございました。

選択項目格納変数は大変便利なパラメータです。上手く利用すればいろいろなことが出来るでしょう。
さて今回まで簡単なメニュー作成を紹介してきました。
次回はより規模が大きい場合のパラメータをリストにして、管理を簡単にする方法を紹介したいと思います。

power spot. 2023/03/04 23:55

カスタムメニュープラグイン講座(第6回)「簡単なメニューを作成してみる」

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

リンク:
カスタムメニュー作成プラグインを調べてみた(とんびさん)


前回まではプラグイン自体の機能や設定、パラメータの説明を中心に進めてきました。
プラグインを触ったことがある方は少し退屈に感じたかもしれませんが、今回は実際に簡単なメニューを作成したいと思います。

今回は「簡単なサウンドテストをするメニュー」を作成したいと思います。


【1】オリジナルメニュー作成の手順

さて、オリジナルメニューを作成する手順についてです。順番は筆者なりの考えです。
いくつかのメニューを作成した経験から、以下の手順ですすめるとスムーズに作成出来ると思います。

(1)オリジナルメニューで何をするかを考える(扱うデータの種類の選定、ウィンドウの数など)
 ↓
(2)ウィンドウのレイアウトを決める(ウィンドウの幅、高さ、座標など)
 ↓
(3)ウィンドウごとのパラメータの設定(データスクリプト、イベント、項目表示など)
 ↓
(4)テスト、動作を確認


(1)に関しては、オリジナルメニューで具体的に何をしてどういう振る舞いにするかを考えるということです。その際に扱うウィンドウをピックアップし、どのような内容にするか(データスクリプト)を決めるということです。
経験上、この最初の作業を怠ったり後回しにすると、一気に後の作業が大変になります。

(2)に関しては、(1)でピックアップしたウィンドウを作成・設定する作業です。
座標、幅、高さなどを決めて実際にゲームをプレイしたときにウィンドウだけを表示させます。
レイアウトは後からでも簡単に修正できるので、仮の配置でも問題ありません。
筆者はウィンドウごとの画像を使用しているので、(4)の作業が終わった時点でさらにウィンドウレイアウトを変更していたりします。

(3)はウィンドウごとに扱うデータの種類(データスクリプト)、決定・キャンセル・カーソルなどのイベント、データスクリプトから項目表示などを行います。
実際にこちらの作業がオリジナルメニュー作成における大きな作業です。時間がかかると思うので、根気よく頑張りましょう。

(4)はテストプレイして動作を確認します。パラメータ1つがミス入力していてもメニュー全体が動かなくなることもあるので、何度もテストをすることが大切です


以上の順番を踏まえて作成していきたいと思います。


【2】サウンドメニューを考えて実際にウィンドウを表示させてみる

手順(1)、(2)を踏まえておおまかなレイアウトを考案します。

上のウィンドウがコマンドメニュー、真ん中が再生する曲リストとしました。
ウィンドウを設定しなければならないので、もう少し詳しく考えてみます。

なんとなくイメージが出来てきました。
では実際にパラメータを入力していきます。

新たにオリジナルメニューを作成します。

ウィンドウ識別子を設定します。

ウィンドウ一覧からウィンドウのパラメータを設定していきます。
こちらはSoundTest_Commandウィンドウのパラメータ設定中の様子です。

ウィンドウの座標・幅・高さ、行数、列数などを調整していき、テストしてみます。

ウィンドウを表示させることは出来ました。
では次に、SoundTest_MusicListウィンドウ(曲目のリスト)をどうやって作成するかを考えてみます。
今回は「あらかじめ決められているリストから再生させる」という前提にします。
任意の曲をリストに追加させる方法は次回に紹介します。

【3】サウンドのリストから曲を再生させるまでやってみる

あらかじめメニューの項目が決められているときは「コマンドリスト」を使います。
既に設定したSoundTest_Commandでもコマンドリストから「決定・停止・戻る」を入力しました。
SoundTest_MusicListのコマンドリストでも次のように入力します。

曲目は8個にしました。実際にプレイしてみます。

レイアウトはほぼイメージ通りになりました。
しかしイベント系を何も入力していないので、ボタンを押しても何も起こりません。

次にイベント系を設定していきます。

【重要!】
「コマンドリスト」をパラメータに設定したときに必要になってくるのは「インデックス番号」です。
今回の場合は「再生」「停止」「戻る」で、それぞれ振る舞いが違うので、ツクール的に表現するならば「ボタンを押したとき、条件分岐をさせる」という感じです。

メニューにはすべて項目の番号、つまり「インデックス」が存在します。カスタムメニュープラグインでは、「インデックス格納変数」というパラメータが存在します。これはゲーム用の変数にインデックス番号を代入してくれます
ゲーム用の変数に数値を代入してくれるということは、コモンイベントを呼び出したときに条件分岐を使えるということです。これはイベント系の処理でコモンイベントを呼び出すときに重要になってきます。

具体的に説明します。

項目ごとのindexの数値を明記しました。注意しなければならないのは、項目の1番目のindexは1ではなく0だということです。これはスクリプト、というよりはプログラム的な仕様です。

indexの番号については理解できたので、パラメータに変数のIDを設定します。

同じようにSoundTest_MusicListも別の変数IDを設定します。


これでコモンイベント上で変数による条件分岐が可能になりました。

次は決定イベントを設定します。
コモンイベントを次のようにします。

インデックス格納変数に入力した変数IDに格納されるindexから条件分岐をさせています。

カスタムメニュープラグインのヘルプにもありますが、ウィンドウをアクティブにさせる(別のウィンドウにカーソルを移動する)スクリプトコマンドは次の通りになります。

SceneManager.changeWindowFocus('window1');
(ウィンドウ識別子:window1 に移動します)

また、マップ画面に移動するときは次のスクリプトコマンドです。
SceneManager.goto(Scene_Map);

SoundTest_Commandの決定イベントにこのコモンイベントを設定します。

同じようにSoundTest_MusicListのコモンイベントを設定します。


【4】実際に動かしてみる(テスト)

パラメータやコモンイベントの設定が完了したので、実際にテストしてみましょう。
以下の動画のようになりました。

実際の挙動がおかしければここで修正します。
挙動が問題なければ最後のレイアウト修正をすれば完了です。


いかがでしたか? 実際にカスタムメニューを作成する手順を紹介しましたが、最も重要なのは「どんなメニューにするか」ということを明確にイメージしてから作業することです

今回は簡単なメニュー作成でしたが、複雑になるにつれて変数やスイッチの管理が大変になります。手を付ける前にそれらをリストアップしておくのがスムーズに作業を進められるコツになると思います。


今回のサウンドテストメニューではあらかじめ決められた曲目の場合に適用される内容でした。次回は曲目を自由に増やしたり減らしたり出来る仕様を考えたいと思います。

月別アーカイブ

限定特典から探す

記事を検索