開発日誌

すべての記事

[ テクニック ] 指定した番号のスイッチや変数を検索

2021-07-24 02:36:41

RPGツクールのゲームデータ内から、指定した番号のスイッチや変数が使われている箇所を抽出して、一覧化してくれるエクセルツールを作りました。

※ Version 1.0.4 (2022-12-29)
ステータスバーに途中経過を表示する機能を追加しました。

※ Version 1.0.3 (2022-05-07)
削除したマップがあるとエラーになる不具合を解消しました。

スイッチや変数の指定をミスったり、途中で番号を変更したくなったりといったことがよくあります。現状のRPGツクールのインターフェースでは、どこで当該のスイッチや変数が使われているかを漏れなく探し出すのは困難です。

そこで、簡単に指定した番号のスイッチや変数が使われている箇所をリストアップしてくれるツールを用意しました。これを使えば、スイッチや変数に指定ミスがないかどうかの確認や、修正すべき箇所の抽出が簡単にできます。

RPGツクールMV/MZに対応しています。実行にはMicrosoft Excelが必要です。

まずは上記のファイルをダウンロードしてください。zipファイルなので解凍し、中にある「RMDebugger.xlsm」を起動します。

起動時にマクロに関するセキュリティ警告が出ますので、「コンテンツの有効化」でマクロを有効にしてください。

使い方は簡単です。

検索したいのがスイッチか変数かを「種別」欄で選択し、検索したいスイッチまたは変数の番号を「番号」欄に入力します。

そして「検索実行」ボタンをクリックすると、ファイル選択ダイアログが出るので、対象となるゲームのプロジェクトフォルダーにある「game.rpgproject」(MVの場合)または「game.rmmzproject」(MZの場合)のファイルを開きます。

しばらく待っていると、対象のスイッチまたは変数が使用されている箇所がシートに出力されます。全てのイベントコマンドを検索するので、大規模なプロジェクトだとそれなりに時間がかかります。

検索対象は、通常イベント、コモンイベント、バトルイベントのイベントコマンドでスイッチや変数を使用する箇所をはじめ、イベントの出現条件や敵キャラの行動パターンの条件、移動ルートの設定でのスイッチをON/OFF、文章や説明文中で「\V[1]」のように制御文字で指定されている箇所、スキルやアイテムのダメージ計算式で「v[1]」のように指定されている箇所など、ほとんど全ての項目が検索対象となります。詳しくは「Help」のシートに記載してあるので、そちらを参照してください。

ただし、「\V[\V[2]]」のような記述で、2番の変数の値が1で、結果として1番の変数を参照しているようなケースは、追い切れないので対応していません。同様の理由で、スクリプトやプラグインコマンド、プラグインパラメータでの指定、メモ欄での記述などにも対応していません。プラグイン等で独自の記法によりスイッチや変数を表現している場合も非対応です。要望があって、それなりに汎用性があれば、対応するかもしれません。

あくまで使用されている箇所を列挙するだけで、番号の修正や代入値の変更までは自動的にはやってくれません。実際の修正は、リストアップされた一覧を見ながら自力で行う必要があります。

「Check」欄は、確認用等として自由にお使いください。修正・確認が済んだら「○」を付ける、といった活用を想定しています。

「目安行数」欄には、イベントの「実行内容」で出現する行数を示していますが、「移動ルートの設定」や「スクリプト」などのイベントコマンドがあると行数がズレるので、あくまで目安の行数として考えてください。

質問やアドバイスなどはコメント欄まで、お気軽にどうぞ。素材利用条件などについては、このサイトについての「提供素材について」の項目などをご覧ください。

このツールを作ろうと思ったきっかけは、変数の修正を漏れなく行うためです。

ストーリーの進行度を表す変数を用意していたのですが、途中にいくつか進行度を追加する必要が出てきて、進行度の値を代入している部分や進行度で条件分岐している部分ほぼ全てで、進行度の値を繰り下げなければならなくなったためです。

普通にやったのでは絶対に修正漏れが生じますが、このツールを使えば漏れなく修正することが可能です。

このツールを活用して、デバッグ作業が少しでも楽になればいいなと思います。

コメント
1. 匿名 2021-10-31 09:33:42

デバッグ用のエクセルをダウンロードさせていただき
使用させていただきました。
MZ版で作成しています。
おかげ様でスイッチのができて助かっています。
しかし、変数での検索では
「実行時エラー'438'オブジェクトはこのプロパティまたはメソッドをサポートしていません」
と表示されエラーとなってしまいます。可能性として考えられる点があればご教授いただけると幸いです。

2. panda 2021-10-31 10:40:46

お使いいただきありがとうございます!
エラーが出た際に「デバッグ」というボタンを押すと、プログラムのコードが出てくると思いますが、それのスクリーンショットをメールでお送りいただけますでしょうか。
それを見れば、どこでエラーが出ているのか分かりますので。
エラーの候補となる場所が多すぎて絞り込めず…。
おそらく自分では普段使っていないイベントコマンドの処理を書き誤っているのだろうと思いますが…。
よろしくお願いします。

3. 2022-05-06 23:33:24

はじっまして

実行時エラー424
オブジェクトが必要です

と表示されてしまいます。

set JSONDate = CallByName(JSONMaps, M, VbGet)

という箇所でつまづいているようです。
MZです。

4. 2022-05-06 23:49:25

今度は実行時エラー`5`:
プロシージャの呼び出し、または因数が不正です。

と出ました。

MapID = Val(CallByName(JSONDate, "id", BbGet))

という箇所で躓いているようです。

先ほどのオブジェクトが必要ですの時の箇所は素通りしました。

5. 2022-05-07 00:03:13

今度は
実行時エラー'13':
型が一致しません。

と出ました。

一つ目のエラーと同じ、
set JSONDate = CallByName(JSONMaps, M, VbGet)

という箇所でつまづいたようです。

今回はもう、しらみつぶしにイベントを開いて、スイッチを間違えた個所を探したいと思います。

もし、これらのエラーが私の環境のせいではないのなら、
お手すきの際に直していただくといいかと思います。

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

6. panda 2022-05-07 00:12:44

報告ありがとうございます!
マップを削除したりして、途中でマップIDが飛んでいると、エラーになりそうな気がしますね。
心当たりありますでしょうか?

7. panda 2022-05-07 11:45:58

削除したマップがあると同じエラーが発生することが確認できましたので、修正したVersion 1.0.3をアップしました。
お手数ですが再ダウンロードしてお試しください。
このたびは報告いただきまして、ありがとうございました!

お名前
コメント
※ 確認画面はありません。