WOLF RPGエディター(ウディタ)[3.175]/基本システム【サイトトップへ戻る】
■コモンイベント[063:X[共]メッセージウィンドウ]の解説
(更新:2023/04/24)


コモンイベント[063:X[共]メッセージウィンドウ]について解説します。


ショートカット
■コモンイベント[063:X[共]メッセージウィンドウ]って何?
■こうゆう時にこのコモンイベントを改造する
■[入力の数/結果を返す]について
■コモンイベント呼び出しの一覧
■セルフ変数の一覧
■イベントコマンドの解説
■補足

基本システムに関する説明は別ページに記載しています。
【基本システムに関する説明ページを見る】

コモンイベントの一覧と補足説明のページも用意しています。
【コモンイベントの一覧と補足説明のページを開く】


  
■コモンイベント[063:X[共]メッセージウィンドウ]って何?

コモンイベント[063:X[共]メッセージウィンドウ]は、
【文章の表示】が実行された時にメッセージウィンドウを表示する時に使います。

▼表示例


コモンイベント[063:X[共]メッセージウィンドウ]起動条件は「並列実行(常時)」になっているため、
【文章の表示】を実行する(システム変数[12:メッセージ表示中?(1=ON)]が「1」になる)と、
自動的にメッセージウィンドウが表示されます。

顔グラフィックを表示する設定を行っている場合は、
このコモンイベント[063:X[共]メッセージウィンドウ]で顔グラフィックの表示する処理も実行します。

【文章の表示】の使い方や顔グラフィックの表示方法などは、別ページに記載しています。
【【文章の表示】の説明や顔グラフィックの設定方法のページを開く】



メッセージウィンドウの表示は、ピクチャ番号[19500]を使って表示します。
顔グラフィックの表示は、ピクチャ番号[19501〜3]を使って表示します。

顔グラフィックのピクチャ番号は、ピクチャ番号[19501〜3]の3つを使っていますが、
これは顔グラフィックを表示した後に、続けて違う顔グラフィックを表示する時に、
消去していくピクチャ番号」と「新たに表示されるピクチャ番号」の2つのピクチャ番号が同時に使われるため、
複数のピクチャ番号で表示しています。

▼顔グラフィック用のピクチャ番号の使われ方の一例
■文章:@2\nあいうえお
■文章:@3\nかきくけこ
■文章:@2\nさしすせそ
■文章:@4\nたちつてと
ピクチャ[19501]で顔グラ[2]を表示。
ピクチャ[19501]を消去し、ピクチャ[19502]で顔グラ[3]を表示。
ピクチャ[19502]を消去し、ピクチャ[19503]で顔グラ[2]を表示。
ピクチャ[19503]を消去し、ピクチャ[19501]で顔グラ[4]を表示。



このコモンイベント[063:X[共]メッセージウィンドウ]では、
【文章の表示】【選択肢】に関係するシステム変数の初期化なども行っています。

メッセージウィンドウや選択肢ウィンドウの表示位置を設定するシステム変数は、
【文章の表示】を実行する度に初期化されるため、例えばマップイベントで…
■変数操作: Sys2:メッセージウィンドウ Y座標 = 0 + 0
■文章:あいうえおかきくけこさしすせそ
などと設定しても、【文章の表示】を実行した時にシステム変数[2:メッセージウィンドウ Y座標]が初期化され、
指定した位置には表示されません。

この場合は初期化を行うイベント処理をゲーム開始時に1回だけ実行するように改造する必要があります。
【システム変数[1〜6]をゲーム開始時に1回だけ初期化する改造方法を見る】


▲トップへ戻る▲


  
■こうゆう時にこのコモンイベントを改造する

以下のような改造を行いたい時にこのコモンイベントを改造します。

◆ウィンドウや顔グラフィックの表示位置や出現方法(スクロール方向)を変えたい。
◆特定の顔グラフィックの番号の時に主人公の名前が表示されるようにしたい。
◆使用するピクチャ番号(19500〜19503)を変えたい。


▲トップへ戻る▲


  
■[入力の数/結果を返す]について

コモンイベント[063:X[共]メッセージウィンドウ][入力の数/結果を返す]には、何も設定されていません。


▲トップへ戻る▲


  
■コモンイベント呼び出しの一覧

コモンイベント[063:X[共]メッセージウィンドウ]を呼び出しているコモンイベントや、
コモンイベント[063:X[共]メッセージウィンドウ]から呼び出しているコモンイベントはありません。


▲トップへ戻る▲


  
■セルフ変数の一覧

コモンイベント[063:X[共]メッセージウィンドウ]のセルフ変数の一覧です。

セルフ変数
番号 名前 使用内容
8 顔画像ファイル システムDB[24:顔グラフィック名]に設定された顔画像のファイルアドレスを設定。
9 ウィンドウ画像ファイル ユーザーDB[16:画像/音声設定]項目[2:メッセージウィンドウ ベース画像]にある
ウィンドウ画像のファイルアドレスを設定。
10 一時変数A 顔画像の横拡大率の計算やスクロール移動の移動開始位置Xを計算する時に使用。
11 一時変数B 顔画像の縦拡大率の計算する時に使用。
20 基本ピクチャ番号 基本となるピクチャ番号[19500]を設定。
21 一時ピクチャ番号A 顔画像を表示・消去する時のピクチャ番号の設定(19501-3)で使用。
22 一時ピクチャ番号B 顔画像を消去する時のピクチャ番号の設定(19503)で使用。
23 拡大率(横) 顔画像の横倍率を設定。
24 縦拡大率 顔画像の縦倍率を設定。
30 基本表示位置X メッセージウィンドウの表示位置Xを設定。
31 基本表示位置Y メッセージウィンドウの表示位置Yを設定。
32 隠し表示位置X メッセージウィンドウの出現移動開始位置X(消去時移動終了位置X)を設定。
33 隠し表示位置Y メッセージウィンドウの出現移動開始位置Y(消去時移動終了位置Y)を設定。
35 ウィンドウ表示中フラグ メッセージウィンドウを表示中かどうかを設定。
0 表示していない(文章が表示されたらウィンドウの表示処理を実行)
1 表示中(文章が消えたらウィンドウの消去処理を実行)
38 サイズX メッセージウィンドウの横サイズを設定。
39 サイズY メッセージウィンドウの縦サイズを設定。
40 戻り先番号 51行目にあるラベル「文章表示位置設定」にて、
どの位置にジャンプするのかを設定する時に使用。
1 54行目の初期設定を終了する位置へ戻る
2 88行目のメッセージウィンドウの新規表示する処理へ戻る
42 画面サイズX 可変DB[18:基本システム用変数]データ[97:座標倍率X[x10]]の値を「乗算32」にして、
ゲーム画面の横サイズを設定。
43 画面サイズY 可変DB[18:基本システム用変数]データ[98:座標倍率Y[x10]]の値を「乗算24」にして、
ゲーム画面の縦サイズを設定。
44 一時座標X 顔画像の表示時のスクロール開始位置Xを設定。
45 一時座標Y 顔画像の表示時のスクロール開始位置Yを設定。
48 直前顔グラ番号 現在表示している顔画像の番号(システムDB[24]のデータID)を設定。
49 顔グラフィック番号 表示する顔画像の番号(システムDB[24]のデータID)を設定。
セルフ[48]と異なる場合は、新規顔画像として表示処理を実行。
57 顔横サイズ 顔画像の横サイズを設定。
58 顔縦サイズ 顔画像の縦サイズを設定。
88 座標倍率X[x10] 可変DB[18:基本システム用変数]データ[97:座標倍率X[x10]]を取得する時に使用。
89 座標倍率Y[x10] 可変DB[18:基本システム用変数]データ[98:座標倍率Y[x10]]を取得する時に使用。
90 顔表示用ピクチャカウンタ 顔画像を表示する度に「加算1」にして、「0〜2」の値を設定し、
次に顔画像を表示するピクチャ番号(19501〜3)の設定で使用。
91 ピクチャカウンタ最大値 顔画像の表示で使うピクチャ番号の数を設定。
初期設定は「3」なので、
顔画像の表示で使うピクチャ番号は「19501〜3」の3つになります。

【変数の一覧を別ウィンドウで表示】


▲トップへ戻る▲


  
■イベントコマンドの解説

イベントコマンドの解説を行います。

なお、見た目で設定内容が分かるような簡単なイベントコマンドの解説は省略しています。

処理内容
21 メッセージウィンドウを表示するピクチャ番号を設定。
22-24 ▼ Ver2.20 座標倍率を縦横別に修正
可変DB[18:基本システム用変数]データ[97:座標倍率X[x10]][98:座標倍率Y[x10]]から
画面サイズの基準となる値を取得。
【可変DB[18]のデータ[97・98]の説明を見る】
セルフ[88]には「画面の横サイズ÷32」の値を設定。(640×480の場合は「20」を設定)
セルフ[89]には「画面の縦サイズ÷24」の値を設定。(640×480の場合は「20」を設定)
25 メッセージウィンドウのウィンドウ画像が保存されているアドレスを
ユーザーDB[16:画像/音声設定]項目[2:メッセージウィンドウ ベース画像]からセルフ[9]に取得。
26 セルフ[35]に「0」を設定。
このセルフ[35]はメッセージウィンドウを表示したら値が「1」に変わり、
「1」の時に文章の表示が終了したら、メッセージウィンドウの消去する処理が実行されます。
27-39 ▼ メッセージウィンドウの表示位置とサイズを設定
セルフ[88・89]から取得した値を基にメッセージウィンドウのサイズや表示位置を設定。
▼画面サイズが[640×480]の場合
セルフ[38:サイズX]:30×20=600(ウィンドウの横サイズ)
セルフ[39:サイズY]: 7×20=140(ウィンドウの横サイズ)
セルフ[30:基本表示位置X]:16×20=320(ウィンドウのX位置)
セルフ[31:基本表示位置Y]:20×20=400(ウィンドウのY位置)
セルフ[32:隠し表示位置X]:16×20=320(ウィンドウの移動前X位置)
セルフ[33:隠し表示位置Y]:28×20=560(ウィンドウの移動前Y位置)
35 顔グラフィックの表示に使うピクチャの枚数としてセルフ[91]に「3」を設定。
この設定により、顔グラフィックを表示するピクチャ番号は[19501〜3]になります。
36 システム変数[10]に「9」を設定。
この設定により、【文章の表示】を実行した9フレーム後に文章の表示が始まり、
メッセージウィンドウが表示されてから文章が表示されるようになります。
41 セルフ[40]に「1」を設定。
このセルフ[40]53行目ラベル「戻り先\cself[40]」に飛ぶで使用しています。
42-55 ■回数付きループ [ 1 ]回
文章や選択肢の表示に関するシステム変数の値を初期化。
ここの初期化設定は、ゲーム起動時に1回実行される他、
【文章の表示】を実行する時にも実行されます。
そのため、【文章の表示】を実行する前にシステム変数[1〜2]の値を変えても、
【文章の表示】を実行した時に、ここの設定値に戻ってしまいます。
【メッセージウィンドウのY表示位置を変える方法を見る】
  43 ●ラベル地点「文章表示位置設定」 <<<<<<<<<<<<<<<<<<<<<<<<★
メッセージウィンドウを表示する直前に89行目からジャンプして来る時に使用。
  44-50 メッセージウィンドウ、選択肢ウィンドウ、ポーズカーソルの表示位置を設定。
▼画面サイズが[640×480]の場合
システム変数[1:メッセージウィンドウ X座標]: 2×20=40
システム変数[2:メッセージウィンドウ Y座標]:17×20+20÷5=344
システム変数[3:選択肢ウィンドウ X座標]:16×20=320
システム変数[4:選択肢ウィンドウ Y座標]: 7×20=140
システム変数[5:ポーズカーソルX (-1=自動)]:16×20=320
システム変数[6:ポーズカーソルY (-1=自動)]: 6×20=120
※システム変数[6:ポーズカーソルY (-1=自動)]は、
 システム変数[2:メッセージウィンドウ Y座標]の位置を基点に設定します。

  53 ●ラベル「戻り先\cself[40]」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
セルフ[40]の値によって、ジャンプする位置が変わります。
セルフ[40] ジャンプ移動先
1 56行目
2 90行目
56 ●ラベル地点「戻り先1」 <<<<<<<<<<<<<<<<<<<<<<<<★
システム変数[1〜6]の初期設定が完了したら、
53行目ラベル「戻り先\cself[40]」からここへジャンプしてくる。
58 システム変数[0]に「1」を設定し、【文章の表示】を実行した時に、
メッセージウィンドウの画像が表示されるようにします。
システム変数[0]が「0」の場合は、「メッセージウィンドウの画像表示なし」になります。
セーブデータのロード時にこの設定(システム変数[0]=1)が実行されます。
そのため、セーブ時に「0(メッセージウィンドウの表示なし)」にしている場合は、
ロード後の処理で「システム変数[0]=0」の設定を行ってください。
59-230 ■ループ開始
ずっとこのループ内で処理が続きます。
  60-67 ▼ 顔グラフィック番号が-1以下になったら処理待ち状態
▼ 基本的に、処理が終わったら-1になる

■条件分岐(変数): 【1】 Sys0:顔グラフィック番号 が -1 以下
システム変数[0]が「-1以下」の時には分岐し、
【ループ開始へ戻る】が繰り返し実行され、処理がここでループします。
「処理が終わったら-1になる」とありますが、実際には「-1」になる設定はありません。
  69-71 ▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
▼ 表示処理
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  72-175 ■条件分岐(変数): 【1】 Sys12:メッセージ表示中?(1=ON) が 1 と同じ
【文章の表示】が実行されたら分岐。
    74 ▼ メッセージウィンドウ表示
    75 ●ラベル地点「ウィンドウ表示」 <<<<<<<<<<<<<<<<<<<<<<<<★
メッセージウィンドウの消去処理を実行している途中で【文章の表示】が実行された時に、
再びメッセージウィンドウを表示するため、187行目210行目からここへジャンプしてきます。
    77-173 ■条件分岐(変数): 【1】 CSelf48[直前顔グラ番号] が CSelf49[顔グラフィック番号] 以外
顔グラフィックの番号が現在表示中の設定と異なる場合は分岐。
      80-98 ■条件分岐(変数): 【1】 CSelf49[顔グラフィック番号] が 1 以上
メッセージウィンドウを表示する場合は分岐。
        82 ▼ 顔番号が1以上ならメッセージウィンドウ表示
        84-94 ■条件分岐(変数): 【1】 CSelf35[ウィンドウ表示中フラグ] が 0 と同じ
メッセージウィンドウの画像が表示されていない場合は分岐。
          86-87 ▼ メッセージウィンドウを新規表示する処理
▼ メッセージウィンドウの表示位置を再設定
          88 セルフ[40]に「2」を設定。
この設定により、53行目にあるラベル「戻り先\cself[40]」に飛ぶのジャンプ先が、
90行目ラベル地点「戻り先2」になる。
          89-90 ●ラベル「文章表示位置設定」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
●ラベル地点「戻り先2」 <<<<<<<<<<<<<<<<<<<<<<<<★
43行目ラベル「文章表示位置設定」へジャンプし、システム変数[1〜6]の初期化を終えたら、
53行目ラベル「戻り先\cself[40]」に飛ぶから90行目ラベル「戻り先2」に戻ってくる。
          91-92 ▼  表示されていなければ新規に表示する
ウィンドウ画像を表示。
        95-96 メッセージウィンドウを画面下(画面の外)からスクロールさせて表示します。
移動設定が2つありますが、これは最初に高速で移動させて、
3フレーム後に移動速度を落として移動させる事で、
途中で減速させながらメッセージウィンドウが移動する演出を行っています。
▼画面サイズが[640×480]の場合の1フレーム単位の移動量
移動開始からのフレーム時間 1 2 3 4 5 6 7 8
1フレームの移動量(ピクセル) 32 32 32 12 13 13 13 13
        97 ウィンドウを表示したので、セルフ[35]に「1」を設定。
        98 システム変数[10]に「1」を設定し、
続けて【文章の表示】が実行された時の次の文章の表示開始時間を1フレームとします。
      100-107 ◇上記以外
メッセージウィンドウを表示しない場合は分岐。
        101-105 ▼ 表示なし(0)の場合
▼ 隠す座標へ移動
メッセージウィンドウを表示している場合は、
画面下(画面の外)へスクロールして、メッセージウィンドウを隠します。
        106 ウィンドウを消去したので、セルフ[35]に「0」を設定。
        107 システム変数[10]に「1」を設定し、
続けて【文章の表示】が実行された時の次の文章の表示開始時間を1フレームとします。
      113-117 ▼ ――――――――――――――――――――――――――――――――
▼ 顔グラフィックの消去+表示処理
▼ ――――――――――――――――――――――――――――――――
▼ まず今表示されてる顔グラフィックを消去
現在表示中の顔グラフィックを消去します。
      118-171 ■条件分岐(変数): 【1】 CSelf49[顔グラフィック番号] が 2 以上
 ▼ 顔番号が2以上なら顔グラフィック表示
 ■条件分岐(文字): 【1】 CSelf8[顔画像ファイル]が "" 以外
顔グラフィックを表示する場合は分岐し、さらにシステムDB[24:顔グラフィック名]
顔グラフィックの画像アドレスが設定されている場合は分岐。
        124-128
▼ 新しいピクチャのサイズから初期表示座標を算出
▼ 新しいピクチャを表示する
顔グラフィックの表示で使うピクチャ番号をセルフ[21]に設定。
設定されるピクチャ番号は、セルフ[90]の値で決まります。
セルフ[90] 0 1 2
ピクチャ番号 19501 19502 19503
        129-133 ▼ システム設定の メッセージ顔グラフィック 拡大率を反映
ユーザーDB[17:システム設定]項目[25:メッセージ 顔グラフィック倍率]の拡大率で
顔グラフィックを表示。
        134-152 ■条件分岐(変数): 【1】 CSelf23[拡大率(横)] が 0 と同じ
ユーザーDB[17:システム設定]項目[25:メッセージ 顔グラフィック倍率]の設定が
[0]自動設定の表示倍率で表示」の場合は分岐。
          136-138 ▼ 拡大率0=標準サイズに合わせる
読み込んだ顔グラフィックの画像のサイズをセルフ[10〜11]に代入。
但し145-146行目セルフ[10〜11]への代入設定があるため、この設定は意味がありません。
          139-143 ▼ 顔の枠のサイズを計算
ゲーム画面のサイズ[320×240[倍]]の時に「96×96ピクセル」で表示する場合で、
現在のゲーム画面のサイズに合わせて顔グラフィックの画像サイズをセルフ[10〜11]に設定。
例えばゲーム画面のサイズ[640×480]の場合は「192×192ピクセル」になります。
          144-150 ▼ 顔の表示を、枠に合わせる場合
顔グラフィックの設定サイズ×100÷顔グラフィックの画像サイズ」で、
設定サイズ(セルフ[10〜11])に入る拡大率をセルフ[23〜24]に設定。
例えば設定サイズ「96×96ピクセル」で画像サイズが「120×120ピクセル」の場合、
96×100÷120」で「80」となり、顔グラフィックの画像を拡大率「80%」で表示します。
        153-159 ▼ 表示元の座標を計算
顔グラフィックの縦画像サイズ×横拡大率÷100」で、
顔グラフィックのゲーム画面上の画像サイズを算出し、画像サイズをセルフ[44]に加算。
この設定により、
画面の右端から更に画像サイズ分だけ画面の外のX座標がセルフ[44]に設定されます。
なお、「顔グラフィックの縦画像サイズ×横拡大率÷100」の計算で、
画像サイズの取得は縦サイズで、拡大率は横の拡大率を取得している意味は不明。
        160 ゲーム画面の外(セルフ[44]が示すX位置)に顔グラフィックを移動。
▼表示イメージ(顔グラフィックは「位置:右下」で表示しています)
        161-164 ▼ 表示先へと移動
3つの【ピクチャ移動】で徐々に移動速度を落としながら移動。
▼画面サイズが[640×480]の場合の1フレーム単位の移動量
移動開始からのフレーム時間 1 2 3 4 5 6 7 8 9 10
1フレームの移動量(ピクセル) 38 38 39 15 15 9 9 10 9 10
        165-167 ▼ ピクチャカウンタ+1
ここの設定により、128行目で設定する顔グラフィックのピクチャ番号が次の番号になります。
  176-178 ▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
▼ 消去処理
▼ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  179-228 ■条件分岐(変数): 【1】 CSelf35[ウィンドウ表示中フラグ] が 0 以外
 ■条件分岐(変数): 【1】 Sys12:メッセージ表示中?(1=ON) が 0 と同じ
セルフ[35]が「1(ウィンドウ表示中)」の場合は分岐し、
さらにシステム変数[12]が「0(文章を表示していない)」の場合は分岐。
    183 ▼ もし開いてる状態なら、数フレーム待って、なければ閉じる。
    184-192 ■回数付きループ [ 3 ]回
ウェイト中に再びが【文章の表示】が実行されないかをチェック。
      185-189 ■条件分岐(変数): 【1】 Sys12:メッセージ表示中?(1=ON) が 1 と同じ
再び【文章の表示】が実行された場合は分岐。
        187 ●ラベル「ウィンドウ表示」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
75行目へジャンプし、再びメッセージウィンドウを表示する。
    193 ▼ 値を初期化
    194 システム変数[10]に「9」を設定し、次回【文章の表示】を表示する時に、
メッセージウィンドウが画面下から出てきたら、文字列を表示するように設定。
    195 セルフ[48]に「-1(現在顔グラフィックは表示されていない)」を設定。
    196-201 ■条件分岐(変数): 【1】 Sys12:メッセージ表示中?(1=ON) が 0 と同じ
【文章の表示】が実行されていない場合は分岐し、
システム変数[0]に「1(ウィンドウ表示&顔グラフィック表示設定なし)」を設定。
    202-205 ▼ 隠す座標へ移動
メッセージウィンドウを画面下(画面の外)へ移動させて、見えない状態にする。
    206 ▼ 完全に消えたら表示フラグをオフに
    207-215 ■回数付きループ [ 6 ]回
ウェイト中に再びが【文章の表示】が実行されないかをチェック。
      208-212 ■条件分岐(変数): 【1】 Sys12:メッセージ表示中?(1=ON) が 1 と同じ
再び【文章の表示】が実行された場合は分岐。
        210 ●ラベル「ウィンドウ表示」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
75行目へジャンプし、再びメッセージウィンドウを表示する。
    216-217 ▼ 消去する
メッセージウィンドウを消去する。
    218-222 ▼ 顔グラフィックも消去する
顔グラフィック用のピクチャを消去。
    223-224 ▼ ウィンドウが消えたので、次メッセージの待ち時間を元に戻す
セルフ[35]に「0(メッセージウィンドウを表示していない)」を設定。


▲トップへ戻る▲


  
■補足

ウディタ[2.271]には、ゲーム画面の比率が[16:9]の場合、顔グラフィックが横長に表示されてしまう不具合があります。

修正する場合は、コモンイベント[063:X[共]メッセージウィンドウ]158行目【ピクチャ表示】の設定を開き、
「拡大率:横」の設定を「1600023」から「1600024」に変えてください。



修正前 修正後


▲トップへ戻る▲



◎関連ページ

◆「基本システム」って何?
┣◆コモンイベントの一覧と補足説明
┣◆メニュー画面の処理構造
┗◆戦闘処理の処理構造

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