Difference between revisions of "LlReadKeyValue"

From Second Life Wiki
Jump to navigation Jump to search
(Created page with "Category:Experience Tools {{LSL_Function |func=llReadKeyValue |func_desc=Start an asynchronous transaction to read the value associated with the specified key and the specifi…")
 
m
 
(7 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:Experience Tools]]
[[Category:Experience Tools]]
{{LSL_Function
{{LSL_Function
|inject-2={{Issues/BUG-8895}}
{{LSL Function/KeyValue|k|value=value|d2_type=string|d2_name=value}}
{{LSL Function/Experience|true}}
|func=llReadKeyValue
|func=llReadKeyValue
|func_desc=Start an asynchronous transaction to read the value associated with the specified key and the specified experience.
|func_desc=Start an asynchronous transaction to read the value associated with the specified key ({{LSLPT|k}}) and the script's {{LSLGC|Experience}}.
|func_footnote=
|func_footnote=If the key does not exist the [[dataserver]] will return a failure along with the error [[XP_ERROR_KEY_NOT_FOUND]].
The dataserver callback parameters are:
|return_type=key|return_subtype=handle
* A key containing the transaction ID returned from llReadKeyValue
|return_text=that can be used to identify the corresponding [[dataserver]] event to determine if this command succeeded or failed and the results.
* A string containing a comma-delimited list.  The first item is a boolean specifying if the transaction succeeded (1) or not (0).  The second item is a string with a status/error message if it failed or the value if the transaction succeeded.
|p1_type=string|p1_name=k
|return_type=key
|return_text=Returns the id of the transaction.
|p1_type=string|p1_name=k|p1_desc=The key for the key-value pair
|also_functions=
|also_functions=
*[[llGetExperienceErrorMessage]]
*[[llGetExperienceErrorMessage]]
Line 19: Line 19:
*[[llKeyCountKeyValue]]
*[[llKeyCountKeyValue]]
*[[llKeysKeyValue]]
*[[llKeysKeyValue]]
|examples=<lsl>key trans;
|examples=<source lang="lsl2">key trans;
default
default
{
{
Line 26: Line 26:
         trans = llReadKeyValue("FOO");
         trans = llReadKeyValue("FOO");
     }
     }
}
    dataserver(key t, string value)
 
dataserver(key t, string value)
{
    if (t == trans)
     {
     {
        // our llReadKeyValue transaction is done
         if (t == trans)
        list result = llCSV2List(value);
         if (llList2Integer(result, 0) == 1)
         {
         {
             // the key-value pair was successfully read
             // our llReadKeyValue transaction is done
            llSay(0, "New key-value pair value: " + llList2String(1));
            if (llGetSubString(value, 0, 0) == "1")
        }
            {
        else
                // the key-value pair was successfully read
        {
                llSay(0, "New key-value pair value: " + llGetSubString(value, 2, -1));
            // the key-value pair was not created
            }
            llSay(0, "Key-value pair doesn't exist");
            else
         }
            {
     }  
                // the key-value pair failed to read
}</lsl>}}
                integer error =  (integer)llGetSubString(value, 2, -1);
                llSay(0, "Key-value failed to read: " + llGetExperienceErrorMessage(error));
            }
         }  
     }
}</source>
|cat1=Experience
|cat2=Experience/Data
|cat3=Dataserver
}}

Latest revision as of 12:46, 5 May 2015

Summary

Function: key llReadKeyValue( string k );

Start an asynchronous transaction to read the value associated with the specified key (k) and the script's Experience.
Returns a handle (a key) that can be used to identify the corresponding dataserver event to determine if this command succeeded or failed and the results.

• string k The key for the key-value pair

If the key does not exist the dataserver will return a failure along with the error XP_ERROR_KEY_NOT_FOUND.

For this function to work, the script must be compiled into an Experience.

Specification

Dataserver

The dataserver callback parameters are:

String Components
• integer success A boolean specifying if the transaction succeeded (1) or not (0).
• integer error An XP_ERROR_* flag that describes why the operation failed.
• string value The value for the key-value pair. Maximum 2047 characters, or 4095 if using Mono. Note! This value may contain commas.

Caveats

  • If you recompile a script that was previously associated with an Experience but do so with a client that lacks the ability to compile scripts into an experience the script will lose the associated Experience.
All Issues ~ Search JIRA for related Bugs

Examples

key trans;
default
{
    state_entry()
    {
        trans = llReadKeyValue("FOO");
    }
    dataserver(key t, string value)
    {
        if (t == trans)
        {
            // our llReadKeyValue transaction is done
            if (llGetSubString(value, 0, 0) == "1")
            {
                // the key-value pair was successfully read
                llSay(0, "New key-value pair value: " + llGetSubString(value, 2, -1));
            }
            else
            {
                // the key-value pair failed to read
                integer error =  (integer)llGetSubString(value, 2, -1);
                llSay(0, "Key-value failed to read: " + llGetExperienceErrorMessage(error));
            }
        } 
    }
}

Notes

Compiling

For a script to be associated with an Experience...

  • It must be compiled with a client that is Experience aware,
  • The "Use Experience" checkbox must be checked,
  • And one of the users Experience keys selected.
KBcaution.png Important: Not all TPVs have this functionality.

Deep Notes

Search JIRA for related Issues

Signature

function key llReadKeyValue( string k );