Difference between revisions of "Category:LSL Key"

From Second Life Wiki
Jump to: navigation, search
(Added "Caveats" to "Testing for a valid key".)
Line 51: Line 51:
  
 
<code>if (uuid)</code> is a special case. Keys cannot be converted to integers, so logical operators such as <code>!</code>, <code>||</code> and <code>&&</code> cannot be used with keys.
 
<code>if (uuid)</code> is a special case. Keys cannot be converted to integers, so logical operators such as <code>!</code>, <code>||</code> and <code>&&</code> cannot be used with keys.
 +
 +
If you wish to do <code>if (!uuid) // Some action</code> then you can use a simple workaround like so: <code>if (uuid) {} else // Some action</code>. This is particularly useful if we wish to discard invalid string content (i.e - ensure that a key is actually a key) like so:<lsl>if (uuid) {} else uuid = NULL_KEY;</lsl>
 +
  
 
== Extended Key Operations ==
 
== Extended Key Operations ==

Revision as of 10:44, 18 October 2010

A key is a unique identifier in Second Life for anything mostly, be it a prim, avatar, texture, etc.

You may see key referred to as UUID, UID, "Asset UUID", or "asset-ID."

The key itself is formed of hexidecimal characters (a-f and 0-9) and each section of the key is broken up by dashes.

An example key:

"a822ff2b-ff02-461d-b45d-dcd10a2de0c2"


Getting a Key

There are several ways to acquire the key of something:
1) Having someone supply it to you;
2) Using a native LSL function such as llGetKey, etc.
3) In your inventory, right-clicking over something and choosing "Copy Asset UUID." Note this will only work on items that you have full permissions to.


Converting Keys

When a key is supplied to you as a text string, you convert it to the key data type like this:

(key)"a822ff2b-ff02-461d-b45d-dcd10a2de0c2";


Testing for a valid key

To test for a valid key, just do this:

if(uuid){
      //do something
      }

if(uuid) will only return true if it is supplied a key that is both (A) valid, and (B) NOT a NULL_KEY.

Tip! In techy talk, this method is called "passing it as the parameter for a conditional"

Here is an example of how to build a function around this:

<lsl> integer isKey(key in) {

   if(in) return 2;
   return (in == NULL_KEY);

} </lsl>

Caveats

if (uuid) is a special case. Keys cannot be converted to integers, so logical operators such as !, || and && cannot be used with keys.

If you wish to do if (!uuid) // Some action then you can use a simple workaround like so: if (uuid) {} else // Some action. This is particularly useful if we wish to discard invalid string content (i.e - ensure that a key is actually a key) like so:<lsl>if (uuid) {} else uuid = NULL_KEY;</lsl>


Extended Key Operations

These functions have been created and contributed by LSL users to perform operations not covered by built-in LSL functions.


function purpose
GenerateKey Generates an MD5-based (version 3) type UUID. Useful for identifying link-messages and for other purposes.
GenUUID Generates a UUID based on PHP com_create_guid.