WOLF RPGエディター(ウディタ)/変数【サイトトップへ戻る】
■変数番号を別の変数番号に置き換える
(更新:2020/04/14)


変数番号を別の変数番号に置き換える方法を紹介します。

なお、このページで紹介している内容は、システム系のイベントを作っている人向けの情報なので、
ウディタ初心者の場合は、あまり必要の無い情報かもしれません。


ショートカット
■変数番号を置き換えるとは?
■変数番号を置き換える理由
■変数番号を置き換える
■注意点

「変数」に関する基本説明は、別ページに記載しています。
【変数の説明を開く】


  
■変数番号を置き換えるとは?

例えば以下のような設定があったとします。
■変数操作+: CSelf10[差分X] = 主人公 の X座標(精密)
■変数操作+: CSelf10[差分X] -= このマップイベント の X座標(精密)
■変数操作+: CSelf11[差分Y] = 主人公 の Y座標(精密)
■変数操作+: CSelf11[差分Y] -= このマップイベント の Y座標(精密)
■変数操作: CSelf12[角度] = 角度[x10]←傾き X: CSelf10[差分X] Y: CSelf11[差分Y]

セルフ変数は…
セルフ変数[10]=差分X
セルフ変数[11]=差分Y
セルフ変数[12]=角度
と言った使い方をしていますが、これを…
セルフ変数[10]=角度
セルフ変数[11]=差分X
セルフ変数[12]=差分Y
とセルフ変数の使い方を変える時に…
■変数操作+: CSelf11[差分X] = 主人公 の X座標(精密)
■変数操作+: CSelf11[差分X] -= このマップイベント の X座標(精密)
■変数操作+: CSelf12[差分Y] = 主人公 の Y座標(精密)
■変数操作+: CSelf12[差分Y] -= このマップイベント の Y座標(精密)
■変数操作: CSelf10[角度] = 角度[x10]←傾き X: CSelf11[差分X] Y:
CSelf12[差分Y]
と言った感じに、変数の設定を変える作業が必要になります。

この変える作業を「変数番号を置き換える」と言っています。


▲トップへ戻る▲


  
■変数番号を置き換える理由

変数番号の置き換える理由は以下のとおりです。



▼グループ化

セルフ[10〜19]=キー入力関連
セルフ[20〜29]=ピクチャ表示関連
と言ったように、使用目的ごとに変数番号をグループ化する時に、この置き換えの作業が必要になります。

グループ化する事で、変数の使用目的などが分かりやすくなり、制作時の作業効率が良くなります。



▼使用中の変数番号をまとめる

使用中と未使用が混在している時に、使用中の変数だけを連番でまとめる時に、
この置き換え作業が必要になります。

 
セルフ変数[10]=使用中
セルフ変数[11]=未使用
セルフ変数[12]=未使用
セルフ変数[13]=使用中
セルフ変数[14]=未使用
セルフ変数[15]=
使用中
セルフ変数[10]=使用中
セルフ変数[11]=使用中
セルフ変数[12]=使用中
セルフ変数[13]=未使用
セルフ変数[14]=未使用
セルフ変数[15]=
未使用

このようにまとめる事で、未使用の変数を連番でたくさん確保したい時に役立ちます。



▼他のコモンイベントのセルフ変数と同じ使い方にする

他のコモンイベントのセルフ変数の「使い方ルール(制作者が決めた独自ルール)」に合わせて、
セルフ変数の設定内容を変える時に、この置き換え作業が必要になります。

例えば「セルフ[10]=キー入力」と言った使い方ルールを作って、
そのルールに合わせて他のコモンイベントのセルフ変数も「セルフ[10]=キー入力」に置き換えます。

使い方を統一する事で、イベントコマンドを別のコモンイベントにコピーした時にセルフ変数の修正が必要なくなり、
また「セルフ[10]=キー入力」と統一する事で「キー入力に設定するセルフ変数は変数番号[10]を使用」と分かりやすくなり、
コモンイベントごとに必要なセルフ変数を探す手間が省けます。



▼置き換えた例

以下はコモンイベント[090:X[移]キャラクター欄描画]のセルフ変数です。



これを見ると解りますが、使用目的ごとにグループ化して設定されています。
このようにセルフ変数を綺麗に並び替える時に、変数番号の置き換え作業が必要になります。


▲トップへ戻る▲


  
■変数番号を置き換える

変数番号の置き換え作業には「イベントコード」を使います。

イベントコードの使用には、以下の制約が発生します。

イベントコマンド【動作指定】イベントコード化ができないため、
変数番号の置き換え作業が終わった後に【動作指定】を修正する必要があります。

例えば置き換える前のイベントを別のイベントにコピーしておき、
変数番号の置き換え作業が終わったら、複製したイベントから【動作指定】をコピーして、
変数番号を置き換えたイベントに貼り付けるような作業が必要になります。
イベントコードはイベントごとに変換するため、マップイベントのページごと、
コモンイベントのコモンIDごとに変数番号の置き換え作業が必要になります。



今回は以下のイベントコマンドの変数番号を置き換えます。

▼置き換え前
■変数操作+: CSelf10[差分X] = 主人公 の X座標(精密)
■変数操作+: CSelf10[差分X] -= このマップイベント の X座標(精密)
■変数操作+: CSelf11[差分Y] = 主人公 の Y座標(精密)
■変数操作+: CSelf11[差分Y] -= このマップイベント の Y座標(精密)
■変数操作: CSelf12[角度] = 角度[x10]←傾き X: CSelf10[差分X] Y: CSelf11[差分Y]

▼置き換え内容
セルフ[10]→セルフ[11]
セルフ[11]→セルフ[12]
セルフ[12]→セルフ[10]

変数番号の置き換えは…
セルフ[12]→セルフ[aa](存在しない番号)
セルフ[11]→セルフ[12]
セルフ[10]→セルフ[11]
セルフ[aa]→セルフ[10]
の順番で行います。

▼置き換え後
■変数操作+: CSelf11[差分X] = 主人公 の X座標(精密)
■変数操作+: CSelf11[差分X] -= このマップイベント の X座標(精密)
■変数操作+: CSelf12[差分Y] = 主人公 の Y座標(精密)
■変数操作+: CSelf12[差分Y] -= このマップイベント の Y座標(精密)
■変数操作: CSelf10[角度] = 角度[x10]←傾き X: CSelf11[差分X] Y: CSelf12[差分Y]

なお、今回は説明用のため、5個のみのイベントコマンドしかありませんが、
本来この程度のイベントコマンドの数ならば、手作業で修正した方が早いです。



作業前にバックアップを残す事をお勧めします。

▼作品全体のバックアップ
作品データが入ったフォルダーを複製。
▼マップイベントのバックアップ
ウディタ上でマップを複製、またはフォルダー[Data]にあるフォルダー[MapData]を複製。
数個のマップイベントの場合は、同じマップ上にマップイベントを複製。
▼コモンイベントのバックアップ
コモンイベントをファイルで出力、または別のコモンIDに複製。

バックアップしたものは作業終了後に削除してください。



まず始めにデスクトップの上で右クリック→[新規作成]→[テキストドキュメント]を実行し、
空のテキストファイルを作成してください。





コモンイベントの画面を開き、イベントコマンド表示欄の上で右クリック→[全て選択]を実行。





指定されたイベントコマンドの上で右クリック→[イベントコード→クリップボードへコピー]を実行。





先ほど作成したテキストファイルを開き、画面上の[編集]→[貼り付け]を選択。





一番上の行をクリック。





画面上の[編集]→[置換]を選択。





検索する文字列=1600012
置換後の文字列=16000aa
を設定し、[すべて置換]をクリック。





検索する文字列=1600011
置換後の文字列=1600012
を設定し、[すべて置換]をクリック。





検索する文字列=1600010
置換後の文字列=1600011
を設定し、[すべて置換]をクリック。





検索する文字列=16000aa
置換後の文字列=1600010
を設定し、[すべて置換]をクリック。





[置換]の設定画面の右上にある[×]をクリックして、置換の設定画面を閉じてください。



画面上の[編集]→[すべて選択]を選択し、[編集]→[コピー]を選択。







ウディタのコモンイベントへ戻り、
イベントコマンド表示欄の上で右クリック→[全て選択]を実行した上で、右クリック→[削除]を実行。
そして右クリック→[クリップボード→コード貼り付け]を実行。





画面右上にある[セルフ変数使用状況]のボタンをクリックし、
置き換えた変数番号に合わせてセルフ変数の名前を変えてください。



★補足
大規模に変数番号の置き換えを行う場合は、上図のセルフ変数の名前を付ける画面と、
置き換え作業を行うテキストファイルの画面を両方パソコンの画面上に表示しておき、
テキストファイルの置き換え作業を1つ行ったら、セルフ変数の名前の設定も置き換えるなど、
テキストファイルの置き換えとセルフ変数の名前の置き換えを同時進行で行うと良いでしょう。



以上で変数番号の置き換え作業は完了です。

作業用で作成したテキストファイルと、バックアップ用の複製データは削除してください。


▲トップへ戻る▲


  
■注意点

置き換え作業における注意点を記載しています。


  
▼特殊文字で変数の値を呼び出している

\cself[12]」と言ったような特殊文字で変数の値を呼び出している場合は…
検索する文字列=\cself[12]
置換後の文字列=\cself[10]
と言った感じに、特殊文字の置き換え作業も必要になります。

なお、数箇所程度のイベントコマンドの修正でしたら、イベントコマンドの設定を直接手作業で修正した方が早いです。


  
▼一括設定

例えば…
セルフ変数[20]=A
セルフ変数[21]=B
セルフ変数[22]=C
と言った設定がある場合で…
■変数操作: CSelf20[A]〜CSelf21[B] = 0 + 0
ように、セルフ変数[20〜21]を一括で処理している場合は、テキストファイルの編集時の「置換」の設定で…
検索する文字列=1600020
置換後の文字列=1600040
と設定すると…
■変数操作: CSelf40[A]〜CSelf41[B] = 0 + 0
になります。

注意点としては置き換えの際…
セルフ変数[40]=A
セルフ変数[41]=C
セルフ変数[42]=B
と変える場合、テキストファイルの編集時の「置換」の設定で…
検索する文字列=1600020
置換後の文字列=1600040
を設定すると…
■変数操作: CSelf40[A]〜CSelf41[C] = 0 + 0
になり、「B=0」にはなりません。

「C=0」にしても問題が無い場合は…
■変数操作: CSelf40[A]〜CSelf42[B] = 0 + 0
と設定し、「C=0」では問題がある場合は一括設定をやめて…
■変数操作: CSelf40[A] = 0 + 0
■変数操作: CSelf42[B] = 0 + 0
と設定してください。


  
▼変数呼び出し値

変数呼び出し値を設定する場合…
■変数操作: CSelf20[設定変数番号] = 1600040 + 0
と設定し…
セルフ変数[20]→[30]
セルフ変数[40]→[50]
と置き換えた場合は…
■変数操作: CSelf30[設定変数番号] = 1600050 + 0
となり、特に問題なく置き換えを行う事ができます。

しかし…
■変数操作: CSelf20[設定変数番号] = 1600000 + 40
のような設定を行っている場合は…
セルフ変数[20]→[30]
セルフ変数[40]→[50]
の置き換えを行っても…
■変数操作: CSelf20[設定変数番号] = 1600000 + 40
のままになるので、注意が必要です。


また他のコモンイベントから…
■変数操作: CSelf10[設定変数番号] = 15022040 + 0
■変数操作: CSelf11[出力値] = V[CSelf10[設定変数番号]] + 0
などと設定して、変数の値を呼び出している場合、呼び出し元のセルフ変数を…
セルフ変数[40]→[50]
と変えた場合は、他のコモンイベントからの呼び出し設定も…
■変数操作: CSelf10[設定変数番号] = 15022050 + 0
■変数操作: CSelf11[出力値] = V[CSelf10[設定変数番号]] + 0
と変える必要があります。


▲トップへ戻る▲



◎関連ページ

◆「変数」って何?
┣◆「セルフ変数」って何?
┣◆「通常変数」「予備変数」って何?
┣◆「文字列変数」って何?
┣◆「システム変数」「システム文字列」って何?
┃◆システム変数[0〜34]の説明
┃┣◆システム変数[35〜76]の説明
┃┣◆システム変数[77〜]の説明
┃┗◆システム文字列の説明
┣◆「変数呼び出し値」「X番の変数呼出」って何?
┃┗◆【使用例】「変数呼び出し値」「X番の変数呼出」
┗◆変数番号を別の変数番号に置き換える

YADOT-WOLFトップ  気紛れな空間へ戻る  メール