やさしいウディタ講座33:コモンイベントの結果を返すを使った時間表示

無料のゲーム開発ツール「ウディタ(WOLF RPGエディター)」の基本的な使い方を、初心者さん向けに紹介するこの企画。

今回も前回&前々回同様、コモンイベントの使い方です。コモンイベントの「結果を返す機能」を利用して、時間を表示するイベントを作ってみます

「やさしいウディタ講座」- もくじ
現在公開中の講座をまとめたページ。「ウディタのことがよくわからない」「簡単な機能から覚えたい」などの初心者さんは、初期の講座から読むのがおすすめです。
>>WOLF RPGエディター|公式サイト
公式サイトにはウディタの使い方を詳しく解説している、マニュアルやガイドが公開されています。ウディタを学ぶ際の必須となる教科書です。ぜひ参考にしましょう。

ウディタのコモンイベント「結果を返す」の仕組み

コモンイベントを呼び出した別イベントに対して、コモンセルフ変数の中身を渡します

前回の「やさしいウディタ講座32:コモンイベントの設定「入力」で表示を切替」では、呼び出し元の別イベントからコモンイベント側がデータを受け取りました。その逆の機能ってことです。

渡せるコモンセルフ変数の中身は1つのみ

数字(数値)の他、文字(文字列)も可能。コモンセルフ変数0~99の内、どれでも好きなものを渡せます。

渡したデータは変数に入ります。通常変数・予備変数・文字列変数、マップイベントが持つセルフ変数の他、別のコモンイベントが持つコモンセルフ変数にも対応可能です。

ウディタの変数の種類については「やさしいウディタ講座7:変数の種類と使うことのできる範囲」を参考にどうぞ。

午前午後の時間を表示するイベントを作ろう

コモンイベントの機能「結果を返す」を使ったイベントを作ってみましょう!

イベント内容はこんな感じ

作るのは「時間の表示」。24時間制ではなく、午前午後の12時間制で表示します

※上のゲーム画像のように、セリフ(メッセージウィンドウ)で時間を表示させてみます。

ウディタのシステム変数を使い、現在の時間を取得。取得した時間を多少いじって、呼び出し元のマップイベントに渡します。そのデータをゲーム画面に表示させたらゴールです。

マップとマップイベントを用意

すごく簡単な内容で大丈夫。前回講座のマップとマップイベントが残っているなら、それを使いまわしても構いません。

今回は前回&前々回講座で作ったマップとマップイベント「ニワトリ」を利用。

※マップの出入り口付近にあるマップイベントは今回使いません。無くても大丈夫です。

※起動条件を「決定キーで実行」にしておきます。

決定キー(Enter)でニワトリに話しかけたら、現在の時刻を教えてもらえるといった感じ。

テストプレイしやすいよう、主人公キャラの初期位置をこのマップに変更。右クリックから「ゲーム開始位置に設定」を選べばできます。

マップの基本的な作り方は「やさしいウディタ講座1:マップを作ってみよう」を参考にどうぞ。

午前午後の時間を取得するコモンイベントを用意

コモンイベントを新規作成する

時間の取得や午前午後の調整などをするコモンイベントを、新しく作りましょう。

エディターのアイコンメニューから、「コモンイベントの設定」をクリック。

専用画面が出たら、画面左の一覧を下へスクロール。空いている行を選択し、画面右側の「名前」で、わかりやすいコモンイベント名をつけます。空いている行が無ければ「データ最大数の変更」ボタンから増やせます。

今回は「時間の取得|午前午後」にしてみました。

起動条件を「呼び出しのみ」に。別イベントから、このコモンイベントを使ったときだけ実行するための設定です。

メモの欄には、コモンイベントの内容をわかりやすく記述しておけば良いと思います。

今までの作業を台無しにしないためにも、画面下のOKもしくは更新のボタンをクリックして、こまめな内容の保存をおすすめします。

現在の時間を取得する

時間を表示するためには、今現在の時間を知らないとダメですよね?リアルタイムに時間を知る方法がウディタに用意されています。

システムデータベースのタイプ「6:システム変数名」にある、「80:現在の[時]」でデータを取得可能。このデータを変数に代入して使えば良いんです。

代入先の変数を作りましょう。今回はコモンセルフ変数を使ってみます。

コモンイベント「時間の取得|午前午後」の画面にある、「セルフ変数使用状況」のボタンをクリック。

「80:現在の[時]」で取得できるデータは数字(数値)です。なので、文字列を扱う5~9は省きます。

前回の講座32をやればわかるでしょうが、4と9を除く10未満のコモンセルフ変数は、別イベントからデータを受け取る際に使われる特殊な存在です。

※別イベントからデータを受け取れるコモンセルフ変数。

それらを邪魔しないようにして、なおかつ区切りが良い「10以降のコモンセルフ変数」を使うのが良さそうですね。

コモンセルフ変数10を使いましょうか。管理しやすい、好きな名前をつけてください。今回は「現在時間24h」と名付けてみました。

終わったら画面下の「設定完了」ボタンをクリックし、保存します。

続いて、「時間の取得|午前午後」画面、メモの下にある広いスペース(コマンド欄)での作業です。

ダブルクリックやコマンド入力ウィンドウ表示ボタンなどを押して、イベントコマンド入力画面を開きましょう。

3 変数操作」を選択。

代入先は先程作った、コモンセルフ変数10「現在時間24h」です。「Self」のボタンが凹んだ状態にし、プルダウンメニューから探します。

代入なので演算子は「=」に。

次に「右辺」の作業です。左側を使います。

システム変数を利用しますので、「Sys」のボタンが凹んだ状態にしてください。プルダウンメニューから「Sys80:現在の[時]」を選択。

終わったらOKボタンをクリック。

コマンド欄に反映されていれば大丈夫です。

24時間制を12時間制へ変換するには?

先程のコマンドで取得できる「80 現在の[時]」の時間ですが、24時間制の数字になっています

24時間制は「0時~23時」の表記。つまり、「0~23」の数字が変数に入ります。0時は午前12時のこと。24時ではない点に注意。

取得したタイミングの時間が入ります。

例えば今現在「午後6時」なら、24時間制だと「18時」。結果、「18」がコモンセルフ変数10「現在時間24h」に入るんですね。

しかし、24時間制のままだと午前午後の表示には不適切です(午後6時が午後18時になってしまう)。13時以降の数字を午後1時、午後2時…という風な12時間制に変える必要が出てきました

0~23を午前午後の時間に分けるには、どうすれば良いのか?

答えは「計算」

12で引き算してあげれば、12時間制の表記にできます

午前0時~午後12時については、24時間制の表記でも使えますので問題なし。一方、午後である13時~23時については、このままだと使えません。

この「使えない時間」から「12を引き算」してみてください。

13時-12=1時
14時-12=2時

22時-12=10時
23時-12=11時

みごとに一致。この計算を利用しましょう!

変更するためには、「条件分岐」と「変数操作」のコマンドを使います。

「条件分岐」コマンドを入力

コモンイベント「時間の取得|午前午後」のコマンド欄、変数操作コマンドの下に続けて作業します。

イベントコマンド画面を開き、「7 条件(変数)」を選択。

条件の基準は現在の時間が入っている、コモンセルフ変数10「現在時間24h」にします。Selfボタンを凹んだ状態にして、プルダウンメニューから探しましょう。

12で引き算する対象は「13時~23時」。「13以上」の条件にすれば良いですね

上記以外の場合」の項目をチェック。コモンセルフ変数10「現在時間24h」の中身が「12以下」の場合に、こちらの条件へと飛ばされます。

設定が終わったら入力ボタンをクリック。

コマンド欄に反映されるはずです。

結果を返すための変数を作る

続いて、コモンセルフ変数10「現在時間24h」が13以上の場合に、12を引き算するコマンドを入れます。

計算は変数操作で可能ですが…。ここでもう1つ、変数が欲しくなってきました

取得した時間は、このコモンイベントから呼び出し元のイベントへ渡す計画です。渡すのは午前午後の時間。

ところが、コモンセルフ変数10「現在時間24h」の中身は24時間制のまま。

12で引き算した結果を代入して、コモンセルフ変数10「現在時間24h」の中身を書き換えれば良さそうですけど、後でまだこの中身を利用したコマンドを作る予定です。

なので、専用の変数を別に作ることにします。

コモンセルフ変数11を利用しましょう。作り方はコモンセルフ変数10と同じ。好きな名前をつけてください。ここでは「12h制変換[返]」にしてみました。

後は変数操作で、コモンセルフ変数11「12h制変換[返]」に計算結果を入れてやれば良いですね。

条件分岐後のコマンド欄に入力します。

条件「13以上の場合」は12を引き算する式で。コモンセルフ変数10「現在時間24h」から引き算します。

条件「それ以外の場合」は数字をいじる必要なし。

単にコモンセルフ変数10「現在時間24h」の中身を、コモンセルフ変数11「12h制変換[返]」に代入する計算式にすれば良いだけ。

コマンド欄は以下のとおり。

OKもしくは更新ボタンを押して、コモンイベントの内容を保存しましょう。

午前午後の文字を表示させよう

時間については解決。後は「午前」「午後」の表示が必要ですね。1時と表示されていても、それが午前1時なのか午後1時なのか、わからないからです。

あらゆるマップで時間表示するなら、手打ちよりも「文字列変数」の中身を「特殊文字」で表示するのが簡単でおすすめ

変数と特殊文字の組み合わせなら、午前午後からAMPMへ表示を変えたくなった場合でも、ラクに編集作業できます。

ということで、「文字列変数」を作りましょう

エディターのアイコンメニューから、「システムデータベース」をクリック。

ウディタ システムデータベース

システムデータベース画面のタイプから、「4:文字列変数名」を選択。

空いている行にカーソルを合わせ、IDの欄に好きな変数名をつけてください。行が足りない場合、「データ数の設定」ボタンから増やせます。

今回は6番に「午前午後の表記」という文字列変数を作ってみました。

終わったらOKを押して登録します。

文字列変数の中身を書き換え

コモンイベント「時間の取得|午前午後」の編集画面に戻りましょう。

ここまで入力してきたコマンドの下に追加します。

いきなり入力しても良いですけど、わかりやすくするため冒頭に「コメント文」を入れてみました。緑色の文字がそれ。

単なるメモなのでゲームには影響しません。「1 文章の表示」でメモの内容を入力し、「コメント文」ボタンを押せばできます。

このコメント文の下に、コマンドを入れていきます。

文字列変数「午前午後の表記」に、午前と午後のいずれかを入れます。条件分岐で現在の時間を判断し、午前もしくは午後を代入すればできそうです。

  • 午前:0時~11時
  • 午後:12時~23時

11時以下なら午前を、12時以上なら午後を」という風に、条件を振り分ければ良いですね。

7 条件分岐(変数)」を選択。

Selfのボタンが凹んだ状態にし、「このコモンセルフ10:現在時間24h」を選びます。

最初の項目の条件を「11以下」に。次の項目のチェックボックスをクリックして使用可能にし、「12以上」の条件にすれば完了。

入力ボタンを押せば、コマンド欄へ反映されます。

次に、文字列変数「午前午後の表記」へ、午前と午後の文字を代入する作業です。

条件分岐「11以下の場合」の部分にコマンドを入力。イベントコマンド一覧から「5 文字列操作」を選択。

文字列ボタンが凹んだ状態にし、プルダウンメニューから「S6:午前午後の表記」を選びます。先程作った文字列変数の6番ですね。

演算子は代入の「=」にします。

代入する文字列」の部分で「手動入力」をチェック。スペースに「午前」と打ち込み。入力ボタンを押せばコマンド欄に反映されます。

条件分岐「12以上の場合」も同じ手順でやってください。代入する文字は「午後」にします。

コマンド欄が上のようになっていれば大丈夫です。

コモンイベント「結果を返す」を設定

ここでようやく、「結果を返す」の作業を行います!

コモンイベント「時間の取得|午前午後」の画面、「入力の数/結果を返す」の部分にある「設定」ボタンをクリック。

出てきた画面の下の方にある「結果を返す?」に注目。

「結果を返す」にチェックを入れて、名前と返す値を決めます。

名前部分はわかりやすいもので。コモンイベントを呼び出すときの画面に、この名前が使われます。今回は「現時間12h」にしてみました。

返す値が重要。呼び出し元イベントへ渡したいデータが入っている変数を指定するのがココ。

今回は12時間制の時間を渡したいので、コモンセルフ変数11「12h制変換[返]」を指定。OKを押して画面を閉じます。

コモンイベント「時間の取得|午前午後」の作業はこれで終わり!OKを押して内容を保存しましょう。

マップイベントに時間を渡して画面に表示させるまで

作成したコモンイベントをマップイベントで呼び出す

最初に用意した、マップイベント「ニワトリ」の画面を開きましょう。コマンド欄でコモンイベント「時間の取得|午前午後」を呼び出します。

イベントコマンド画面から「I コモンイベント」を選択。

イベントの挿入」をチェックし、プルダウンメニューから「コモン224:時間の取得|午前午後」を選びます。

この画面はまだ閉じないでください。

「結果を返す」のデータを入れる変数を指定する

画面下の「→結果【現時間12h】」部分のプルダウンメニューから、結果のデータを入れたい変数を決めます。

今回はとりあえずマップイベント「ニワトリ」が持つ、セルフ変数0へ代入することに。「このEv:Self0」を選んでみました。

上の設定により、コモンイベント「時間の取得|午前午後」が実行されたら、セルフ変数0に12時間制の時間が数字(数値)で代入されます。

作業が終わったら入力ボタンをクリック。コマンド欄に反映させます。

時間を画面に表示する

もう少しで終わります!一緒に頑張りましょう!

マップイベント「ニワトリ」に話しかけたら現在の時刻を教えてもらう内容にしたいので、「1 文章の表示」コマンドを使います。

時刻を表示させるために、変数の中身を画面に表示できる「特殊文字」を活用しましょう。

特殊文字で表示する変数は、以下の2つ。

  • 午前午後のいずれかが入っている「文字列変数6 午前午後の表記
  • 12時間制の時間が入っている「セルフ変数0番

特殊文字のルールは以下のとおり。すべて半角で入力します

【文字列変数の6番】
¥s[6]

【セルフ変数の0番】
¥self[0]

これを組み合わせて文字を打ち込むだけ。以下のようになっていれば大丈夫。

入力をクリックし、コマンド欄に反映させましょう。

お疲れ様っ!作業はこれで終わりです!

テストプレイで確認

実際のゲーム画面でイベントを確認してみましょう。テストプレイを起動したら、マップイベント「ニワトリ」に話しかけてみてください。

現在の時間を教えてくれます。

※上は午前中の8時50分頃に話しかけたときのセリフ。記事冒頭のプレイ画像「午後8時(20時)」と比べて、午前午後の表示が異なる点に注目。

午前午後の文字もバッチリですね!

数時間経過したら、同じように話しかけてみましょう。そのタイミングの時間をニワトリが教えてくれるはずです。

やり方に慣れてきたら、分や秒、日付などを表示するコモンイベントにもチャレンジすると良いかもしれませんね。

次回の講座は?

やさしいウディタ講座33はここまで。

次回「やさしいウディタ講座34:キャラが光る!画面が揺れる!エフェクトで演出」では、演出を華やかに、リアルにみせる場合に便利なエフェクトの機能をいくつか解説してみます。

「やさしいウディタ講座」- もくじ
※全講座の目次ページはコチラ。