Difference between revisions of "LlReadKeyValue"
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 (Added a ChatGPT-generated haiku!) |
||
(9 intermediate revisions by 5 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 | |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]]. | ||
|return_type=key|return_subtype=handle | |||
|return_text=that can be used to identify the corresponding [[dataserver]] event to determine if this command succeeded or failed and the results. | |||
|p1_type=string|p1_name=k | |||
|return_type=key | |||
|return_text= | |||
|p1_type=string|p1_name=k | |||
|also_functions= | |also_functions= | ||
*[[llGetExperienceErrorMessage]] | *[[llGetExperienceErrorMessage]] | ||
Line 19: | Line 19: | ||
*[[llKeyCountKeyValue]] | *[[llKeyCountKeyValue]] | ||
*[[llKeysKeyValue]] | *[[llKeysKeyValue]] | ||
|examples=< | |examples=<syntaxhighlight 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) | |||
if ( | |||
{ | { | ||
// the key-value pair was successfully read | // 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)); | |||
} | |||
} | |||
} | |||
}</syntaxhighlight> | |||
|haiku={{Haiku|Async read starts now,|Key sought in Experience,|Hope it's not missing!|author=ChatGPT}} | |||
|cat1=Experience | |||
|cat2=Experience/Data | |||
|cat3=Dataserver | |||
}} |
Latest revision as of 12:31, 13 May 2024
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
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:
- A key containing the handle returned from llReadKeyValue
- A string containing a comma-delimited list (cdl).
llDumpList2String([ integer success ] + components);
- components vary depending upon success or failure of request.
- Failure:
cdl = llDumpList2String([ 0, integer error],",")
- Success:
cdl = llDumpList2String([ 1, string value ],",")
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.
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.
![]() |
Important: Not all TPVs have this functionality. |