Difference between revisions of "LlGenerateKey"

From Second Life Wiki
Jump to navigation Jump to search
Line 43: Line 43:
                     llMD5String(
                     llMD5String(
                         "secondlife://" + llGetRegionName()  + "/" +  
                         "secondlife://" + llGetRegionName()  + "/" +  
                        (string)llGetKey() + "/" + service + "/" +  
                            (string)llGetKey() + "/" +  
                        variable,  
                            (string)llGetLinkNumber() + "/" +
                            llGetScriptName() + "/" + (string)service + "/" +  
                            variable,  
                         0 // This is reserved by specification, will  
                         0 // This is reserved by specification, will  
                           // be increased with new/different versions.
                           // be increased with new/different versions.

Revision as of 15:20, 12 January 2009

Summary

Function: key generateKey( string service, string variable );

Generates a key using Type 3 (MD5) UUID generation to create a unique key using region-name, object-key, service and variable.
Returns a key The generated key

• string service The service, object, function, or whatever else this key may represent.
• string variable Any variable(s) relevant to the service that uniquely distinguish it.

Examples

In a two-prim linked-set put the following script (adding generateKey where noted) into the child-prim:<lsl>integer requestID = 0;

// Add generateKey here!!

default {

   touch_start(integer x) {
       llMessageLinked(
           LINK_ROOT, 
           1234, 
           "I am a request", 
           generateKey("echo", (string)requestID++)
       );
   }
   link_message(integer x, integer y, string msg, key id) {
       if (y == 1234) 
           llOwnerSay("Request: " + (string)id + " = " + msg);
   }

}</lsl>And the following script in the root-prim:<lsl>default {

   link_message(integer x, integer y, string msg, key id) {
       if (y == 1234) // Echo, send straight back
           llMessageLinked(x, y, msg, id);
   }
}</lsl>Simply touch the child-prim to use, enjoy!

Implementation

<lsl>key generateKey(string service, string variable) {

   return (key)llInsertString(
       llInsertString(
           llInsertString(
               llInsertString(
                   llMD5String(
                       "secondlife://" + llGetRegionName()  + "/" + 
                           (string)llGetKey() + "/" + 
                           (string)llGetLinkNumber() + "/" + 
                           llGetScriptName() + "/" + (string)service + "/" + 
                           variable, 
                       0 // This is reserved by specification, will 
                         // be increased with new/different versions.
                   ),
                   8,
                   "-"
               ),
               13,
               "-"
           ),
           18,
           "-"
       ),
       23,
       "-"
   );

}</lsl>