こないだ「ウディタの変数の違いについての話」で「コモンイベントからイベントセルフ変数は直接操作できない」と書きました。ところが、よく調べてみたら操作すること自体は、変数操作コマンドの「データを呼ばない」や「X番の変数呼び出し」を使えばできるようです(もちろん、イベントコマンドウィンドウから直接いじることはできない)。今回はそのことについて書きます。
「データを呼ばない」「X番の変数呼び出し」とは何か
ウディタのマニュアルによると、
・データを呼ばない … 100万以上の数値を入れても変数を呼ばず、そのままの整数値として扱います。
・X番の変数呼び出し … 「呼び出した変数の値」の変数を呼び出します。たとえば「通常変数0番」を指定したときに通常変数0番に2000005(通常変数5番を表す値)が格納されてれば、最終的に「通常変数5番」を代入先とします。
だそうです。これだとよく分からないので、もう少しわかりやすく言えば次のようになると思います。
データを呼ばない
通常、100万以上の値は変数呼び出し値として使用されるが(例:1600000ならコモンイベントセルフ0)、それをそのままの数値として扱う。
X番の変数呼び出し
指定した変数に変数呼び出し値が入っていたら、その変数呼び出し値が表す変数を操作に使用する。
変数呼び出し値について
先述の通り、ウディタでは数値欄に100万以上の値を入力することで変数を呼び出すことができます。
そして今回話題にしているマップイベントのセルフ変数の場合、
1000000+10*Y+X → マップイベントYのセルフ変数X
となっています。コモンイベントからイベントセルフ変数を操作する際はこれを使います。
イベントセルフ変数を操作するコモンイベントの例
以上を踏まえて、コモンイベントからイベントセルフ変数を操作するには次のようなコマンドを使います(※ここでは代入を行うコマンドを紹介)。
|■変数操作: CSelf1[イベントID] *= 10 + 0 |■変数操作: CSelf1[イベントID] += 1000000 + CSelf2[セルフ番号] |■変数操作: V[CSelf1[イベントID]] = CSelf3[代入する数値] + 0
- 1行目:
前述した「1000000+10*Y+X」の「10*Y」に相当する部分です。 - 2行目:
コモンイベントセルフ1に「1000000+10*Y+X」の「1000000」と「X」を加算します(右辺の「データを呼ばない」にチェック) - 3行目:
コモンイベントセルフ1について「X番の変数呼び出し」を行い、そこに数値を代入します(左辺の「X番の変数呼び出し」にチェック)
参考ページ・コモンイベント
今回の記事の執筆にあたり、下記のページやコモンイベントを参考にしました。