CopyObject(object, location, object, string)
指定したobjectを複製します。
object CopyObject( object oSource, location locLocation, object oOwner = OBJECT_INVALID, string sNewTag = "" );
Parameters
oSource
コピーするobject
locLocation
複製したobjectを置く位置(必須)
oOwner
アイテムの所有者 (インベントリーにアイテムをコピーする場合に使用)(デフォルト:OBJECT_INVALID)
sNewTag
新しいタグ名(デフォルト:"")
Description
指定したobjectを複製します。アイテムがコピーされた場合に、oOwnerがOBJECT_INVALIDでなければ、アイテムは自動的にoOwnerのインベントリーに入ります。コピーされるobjectがクリーチャーであれば、locLocationに配置されます。strNewTagが指定されていれば、複製objectにはそのtagがつけれらます。
アイテムが作成され、oOwnerが指定されている場合、locLocationはインベントリーを持つ所有者のlocationでなければなりません。(例えば、GetLocation(oOwner))
Remarks
CopyObject()は配置物には動作しません。現在はobjectと複製品の名前を変えることができません。
入れ物の中身をコピーするために繰り返し使用する場合、DestroyObject()はスクリプト終了まで生じさせないことを心に留めておいてください。
Known Bugs
死亡したPCの所持品をコピーして、さらにCopyObjectを入れ物に入っているアイテムに使用して、別の配置物(例えば死体など)にコピーする場合、アイテムは二重に複製されます。
なぜなら、アイテムは親となる入れ物と子となる入れ物の両方に属するからです。この現象を回避するためには、SetLocalIntを使ってそれぞれのアイテムに処理済の値を持たせるとよいでしょう。そしてアイテムが処理済となってい場合にコピーさせます(もちろんコピーされたオブジェクトのインベントリーにあるアイテムは手動で繰り返さなければなりません)。
もし存在しない場所(例えばタグ名を打ち間違えたウェイポイントなど)にコピーしようとした場合は、ゲームがクラッシュすることになるでしょう。
新しいタグ名を使う場合にも問題があります。
GetTagでコピーしたオブジェクトを呼ぶ場合は正常に動きますが、GetObjectByTagで呼ぼうとした場合はコピーを返しません。より正確に言うと、常に全く動きません。
There are problems with the new tag as well. Calling GetTag with the copied object as a parameter works, but calling GetObjectByTag won't return the copy, or at least it won't all the time.
Version
1.31
See Also
functions: | CreateObject |
categories: | Inventory Functions | Item Creation Functions | Miscellaneous Functions |
author: Charles Feduke, editor: Lilac Soul, additional contributor(s): S. Perreault, Nanodeath, Alex Meduna, Angelo Cossa, JP team: geshi, Rainie
Send comments on this topic.