Difference between revisions of "Online Indicator"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
{{LSL Header}} | {{LSL Header}} | ||
This script | This script will create hover text with resident name and online status. | ||
Will show | Will show resident profile picture on the object and when touched, then toucher can send IM to the resident by typing the message into main chat.<br> | ||
Also offers a link in main chat to open | Also offers a link in main chat to open resident profile. | ||
<lsl>key user_key = "00000000-0000-0000-0000-000000000000"; // must be agent UUID whose status it will indicate | <lsl>key user_key = "00000000-0000-0000-0000-000000000000"; // must be agent UUID whose status it will indicate |
Revision as of 14:08, 14 January 2009
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
This script will create hover text with resident name and online status.
Will show resident profile picture on the object and when touched, then toucher can send IM to the resident by typing the message into main chat.
Also offers a link in main chat to open resident profile.
<lsl>key user_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 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( user_key, DATA_NAME); } dataserver(key queryid, string data) { name = data; llSetObjectName(name + "'s Online Detector"); state show; }
} state show {
state_entry() { llSetTimerEvent(10); } timer() { llHTTPRequest( url + (string)user_key,[HTTP_METHOD,"GET"],""); llRequestAgentData( user_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_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_UUID = llSubStringIndex(body,"\" class=\"parcelimg\" />") - 3; string profile_pic = llGetSubString(body, start_UUID, end_UUID); llSetTexture((key)profile_pic, ALL_SIDES); } else { llSetTexture(blank, 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"); llInstantMessage(toucher, "to see " + name +"'s profile, click this link here: secondlife:///app/agent/" + (string)user_key + "/about"); llSetTimerEvent(time); } listen(integer ch, string name, key id, string msg) { llInstantMessage(user_key, llKey2Name(toucher) + " sent you a message from " + llGetRegionName() + ": " + 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>