投稿日:
皆さんこんにちは、伊達あずさです。
前回に引き続き、Custom NPCsの解説とその使い方についてご紹介していきたいと思います。
今回はより実践的なNPCの追加法の第二弾としてCustom NPCsでクエストを発注してくれる人を作ってみたいと思います。
クエストを作成する
まず、手始めに討伐クエストを作ってみます。
クエストの発注者は、前回作った店員(伊達あずさ)に任せることにしましょう。
まずは、クエストの作成からです。
NPC Wandを適当なNPCにでも使用して、Globalのタグを選択します。そして、「Quests」を選択。
新しく開いたウィンドウで、「Add」を押すと、真ん中にあるリストに「new」が追加されるので、「new」を選び、左側にある枠で新しい名前に付け変えましょう。ここでは「討伐クエスト」と命名しました。
ちなみにこれははクエスト本体ではなく、これから作るクエストを入れるためのフォルダみたいなものです。
では、次はクエスト本体を作るために、今命名したばかりの「討伐クエスト」をリストから選び、右上にある「Quests」ボタンを押します。
また同じようなウィンドウが開きますが、今度はクエスト本体を登録するウィンドウになりました。(右上のボタンがQuestsからCategoriesになってますよね?)
先ほどと同じように、「Add」を押すと同じように「new」というものがリストに追加されるので、これを選択、修正していきます。
最初ですから、ゾンビを5体倒すクエストを作ってみましょう。
とりあえずTitleを「ゾンビ討伐」に変更します。
次はCompleted Textを編集しましょう。これは、クエスト達成時に表示されるメッセージです。
このクエストはNPC伊達あずさから発注され、伊達あずさに完了の報告することで達成するクエストにしようと思うので、クエスト達成時のメッセージは如何にも私が言いそうな雰囲気のテキストにしておきます。
ちなみに、テキスト入力のウィンドウは全角入力だとカーソル位置がおかしなことになるなど非常に書きにくいので、一度メモ帳に書いてからコピー&ペーストした方が良いかもですよ。
次はQuestlog Textを編集します。
これは、クエスト受注したプレイヤーがクエストを完了するまでの間、見る事が出来るテキストです。
まあ、クエストを受けた人が、その内容を忘れてしまった場合などの確認用ログですね。
とりあえず、こんな感じで”倒すべき敵”と”討伐数”、そして、”終了条件”などを書いておけば間違いないでしょう。
次はRewardの設定です。
ここで設定するのはクエスト完了時の報酬になります。
Random Itemが「いいえ」の場合は右にある9マスの枠内にある全てのアイテムがクエスト報酬となります。
Random Itemが「はい」の場合は、9マスの枠の中でアイテムが入っている枠のどれかがクエスト報酬になります。
上図でRandom Itemを「はい」にした場合は、クエスト報酬がStone Coin×3(50%)かBronze Coin×1(50%)のどちらかということになります。
ちなみにExpを設定すれば、経験値も追加報酬として出すことができます。
尚、クエスト報酬で設定するアイテムは、インベントリからアイテムをドラックして指定するため、持っていないアイテムは設定できません。
続いてTypeを設定します。
TypeにはItem(設定したアイテムを持ってくる)、Dialog(設定したダイヤログを見る(誰かの話を聞くみたいなことです))、Kill(設定した生物を倒す)、Location(設定した場所に到達する)、AreaKill(設定した場所内で指定した敵を倒す)の5つがあります。
今回は討伐クエストを作っているので、TypeをKillにした上で、編集ボタンを押します。
このウィンドウでは、討伐するモンスターと討伐数を設定します。
1つのクエストで3種類までモンスターを設定できるみたいですね。
とりあえず今回はゾンビを5体倒すクエストにするつもりなので、こんな感じに設定しました。
倒すモンスターの名前は、左の細長い枠をクリックすると、右に敵のリストがでるのでそこから選びましょう。もちろん直接入力することもできるんですが、綴りとか間違ったら嫌ですしね。
次はRepeatableとComplete by NPCを設定します。
Repeatableは、このクエストを繰り返して受注することができるかという設定です。
いいえ、はい、MC Daily、MC Weekly、RL Daily、RL Weeklyの6つの中から選ぶ事が出来ます。
「いいえ」の場合は1度クリアした後は二度とこのクエストを受ける事が出来ません。(もちろん違うプレイヤーは受けられます)
「はい」の場合はクエスト完了後、直ぐ、このクエストを受け直す事が出来ます。
「MC Daily」の場合はMinecraft内の1日が経過した後に再度クエストを受注できるようになります。
「MC Weekly」はMC Dailyの1週間版です。
「RL Daily」は現実時間で1日、「RL Weekly」は1週間が経過した後に再度クエストの受注できるようになるっぽいですが、実際に試したことが無いのでどうなるかわかりません・・・
次にComplete By NPCですが、このボタンをクリックするとInstant Completeに変更することもできます。
Complete By NPCの場合は、クエストの終了条件を満たした上で、指定したNPCに話しかけることでクエストが完了します。
Instant Complateにすると、クエストの終了条件が満たされた瞬間にその場でクエストが完了します。
このクエストでは、ゾンビを5体討伐した後に、伊達あずさに完了報告をすることにしているので、初期設定のままにしておきましょう。
最後はAdvancedの設定ですが・・・一応ここでは、クエスト達成時にFaction(派閥の友好度みたいな?)を変動させたり、いろいろできるのですが、今回は特に弄らないでおきます。
とりあえずはこれでクエストの作成完了です。
クエストの発注ダイアログを作る
さて、クエスト本体は完了したわけですが、実はこれだけではクエストを発注させる事が出来ません。
NPCにクエストを発注させるためには、それ用のダイアログというものが必要になるんですよね。
ダイアログというのはユーザーに通知を行うための小さいウィンドウのことで、まあ要するにメッセージに対して、「はい」とか「いいえ」とかユーザーが何らかの返答をすることができるもののことだと思っていただければいいかと!
ダイアログもクエストの時と同様、Globalタグから設定します。
Dialogsというボタンを押して、ダイアログを作って行きましょう。
ちなみにGlobalタグで作るものはNPC固有のものではないので(Globalってぐらいですしね!)、どのNPCのウィンドウから作っても構いません。
さて、クエストの作成の時と同じようなウィンドウが開きました。
今度は最初からVillagerなるサンプルが入ってますが、気にせず「Add」を押して、「new」を追加しましょう。
ここで作るのは例の如く実際のダイアログではなく、ダイアログを入れるフォルダなので、ゾンビ討伐依頼という名前にしてみました。
今作ったゾンビ討伐依頼を選択した上で、右上にあるDialogsを押しましょう。
今度こそダイヤログを作成しますよー
例の如く「Add」ボタンを押し「new」を追加した上で、それを修正していきます。
まずはTitleを依頼確認としましょう。
このダイアログでは、プレイヤーに依頼の内容を説明した上で、依頼を受けるかどうか判断してもらうことにしましょう。
まずはDialog Textから。
これはダイアログに表示されるメッセージそのままですね。
このダイアログはゾンビ討伐のクエストを受けるかどうか判断させるためのものなので、それっぽいテキストにしてみました。
次はAvailableです。
ここでは、このダイアログが表示されるために必要な条件を設定する事が出来ます。
例えば、あるクエストを受けている間だけ表示されるダイアログにしたり、逆にあるクエストを受けている時は表示されないダイアログにしたりすることができます。
このダイアログはゾンビ討伐の依頼を発注するためのものですので、クエスト受注中にも表示されるとイメージ通りになりません。
ですので、Select Questからゾンビ討伐をWhen Not Activeに設定しておきましょう。
これで、ゾンビ討伐を受注している時にはこのダイアログが表示されなくなります。
他にも、Faction(派閥との関係)をダイアログ表示の条件にしたり、レベル、時間(朝/昼/昼夜)なども条件に設定できますが、ここでは特に弄らないでおきます。
次はFaction Optionsです。
ここでは、ダイアログの表示と共に各Factionの友好値を増減させることができるのですが、そもそもFaction自体をデフォルトから設定変更してませんし、今回は特に弄らないでおきます。
次はDialog Optionsです。
ここではこのダイアログに対するリアクションを設定する事が出来ます。
要するに、このダイアログを見たプレイヤーが選べる選択肢みたいなものでしょうか。
このダイアログはゾンビ討伐の依頼を受けるか受けないか判断させるためのものなので、選択肢は「依頼を受ける」、「戻る」(依頼を受けない)の2つにします。
選択肢毎に選んだ際に起こることを設定していきます。
先ずは依頼を受けるの選択肢における設定なのですが・・・
ちょっとまずいことになりました。実は、クエスト開始もそれ用のダイアログを作る必要があるのです。
つまり、「依頼を受ける」を選んだ結果、「クエスト開始」というダイアログが表示されるよう、ここで設定しなければならないのに、クエスト開始のダイアログをまだ作っていませんでした!
というわけで、今は一旦「依頼を受ける」の設定は保留します。
戻るの選択肢が選ばれた場合は、即座にNPCとの会話が終了するようにしましょう。
なので、Option TypeをCloseに設定します。
他にもSelect QuestやSelect Sound、Extra Optionsといった設定がありますが、今回はこの辺は特に弄る必要が無いので省略!
今度は先ほど作りそびれていたと言ったクエスト開始のダイアログを作成します。(Addを押して再度作られたnewを編集します)
このダイアログはゾンビ討伐のクエストを開始するためのダイアログになります。
このダイアログが表示されたということは、クエストが受注されたということなので、Dialog Textにはクエスト開始直前のセリフを記述します。
後はSelect Questのボタンを押し、開始するクエストを選択するだけです。
これで、クエスト開始のダイアログは完成!
クエスト開始のダイアログが完成したので、依頼確認のダイアログに戻り、Dialog Optionsから依頼を受けるの選択肢を選んだ際のアクションを設定しておきましょう。
依頼を受けるが選択された場合、クエスト開始のダイアログに遷移させたいので、Option TypeをDialogにし、クエスト開始のダイアログを設定します。
これで、万事OK!
この2つでクエストの発注は可能なのですが、このNPCは店員も兼ねています。
よって、このまま依頼確認のダイアログをNPCに直に結びつけてしまうと、肝心の店員としての役目が果たせなくなってしまいます。
そこで、お店でアイテムを購入したいのか、クエストを受けたいのかプレイヤーに判断してもらうためのダイアログを作りましょう。
Titleは会話開始とでもします。(何かあまり良くない名前かも・・・)
Dialog Optionsではこんな感じの選択肢を用意します。
買い物がしたいが選ばれた場合にはOption typeをRoleにし、取引画面が表示されるようにします。
仕事を探しているが選ばれた場合には依頼確認のダイアログが表示されるようにします。
これでクエスト発注に必要なダイアログが全て完成しました!
NPCにクエスト発注のダイアログを紐づける
最後はNPCにクエスト発注のダイアログを設定すれば完成です。
早速、店員伊達あずさにNPC Wandを使って、先ほど作成したダイアログを設定しましょう。
流石に睡眠中にクエストを発注させるわけにはいかないので、AdvancedのタグからNightを選択し、EditingModeをLoad Dayにしておきましょう。
これで、これからする設定は昼(店員が起きている時)だけの設定になります。
開いたウィンドウのSelect Optionのボタンを押して、会話開始のダイアログを選択します。
これだけ!設定おしましい!
NightのEditingModeをいいえにすることを忘れないでくださいね。
設定完了後、NPCに話しかけるとこんな感じになります。
買い物がしたいを選べば、そのままトレード画面が表示され、仕事を探しているを選ぶとクエスト受注の確認画面が表示されます。
クエストが進行している最中は、「仕事を探している」の選択肢が無くなりましたね!
Questlog Textで設定した文章はこんな感じで表示されます。
ゾンビを5体討伐した後に、NPC伊達あずさに話しかけるとクエストが完了しました。
何かテキストがウィンドウからはみ出ちゃってますね・・・自動改行してくれないようなので、自分で綺麗に見えるように改行する必要があるみたいですね。ちょっと不便!
ちなみに、クエスト達成の報告はNPCが寝ていようともお構いなしみたいです・・・
これでCustom NPCsの解説とその使い方(クエスト発注編)は終了です。
ちょっと使用感に癖はありますが、慣れれば簡単にいろんなNPCを作れるので、皆さんも是非試してみてくださいね!
Prev | Next
Studio POPPOのプログラム兼システム担当です。
ウォーキング・デッド大好き!ダリルかっこいいよっ!主食はキノコです。
質問です。すいません。
読んでいて少し思ったんですが、NPCに
最初に話しかけたときにしか言わないテキストを設定することとかできますか?
つまりは一回目しか喋らない言葉とか設定できますか?
あと、一つ前の記事のことですが、お金の下位互換と上位互換の
クラフトレシピがバニラのアイテムじゃないとできません。
やり方教えてくれると嬉しいです。
あと最後に(ほんとに長くてすみません、、)ゲームでよくあるような、
小目的をクリアしていって最後にボスを倒すみたいのはできますか?
わかりにくいと思うので、やりたいことを言うと、
ゾンビを5体討伐→スケルトンを5体討伐→特定の場所に到達→
→特定の場所に到達(二回目)→特定の場所にいるボスを討伐
みたいなことをしてみたいんですが、できますか?
答えてくれるとありがたいです。
長文失礼しました。
結論から言うと、全て実現できます。
1. 1度しかしゃべらないテキストの実現
例えば、最初に話しかけた時は「初めまして」と言い、以後は「こんにちは」というNPCを作るとします。
GlobalタグからDialogsを選び、Firstというダイアログを作成し、Dialog Textに「初めまして」と入力しておきます。
次に同じようにしてSecondというダイヤログを作成します。こちらのDialog Textには「こんにちは」と入力、更にAvailability Optionsを選び、「Select Dialog」からAvailableの1行目をAfterにし、Select Dialogから先ほど作ったFirstのダイアログを選択します。
これで、SecondというダイアログはFirstというダイアログを見たことがある人にしか表示されないようになります。
続いて、対象となるNPCをNPC Wandで選択し、AdvancedのタブからDialogsを選択、0番目にSecond、1番目にFirstのダイアログを登録します。
これで、最初に話しかけた時だけ「初めまして」と表示され、二度目以降は「こんにちは」と表示されるようになるはずです。
2. CraftTweakerによるお金の変換クラフト
1枚のStoneCoinと5枚のWoodenCoinを変換するクラフトレシピのサンプルです。
recipes.addShapeless(<customnpcs:npcCoinStone>, [<customnpcs:npcCoinWooden>, <customnpcs:npcCoinWooden>, <customnpcs:npcCoinWooden>, <customnpcs:npcCoinWooden>, <customnpcs:npcCoinWooden>]);
recipes.addShapeless(<customnpcs:npcCoinWooden> * 5, [<customnpcs:npcCoinStone>]);
以上のように記述したファイルをscriptsの下に置けば、StoneCoin ⇔ WoodenCoin*5の変換がクラフトによって可能になるはずです。
3. クエストを順番通りに進める
「1度しかしゃべらないテキストの実現」の項で説明したAvailability Optionsにはダイアログだけではなく、クエストも設定することができます。
これを利用して、作成したクエストをAvailability Optionsで数珠つなぎにすることで「Aクエスト終了後にBクエストが受注可能になる」といったようなクエストの発注条件を設定することができます。