GetInventoryDisturbType()

所持品のdisturbタイプを調べます。

int GetInventoryDisturbType();

Description

スクリプトを呼び出したものの OnInventoryDisturbedイベントを起動させるdestubタイプ (INVENTORY_DISTURB_TYPE_*)を返します。



Remarks

これはクリーチャーと配置物にのみ有効です。


Known Bugs

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

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

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: GetInventoryDisturbItem
categories: Inventory Functions
constants: INVENTORY_DISTURB_TYPE_* Constants


author: Tom Cassiotis, editor: Lilac Soul, additional contributor(s): Max Aller, Lilac Soul, JP team: NamaYake
Send comments on this topic.