Difference between revisions of "Online Indicator"

From Second Life Wiki
Jump to navigation Jump to search
(New page: {{LSL Header}} This script will show if the user is online or offline - will create hover text. Will show user profile picture on the object and when touched, then toucher can send IM to...)
 
Line 8: Line 8:
integer time = 30;                                      // time within the message should be written.
integer time = 30;                                      // time within the message should be written.
string RESIDENT_URL = "http://world.secondlife.com/resident/";
string RESIDENT_URL = "http://world.secondlife.com/resident/";
key WHITE_DEFAULT_TEXTURE = "5748decc-f629-461c-9a36-a35a221fe21f";
key blank = "5748decc-f629-461c-9a36-a35a221fe21f";
string name;
string name;
key toucher;
key toucher;
Line 18: Line 18:
     {
     {
         llSetText("", <1,0,0>, 1.0);
         llSetText("", <1,0,0>, 1.0);
         llSetTexture(WHITE_DEFAULT_TEXTURE, ALL_SIDES);
         llSetTexture(blank, ALL_SIDES);
         llRequestAgentData( owner_key, DATA_NAME);   
         llRequestAgentData( owner_key, DATA_NAME);   
     }
     }
Line 37: Line 37:
         llHTTPRequest( RESIDENT_URL + (string)owner_key,[HTTP_METHOD,"GET"],"");
         llHTTPRequest( RESIDENT_URL + (string)owner_key,[HTTP_METHOD,"GET"],"");
         llRequestAgentData( owner_key, DATA_ONLINE);   
         llRequestAgentData( owner_key, DATA_ONLINE);   
     }
     }  
   
     on_rez(integer start_param)
     on_rez(integer start_param)
     {
     {
         llSetText("", <1,0,0>, 1.0);
         llSetText("", <1,0,0>, 1.0);
         llSetTexture(WHITE_DEFAULT_TEXTURE, ALL_SIDES);
         llSetTexture(blank, ALL_SIDES);
     }
     }  
   
     http_response(key request_id,integer status, list metadata, string body)
     http_response(key request_id,integer status, list metadata, string body)
     {
     {  
        // If the profile has no picture the image name will be
         if (llSubStringIndex(body, "blank.jpg") == -1)
        // http://world.secondlife.com/images/blank.jpg
         if (llSubStringIndex(body, "blank.jpg") == -1) // If a profile picture exists
         {
         {
             integer start_of_UUID = llSubStringIndex(body,"<img alt=\"profile image\" src=\"http://secondlife.com/app/image/") + llStringLength("<img alt=\"profile image\" src=\"http://secondlife.com/app/image/");
             integer start_of_UUID = llSubStringIndex(body,"<img alt=\"profile image\" src=\"http://secondlife.com/app/image/") + llStringLength("<img alt=\"profile image\" src=\"http://secondlife.com/app/image/");

Revision as of 13:45, 14 January 2009

This script will show if the user is online or offline - will create hover text.

Will show user profile picture on the object and when touched, then toucher can send IM to user.

<lsl>key owner_key = "00000000-0000-0000-0000-000000000000"; // must be agent UUID whose status it will indicate integer time = 30; // time within the message should be written. string RESIDENT_URL = "http://world.secondlife.com/resident/"; key blank = "5748decc-f629-461c-9a36-a35a221fe21f"; string name; key toucher; string status;

default {

   state_entry()
   {
       llSetText("", <1,0,0>, 1.0);
       llSetTexture(blank, ALL_SIDES);
       llRequestAgentData( owner_key, DATA_NAME);   
   }
   dataserver(key queryid, string data)
   {
       name = data;
       state show;
   }

} state show {

   state_entry()
   {
       llSetTimerEvent(10);
   } 
   timer()
   {
       llHTTPRequest( RESIDENT_URL + (string)owner_key,[HTTP_METHOD,"GET"],"");
       llRequestAgentData( owner_key, DATA_ONLINE);   
   } 
   on_rez(integer start_param)
   {
       llSetText("", <1,0,0>, 1.0);
       llSetTexture(blank, ALL_SIDES);
   } 
   http_response(key request_id,integer status, list metadata, string body)
   { 
       if (llSubStringIndex(body, "blank.jpg") == -1)
       {
           integer start_of_UUID = llSubStringIndex(body,"<img alt=\"profile image\" src=\"http://secondlife.com/app/image/") + llStringLength("<img alt=\"profile image\" src=\"http://secondlife.com/app/image/");
           integer end_of_UUID = llSubStringIndex(body,"\" class=\"parcelimg\" />") - 3;
           string profile_pic = llGetSubString(body, start_of_UUID, end_of_UUID);
           llSetTexture((key)profile_pic, ALL_SIDES);
       }
       else
       {
           llSetTexture(WHITE_DEFAULT_TEXTURE, ALL_SIDES);
       }
   }
   dataserver(key queryid, string data)
   {
       if ( data == "1" ) 
       {
           status = " is online";
   
           llSetText(name + status, <0,1,0>, 1.0);
       }
       else if (data == "0")
       {
           status = " is offline";
           
           llSetText(name + status, <1,0,0>, 1.0);
       }
       
   }
   touch_start(integer num_detected)
   {
       toucher = llDetectedKey(0);
       state msg;
   }

} state msg {

    state_entry()
   {
       llListen(0,"",toucher,"");
       llInstantMessage(toucher, "write your message to " + name +" - you have " +(string)time + " seconds");
       llSetTimerEvent(time);   
   }
   listen(integer ch, string name, key id, string msg)
   {
       llInstantMessage(owner_key, msg);
       llInstantMessage(toucher, "message is sent");
       llListenRemove(0);
       state show;
   }
   timer()
   {
       llInstantMessage(toucher, "time is up - touch again to write a message");
       llListenRemove(0); 
       state show;
   }

}


</lsl>