Online Indicator: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 86: | Line 86: | ||
llListen(0,"",toucher,""); | llListen(0,"",toucher,""); | ||
llInstantMessage(toucher, "write your message to " + name +" - you have " +(string)time + " seconds"); | 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); | llSetTimerEvent(time); | ||
} | } | ||
listen(integer ch, string name, key id, string msg) | listen(integer ch, string name, key id, string msg) | ||
{ | { | ||
llInstantMessage(user_key, msg); | llInstantMessage(user_key, llKey2Name(toucher) + " sent you a message from " + llGetRegionName() + ": " + msg); | ||
llInstantMessage(toucher, "message is sent"); | llInstantMessage(toucher, "message is sent."); | ||
llListenRemove(0); | llListenRemove(0); | ||
state show; | state show; | ||
| Line 97: | Line 98: | ||
timer() | timer() | ||
{ | { | ||
llInstantMessage(toucher, "time is up - touch again to write a message | llInstantMessage(toucher, "time is up - touch again to write a message"); | ||
llListenRemove(0); | llListenRemove(0); | ||
state show; | state show; | ||
Revision as of 13:48, 14 January 2009
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
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 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>