MOD/Tool/ConstructionSet/ベンダーとReference

Top/MOD/Tool/ConstructionSet/ベンダーとReference

はじめに Edit

 ベンダー(PCと商品を売買してくれる人)のしくみを見ながら、Reference、Reference ID(参照用ID)の感覚を掴んでいきましょう。もっとシャッキリ説明できる方がいたら、どうかニュアンスが正しく伝わるようにどんどん修正していってください。それだけが俺の願いです。

ベンダーとは Edit

 ベンダーは店舗などに配置されたNPCのことを便宜上そう呼ぶだけで、「売買する機能を持ったNPC」のことだと考えていただければ十分です。ベンダーと他のNPCの違いはなんでしょうか?
 それは、NPCのAIで売買がチェックされている点と、PCと売買をする時、自分の所持品とは別に在庫コンテナを持つ点です。前者はNPCのAIを開いてみれば一目瞭然なので、後者を実際に見ていきましょう。

 まず、Imperial CityのMarket Districtにある、Fighting ChanceのRohssanを例にとって見ていきます。

 オブジェクトウィンドウのNPCからRohssanを探し、右クリック→Use Infoを表示してみてください。上半分にNPCRohssanと関連づけられているオブジェクトのリスト、下半分にNPCRohssanが配置されているセルの一覧が表示されます。Rohssanならセル一覧にはFighting Chanceの店内セル一つだけだと思いますので、それをダブルクリックします。

vender1.png

画像の対訳表

使用リストUse Report
以下のオブジェクトに使用されていますUse by these objects
以下のセルで使用されていますUsed in these cells

 このUse Infoは、そのオブジェクトがどこに配置されているかを知ることができて便利です。何個配置されているか、だけなら「基本操作」でも述べたように、オブジェクトウィンドウの表で確認できます。

 レンダウィンドウにRohssanとFighting Chanceの内装が描画されたら、レンダウィンドウのRohssanのオブジェクトをダブルクリックしてください。以下のようなReferenceダイアログが表示されるはずです。

vender2.png
画像の対訳表

参照用Editor IDRefence Editor ID
オブジェクトBase Object
オブジェクト本体を編集Edit Base
場所Space
Referenceをレンダウィンドウから選ぶSelect Reference in Render Window
セルCell
スクリプトから参照できるようにするPersistent Reference
開いている(ドア)Open By Default
表示限界距離より遠くても表示Visible When Distant
Disableとして配置Initially Disabled

 今表示しているのはMerchant Containerのタブです。なんとなく、今回話題となっているフレーズが出揃った気がしますね。Referenceにあるのは、ベンダーとしてのNPCに関連づけられているコンテナです。
 ここで特定のコンテナを指定することにより、これを在庫としてNPCRohssanが売買を行うのです。
 CS Wiki (The Elder Scrolls Construction Set Wiki)にも記載されていますが、NPCがベンダーとしての機能を持つためには、以下の条件が必要とされます。

 他にも、どの時間帯に商売をしてくれるかなどのスケジュール処理は必要になってきますが。

 さて、よく見るとReferenceの項目には’*****’ ’******’のように、なぜか名前が二つ続けて表示されているのがわかると思いますが、これは次の項で述べることにします。
 ここでは、NPCが商品を売買するにあたり、どこから商品を出し入れしているのか、理解できていれば十分です。

Referenceとはなんだったのか Edit

 referenceは「参照する」などの意味です。
 前項では、NPCが「参照する」コンテナを指定する際に登場しました。
 他にも、ドアマーカーで別のセルとの移動ポイントを作る際、ドアマーカーとドアマーカーを対応させるためにreferenceとして移動先のドアマーカーを指定します。
 また、オブジェクトやドアの所有権が誰にあるのか、というOwnershipの指定も、ある種の参照として扱われているようです。

vender1.png

 この上半分に表示されているのは、Rohssanと関連づけられているオブジェクトだと説明しましたが、言い代えるなら、これは所有権の持ち主としてRohssanを参照していると表現することもできるわけです。

Reference ID、参照IDとは Edit

 一方、Reference IDとはなんなのでしょうか。簡単に言ってしまえば、「いくつも存在する同一のオブジェクトを区別するための便宜上のEditor ID」となります。
 これだけではわかりにくいと思いますが、では次の場合を考えてみましょう。

 ここに、ChestVendorSmithBladesI01というEditor IDのコンテナがあります。Rohssanの店に存在するコンテナですが、実はこのコンテナ、Use Infoを見ればわかるようにImperial CityのSlash 'n Smashにも、LeyawiinのThe Dividing Lineにも同じEditor IDを持つコンテナが配置されています。いずれもベンダーのMerchant ContainerとしてReferenceに指定されていますから、それぞれの在庫になっているということです。
 ではこういう時、Slash 'n Smashで何かを購入すると、他の店では同じ品が同じだけ減ってしまったりしているのでしょうか? 結果的に同じEditor IDを持つのですから、そうなってしまいそうなものです。

 ところが、ここでReference IDの存在が重要になってきます。

 全てのオブジェクトにはEditor IDとForm IDを持つことを以前説明しましたが、残念ながらスクリプトやReferenceで16進数のForm IDを指定することはできません。英数字で構成されたEditor IDを指定することはできます。

 オブジェクトを配置すると個別のForm IDが新たに割り振られます。コンソールなどからであればForm IDだけで十分ですが、前述のようにスクリプトなどから特定のオブジェクトを参照したい場合、Form IDだけでは用が足りないので困ってしまいます。
 そこで、それぞれに異なるReference IDをつけてあげることによって、改めて別々の存在としてスクリプトから参照したりできるようになります。いわば、とあるEditor IDを持つ全く同じオブジェクトたちの中から、スクリプトが特定の一つを識別するための新しいIDとなるわけです。

まとめ Edit


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-12-11 (金) 10:49:32