llKeysKeyValue/ja

From Second Life Wiki
Jump to navigation Jump to search

Summary

Function: key llKeysKeyValue( integer first, integer count );

Start an asynchronous transaction to request a number of keys from the script's Experience.
Returns a handle (a key) これを使用して、このコマンドが成功したか失敗したかを判断し、結果を知るための対応するdataserverイベントを識別できます。

• integer first 取得する最初のキーのゼロベースのインデックス
• integer count 取得するキーの数

この関数は、要求されたキーの数を取得しようとしますが、要求数が満たされない場合やリストが大きすぎる場合は、満たすことができないかもしれません。返されるリストの長さは4097文字まで制限されています(成功フラグ「1」と4096文字)。 返されるキーの順序は保証されませんが、キーが追加または削除されていない限り、連続する呼び出しの間で安定しています。
エラーXP_ERROR_KEY_NOT_FOUNDは、指定されたインデックスがキーの数以上である場合に返されます。

これfunctionを行なうには、スクリプト Experience でコンパイルする必要があります。

Specification

Dataserver

dataserverコールバックのパラメータは次のとおりです:

文字列のコンポーネント
• integer success トランザクションが成功した場合は1、失敗した場合は0を指定するブール値。
• integer error 操作が失敗した理由を説明するXP_ERROR_*フラグ。
• list keys キーと値のストアで使用されているキーのリスト(文字列

Caveats

  • 以前に体験に関連付けられていたスクリプトを体験のコンパイル機能を持たないクライアントで再コンパイルすると、スクリプトは関連する体験を失います。
  • この関数はキーをCSV形式で返すため、キーにはカンマを含めないことが推奨されます。

Examples

key trans;
default
{
    state_entry()
    {
        // retrieve the first 10 keys
        trans = llKeysKeyValue(0, 10);
    }

    dataserver(key t, string value)
    {
        if (t == trans)
        {
            // our llKeysKeyValue transaction is done
            list result = llCSV2List(value);
            if (llList2Integer(result, 0) == 1)
            {
                llSay(0, "Keys retrieved: "+(string)llGetSubString(value, 2, -1));
            }
            else if (llList2Integer(result, 1) == XP_ERROR_KEY_NOT_FOUND)
            {
                // no more keys
                llSay(0, "No more keys" );
            }
            else
            {
                // keys request failed
                llSay(0, "Key-value failed to request keys: " + llGetExperienceErrorMessage(llList2Integer(result, 1)) );
            }
        } 
    }
}

Notes

コンパイル

スクリプトが Experience に関連するようにするには...

  • 体験をサポートしたクライアントでコンパイルされている必要があります
  • "体験を使用" チェックボックスをチェックする
  • 体験キーの一つを選択する
KBcaution.png 重要 すべての TPV にこの機能があるわけではありません。

Deep Notes

Signature

function key llKeysKeyValue( integer first, integer count );