補足1:変数呼び出し値

プログラム言語では【ポインタ】と呼ぶらしい

詳しくは公式マニュアルの【変数操作】と【変数呼び出し値一覧】を参照してください。 100万以上の数値は変数呼び出し値として扱われます。 ここでは実際に数値を入れて、どのような挙動をするか確認していきます。

変数

まずCself0に【1】、Cself10に【2】と、数値を代入しています。その後、

  • 2. Cself1 = 【1600010】を手動で入力。(Selfボタンから【このコモンセルフ10】を選択するのと同じ)
  • 4. Cself2 = 【1600010】を手動で入力(【このコモンセルフ10】を選択)し、【データを呼ばない】にチェック。
  • 6. Cself3 = 【1600002】を手動で入力(【このコモンセルフ2】を選択)し、【X番の変数呼び出し】にチェック。
  • 8. Cself4 = 【1600002】を手動で入力(【このコモンセルフ2】を選択)し、【データを呼ばない】と【X番の変数呼び出し】両方にチェック。

以上のコードを実行すると、デバッグ文にはこう表示されます。
コンマで区切られた数値は、左から順にCself0,1,2,3,4,10の中身です。

2.の行は、Cself1にCself10の中身【2】が代入されます。
Selfボタンから【このコモンセルフ10】を選択するのと同じ処理です。

4.の行、【データを呼ばない】にチェックを入れた場合。
Cself2に、Cself10の中身【2】ではなく、数値【1600010】が代入されます。

6.の行、【X番の変数呼び出し】にチェックを入れた場合。
現在Cself2には、数値【1600010】が入っています。
【Cself0番の変数呼び出し】ということになるので、 ここでは【1600010番の変数呼び出し】ということはCself10、 つまりCself10の中に入っている数値【2】が呼び出され、Cself3に代入されます。

8.の行、【データを呼ばない】と【X番の変数呼び出し】の両方にチェックを入れた場合。考え方はちょっと複雑です。
現在、Cself2には数値【1600010】、Cself10には数値【2】が入っています。
まず、【データを呼ばない】にチェックが入っているので、Cself2の中身【1600010】ではなく数値【1600002】として扱われます。 そして【X番の変数呼び出し】にチェックが入っているので、数値【1600002番の変数呼び出し】ということはCself0、 つまりCself2の中に入っている数値【1600010】が呼び出されます。

よく観察すると、普通にCself2を代入した時と同じ挙動ですね。ですので両方にチェック入れるのは無意味ということになります。

【NOTE:デバッグ文】

文章の表示コマンドで、 【デバッグ文】にチェックを入れて入力するとデバッグ文として扱われます。この例のように特殊文字を使って変数の中身をリアルタイムで参照できるので、 処理が正しく行われているかをチェックすることが出来ます。
F3キーを押すと、テキストとして出力もできます。大量にデバッグ文が出てくるときに有効ですが、【デバッグ文→消去】で消した文は出てこないので注意。

文字列

まずCself6~9に、それぞれ文字列で【あ】【い】【う】【1600007(これは数値でなく文字列)】、Cself0に数値【1600007】を代入します。 5行目

  • 5. Cself5 = 【文字列変数】のボタンをチェック、【このコモンセルフ6】を選択。
  • 7. Cself5 = 【ロード位置を変数で指定】のボタンをチェック、数値【1600000】を手動入力。
  • 9. Cself5 = 【手動入力】のボタンをチェック、キーボードから【¥cself[8]¥cself[8]】(¥は半角で)と入力。
  • 11. Cself5 = 【ロード位置を変数で指定】のボタンをチェック、数値【1600009】を手動入力。

以上のコードを実行すると、デバッグ文にはこう表示されます。
表示されているのは、文字列変数Cself5の中身です。

5.Cself5にCself6の中身、【あ】が代入されます。

7.Cself5に、ロード位置【1600000】つまりCself0の中身【1600007】の変数、Cself7の中身【い】が代入されます。 しかし、このCself0の中身が100万以上でない(変数呼び出し値ではない)場合や、 中身が文字列ではない呼び出し値(1600010など)の場合は<<ERROR>>が代入されます。

9.特殊文字でコモンセルフ8が2回書かれているので、Cself8の中身【う】が2回続けて代入されます。 文字列や数値などをまとめて表示する前段階によく使います。

11.Cself5に、ロード位置【1600009】つまりCself0の中身【1600007】の変数、Cself7の中身【い】が代入され……ませんでした。 ロード位置が変数ではなく文字列の場合、ロード位置【1600009】の中身【1600007】という文字列が直接代入されるようです。

【NOTE:左辺の変数呼び出し値(ロード位置)】

この項では変数(文字列)操作の右辺のみ解説しましたが、左辺にも同じ事が可能です。 変数呼び出し値ではあらゆるものを呼び出せるので、データベースや条件分岐、セーブ・ロード操作などでも 同様のことが可能です。セーブデータの特定の値のみ書き換えたり、データベースの変数/文字列を自動判別したりと 理解が深まれば色々なことが可能になります。特にセーブ・ロードの特定の値のみを読み書きする場合は、変数呼び出し値の理解が不可欠です。

はじめにお読みください

ここはWOLF RPGエディター(通称ウディタ)のイベント作成において、 ひとつのお題に対していくつかの考え方を示すページです。正解や不正解ではなく、色々な考え方を示していけたらいいなと思っています。詳しくは以下をお読みください。

続きを読む