Skip to content
lsl.devlsl.devLSL Dev

NULL_KEY

constant
Constant
string NULL_KEY = "00000000-0000-0000-0000-000000000000";

NULL_KEY is a string. However it is only really useful as a key.

For Conditional tests, NULL_KEY evaluates to TRUE like other strings.

For list search (like llListFindList), NULL_KEY won’t match null keys whose type is key without typecasting.

Example 1
// Returns 2 for valid keys, 1 for NULL_KEY, 0 for invalid keys.
integer isKey(key input)
{
if (input) return 2;
return (input == NULL_KEY);
}
Example 2
default
{
state_entry()
{
// NULL_KEY itself is evaluated as FALSE only when typecast to key.
if (NULL_KEY) { llOwnerSay("NULL_KEY is TRUE"); } // Correct.
else { llOwnerSay("NULL_KEY is FALSE"); } // Never.
if ((key) NULL_KEY) { llOwnerSay("Casted NULL_KEY is TRUE"); } // Never.
else { llOwnerSay("Casted NULL_KEY is FALSE"); } // Correct.
// NULL_KEY won't match keys in lists without typecasting.
// The following list contains a null key because avatars don't have creators:
list details = llGetObjectDetails(llGetOwner(), [OBJECT_CREATOR]);
integer index = llListFindList(details, [NULL_KEY]);
if (index >= 0) { llOwnerSay("NULL_KEY was found in list"); } // Never.
else { llOwnerSay("NULL_KEY was NOT found in list"); } // Correct.
}
}

In most situations NULL_KEY isn’t needed; an empty string ("") will suffice. To take advantage of this certain practices have to be avoided. In many applications keys are checked against NULL_KEY to determine if they are valid; this is bad practice.

LSL makes it easy to check if a key is valid. Simply use the key as the parameter for a conditional.

That is, instead of if(uuid != NULL_KEY), use if(uuid). if(uuid) will only return TRUE if it is a valid key that is also not a null key.

Like any LSO string constants longer then 3 characters and used in multiple places in the code, they should be stored in a global variable. The result will be a considerable memory savings. This does not apply to scripts compiled with Mono. See LSL Constants vs Globals for more information about this and examples.

  • SVC-5772: NULL_KEY is no longer a NULL_KEY when passed to a function
Original wiki source

Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.

From the Second Life Wiki

Community documentation adapted from NULL KEY, by Linden Research, Inc. and contributing residents.View contributors and history.

Built from these wiki pages, as imported:

Licensed under CC BY-SA 3.0. Last wiki edit: .Formatting and links have been adapted for this site; API metadata follows the LSL definitions.