Difference between revisions of "LlCreateKeyValue"
Jump to navigation
Jump to search
All Issues ~ Search JIRA for related Bugs
m (minor change) |
|||
Line 53: | Line 53: | ||
|cat3=Dataserver | |cat3=Dataserver | ||
|caveats=* It is recommended that keys do not contain commas due to [[llKeysKeyValue]] returning keys in CSV format. | |caveats=* It is recommended that keys do not contain commas due to [[llKeysKeyValue]] returning keys in CSV format. | ||
|caveats=* If this function returns an [[XP_ERROR_STORAGE_EXCEPTION]], subsequent attempts to create the same KVP key may also fail, even if it appears that no key has been created. For that reason, it may be preferable to use [[llUpdateKeyValue]], which will overwrite any existing value or will create a new KVP key if none exists with that name. | |||
}} | }} |
Revision as of 14:01, 27 January 2020
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: key llCreateKeyValue( string k, string v );
Start an asynchronous transaction to create a key-value pair associated with the script's Experience using the given key (k) and value (v).
Returns a handle (a key) that can be used to identify the corresponding dataserver event to determine if this command succeeded or failed.
• string | k | – | The key for the key-value pair | |
• string | v | – | The value for the key-value pair. Maximum 2047 characters, or 4095 if using Mono. |
If the key already exists the dataserver will return a failure along with the error XP_ERROR_STORAGE_EXCEPTION.
As of Jan 1, 2016 maximum bytes is 1011 for key and 4095 for value for both LSO and Mono scripts.
Specification
Dataserver
The dataserver callback parameters are:
- A key containing the handle returned from llCreateKeyValue
- 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.
- If this function returns an XP_ERROR_STORAGE_EXCEPTION, subsequent attempts to create the same KVP key may also fail, even if it appears that no key has been created. For that reason, it may be preferable to use llUpdateKeyValue, which will overwrite any existing value or will create a new KVP key if none exists with that name.
Examples
key trans;
default
{
touch_start(integer total_number)
{
trans = llCreateKeyValue("FOO", "BAR");
}
dataserver(key t, string value)
{
if (t == trans)
{
// our llCreateKeyValue transaction is done
integer result = (integer)llGetSubString(value, 0, 0);
if (result == 1)
{
// the key-value pair was successfully created
llSay(0, "New key-value pair was created");
}
else
{
// the key-value pair was not created
integer error = (integer)(llGetSubString(value, 2, -1));
llSay(0, "Key-value failed to create: " + 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. |
See Also
Deep Notes
Categories:
- Pages using duplicate arguments in template calls
- Pages using deprecated source tags
- Experience Tools
- LSL Dataserver
- Articles in need of haiku
- LSL Functions
- LSL Functions/Returns a key
- LSL Functions/Returns a key/handle
- LSL Parameters/k
- LSL Parameters/v
- LSL Keywords/All
- LSL Functions/Without IDs
- LSL Experience
- LSL Experience/Data