ウディタ講座 第2回 宿屋の処理
今回はウディタに慣れる為の手始めとして、まず宿屋の処理を組んでみます。サンプルゲームの宿屋は選択肢の表示→「はい」なら全回複といったシンプルなものなので、よくあるRPGのように宿泊費を取るタイプの宿屋をコモンイベント(以下、コモン)で作ってみましょう。
この講座でやること
・コモンへの引数(入力値)の受け渡し
・マップEvからのコモンの呼び出し
・既存コモンのコピーと改造
・F7キー(ピクチャ詳細一覧)の使い方
Step1 仕様検討
まずは仕様の検討です。宿屋の処理を大まかに書くと……こんな感じでしょうか?
※暗転・回復音・宿屋の人のメッセージ等は処理に直接関係ないので省いてます。
開始
選択肢を表示
選択結果が「宿泊する」の場合
所持金≧宿泊費の場合
所持金から宿泊費を引く
全回複
所持金<宿泊費の場合
所持金不足の警告
選択結果が「宿泊しない」の場合
何もしない
終了
せっかくなのでフローチャートも書いておきましょう。このくらいなら頭の中で組んでも問題ありませんが最初ということで……
ところで宿屋の処理ですが、宿泊費が異なるだけで基本的にはどこの町でも使い回すことになりますよね? こんな時は手間を省く為、宿泊費を引数で受け取れるようにしましょう。こうすると町ごとに個別の宿屋イベントを作る必要がなくなり、各所の宿屋からは引数を指定してコモンを呼び出すだけで済みます。
これらを踏まえて以下のような仕様で実装してみましょう。
①マップEvからはコモン1個の呼び出しで済むようにする
②宿泊費を引数で受け取る
③店主の口調は1パターン固定
④宿泊処理の流れは前述のフローチャートに従う
⑤宿泊確認時、所持金の表示(余力があれば)
Step2 コモンの作成
サンプルゲームのコモン欄の空きスペースに『○宿屋の処理』と名付けたコモンを作成します。今回はコモン220番に作成することにしました。
まずは引数の設定から。
数値1にチェックを付けて『宿泊費』と名付けておきます。
これはコモンセルフ変数0(以下、cself[0])に保存されます。
※この時、cself[0]には自動で名前が付くようです。後で右上の『セルフ変数使用状況』から確認しておきましょう。
続いてStep1で決めた仕様に従って処理を組んでいきます。
基本システムでは所持金の取得はコモン20『▲所持金取得』を使用する決まりなので素直に従います。
所持金の増減はコモン3『○お金の増減』を使用します。所持金を減らす場合は負数を指定するように指示があるので、あらかじめ-1をかけておきましょう。
全回複はコモン4『○回復・ダメージ処理』を使用します。宿屋なのでパーティ全員を完全回復でOKです。
宿屋の人の台詞、暗転処理等もお好みで追加していきます。お金の単位(ゴールド・ギル・ペリカとか)はudb[15:0:18]に入っている為、文章表示では\udb[15:0:18]で表示できます。
Step3 コモンの呼び出し
コモンが完成したら実際にマップEvから呼び出してみましょう。サンプルゲームのマップの適当な場所に人を配置して、「I コモンイベント」からStep2で作成した『○宿屋の処理』を選択します。コモン名で呼び出す設定にしておくと、後で位置を返した時などに便利です。
※呼び出し処理が若干重くなるらしいので速度が要求される場合には不向きなようですが、今回は特に問題無いでしょう。
Step2で設定した『宿泊費』が指定できるようになっているので、適当な金額を設定しておきましょう。今回は30を設定しました。
これでマップEvからのコモンの呼び出しはOKです。
Step4 テストプレイ
お楽しみの実行タイムです。テストプレイを開始して、実際に宿泊してみましょう。今回は以下の3パターンについて確認しましょう。
①「泊まる」を選択、かつ、所持金が足りている場合
②「泊まる」を選択、かつ、所持金が不足している場合
③「泊まらない」を選択した場合
・泊まった場合に全回復と所持金の減算ができているか?
・泊まっていないのに回復や所持金の減算がされていないか?
・所持金不足なのに泊まれてしまわないか?
そういったことを重点的にチェックしておきましょう。
Step5 所持金の表示
※この章は余力がある人向けです。実用上は所持金を取得して文章で表示すれば十分なので、完全に趣味の領域です。
基本システムではメニュー画面左下に所持金が表示されていますよね?
あれと同じものを宿屋の選択肢を表示している時に表示してみましょう。
ただし左下だと文章と被る為、表示位置は左上に変更して、ですが。
まず所持金欄のピクチャ番号とそれを表示しているイベントを調べます。こんな場合はメニュー画面でF7キーを押してピクチャ詳細一覧を表示してみましょう。
表示位置から察するに、ピクチャ10011がウインドウで、ピクチャ10012が所持金(文字列ピクチャ)のようです。コモン88『X[移]メニュー描画』の219~235行目の前後が怪しそうですね。
該当のコモンを開いてみると、途中に「おまけ欄(所持金)」と称して所持金を表示している箇所が見つかりました。この処理をコピーして使い回しましょう。
上記のコモンを『○宿屋の処理』の下にコピーして『○所持金の表示』にリネームしてください。他の名前でもかまいませんが、必ず元とは別の名前にすること!(ウディタでは同名のコモンがある場合、下にある方が優先して呼び出される仕様の為)
コモン221『○所持金の表示』を編集していきます。
所持金を表示する部分、および、その為の座標を計算している部分だけを残して、それ以外をバッサリ削除してしまいます。
パラメータ設定部分はcself[8, 18, 19, 20]と座標計算用のcself[60...65]、および、その計算に使用するcself[88, 89]以外は消してしまってよいでしょう。
引数設定画面で、不要な項目を削除しておきます。数値2はチェックを外し、数値1も選択肢から更新モードを削除しておきます。
このままだと左下に表示されてしまう為、表示位置のy座標を変更しておきます。選択部分のy=215(2箇所)をy=0にしておきましょう。
このコモン221『○所持金の表示』を220『○宿屋の処理』から呼び出します。宿泊確認の台詞の前に「表示」モードで、台詞の後ろに「消去」モードで呼び出しを追加します(計4箇所)。
ゲーム画面で表示されていることを確認します。ちゃんと現在の所持金が左上に表示されたでしょうか?
おまけ:改造案
宿屋の処理には色々な改造案が考えられます。
・宿泊時に仲間キャラとのイベント
・宿泊時に一定確率で記念品を贈呈
・目覚めた時に客室に移動
・宿屋ごとの店員の口調の変化
色々と試してみましょう。
なお、宿屋はゲーム中何度も利用するであろう施設なので、演出は短めに留めておくか、長い場合はスキップできる手段を用意しておいた方が良いでしょう。