【ウディタ】メニュー画面にマップ名を表示する

今回はウディタの基本システムを改造して、メニュー画面に現在のマップ名を表示する方法を解説するわ。


完成図はこんな感じ。所持金欄の上に現在のマップ名が表示されているわね。

ちなみに改造対象は画面サイズ320×240設定になるわ。その他の画面サイズは対象外なのであしからず。

メニュー描画用コモンを改造する

ではざっくりと解説していきましょう。詳細は一緒に掲載している画像を参考にして頂戴。クリックすれば大きく表示されるわ。

それと、起動条件が「呼び出しのみ」のコモンの改造を行う時はコモンを直接修正するのではなく、コピーしてそのコモンより下にある空き部分に貼り付けそちらを修正することをオススメするわ。

コモンイベントを名前指定で呼び出す際は、同名のコモンがあるとIDが大きいものが実行されるから、こうすれば失敗した時用に元のコモンを残しておくことができるからね。


改造するコモンは「Ev088-X[移]メニュー描画」よ。所持金欄を描画している処理があるからこれを流用しましょう。213行目のループをクリックしてコピーして頂戴。


そして所持金欄の描画をしている部分の下、273行目に張り付ける。ここを改造してマップ名が表示されるようにしていくのよ。


※処理には関係ないけど、分かりやすいように最初のコメント行も修正しておきましょう。


まず修正するのは277行目のウィンドウ画像用のピクチャ番号。このコモンは基本ピクチャ+12番目までを使用している(コモン冒頭にコメントあり)から、この部分はマップ名欄用に+13に修正しましょう。


次に表示する内容を所持金からマップ名に修正するわ。元からあった283行目は削除して以下の2つのイベントコマンドを追加して頂戴。
→変数操作+で現在マップIDを取得しセルフ変数11に格納。
→DB読込でシステムDBから現在マップIDのデータ名を取得しセルフ変数6に格納。

※マップIDの指定にはセルフ変数11を指定して「データ名を取得」にチェックを入れてね。


次は292行目のピクチャ表示の以下のように修正
→<R> を <C> に修正する。
→\cself[11] を \cself[6] に修正する。

※<R>というのは文字表示を制御する特殊文字で、Rは右寄せでCは中央揃えになるわ。マップ名は右寄せじゃ不自然だから、Cの中央揃えにするわけね。


その下の293行目には所持金の単位を表示する部分があるけど、これはマップ名の表示には不要だから削除するわ。


293行目に所持金表示用のピクチャ番号が+12で指定されている部分があるから、これをマップ名表示用に+14へ修正しましょう。


マップ名は所持金欄の上に表示したいから、表示位置Y軸指定用のセルフ変数を修正する処理を2つ追加して頂戴。表示位置の高さを24ピクセルだけ上にあげるのよ。
→変数操作でセルフ変数61を-24する。
→変数操作でセルフ変数65を-24する。


次はピクチャ移動処理の修正よ。基本システムのメニュー画面は横からスライドするように描画されるのだけど、このピクチャ移動に使われているピクチャ番号も修正する必要があるわ。ピクチャ移動の直前(312行目)に以下の処理を追記して頂戴。
→変数操作でセルフ変数10を+2する。


ピクチャ移動処理用のピクチャ番号指定は320行目と321行目の変数操作にもあるわ。こちらも修正して頂戴。320行目を+11から+13へ修正、321行目を+12から+14へ修正するのよ。
※2020/09/10追記
↑こちらの修正箇所の記載が記事から漏れていました。大変申し訳ありません。ご指摘ありがとうございました。


最後にメニューを閉じた時のピクチャ消去も修正するわ。今回追加したマップ名欄で使ったピクチャ(13番と14番)も削除しなきゃいけないから、90行目で指定しているピクチャ番号を+12から+14に修正

お疲れ様、これで改造は完了よ。意外にややこしかったわね……。

メニューにマップ名が表示されているか確認

ではテストプレイを起動して実際に確認してみましょう。


こんな感じで所持金欄の上にマップ名欄が表示されていれば成功よ。ちょっと文字が潰れちゃってるけど、これはウィンドウに対してマップ名の文字数が多すぎるせいね。


マップ名が短ければ潰れずに表示されるわ。全角7文字くらいまでなら大丈夫かしら。


もし長いマップ名を使いたいなら、さっきのコモンの292行目で文字サイズを指定している部分を修正すればいいわ。「\f[XX]」というのが文字サイズを指定する特殊文字よ。
→「\f[\cself[19]]」 を 「\f[9]」に修正。


フォントサイズを変えたことでマップ名の位置がちょっと上よりになっちゃうから、表示位置も微調整しましょう。
→300行目にある変数操作の計算を /6 から/5 に修正。


再修正後の表示がこちら。うん、フォントサイズを小さくしたことで文字が潰れず表示されるようになったわね。

メニュー画面にマップ名を表示する改造の解説は以上よ。うーん、試す前は簡単だと思っていたのだけど、予想よりずっと手間だったわ。

コメント

  1. TK より:

    書いてある通りに進めたのですが、金額の表記がマップ名のところに一緒に移ってしまいました。
    これを直すにはどうしたらいいでしょうか?

  2. レビニア より:

    TKさん
    書いてあるとおりに進められたということは、コモンをコピペしてコピーした方を修正したということですよね。
    うまく動作しなかったコモン(コピー)を削除して、もう一度コピペするところからやり直すとよいと思います。

  3. TK より:

    打ち間違えの可能性もあると思いコモン088をコピーするところから5回やり直してみたのですが、やっぱり同じことになってしまいます。
    尚、この記事の通りに進めながら起動確認した限りでは、表示位置Y軸指定用のセルフ変数を修正する処理を行った段階で一緒に金銭表記もずれ込んでしまっていました(本来の位置は空になりました)。
    文字表示が一緒に引っ張られたからなのかと思い、Cself6や11を別に変数を用意し、そこへ入れてやればとも試してみたのですが、消去するときに指定する方法がわからなくなり手詰まりになりました。

  4. レビニア より:

    TKさん
    大変申し訳ありません! 修正箇所の記載漏れがありました。

    320行目と321行目のピクチャ番号修正が記事に書き忘れていました。
    ここの変数操作でピクチャ番号が+11と+12となっていると思いますが、
    以下のように+13と+14へ修正してください。これで大丈夫と思います。

    >■変数操作: CSelf21[一時ピクチャ番号] = CSelf20[基本ピクチャ番号] + 13
    >■変数操作: CSelf10[一時変数A] = CSelf20[基本ピクチャ番号] + 14

    お手間をとらせてしまい大変申し訳ありませんでした。
    ※記事の方は早急に修正いたします。

  5. TK より:

    こちらこそ、お忙しい中の修正及び確認、ありがとうございました。
    おかげで想定していた動きができるようになりました。

    他の、割合回復料金や戦闘開始演出なども参考にさせていただいておりますが、非常に判りやすく丁寧なつくりでとても助かります。初心者なので、巨大変数で指定する理由などにはなるほどと納得できました。
    他の機能も実に目移りするものばかりです、お忙しいとは思いますが今後も更新を楽しみにしております。

  6. レビニア より:

    TKさん
    寛大なお言葉ありがとうございます。
    しばらくお休みしてしまっていますが
    ゆくゆく再開するつもりではありますので
    よろしくお願いいたします。

  7. レイン より:

    長年出来なかった改造が出来ました!
    ありがとうございます。