Difference between revisions of "Category:LSL Key"

From Second Life Wiki
Jump to navigation Jump to search
m (linkified llGetKey)
(document the secondlife:/// app/ special URLs and their use for printing clickable links from keys)
Line 24: Line 24:


(key)"a822ff2b-ff02-461d-b45d-dcd10a2de0c2";
(key)"a822ff2b-ff02-461d-b45d-dcd10a2de0c2";
'''Displaying avatar or group information'''
If you know an avatar's key, you can display the avatar's name in the viewer window and chat history by using the following special URL:
<lsl>llOwnerSay("secondlife:///app/agent/" + (string)owner_key + "/about");</lsl>
This displays both [[Display names|display name]] and [[Usernames|username]] as a clickable link that brings up an avatar profile window when clicked.  It is easier than using [[llRequestAgentData]] or [[llRequestUsername]] or [[llRequestDisplayName]], since there is no need to use a [[dataserver]] event.
If you know a group key (as a result of calling [[llGetObjectDetails]] with [[OBJECT_GROUP]], or calling [[llGetParcelDetails]] with [[PARCEL_DETAILS_GROUP]]), you can display the group's name with the following special URL:
<lsl>llOwnerSay("secondlife:///app/group/" + (string)group_key + "/about");</lsl>
This displays the group name as a clickable link that brings up a group profile window when clicked.  This is especially useful since there is no other way to do this; there is no LSL function to print out a group's name.
Finally, if you know a parcel key (as a result of calling [[llGetParcelDetails]] with [[PARCEL_DETAILS_ID]]), you can create a clickable link that brings up a place profile window when clicked, using the following special URL:
<lsl>llOwnerSay("secondlife:///app/parcel/" + (string)parcel_key + "/about");</lsl>





Revision as of 02:47, 17 November 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";


Displaying avatar or group information

If you know an avatar's key, you can display the avatar's name in the viewer window and chat history by using the following special URL: <lsl>llOwnerSay("secondlife:///app/agent/" + (string)owner_key + "/about");</lsl>

This displays both display name and username as a clickable link that brings up an avatar profile window when clicked. It is easier than using llRequestAgentData or llRequestUsername or llRequestDisplayName, since there is no need to use a dataserver event.

If you know a group key (as a result of calling llGetObjectDetails with OBJECT_GROUP, or calling llGetParcelDetails with PARCEL_DETAILS_GROUP), you can display the group's name with the following special URL: <lsl>llOwnerSay("secondlife:///app/group/" + (string)group_key + "/about");</lsl>

This displays the group name as a clickable link that brings up a group profile window when clicked. This is especially useful since there is no other way to do this; there is no LSL function to print out a group's name.

Finally, if you know a parcel key (as a result of calling llGetParcelDetails with PARCEL_DETAILS_ID), you can create a clickable link that brings up a place profile window when clicked, using the following special URL: <lsl>llOwnerSay("secondlife:///app/parcel/" + (string)parcel_key + "/about");</lsl>


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 if (uuid != NULL_KEY) 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.