Fallout好き:主にFallout New Vegas

Fallout好き:主にFallout new Vegas

2013年2月9日土曜日

MODの基盤:売り子を殺したら商品も手に入るスクリプト

チェット(Goodspringsの雑貨屋店主chet)を殺したら、店売りのアイテムも死体に入った(ように見える。沢山アイテム手に入ったのでそれっぽい)。嬉しい。
これで売り子を殺したら商品も手に入る、というのが実現出来そう。
ざっとやり方をメモ。

1. chetが店売りに使ってるcontainerを探し出し、名前をReferenceEditorIDをつける
    (1) cell windowでinteriors→GSGgeneralStore→Render Windowで「@」を押してマウスでchetを探し出し、「@」を押して切り替えてから、chetをクリック
     ※今日初めて「@」を覚えたがこれ使いやすいw というかこれなしで今まで操作ってどうなの?ってちょっと思った・・・・仕方ないけど
  (2) Cell WindowにGS ChetREFが反転されるので右クリック→Edit。※名前がわかってるなら前の手順はいらない。
    (3) Merchant Containerタブ→View Selected Reference
         これで売り子が使ってるcontainerが見つかった。Cell Windowで反転表示サれてるので右クリック→Edit→ReferenceEditorID(名前通りEditorが参照するためのIDだろう)が空なので、適当な名前をつける。Cellに置かれてるものは最後に「REF」をつけてる(Referenceの略か)ので、BaseObjectの中身をコピペして後ろに「REF」をつけ、OKボタン。
    ※Edit Baseをクリックすると元になってるContainerを見れる。それを見るとどんな商品がどんな確率で売られているかわかる。また、このcellには他にもcontainerがあるので、クリックしてみると面白いかも。

2. chetが死んだ時にchetの店売り用containerの中身を、chetに持たせる
   (1) 1.(2)のGS ChetREFをEditし、Edit Baseをクリック、Script欄にGSChetScriptというScriptがセットされている。
   (2) find textやObject Windowから(1)のscriptを探し、ダブルクリックで開く。下記のように変更する。

---------------------------------------------------------------------------------
scn GSChetScript


begin OnDeath

if (GetObjectiveDisplayed VMS16 30) && (GetObjectiveCompleted VMS16 30 == 0)
SetObjectiveDisplayed VMS16 30 0
endif

if (GetObjectiveDisplayed VMS16b 30) && (GetObjectiveCompleted VMS16b 30 == 0)
SetObjectiveDisplayed VMS16b 30 0
endif

VendorContainerChetREF.RemoveAllTypedItems GSChetRef

end
---------------------------------------------------------------------------------
太字が追記した部分。これだけ。
VendorContainerChetREFはcellに配置されたchetのcontainerに付けたReferenceEditorID。
RemoveAllTypedItemsはアイテム全部を移動するっぽい。オプションで指定したアイテムを除外出来るみたいだが。geckの説明→ http://geck.bethsoft.com/index.php/RemoveAllTypedItems
GSChetRefはcellに配置されたchet。
begin OnDeath ~ end は死亡した時の処理。Chetに関連付けられているので、Chetが死んだ場合に働く。ちなみに元々の記述部分は多分クエスト失敗の処理。

以上。

0 件のコメント:

コメントを投稿