スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ゲーム制作日記<35> 討伐クエスト

op.png



みなさん、こんばんは。
ネコタです。



今回も恒例の『 コモンイベントで作るちょっとしたシステム 』 のご紹介。


今回ご紹介するシステムは、みなさん大好き
「討伐クエストシステム」です。


仕様としては、モンスター討伐の依頼を受注し、指定モンスターが討伐された数をカウントします。

討伐数が目標数以上に達したら、イベントクリアのメッセージを出現させ、プレイヤーにアナウンスします。

また、フィールド上で指定したキー(PgUp)を押すことで、現在の討伐数と目標までの数をメッセージで表示させます。

討伐クエストのクリア報告をすると、報酬をもらうことが出来ます。

討伐クエストは複数受注可能で、それぞれのクエストが受注されていない場合は、討伐数にカウントされません

一度クリアしたクエストでも、再受注は可能です。


今回の仕様はこんな感じとなっていますが、あとは、お好みで改変してください。

細かいイベントの仕様までは、こちらで作りきれないので(^^;



それでは、実際にどういった挙動なのかを確認してみましょう。




tc27-4.png

ここに、討伐クエストを受注できるギルドがあります。



tc27-5.png

ものすっごく感じの悪いやつでした。
なんで、こんなギルドに入っちゃったんだろう。



tc27-6.png

まあ、四の五の言っても仕方がないので、
先ずはクエストを受注しましょう。

とりあえず、今回は一番上の、ホーネットの討伐に挑んでみます。



tc27-7.png

なるほど。
3匹倒して来ればいいのね。

腕試しには、ちょうど良さそうなクエストです。

しっかし、こいつの口の利き方は何とかならんのか?(笑)



tc27-8.png

頑張ってくれたまうよ、畜生め。



tc27-11.png

では、ちょうど横に、飛んで火に入るなんちゃらさんがおりますので、さっそく狩ってきましょう



tc27-9.png

おお、ちょうど良さそうな構成ですね。
一気に2体狩れちゃいます。



tc27-25.png

サクッとぶっ飛ばしまして。



tc27-10.png

PgUpキー(Fn+↑)で討伐数を確認してみると、こんな感じ。



tc27-9.png

で、目標までもうちょっとなので、もう1回狩ります。


tc27-25.png

難なく勝利しました。


tc27-15.png

お、討伐目標を達成したようです。
それでは、帰って報告しましょう。

でも、あいつと話すのやだなぁ(笑)



tc27-16.png

ほんっとにコイツは!(笑)
開口一番、出てくる台詞がそれかよっ!



tc27-17.png

一応、ちゃんと仕事はしているみたいですね。
選べる項目は、それなりにしっかりしています。

それでは、今回は目標を達成したので、討伐報告をしましょう。



tc27-18.png

ぁあん?!



tc27-19.png

思ってても、口にすんなっ!
てか、顧客に対してなんてことを思ってんだっ!



tc27-20.png

もう、早く報告を済ませて帰りたい・・・



tc27-21.png

きちんと、仕事はしてくれるみたいですね。
そこは、意地悪しないようです。



tc27-22.png

だから、一言余計なんだよ(笑)



tc27-23.png

なんで、コイツこんなに上から目線なの?(笑)



tc27-24.png

ようやく、お目当ての報酬がもらえました。

このピータというアイテムは、私の作品で登場するオリジナルの回復アイテムです。FFでいうポーション的な物です。



と、挙動はこんな感じです。

会話に成功報酬の説明など入れてもいいですし、工夫はいろいろ。
今回はひな形として、こんな具合にしてみました。

とりあえず、良いものをくれるとしても、
あいつの依頼はもう受けたくないですね(笑)



それでは、まず必要なモノの確認から。


【必須】
・スイッチ ×(3×討伐モンスターの種類)
・変数 ×(2×討伐モンスターの種類)
・スイッチ ×2
・変数 ×2
・コモンイベント ×1
・受注クエストの受付イベント ×1




さて、今回の討伐システムは、受付イベントを作る前に、いくつか準備が必要となります。

まず、ゲーム開始した後、どこかで何も受注していないことをフラグ付けするためのスイッチ(ここでは、【討伐クエ】無登録)をONにしておきましょう。理由は後述します。



次に、敵グループでのバトルイベントの設定です。

tc27-26.png

まず、討伐対象となる全ての敵キャラについて、「HP<=0の時」という条件で、討伐数を+1するイベントを組みます。討伐イベントを受注してないときに討伐数が増えないように、もう1つ条件付けをするのを忘れないように。


実行内容はこんな感じ。

条件分岐:【討伐クエ】ホーネットがON
変数の操作:#0172 【討伐数】ホーネット += 1
変数の操作:#0176 【討伐】目標ホーネット -= 1

分岐終了




tc27-13.png

まず、一つ目の条件として、バトルイベントの「条件」という箇所をクリックすると、このように表示されます。

敵キャラHPにチェックを入れ、#○と書いてあるところをクリックすると、


tc27-14.png

このように、そのグループ内の敵を選択することが出来ます。
HPは0%以下に設定すれば、その敵が倒された瞬間に条件を満たし、中身のイベントが起動します。

しかし、クエストを受注していないのに討伐数が増えるとウマくないので、条件分岐で討伐クエスト受注用のスイッチを条件にしましょう。

イベントの中身は、討伐数を増やすと同時に、討伐目標数を減らします。



次に、コモンイベントの設定です。

tc27-27.png

トリガーは並列処理、条件のスイッチは適当に名前を付けて設定しましょう。ここでは【討伐クエ】判定という名前にしています。

以下、実行内容です。

条件分岐:【討伐クエ】判定ホーネットがON
条件分岐:【討伐数】ホーネット ≥ 3
文章:なし, 暗くする, 中
文章
文章討伐クエスト【ホーネット討伐】の討伐数を達成しました!
文章ミクダ=シオに話しかけて、アイテムを貰いましょう!
スイッチの操作:#0302 【討伐クエ】判定ホーネット = OFF

分岐終了

分岐終了
条件分岐:【討伐クエ】判定スパイダーがON
条件分岐:【討伐数】スパイダー ≥ 4
文章:なし, 暗くする, 中
文章
文章討伐クエスト【スパイダー討伐】の討伐数を達成しました!
文章ミクダ=シオに話しかけて、アイテムを貰いましょう!
スイッチの操作:#0304 【討伐クエ】判定スパイダー = OFF

分岐終了

分岐終了
条件分岐:【討伐クエ】ホーネットがON
変数の操作:#0175 【討伐】未達成 += 1

分岐終了
条件分岐:【討伐クエ】スパイダーがON
変数の操作:#0175 【討伐】未達成 += 1

分岐終了
条件分岐:【討伐】未達成 = 0
スイッチの操作:#0306 【討伐クエ】判定 = OFF

分岐終了
変数の操作:#0175 【討伐】未達成 = 0
条件分岐:ボタン[ページアップ]が押されている
条件分岐:【討伐クエ】ホーネットがON
条件分岐:【討伐クエ】判定ホーネットがON
文章:なし, 暗くする, 中
文章
文章現在の討伐数
文章ホーネット:\c[2]\v[172]\c[0]体
文章目標まで、あと\v[176]体

それ以外のとき
文章:なし, 暗くする, 中
文章
文章現在の討伐数(目標達成済み)
文章ホーネット:\c[2]\v[172]\c[0]体

分岐終了

分岐終了
条件分岐:【討伐クエ】スパイダーがON
条件分岐:【討伐クエ】判定スパイダーがON
文章:なし, 暗くする, 中
文章
文章現在の討伐数
文章スパイダー:\c[2]\v[173]\c[0]体
文章目標まで、あと\v[177]体

それ以外のとき
文章:なし, 暗くする, 中
文章
文章現在の討伐数(目標達成済み)
文章ホーネット:\c[2]\v[173]\c[0]体

分岐終了

分岐終了

分岐終了
ウェイト:5フレーム



内容としては、いくつかのパートに分かれています。

まず、各モンスターの討伐クエストをクリアしているかをスイッチで条件付けしています。

ちょっと紛らわしいですが、クリアしていない場合はON、クリアしている場合はOFFになります。

クエストをクリアしておらず、かつ、討伐数が指定の数値以上の場合、クリアメッセージを表示し、クリア判定のスイッチをOFFにします。そうでない場合は、飛ばされます。


次に、受注中で未達成のクエストがいくつ残っているかの判定を行います。

まず、受注中クエストの判定をスイッチ条件付けします。
これは、ONなら受注中で、OFFなら受注していないことになります。

受注中(目標達成していても未報告のもの)がある場合は、変数:未達成を+1します。これを、各クエストについて評価していきます。

そして、受注中のものが1つもない(未達成=0)の場合には、このコモンイベントのスイッチを切って、処理を終了させます。

この処理はスイッチがONである限り無限にループして、常に条件を満たしているか監視していますので、最後に変数:未達成=0にしてリセットするのを忘れないようにしましょう。



最後のパートは、PgUpキー(Fn+↑)を押したときの処理です。現在の討伐数は、討伐クエストの条件が達成済みかどうかで変えています。

討伐クエストが達成済み(【討伐クエ】判定モンスター名がOFFの時)は、目標までの残りを表示しないメッセージとし、未達成の場合は目標までの残りを表示します。

これを、各討伐クエストについて作っていきます。
複数モンスターを狩るクエストを作ったときは、ちょっと面倒くさい形になりそうです。




これで、受付イベントの前準備ができました。
既に疲労困憊かもしれませんが、最後の大仕事です。


それでは、受付イベントの内容に参りましょう。


tc27-1.png


tc27-2.png


内容は2ページありますが、1回目(初対面)に話したときと2回目では会話が違う方が良いかなと思い、分けているだけです。また、初回はクエスト報告もないので、不要な選択肢を消しています。

なので、今回は2ページ目の内容だけ解説していきます。

スイッチ等の条件やトリガーは、普通の会話イベントと同じ作りなので、割愛させていただきます。


以下、実行内容です。

文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おや、まだいたのか。
ループ
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「今回は何をするんだい?
選択肢の表示:ホーネットを討伐, スパイダーを討伐, 討伐報告, 討伐をあきらめる, なんでもない (ウィンドウ, 右, #1, #5)
ホーネットを討伐のとき
条件分岐:【討伐クエ】ホーネットがON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おや、既に登録済みのようだね。
文章 こんなところで油売ってないで、
文章 さっさと討伐してきてくれよ。

それ以外のとき
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「討伐数が3を超えたら、報酬をくれてやる。
文章 ホーネット討伐に挑戦するのかい?
選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
はいのとき
スイッチの操作:#0301 【討伐クエ】ホーネット = ON
スイッチの操作:#0302 【討伐クエ】判定ホーネット = ON
スイッチの操作:#0306 【討伐クエ】判定 = ON
変数の操作:#0176 【討伐】目標ホーネット = 3
スイッチの操作:#0305 【討伐クエ】無登録 = OFF
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「それじゃあ、頑張ってくれたまえ。
ループの中断

いいえのとき

分岐終了

分岐終了

スパイダーを討伐のとき
条件分岐:【討伐クエ】スパイダーがON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おや、既に登録済みのようだね。
文章 こんなところで油売ってないで、
文章 さっさと討伐してきてくれよ。

それ以外のとき
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「討伐数が4を超えたら、報酬をくれてやる。
文章 スパイダー討伐に挑戦するのかい?
選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
はいのとき
スイッチの操作:#0303 【討伐クエ】スパイダー = ON
スイッチの操作:#0304 【討伐クエ】判定スパイダー = ON
スイッチの操作:#0306 【討伐クエ】判定 = ON
変数の操作:#0177 【討伐】目標スパイダー = 4
スイッチの操作:#0305 【討伐クエ】無登録 = OFF
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「それじゃあ、頑張ってくれたまえ。
ループの中断

いいえのとき

分岐終了

分岐終了

討伐報告のとき
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「え、君みたいな奴が?
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おっと、ごめんよ。
文章 心の声が漏れてしまったよ。
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「それじゃあ、報告を聞こうか。
条件分岐:【討伐クエ】無登録がON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おや?
文章 何も登録してないじゃないか。
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「適当なこと言っちゃだめだよ、君?

それ以外のとき
条件分岐:【討伐クエ】ホーネットがON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「現在のホーネット討伐数は\c[2]\v[172]\c[0]だね。
条件分岐:【討伐数】ホーネット ≥ 3
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おめでとう。目標達成だ。
文章 正直、ここまで出来るとは思ってなかったよ。
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「これが、報酬だ。
文章 持っていきなさい。
アイテムの増減:ピータ + 1
文章:なし, 暗くする, 中
文章
文章          \c[4]ピータ\c[0]を手に入れた。
変数の操作:#0172 【討伐数】ホーネット = 0
スイッチの操作:#0301 【討伐クエ】ホーネット = OFF

分岐終了

分岐終了
条件分岐:【討伐クエ】スパイダーがON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「現在のスパイダー討伐数は\c[2]\v[173]\c[0]だね。
条件分岐:【討伐数】スパイダー ≥ 4
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おめでとう。目標達成だ。
文章 正直、ここまで出来るとは思ってなかったよ。
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「これが、報酬だ。
文章 持っていきなさい。
アイテムの増減:クォーレ + 1
文章:なし, 暗くする, 中
文章
文章         \c[4]クォーレ\c[0]を手に入れた。
変数の操作:#0173 【討伐数】スパイダー = 0
スイッチの操作:#0303 【討伐クエ】スパイダー = OFF

分岐終了

分岐終了
注釈:未達成がある場合の処理です。
条件分岐:【討伐クエ】ホーネットがON
変数の操作:#0175 【討伐】未達成 += 1

分岐終了
条件分岐:【討伐クエ】スパイダーがON
変数の操作:#0175 【討伐】未達成 += 1

分岐終了
条件分岐:【討伐】未達成 ≥ 1
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「それじゃあ、引き続き頑張ってくれたまえ。
変数の操作:#0175 【討伐】未達成 = 0

それ以外のとき
スイッチの操作:#0305 【討伐クエ】無登録 = ON

分岐終了
注釈:クエスト受注処理を終了します。
ループの中断

分岐終了

討伐をあきらめるのとき
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「あ、そう。
文章 ま、君みたいな奴にはどれも荷が重いからね。
文章 仕方ないよ。
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「それじゃあ、登録状況を確認するから、
文章 ちょっと待ちたまえ。
文章 今、君が討伐登録しているのは・・・
条件分岐:【討伐クエ】無登録がON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「おや?
文章 何も登録してないじゃないか。
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「適当なこと言っちゃだめだよ、君?

それ以外のとき
条件分岐:【討伐クエ】ホーネットがON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「ホーネットの討伐クエストを諦めるかい?
選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
はいのとき
スイッチの操作:#0301 【討伐クエ】ホーネット = OFF
スイッチの操作:#0302 【討伐クエ】判定ホーネット = OFF
変数の操作:#0172 【討伐数】ホーネット = 0
変数の操作:#0174 【討伐】キャンセル数 += 1

いいえのとき

分岐終了

分岐終了
条件分岐:【討伐クエ】スパイダーがON
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「スパイダーの討伐クエストを諦めるかい?
選択肢の表示:はい, いいえ (ウィンドウ, 右, #1, #2)
はいのとき
スイッチの操作:#0303 【討伐クエ】スパイダー = OFF
スイッチの操作:#0304 【討伐クエ】判定スパイダー = OFF
変数の操作:#0173 【討伐数】スパイダー = 0
変数の操作:#0174 【討伐】キャンセル数 += 1

いいえのとき

分岐終了

分岐終了
条件分岐:【討伐】キャンセル数 > 0
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「オッケー。
文章 討伐登録を削除したよ。
変数の操作:#0174 【討伐】キャンセル数 = 0
注釈:受注中のクエストがないか判定します。
条件分岐:【討伐クエ】ホーネットがON
変数の操作:#0175 【討伐】未達成 += 1

分岐終了
条件分岐:【討伐クエ】スパイダーがON
変数の操作:#0175 【討伐】未達成 += 1

分岐終了
条件分岐:【討伐】未達成 ≥ 1
変数の操作:#0175 【討伐】未達成 = 0

それ以外のとき
スイッチの操作:#0305 【討伐クエ】無登録 = ON

分岐終了

それ以外のとき
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「君、もしかして冷やかしかい?
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「僕は君と違って、忙しいんだ。
文章 冷やかしならあっちに行っててくれないかい?
ループの中断

分岐終了

分岐終了

なんでもないのとき
文章:Actor2(1), ウィンドウ, 上
文章ミクダ=シオ
文章「なんだ、冷やかしかい?
文章 用がないなら、話しかけないでくれたまえ。
ループの中断

分岐終了

以上繰り返し



選択肢やら条件分岐やらがいっぱいで、ごちゃごちゃしてます(^^;

内容が濃厚なので、かいつまんで説明させていただきますね。


あと、最初のデモ画像では語られなかったやり取りが幾つか載っていますので、もし良かったら読んでみてください(笑)



まず、選択肢全体をループで囲っているのは、何かしらをキャンセルなどした後の処理のためです。

何度も話しかけるのは面倒なため、元の選択肢表示の画面に戻ってくるための処理になります。



次に、クエストを受注する選択肢を選んだ場合ですが、スイッチをたくさんONにする必要があります。

クエスト受注フラグのスイッチ
判定フラグのスイッチ
各クエストクリア判定フラグのスイッチ


この3つをONにします。これらのフラグは、先ほどの準備で使用されています。

また、討伐目標の変数を設定しておきます。
(残り○体と表示するための変数になります)

そして、何も登録されていないときのフラグ(【討伐クエ】無登録)をOFFにします。


このフラグの役割ですが。
仮に、このフラグを作らない場合を想定してみましょう。

何も受注していない状態を判定するためには、全ての受注クエストがあるかどうかを見なければなりません。
それら全てが否定された場合に、初めて”受注なし”となります。

例えば”受注なし”の場合のメッセージとして「何も登録されていません」を出したいと思ったとき、この方法ではかなり面倒くさい条件分岐を組むことになります。(具体的には、最終的にゲームが完成した後で、全ての受注可能クエストの条件がOFFであるときの条件分岐をひたすらつなげることになります。場合によっては100個以上になるかもしれません)

それは、あまりにも現実的な方法ではないため、このフラグが必要となります。

これがあれば、”受注なし”フラグがONの時、という条件分岐を1個組めば、それで完了です。



次に、討伐報告の時の選択肢ですが。

報告時は、まず”受注なし”フラグが立っていないかを見ます。(条件分岐:【討伐クエ】無登録がON)

これがONなら、受注クエストは無いため、他の処理をすべてすっ飛ばします。


各クエストクリア時の処理としては、適当な会話と報酬を入れて、討伐数=0にリセットし、討伐クエスト受注フラグを外します。

他のONにしていたスイッチ類は、コモンイベントの処理によりクエストクリア時にOFFになっているので、これだけでOKです。


そして、選択肢分岐の最後に未達成クエストがあるかどうかで「引き続き頑張ってくれ」という台詞を言わせたいために、未達成クエストがあるかどうかの判定処理を行っています。

条件分岐で、残っている受注フラグの数だけ変数:【討伐クエ】未達成を+1し、未達成が1以上なら「引き続き頑張って」という台詞が入ります。もし、この条件を満たせない(未達成=0の時、すなわち受注なし)の場合には、”受注なし”フラグ(【討伐クエ】無登録)をONにしておきます。



次に、討伐クエストの依頼をキャンセルする場合です。

実行中クエストを検索して、1つ1つキャンセルするか尋ねていきます。

このサンプルでは、キャンセルが1つも無い場合の分岐を作りたかったので、キャンセルフラグとして変数:【討伐クエ】キャンセル数を設定しておきました。何もキャンセルしなかった場合には嫌味を言われます(笑)


選択肢分岐の最後に、受注中のクエストが無いかを判定します。何もなくなってしまった場合には、”受注なし”フラグ(【討伐クエ】無登録)をONにしておきます。



最後の選択肢「なんでもない」は、単に、会話キャンセルの選択肢です。




以上が、討伐クエストの内容でした。

思った以上に、やっている処理が多いことに気が付くと思います。


ここまで面倒くさいと、プラグインにしてもらいたくなりますね(笑)






ではでは、今日はこの辺で。
ネコタでした。





↓お役に立ちましたら、クリックをお願いします↓
にほんブログ村 ゲームブログへ
にほんブログ村

にほんブログ村 ゲームブログ ゲーム制作へ
にほんブログ村

ブログランキング・にほんブログ村へ
にほんブログ村
スポンサーサイト

コメント

Secret

No title

システム構築お疲れ様です。

討伐クエストだけでなく、
「x個拾ってきて(x個以上はボーナス)」の
お使いクエなどにも色々応用が利きそうですね。

しかしこの受付のミクダさん・・・
この高圧的な感じ・・・
新入社員の時の上司がちょうどこのような方でしたw
思い出すだけで・・・

Re: No title

いつもありがとうございます。
そいつは、悪い上司でしたね。

討伐対象にして良いと思いますw
プロフィール

猫民のんたん

Author:猫民のんたん

ネコタ:ゲーム作りが趣味の薬剤師。本職とゲーム作りの2足の草鞋を履きこなそうと日々奮闘。

毎週曜日と曜日or曜日に更新予定。


ミノン:ゲーム作り初心者で1児の母。前職はSE/PG。子育てをしながらゲーム作りを行おうと、日々奮闘中。

毎週曜日にブログ更新予定♪

最新記事
最新コメント
月別アーカイブ
カテゴリ
フリーエリア
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。