WOLF RPGエディター(ウディタ)[3.324]/変数【サイトトップへ戻る】
■変数の番号や文字列を別のものに置き換える
(更新:2024/04/20)


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


ショートカット
■置き換えるとは?
■2つの置き換える方法
■検索の置換を使って置き換える
■テキストファイルの置換を使って置き換える
■置き換え作業の注意点


  
■置き換えるとは?

置き換えるとは、例えば…
■変数操作+: CSelf10[差分X] = 主人公 の X座標(精密)
■変数操作+: CSelf10[差分X] -= このマップイベント の X座標(精密)
■変数操作+: CSelf11[差分Y] = 主人公 の Y座標(精密)
■変数操作+: CSelf11[差分Y] -= このマップイベント の Y座標(精密)
■変数操作: CSelf12[角度] = 角度[x10]←傾き X: CSelf10[差分X] Y: CSelf11[差分Y]
とセルフ変数[10〜12]で設定していたものを…
■変数操作+: CSelf20[差分X] = 主人公 の X座標(精密)
■変数操作+: CSelf20[差分X] -= このマップイベント の X座標(精密)
■変数操作+: CSelf21[差分Y] = 主人公 の Y座標(精密)
■変数操作+: CSelf21[差分Y] -= このマップイベント の Y座標(精密)
■変数操作: CSelf22[角度] = 角度[x10]←傾き X: CSelf20[差分X] Y: CSelf21[差分Y]
とセルフ変数[20〜22]に置き換える時に使います。



文字列も同様であり…
■デバッグ文:差分X=\cself[10] 差分Y=\cself[11] 角度=\cself[12]
とセルフ変数[10〜12]の値を表示する設定を…
■デバッグ文:差分X=\cself[20] 差分Y=\cself[21] 角度=\cself[22]
とセルフ変数[20〜22]の値を表示する設定に換えたり…
■デバッグ文:差X:\cself[20] 差Y:\cself[21] 角:\cself[22]
と「差分X=」だったものを「差X:」に置き換える時に使います。



置き換えの作業を行う事によって…
セルフ変数[10]=使用中
セルフ変数[11]=未使用
セルフ変数[12]=未使用
セルフ変数[13]=使用中
セルフ変数[14]=未使用
セルフ変数[15]=
使用中
セルフ変数[10]=使用中
セルフ変数[11]=使用中
セルフ変数[12]=使用中
セルフ変数[13]=未使用
セルフ変数[14]=未使用
セルフ変数[15]=
未使用
と言った感じに使用中と未使用を綺麗に分ける事ができ…
■変数操作: CSelf10〜CSelf12 = 0 + 0
と言った一括の設定も設定しやすくなります。



コモンイベントのセルフ変数では、使用用途が同じジャンルのものをグループ化する時に置き換え作業を行う事があります。

例えば…
セルフ変数[10〜14]=計算処理やデータベースの値の取得で使用
セルフ変数[20〜28]=ピクチャ関連の設定で使用
セルフ変数[60〜85]=ステータスの表示位置の設定で使用

と言った感じです。

▼コモンイベント[178:X[戦]味方欄_単体描画]のセルフ変数


綺麗に並び替える事で、必要なセルフ変数が見つけやすくなります。



また使用するジャンルとジャンルの間に空白の変数を入れる事で、より必要なセルフ変数が見つけやすくなります。





置き換え作業は意外と置き換えミスをする事があり、ミスした事に気付かずに保存して元に戻せなくなる事があります。

そのため、置き換え作業を行う前には、必ず作品データのバックアップを残してください。

バックアップのデータは置き換え作業が終わったあとも、暫くの間は残しておいた方が良いでしょう。

【バックアップの残し方を見る】


▲トップへ戻る▲


  
■2つの置き換える方法

置き換える方法は、検索の「置換」を使う方法とテキストファイルの「置換」を使う方法があります。

検索の「置換」を使う コモンイベントやマップイベントにある「検索」の置換機能を使って、
指定した変数の番号、数値、文字列を置き換えます。
簡単に置き換える事ができますが、1つのイベント設定を置き換えるのに、
置換【次検索】」のボタンを2回押す必要があり、
置き換える候補がたくさんある場合は手間がかかり、
複数のセルフ変数を並び替えるような場合は、かなり手間がかかります。
セルフ変数使用状況」の画面を表示しながら置き換える事ができないので、
置き換え作業と並行してセルフ変数の名前も設定していくような作業ができません。
複数のコモンイベント、複数のマップイベントをまたいで置き換える事ができます。
テキストファイルの「置換」を使う イベントコード → クリップボードへコピー」を使ってイベント設定をコピーし、
テキストファイルの中に貼り付けて、テキストファイルの中にある置換を使って、
指定した変数の番号、文字列を置き換えます。
イベントコード固有の数値設定があるため、
例えば「64→128」のような特定の数値を置き換える作業には向きません。
テキストファイルの置き換えにある「すべて置換」を実行すると、
置き換えの条件を満たす全ての文字列が一気に置き換わります。
そのため、同じ条件で大量の文字列を置き換える時には便利であり、
セルフ変数を並び替えを大量に行う場合は、かなり便利です。
セルフ変数使用状況」の画面を表示しながら置き換えができるので、
置き換え作業と並行してセルフ変数の名前を置き換える事ができます。
1回の置き換え作業でコモンイベント1個、
マップイベントの1ページしか置き換えができません。
イベントコマンド【動作指定】イベントコードにできないため、
テキストファイルからイベント設定画面に戻したあとに、
【動作指定】を再度設定し直す必要があります。

【動作指定】がある場所にはイベントコマンド【コメント】を使って…
▼ 動作指定:主人公 / 待機時アニメON
■動作指定:主人公 / 待機時アニメON
などと、動作指定の設定内容を記載しておいた方が良いでしょう。
イベントコマンド【条件(文字列)】「と同じ」以外の条件で設定した場合は、
イベントコードでは特殊な数値になるため、置き換えの際は注意してください。

例えば…
■条件分岐(文字): 【1】 CSelf5が "" と同じ
-◇分岐: 【1】 [ CSelf5 "" と同じ ]の場合↓
|■
◇分岐終了◇
のイベントコードは…
WoditorEvCOMMAND_START
[112][2,4]<0>(1,1600005)("","","","")
[401][1,0]<0>(1)()
[0][0,0]<1>()()
[499][0,0]<0>()()
WoditorEvCOMMAND_END
になりますが…
■条件分岐(文字): 【1】 CSelf5が "" 以外
-◇分岐: 【1】 [ CSelf5 "" 以外 ]の場合↓
|■
◇分岐終了◇
のイベントコードは…
WoditorEvCOMMAND_START
[112][2,4]<0>(1,270035461)("","","","")
[401][1,0]<0>(1)()
[0][0,0]<1>()()
[499][0,0]<0>()()
WoditorEvCOMMAND_END
になります。


▼テキストファイルの置換を使って置き換える方法が書かれている所までジャンプ▼


▲トップへ戻る▲


  
■検索の置換を使って置き換える

検索にある「置換」を使って、置き換え作業を行います。

▼マップイベントの「検索」


▼コモンイベントの「検索」




作業手順の紹介は、コモンイベントにある「検索」を使って行います。



検索する対象 説明
【コマンド文】から検索 置換では使用できません。
コマンドに設定した
【文字列】のみ検索
【文章の表示】【文字列操作】【ピクチャ】などに設定されている
文字列が置き換えの対象になります。
コマンドに設定した【数値・変数】のみ検索 変数の置き換えや指定した数値の置き換えに使います。
例えばセルフ変数[12]を検索する場合は「1600012」を設定します。
【コモンイベント名】のみ検索 コモンイベントの名前が置き換えの対象になります。

検索する範囲 説明
現在のイベント内のみ 現在選択しているコモンイベントのみを検索します。
全てのイベント(イベントをまたいで検索) 全てのコモンイベントを検索します。



検索語の所には置き換え対象になる数値や文字列を設定し、
置換の所には置き換える数値や文字列を設定してください。

変数の番号を変える場合は、変数呼び出し値で設定してください。
【変数呼び出し値の一覧を表示】

例えば…
検索語 1600010
置換 1600011
と設定した場合は、セルフ変数[10]セルフ変数[11]に置き換わります。



ボタンは検索[+Shiftで逆方向]【!】置換 [次検索]があります。

検索語=1600010」「置換=1600011」の時に検索[+Shiftで逆方向]【!】置換 [次検索]を押すと、
セルフ変数[10]が設定されている所にカーソルが移動します。

セルフ変数[10]が設定されている所で【!】置換 [次検索]を押すとセルフ変数[10]セルフ変数[11]に置き換わり、
次にセルフ変数[10]が設定されている所にカーソルが移動します。

この設定は置き換えたくないと言った場合は検索[+Shiftで逆方向]を押すと置き換えは実行されずに、
次にセルフ変数[10]が設定されている所にカーソルが移動します。



検索語 100
置換 200
と言った数値の置き換えも可能ですが、【ピクチャ表示】などの場合は、
拡大率カラー(RGB値)などにある「100」も置き換えの対象になります。

そのため…
ピクチャ番号[100]を置き換えようとしたら、拡大率やカラー(RGB値)なども置き換わってしまった
と言ったトラブルが発生する可能性があります。

置き換えの際は設定内容を十分に確認した上で置き換えを実行してください。



特に置き換え有無の確認が必要ない場合は、[Enter]を押し続ければ一気に換わっていきます。



置き換えの範囲が「現在のイベント内のみ」の場合は、必ず0行目を選択した上【!】置換 [次検索]を実行してください。

また別の「検索語」「置換」を設定した場合は、再度0行目を選択した上【!】置換 [次検索]を実行してください。



セルフ変数[10]セルフ変数[11]を入れ替える場合は、まず…
検索語「1600010」
 置換「1600099」
と言ったように、セルフ変数[10]未使用のセルフ変数に置き換えてください。

そして…
検索語「1600011」
 置換「1600010」
の条件で置き換えて、さらに…
検索語「1600099」
 置換「1600011」
の条件で置き換えると、セルフ変数[10]セルフ変数[11]の設定を入れ替える事ができます。



置き換え作業を行っても変数の名前はそのままになっているので、
置き換え作業が終わったあとに、変数の名前を修正する作業を行ってください。



▼注意点が書かれている所までジャンプ▼


▲トップへ戻る▲


  
■テキストファイルの置換を使って置き換える

イベントコードをテキストファイルに貼り付けて、テキストファイル上で置き換え作業を行います。



今回は以下の条件で置き換えます。

▼置き換え前
■変数操作+: 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]



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





イベントコマンドの画面を開き、イベントコマンドの上で右クリック→[全て選択]を実行し、
さらに右クリック→[イベントコード→クリップボードへコピー]を実行。





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





一番上の行をクリック。





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





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





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





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





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





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

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





ウディタの設定画面に戻り、置き換え前のイベントコマンドの上で右クリック→[全て選択]を実行した上で、
右クリック→[削除]を実行して置き換え前のイベントコマンドを全て削除。

そして右クリック→[クリップボード→コード貼り付け]を実行。





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



★補足

大規模にセルフ変数の置き換えを行う場合は、
上図の情報確認(セルフ変数に名前を設定する画面)を表示した状態でテキストファイルの置き換え作業を行い、
テキストファイルの置き換え作業を1つ行ったら、セルフ変数の名前の設定も置き換えるなど、
テキストファイルの置き換えとセルフ変数の名前の置き換えを同時に行うと良いでしょう。

★補足2

置き換えを何度も実行する場合は、何回か置き換えを行ったら、一度コモンイベントに貼り付けて、
ちゃんと置き換えが上手くいっているかどうかを確認した方が良いでしょう。

また途中でコモンイベントに貼り付ける事で、それがバックアップとなり、
それ以降の置き換え作業でミスがあっても、その途中の状態から置き換え作業を再開する事ができます。


▲トップへ戻る▲


  
■置き換え作業の注意点

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


  
▼起動条件や「入力の数/結果を返す」にある設定

起動条件の変数やコモンイベントの「入力の数/結果を返す」の中にある設定は置き換える事ができないため、
手作業を修正してください。


  
▼特殊文字で変数の値を文字列で表示している

セルフ変数[10]の設定をセルフ変数[11]に換えた時に、特殊文字で「\cself[10]」を設定している場合は…
検索語「\cself[10]」
 置換「\cself[11]」
の条件で文字列の設定も置き換える必要があります。


  
▼一括設定

例えば…
■変数操作: CSelf20〜CSelf21 = 0 + 0
ようにセルフ変数[20〜21]を一括で処理している時に…
検索語「1600020」
 置換「1600040」
の条件で置き換えると…
■変数操作: CSelf40〜CSelf41 = 0 + 0
となります。

もしも「セルフ[21]=0」にする場合は…
■変数操作: CSelf21 = 0 + 0
と言った設定が別途必要になります。

また「セルフ[41]=0」にしたくない場合は…
■変数操作: CSelf40 = 0 + 0
と言ったように、一括の設定を解除する必要があります。


  
▼「X番の変数呼出」で使用する変数呼び出し値を設定

変数呼び出し値を…
■変数操作: CSelf20[設定変数番号] = 1600040 + 0
と設定し…
検索語「1600040」
 置換「1600055」
の条件で置き換えた場合は…
■変数操作: CSelf20[設定変数番号] = 1600055 + 0
となって、特に問題なく処理する事ができます。

しかし…
■変数操作: CSelf20[設定変数番号] = 1600000 + 40
のような設定を行っている場合は…
検索語「1600040」
 置換「1600055」
の条件では…
■変数操作: CSelf20[設定変数番号] = 1600000 + 40
のままになるので…
■変数操作: CSelf20[設定変数番号] = 1600000 + 55
と言った修正が必要になります。


  
▼コモンイベントのセルフ変数を他のイベントから操作している場合

検索語「1600040」
 置換「1600055」
の条件で置き換え作業を行った時に…
■変数操作: CSelf10[設定変数番号] = 15022040 + 0
■変数操作: V[CSelf10[設定変数番号]] = 1 + 0
などと、他のイベントから置き換えたコモンイベントのセルフ変数を呼び出している場合は…
■変数操作: CSelf10[設定変数番号] = 15022055 + 0
■変数操作: V[CSelf10[設定変数番号]] = 1 + 0
などと変える必要があります。


▲トップへ戻る▲



◎関連ページ

◆「変数」って何?
┣◆「セルフ変数」って何?
┣◆「通常変数」「予備変数」って何?
┣◆「文字列変数」って何?
┣◆「システム変数」「システム文字列」って何?
┃◆システム変数[0〜34]の説明
┃┣◆システム変数[35〜76]の説明
┃┣◆システム変数[77〜120]の説明
┃┣◆システム変数[121〜148]の説明
┃┣◆システム文字列[0〜49]の説明
┃┗◆システム文字列[50〜71]の説明
┣◆「変数呼び出し値」「X番の変数呼出」って何?
┃┗◆【使用例】「変数呼び出し値」「X番の変数呼出」
┣◆「乱数」って何?
┃┗◆乱数で一度出力した値を二重に出力させない
┗◆変数の番号や文字列を別のものに置き換える

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