Difference between revisions of "Talk:BuildSlurl (NewAge)"

From Second Life Wiki
Jump to navigation Jump to search
(→‎Alternative slurl type links: Changed function since being educated by Rand & Babbage (thanx again))
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{KBnote|This page has been moved from [[llSLURL (NewAge)]]. See [[Suggested For Deletion/LlSLURL (NewAge)|here]] for the related discussion.}}
== Alternative slurl type links ==
== Alternative slurl type links ==


Line 21: Line 22:
string SLURL(string region, vector pos)
string SLURL(string region, vector pos)
{
{
     return (llEscapeURL(region) + "/" + ((string)llRound(pos.x)) + "/" + ((string)llRound(pos.y)) + "/" + ((string)llRound(pos.z)));
     return (llEscapeURL(region) + "/" + ((string)((integer)pos.x)) + "/" + ((string)((integer)pos.y)) + "/" + ((string)llCeil(pos.z)));
}
}



Latest revision as of 16:08, 9 September 2010

KBnote.png Note: This page has been moved from llSLURL (NewAge). See here for the related discussion.

Alternative slurl type links

A thrown-together script example showing 3 different types of destination/teleport links.

<lsl>string message_1 = "Click this link for destination information and teleport option:\n";

string message_2 = "Click this link for instant teleport:\n";

string message_3 = "This link can be used on a web site to direct users in-world:\n";

string method_1 = "secondlife://"; // Usable in-world only

string method_2 = "secondlife:///app/teleport/"; // Instant teleport

string method_3 = "http://slurl.com/secondlife/"; // Genuine slurl usable in and out-world

string region_name;

vector coords;

string SLURL(string region, vector pos) {

   return (llEscapeURL(region) + "/" + ((string)((integer)pos.x)) + "/" + ((string)((integer)pos.y)) + "/" + ((string)llCeil(pos.z)));

}

default {

   on_rez(integer param)
   {
       llResetScript();
   }
   changed(integer change)
   {
       if(change & CHANGED_REGION)
       {
           llResetScript();
       }
   }
   state_entry()
   {
       // The user simply adds the destination region name and landing pos as the description of the prim (comma separated).
       list destination = llCSV2List(llGetObjectDesc());
       if(llGetListLength(destination) == 2)
       {
           // Various checks could be employed to varify the user has added the destination to the prim desc correctly (idiot proofing!)
           region_name = llList2String(destination, 0);
           coords = ((vector)llList2String(destination, 1));
           return;
       }
       else
       {
           // Otherwise the destination defaults to the prim position (Useful? Better than nothing).
           region_name = llGetRegionName();
           coords = llGetPos();
       }
   }
   touch_start(integer nd)
   {
       while(nd)
       {
           string dest = SLURL(region_name, coords);
           llInstantMessage(llDetectedKey(--nd), ("\n" + message_1 + method_1 + dest +
                                                  "\n" + message_2 + method_2 + dest +
                                                  "\n" + message_3 + method_3 + dest));
       }
   }

}</lsl>-- Fred Gandt (talk|contribs) 19:41, 4 September 2010 (UTC)