GetInventoryDisturbItem()

所持品欄にあるOnDisturbedイベントに関わるdisturbアイテムを返します。

object GetInventoryDisturbItem();

Description

オブジェクトのOnDisturbedイベントを起動させるアイテムを返します。このイベントを起動させるのは3つのケースがあります。

一つはアイテムが加わったとき。もう一つはアイテムが奪われたとき。それと所持品欄から盗まれたときです。

エラーのときはOBJECT_INVALIDを返します。このときこの関数はOnDisturbイベントで排他的に扱われ何も起こりません。

(少なくとも理論上、バグリストを順にチェックします)



Known Bugs

disturbアイテムがゴールドである場合はOnDisturbイベントは正確に起動しないことに注意してください。このときこの関数は予期せぬ動作を返すことがあります。

私は下記の小さなスクリプトをコンテナのOnDisturbedイベントで実験してみました。

void main()
{
object oPC=GetLastDisturbed();

object oDisturb=GetInventoryDisturbItem();

SendMessageToPC(oPC, "this: "+GetName(oDisturb));
}

コンテナにゴールドを入れたときにはメッセージは “this: Gold piece”と表示されました。このときはゴールドで起動しました。

コンテナからゴールドをとりだしてみると “this: ”というメッセージが表示されました。

コンテナからゴールドを取り除いてみると、GetInventoryDisturbItem()は OBJECT_INVALIDを返しました。

スタックできるアイテムでもバグが発生します。スタックできるアイテムをアイテムの与える側か受け取る側の別のスタックに加えると、OnDisturbedイベントは起動しません。

(ゴールドは例外です)


Version

1.30

Example

// コンテナのOnDisturbedにセットします。
// 誰かがコンテナからアイテムを取り出すと、その人は
// そのアイテムの値段を請求されるでしょう。 by Lilac Soul
void main()
{
     object oItem=GetInventoryDisturbItem();
     object oPC=GetLastDisturbed();
     int nType=GetInventoryDisturbType();

     switch (nType)
     {
     case INVENTORY_DISTURB_TYPE_REMOVED:
     case INVENTORY_DISTURB_TYPE_STOLEN:

         int nAmount=GetGoldPieceValue(oItem);
         AssignCommand(oPC, TakeGoldFromCreature(nAmount, oPC, TRUE));

         SendMessageToPC(oPC, "窃盗はいけません。お金を払ってください!");
         break;
    }
}

See Also

functions: GetInventoryDisturbType | GetLastDisturbed
categories: Inventory Functions
events: OnDisturbed Event


author: Charles Feduke, editor: Lilac Soul, additional contributor(s): Lilac Soul, JP team: NamaYake
Send comments on this topic.