当ページのリンクには広告が含まれています。
今回は、RPGツクールMZでゲーム制作の幅を広げる「変数」の使い方を、実例つきで解説します。
変数の操作とは、名前の通り、変動する数字を扱うためのイベントコマンドです。大まかには、代入・加算/減算・乱数の3つを押さえておくと理解しやすいです。
- 代入:特定の数字情報を取得、または変更する。たとえば、これまでの歩数、戦闘勝利回数、逃げた回数、プレイヤーの座標位置、取得した情報のリセットなど
- 加算・減算:実行するたびに数値を増やす、または減らす。たとえば、特定の人物と話した回数のカウント、宿屋に泊まると日付を進める、収集が必要なアイテムの残り個数をカウントするなど
- 乱数:ランダムな数値を扱う。たとえば、話すたびにランダムでセリフが変わるイベント、アイテムを使用すると一定確率で壊れる仕組み、ドラクエのパルプンテのようなランダムスキルなど
変数が使えるようになると、作れるイベントの幅がかなり広がります。
今回は、日付送り(加算・減算)、コンティニュー(代入)、おみくじ(乱数)という3つのイベントを例題にします。難易度は、レベル1・2・3の順で少しずつ上がるイメージです。
1. 変数の操作の基本
イベントコマンドの場所
変数の操作は、イベントコマンドの「ゲーム進行」2ページ目にあります。スイッチの操作の下にあるコマンドです。
画面を開くと、主に次の項目を設定できます。
- 変数の指定:単独、または範囲で操作する
- 操作:代入、加算、減算、乗算、除算、剰余を選ぶ
- オペランド:定数、変数、乱数、ゲームデータ、スクリプトを指定する
イメージとしては、オペランドで指定した数字を、代入するのか、加算するのか、減算するのかを選び、変数という数値の箱に入れる感じです。

操作の種類
変数の操作には、次の種類があります。
- 代入:そのまま数字が入る。たとえば変数が1になる
- 加算:現在の数字に足す。足し算
- 減算:現在の数字から引く。引き算
- 乗算:掛け算
- 除算:割り算
- 剰余:余りを出す。Web制作ではよく使うコマンドですが、ゲーム制作では今のところ使う場面はあまり多くありません
入門編でまず押さえたいのは、代入・加算・減算です。今回はここに乱数を加えて解説します。
変数の名前は分かりやすければいい
変数番号の名前は任意です。自分が見て分かりやすい名前をつければ問題ありません。
普段は「ファイル名に日本語をつけないほうがいい」と話していますが、変数名やスイッチ名は制作者側の識別用です。作っている人が分かりやすくするためのものなので、日本語を使っても大丈夫です。
文章に変数の値を表示する
文章に「\V[数字]」と入れると、その番号の変数の値を文章中に表示できます。
たとえば「\V[1]」なら、変数番号1番が今いくつになっているのかを表示できます。
2. 日付送りイベント(加算・減算)
まずは、ノベルゲームなどでよくある「日付がどんどん進行していくイベント」です。
「1月1週目 朝だよ → 夕方だよ → 夜だよ → 1月2週目……」というように、日付が順番に加算されていくシステムを作ります。
実際にやっていることは、ほとんど同じ処理をループで繰り返しているだけです。ただし、「2月」や「4週目」といったセリフの数字だけが変わるように、変数を加算して表示を変えています。
内部プログラムの構造
この日付送りは、すべてコモンイベントで管理しています。
- 変数の用意:23番に「日付送り・月」、24番に「日付送り・週」を作る
- 初期値の代入:1月1週から始めるため、両方に1を代入する
- ループ開始:フロー制御のループを使う。ループの中にイベントを入れると、処理が繰り返される
- ループ中断条件:月が3で、週が1になったらループを中断する
- ピクチャー表示:昼・夕方・夜の画像を切り替える。時間経過の演出用
- 文章表示:「\V[23]月\V[24]週目」で、月と週を自動表示する
- 特殊イベント:2月2週目になると、バレンタインデーのセリフが出る

ポイントは、月と週を文章に直接書かないことです。文章側には「\V[23]」や「\V[24]」を入れておき、変数の値だけを動かします。
日付の加算処理
夜が終わると、またループして朝に戻ります。ただし、朝に戻る前に日付を変えなければいけません。
ここで使うのが、週の加算と月の切り替えです。
- 週の加算:「日付送り・週」を加算1にする。次に朝が来ると2週目になる
- 月の切り替え:毎回月まで増やすとおかしくなるため、条件分岐を使う
条件分岐では、「日付送り・週が5以上になった時」、つまり4週目を超えた時に次の処理をします。
- 月を加算1にする(月が変わる)
- 週を代入1にする(週をリセットする)
これで、1月4週目の次は2月1週目になります。

不等号の読み方
条件分岐では、不等号の意味を理解しておくと迷いにくくなります。
| 記号 | 意味 |
|---|---|
| = | イコール。一致する場合 |
| ≥(大なり+下線) | 以上 |
| ≤(小なり+下線) | 以下 |
| >(大なり、下線なし) | 超過。その数を含まない |
| <(小なり、下線なし) | 未満。その数を含まない |
| ≠ | 不一致。その数以外 |
条件分岐については次回詳しく扱いますが、まずはこの読み方を押さえておけば大丈夫です。
3. コンティニューイベント(代入)
次は、ボス戦を想定したコンティニューイベントです。
戦闘が始まる前のHP・MP・アイテム数を記録しておき、戦闘に敗北したらその情報を復元して、もう1回戦えるようにします。
バイオハザードやアンチャーテッドのように、やられたその場でサクサクやり直せる仕組みも、イベントで組むことができます。
HP・MPの記録と復元
ここでは、コモンイベント「コンティニュー戦闘前」で管理しています。
- ラベル「戦闘開始」を設置:コンティニュー時にここまで戻る
- 戦闘前のステータスを変数に代入:変数27番「アクター1HP」には、ゲームデータ → アクター(ダンディ)のHPを入れる。変数28番「アクター1MP」には、ゲームデータ → アクター(ダンディ)のMPを入れる
- 戦闘の処理:「敗北可能」にチェックを入れる。これは3ページ目の「戦闘の処理」にある
- 敗北時の処理:「もう1度戦うか?」の選択肢を表示する。「はい」なら、HPの増減で変数27番分を増やし、MPも同様に復元する。その後、ラベルジャンプ「戦闘開始」で最初に戻る。「いいえ」なら、ゲームオーバーにする

オペランドの「ゲームデータ」では、アイテムの所持数、武器の所持数、防具の所持数など、さまざまな情報を取得できます。
ラベルとラベルジャンプ
フロー制御にある「ラベル」と「ラベルジャンプ」は、コンティニュー処理で便利です。
- ラベル:目印を置く。「戦闘開始」という名前のラベルを設置する
- ラベルジャンプ:ラベル名が一致している場所にジャンプする
つまり、コンティニューで「はい」を選ぶと、「戦闘開始」ラベルまで戻り、また最初から戦闘が始まります。
アイテム数の復元
アイテムの復元は、HP・MPより少し厄介です。
今回の処理では、戦闘中に使ったポーションの数を計測しておき、使った分を戦闘後に復元するという方式にしています。
計測のしくみは次の通りです。
- コモンイベント「アイテム判定」を用意する
- データベースのアイテム「ポーション」の使用条件で、このコモンイベントを呼び出すように設定する
- 変数25番「アイテムID判定」に「直前に使用したアイテムのID」を代入する
- 条件分岐で「アイテムIDが7(ポーションのID)と一致した場合」を判定する
- 変数26番「ポーション使った数」に1を加算する
- 戦闘後のコンティニュー時に、「アイテムの増減」で変数26番分のポーションを増やす

この仕組みを全アイテムにコピーすれば、何のアイテムを何個使ったかを計測できるようになります。
ハイポーションなら、「ハイポーション使った数」という新しい変数を用意する、という考え方です。
4. おみくじイベント(乱数)
最後は、1/5の確率で当たりが出るくじ引きイベントです。
ここでは、変数の操作で乱数を使います。
乱数の使い方
変数の操作で「乱数 1~5」を設定すると、1から5の数字がランダムで変数に代入されます。
- 代入の場合:ランダムで1~5の数字がそのまま入る
- 加算の場合:ランダムで1~5の数字が足される
- 減算の場合:ランダムで1~5の数字が引かれる
たとえば自作の戦闘システムなら、敵の攻撃がランダムで1から5ダメージ当たる、という処理にも使えます。

内部プログラムの構造
おみくじイベントの構造は、次の通りです。
- ラベル「スタート」を設置:もう1回引く時にここまで戻る
- 乱数1~5を変数22番「汎用」に代入
- 変数22番が2以下:外れの画像を表示する(おじさん)
- 変数22番が4以下:別の外れの画像を表示する
- 変数22番が5以上:当たり! 水着のお姉ちゃん画像 + ME演奏 + 「当たり」の文字

5と一致する場合、つまりイコールで判定しても動きます。
ただし、バグ対策として5以上にしておくことが多いです。何かの手違いで6以上が出てしまった場合でも、想定外の状態になりにくくするためです。
アニメーションとピクチャーの注意
演出面では、次のような処理を入れています。
- くじを引いた時に、アニメーションの表示(放射線エフェクト)で演出する
- 当たりの時は、MEの演奏(ミュージックエフェクト)で短い効果音を流す
- ピクチャーの消去を忘れずに入れる。ピクチャー番号1番を表示したら、必ず1番を消去するイベントを入れる

ピクチャーの消去をしないと、画像がカメラのレンズにペタッと貼り付いたように、どこに移動してもずっとついてくる状態になります。
ピクチャーについては、また別の回で詳しく扱います。
まとめ
変数の操作は、変動する数値を扱うためのコマンドです。まずは、代入・加算/減算・乱数の3つを押さえておきましょう。
- 代入:数値情報を取得、または変更する。戦闘前のHP・MPを取得し、戦闘後に復元するコンティニュー処理などで使える
- 加算・減算:数値を増やす、または減らす。日付を進める、アイテムの残り個数をカウントするなどに使える。たけのこを5つ集めるイベントなら、1つ取ったら残り4つになるような処理です
- 乱数:ランダムな数値を扱う。くじ引き、一定確率で壊れるアイテム、パルプンテ風ランダムスキルなどに使える
今回のおみくじイベントを応用すると、ガチャガチャのようなイベントも作れます。
たとえば、出たアイテムをアビリティとして取得できるようにして、装飾品で装備すると特殊能力が得られる、といった設定も可能です。
また、今回使っていないオペランドもたくさんあります。マップID、パーティーの人数、所持金、歩数、プレイ時間、セーブ回数、戦闘回数なども計測できます。
スクリプトを使えば、特定のダンジョンにいる時だけ使えるスキルを作る、といったことも可能です。
次回は、条件分岐について詳しく見ていきます。装備やアイテム・所持金によってセリフが変わるイベント、格闘ゲーム風のキャラクターセレクト、パスワードで宝箱が開くシステムなどを例題にします。

