見出し画像

【ツクールMV・MZ】console.log()でGame_Interpreterを覗いてみよう

RPGツクールは「プログラミング知識不要」でゲームがつくれる、とされており、実際それは事実ですが、プログラミング知識があるに越したことはありません
「コードを書かなければできないこと」はそんなにはなさそうですが、「コードを書ければできること」は格段に増えます。

では、なにから覚えればいいのか? どこから手をつけるのか?
RPGツクールでプログラミングをいじる作業は、まずもとになってるコードを「読む」作業が必要になります。

オススメがGame_Interpreterです。
これはMVでいえばrpg_objects.js、MZでいえばrmmz_objects.jsに書かれているクラスです。
簡単にいえばイベントコマンドの処理が書かれているクラスで、ツクールに慣れていれば比較的理解しやすいものになっています。

たとえば「変数の操作」(Control Variables)を見てみましょう。

画像1

イベントコマンドでは操作する変数を選んだり、「代入」や「加算」などの操作、または数値などを選ぶ項目があります。
たとえば、「オペランド」の項目で選べる「ゲームデータ」、「アイテムの所持数」を取得するための処理はどうなっているのでしょう。

画像2

gameDataOperand()という関数を見るとそれっぽいことがダラーッと書いてあります。

画像3

順番通りに並んでますので、ツクールのGUIと見比べながら対応させて探せばだいたいわかるかと思います。
アイテムの所持数については$gameParty.numItems($dataItems[param1])で取得できるらしいことがわかりました。

では、実際にスクリプトでアイテムの所持数を取得するコードを書いてみましょう。
具体的には「ポーション」を対象とします。

画像4

これでいい? ダメです
param1とは変数であり、実際にはなんらかの値が入っています。
「ポーション」の場合にはどのような値を入れるべきなのかまず調べる必要があります。

画像5

そのためにはこのようにconsole.log()を仕込みます。
実際に「ポーション」の個数を取得するためのイベントコマンドを組み、テストプレイを実行してみましょう。
その際、F8を押します

画像6

するとこんな画面が出ますので、Consoleを選んでください。
さて、さっきのイベントを実行してみましょう。

画像7

こうなります。「7」という数字が出ました。
念のために行数も見てみましょう。先ほどconsole.log()を仕込んだところで間違いなさそうです。
console.log()はこうやって変数の中身を可視化できるデバッグ用の関数なわけです。
「ポーション」を対象にした場合は7、「ポーション」のアイテムIDは7。
つまりparam1に入れるべき具体的な数値はアイテムのIDであることがわかります。
よって、「ポーション」の個数を取得するためのコードは
$gameParty.numItems($dataItems[7])
となります。

こうやって、適当なところにconsole.log()を仕込んでイベントコマンドを実行し、その結果をF8で出したコンソールで眺めていけばGame_Interpreterの解読作業は進められると思います。
$gameParty.numItems()の引数でしたらわざわざこんなことをしなくても察しはつきますが、「SEの演奏」(Play SE)などは実際に見てみないとまずわかりません。

画像8

実際に見てみるとこうです。
なにかというと、オブジェクトが入っているんですね。
SEのファイル名だけでなくボリュームやパンなどの情報も入っています。
SEの演奏をイベントコマンドではなくコードでなんやかんやする場合にはこういった形で書かなければならない、ということがわかるわけです。

あ、console.log()はあとで消すのを忘れずに!
ただ変数の中身を可視化するだけの関数ですが、そこらじゅうに仕込んだままにしておくとゲームが重くなる危険性があります。


この記事が気に入ったらサポートをしてみませんか?