LlGetInventoryType/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

関数: integer llGetInventoryType( string name );

インベントリアイテム name のタイプを integer で返します。

• string name インベントリアイテムの名前

name が存在しない場合、 INVENTORY_NONE が返されます (エラーやメッセージは生成されません) 。これは、インベントリの存在確認を行うのにふさわしい関数にしているためです。

フラグ インベントリタイプ
INVENTORY_NONE -1 アイテムは存在しません。
INVENTORY_ALL 全てのインベントリタイプ
INVENTORY_TEXTURE 0 テクスチャ
INVENTORY_SOUND 1 サウンド
INVENTORY_LANDMARK 3 ランドマーク
INVENTORY_CLOTHING 5
フラグ インベントリタイプ
INVENTORY_OBJECT 6 オブジェクト
INVENTORY_NOTECARD 7 ノートカード
INVENTORY_SCRIPT 10 スクリプト
INVENTORY_BODYPART 13 体のパーツ
INVENTORY_ANIMATION 20 アニメーション
INVENTORY_GESTURE 21 ジェスチャー

サンプル

便利なスニペット

string InventoryName(string name, integer type)
{//指定されたタイプの大文字小文字を区別した名前でアイテムを見つけ、本当の名前を返します。
    integer a = llGetInventoryType(name); 
    if(!~a)//a == INVENTORY_NONE
    {// INVENTORY_NONE == INVENTORY_ALL == -1 です。これが '!~a' の動く理由です。
        string lc_name = llToLower(name);
        a = llGetInventoryNumber(type);
        while(a)
        {//(a = ~-a) は --a と同じですが、速く動作します。
            if(llToLower(name = llGetInventoryName(type, a = ~-a)) == lc_name)
            {//一致するものを見つけました ^_^
                return name;
            }
        }
    }
    else if((a == type) ^ (!~type))// a == type or type == INVENTORY_ALL であれば名前を返します
    {//既に a != INVENTORY_NONE であることは分かっていますが、念のため or の代わりに xor を使います。
        return name;
    }
    return "";//見つかりませんでした ~_~
}

integer InventoryExists(string name, integer type)
{// 'type' の値が定数でない場合、どのようにこの手のチェックが行われるかを示したものです。INVENTORY_ALL となります。
    return (llGetInventoryType(name) == type) ^ (!~type);
}// INVENTORY_ALL == INVENTORY_NONE のため、最後のほうで結果をひっくり返さなければなりません。

関連項目

関数

•  llGetInventoryName インベントリアイテムの名前を返します
•  llGetInventoryNumber インベントリの中の特定のタイプのアイテムの数を返します
•  llGetInventoryCreator インベントリアイテムのクリエーターを返します
•  llGetInventoryPermMask インベントリアイテムの権限を返します
•  llGetInventoryKey インベントリアイテムの UUID を返します (フルパーミッションの場合)

特記事項

Search JIRA for related Issues

テスト

•  llGetInventoryType_Test

Signature

function integer llGetInventoryType( string name );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。