You are currently browsing the tag archive for the 'indicator' tag.
One common item which you will find around Second Life is the ‘owner on-line’ indicator. There are various different versions of these, but most of them change color and display some floating text to say whether the owner is on-line.
Here is a script which implements this. It uses the llRequestAgentData function to find out whether the owner is on-line. This reports the information back to the script via the dataserver event, which then changes the text message and the color of the prim appropriately.
string ownerName;
key onlineQry;
init()
{
// Store the owner's name.
ownerName = llKey2Name(llGetOwner());
// Send a request for the information. This will
// be sent back in the dataserver event.
onlineQry = llRequestAgentData(llGetOwner(), DATA_ONLINE);
// Start a timer to regularly check the on-line
// status.
llSetTimerEvent(30.00);
}
default
{
state_entry()
{
init();
}
on_rez(integer r)
{
init();
}
timer()
{
onlineQry = llRequestAgentData(llGetOwner(), DATA_ONLINE);
}
dataserver(key query_id, string data)
{
vector prim_color;
if (query_id == onlineQry)
{
// The data parameter holds TRUE if the owner
// is on-line.
if ((integer)data == TRUE)
{
// Change the text.
llSetText(ownerName + " is on-line", <0.0, 1.0, 0.0>, 0.5);
// Set the object color to green.
prim_color = <0.0, 1.0, 0.0>;
llSetColor( prim_color, ALL_SIDES );
}
else
{
// Change the text.
llSetText(ownerName + " is off-line", <1.0, 0.0, 0.0>, 0.5);
// Set the object color to grey.
prim_color = <0.5, 0.5, 0.5>;
llSetColor( prim_color, ALL_SIDES );
}
}
}
changed(integer change)
{
if (change & CHANGED_OWNER)
{
// We have changed owner. Reset the script to
// make sure that we pick up the change
// correctly.
llResetScript();
}
}
}
