投稿日:
皆さんこんにちは、伊達あずさです。
前回に引き続き、Custom NPCsの解説とその使い方についてご紹介していきたいと思います。
今回はより実践的なNPCの追加法としてCustom NPCsでアイテムのトレードが可能な店員さんを作ってみたいと思います。
お店を作る
とにもかくにも、今回は店員さんを追加するわけですから、お店がないと始まりません。
とりあえず簡素なお店を作ってみました。
こちらがお店スペースで・・・
見取り図的にはこんな感じのお店です。(カ:カウンター、ベ:ベッド)
お店と生活スペースを一体化させたのにはちゃんとした理由があるのですが、それはまた後ほど説明するとして・・・何かバニラ環境では見かけない装飾ブロックや武器がいくつか見えますね。
と言っても、別に家具Modを入れたりしているわけではないんですよ?
実はCustom NPCsには家具や武器も幾つか同梱されているんです。しかも、中には魔法の効果がある武器などもあったりするのです。
NPCを追加するだけのModかと思いきや、実はCustom NPCsには武器Modや家具Modとしての一面もあるんですね~
店員さんを配置する
前回作ったお店の外でクルクル回り続けている私のNPCを今回は店員さんとして利用することにします。
まずは回り続けるのを止めて欲しいので、AIからMovementを選択。
さらに、Moving typeをStanding、AnimationをSittingに設定しましょう。
設定が上手く行くと、こんな感じでNPCが座ります。
後は、店員としての所定の位置に移動させるだけです。
NPC Patherで私を選択(右クリック)した後、更にお店のこの位置(見取り図の座標だと[03:05](横:縦))を指定します。
椅子など右クリックでアクションを起こしてしまう家具がある場所を指定する場合はスニークしながら右クリックすると良いです。
そして、今追加された一番下の座標以外、全て削除してしまいましょう。
そのまましばらく待つと、NPCが先ほどの座ったままの状態でワープしてきます。
これでよし・・・と、しても良いんですが、何かちょっと変な方向を見て座っているのが気になりますね。
まあ、話しかけたりするとこちらを向いてくれるので、支障はないのかもしれませんが、もう少し店員に集中してもらいたいかも・・・
先ほど同様AIのタグからMovementを選び、RotationをManualに設定しましょう。
隣の枠にはNPCの体の向きを角度で入力します。南を向いて欲しいなら0、北を向いて欲しいなら180、東を向いて欲しいなら270と入力します。
今回は西を向いて欲しかったので90としました。
これでNPCがずっとこちらを見続けてくれるようになりました。
ちなみにRotationをHeadに設定した場合は、体は指定した方向のまま、頭だけ自由に動かすようになります。
あまりにもこちらをじぃ~っと見続けている店員に違和感を覚える方にはHeadがおすすめです。
最後の仕上げとして、NPCが話す内容を店員っぽいセリフ「いらっしゃいませ!」に変えておきましょう。
セリフの設定に関する詳細は前回を参照です!
販売する商品を設定する
次はいよいよ、商品を設定していきましょう。
Advancedのタグの赤枠の部分を「Trader」に設定した後、右の編集ボタンを選択します。
Custom NPCsで行えるトレードは、物々交換が基本です。
青枠部分に商品を、赤枠部分に対価を設定します。商品を置く位置は飛び飛びでも問題ありません。
尚、商品も対価も自分のインベントリから設定するため、自分が持っていないアイテムは商品にも対価にも設定する事が出来ませんのでご注意ください。
とりあえずここでは、バニラの村人達同様にエメラルドによる物々交換にしてみました。
早速右クリックで店員さんに話しかけてみると「いらっしゃいませ!」というセリフと共にTraderというウィンドウが開くようになりました。
対価となるエメラルドを持っていない状態では「Insufficient Currency(不十分な通貨)」と表示されアイテムを交換できませんが・・・
必要なエメラルドをちゃんと持った状態であれば、このように交換が可能になります。
試しに購入してみると、こんな感じで自動的にエメラルドが減ります。
これでばっちりですね!
通貨概念を導入する
先ほど、アイテムを購入する際の対価として、村人(バニラ)との取引でも使われているエメラルドを使用しましたが、エメラルドのみでの取引だとちょっとおおざっぱすぎませんか?
折角、沢山の商品を設定できるNPCが追加できるようになったのだから、もう少し細かい通貨が欲しい・・・
実はCustom NPCsではこのような7種類のコインが既に用意されているんです。
左からWooden Coin、Stone Coin、Bronze Coin、Iron Coin、Golden Coin、Diamond Coin、Emerald Coinです。
これらのコインを通貨として利用すれば、商品にもっと細かい値段を設定する事だって出来ちゃうんです。
例えば、Wooden Coinを1、Stone Coinを5、Bronze Coinを10、Iron Coinを50、Golden Coinを100、Diamond Coinを500、Emerald Coinを1000とした上で、このように設定すれば、それぞれのアイテムの価格をより細かく設定できるようになるわけです。
しかしながら、いくつか問題が。
上の例でいう一番左上の剣Frost Swordの価格は150となります。
と言うことは、500の価値を持つことにしたDiamond Coinでも購入出来るべきなのですが、あくまで物々交換のシステムを疑似的に通貨取引とみなしているだけのため、Golden Coin×2とIron Coin×1を持っていなければ購入する事が出来ないのです。
そこで必要になるのが両替です。
両替の方法はいくつかありますが、今回は基本的な2つの方法をご紹介します。
1つ目の方法は両替用のTraderを用意することです。
こんな感じで価値の異なるコインの交換(両替)を行えば、自分が設定したコインの価値を実現する事が出来ます。
2つ目の方法はクラフトでコインを両替する方法です。
CraftTweaker(MineTweaker 3)などを使って、レートに応じたコインのクラフトレシピを作成すれば、クラフトを通じて、必要なコインを得る事が出来るようになります。
尚、CraftTweaker(MineTweaker 3)でのレシピ作成方法については、こちらをご参照ください。
これでコインの両替もばっちり!万事OK!
・・・と、言いたいところですが、まだ重大な問題が残ったままですね。
そう!追加したコインをどうやって手に入れるのかです。
一番手っ取り早いのは、Traderを使ってモンスターからの戦利品(腐った肉など)をコインで買い取ることですね。
NPCからのクエスト報酬などでコインを支払うのも良いでしょう。
ですが・・・多くのジャパニーズRPGのように、モンスターを倒したときにコインをドロップさせるようにしたいと思ったりはしませんか?
ちょっとCustom NPCsからは外れてしまいますが、そんなことも頑張り次第ではできちゃうんです。
それは・・・Loot Tableを使った方法です。
Loot TableとはMinecraft 1.9から追加された新しいシステムで、生物のドロップ品やダンジョンにある宝箱の中身などを定義しているものです。
要するに、このLoot TableにCustom NPCsのコインを追加すれば、生物を倒した際や、ダンジョンにある宝箱の中からコインを入手できるというわけです。
(Loot Tableの弄り方についてはこちらの記事で解説しています)
でも、Minecraft 1.9未満の時はどうすれば・・・
Minecraft 1.7.10以降であればLoot++というModを使うことで同様の事ができます。
どっちかと言うと、Loot Tableを弄るよりはLoot++を使った方が楽かもしれませんね~
でも、Loot++はMinecraft 1.9以降に対応していないので使い分けるしかないのですけどね。
とまあ、このような方法を使って、自分の世界に通貨概念を取り入れるわけなのです。
店員さんを休ませる
これで、トレード可能な店員さんの追加に成功したわけですが・・・何かひっかかりませんか?
そう・・・この店員さん、たった1人で24時間対応しなければならないんです。
幾らなんでもそれは酷すぎる・・・せめて夜だけでも眠らせてあげたい。
というわけで、NPCに昼と夜で別の行動をさせるように設定してみたいと思います。
そう!お店スペースに隣接して作った生活スペースはこのために作ったんです。
ここは順番が大切です!
昼と夜で動作を変えたい項目を「はい」にしてから、EditingModeを「はい」に変えてください。
ここでは、AI、Advanced、Roleの項目を「はい」に設定してから、EditingModeを「はい」にしました。
Editing Modeを「はい」に変えたことで、「Load Day」、「Load Night」という2つのボタンが現れるので、Load Nightを押します。
これで、夜の行動を設定できるようになりました。しかし、Load Nightを押しても、見た目には何も変化しませんのでご注意ください。(ちょっとこの辺分かりづらいですよね~)
まずはAIのMovementを選択し、AnimationをLying、Rotationを180に設定します。
Rotationの数字はAnimation:Sittingの時の値から90を引いてください。例えば今回は東向きに横たわらせたいので270 – 90 = 180とします。
(ただし、0-359までしか設定できないため、南向きの場合は-90ではなく270としてください)
続いてAdvancedのタグを選び、先ほどTraderを選んでいた部分をNo Roleに戻します。
そして、Lines → Interact Linesを選択。
先ほど「いらっしゃいませ!」と記述していた部分を消し、「Zzz…」と新たに書き変えました。
仕上げに、NPC Patherを使ってNPCを選択(右クリック)後、眠らせたい場所(ベッドの下側)を指定します。
例の如く、新しい座標(ベッドの位置)だけを残し、古い方の座標は削除します。
一通り指定し終えると、こんな感じでNPCがベッドで寝始める事でしょう。
が・・・なんかちょっと位置がずれてますね。NPCの脚がベッドからはみ出てしまっています。
AIのタグのMovementからPosition Offsetのこの値を5 → 10に設定してみました。
これでNPCの位置もばっちり、話しかけるとZzz…と言うのみになりました。
ここまで上手く設定できていれば、AdvancedのタグのNightにあるLoad Dayを押すことで、最初に設定した位置に戻る(更にアイテムも販売する)ことが確認できると思います。
昼と夜の動作の設定が済んだところで、NightのEditingModeを「いいえ」の状態に戻します。
これを忘れると、NPCが昼/夜に応じて自動で動かないので注意ですよ!
これで、昼はアイテムを販売し、夜には寝る店員が完成したわけですが・・・まだ問題が・・・
実はお店スペースから生活スペースに移動するためには扉を開けなければならないのです。
でも、このNPCは扉を開ける事が出来ないため、ワープで生活スペースに移動することに・・・
それを解決するのが、このAIタグにあるDoorInteractです。ここをOpenに設定しておけば、扉を開ける事が出来るようになるのです。(しかも、ドアを通過した後はちゃんとドアを閉めます)
これで、店員さんは完成です!
ちなみに、昼の座標と夜の座標が遠すぎたり、障害物があって移動できない場合はワープ移動してしまうのでご注意ください。
本当は、移動する経路も指定できると良いのですけどね~(Moving Path以外では一番上の座標しか有効にならないみたい)
これでCustom NPCsの解説とその使い方(店員編)は終了です。
次はクエストの発注するNPCを作ってみたいと思います。
Studio POPPOのプログラム兼システム担当です。
ウォーキング・デッド大好き!ダリルかっこいいよっ!主食はキノコです。