Desde hace bastante tiempo circula en SL un script que es gratis y que lo puedes meter al objeto que quieras. Lo que siento es no poder dar los datos de su creador, a mí me pasaron el scripr pelado.
Se trata de dos scripts. Metidos en el "contenido" de un objeto, hacen que aparezca sobre él un mensaje que indica si el dueño está on line y que si tocas el objeto puedes enviarle un mensaje (los textos están en inglés pero está claro que puede cambiarse).
Como digo son dos scripts:
Reset on New Owner
Cita:// Reset on owner change.
key owner;
default
{
state_entry()
{
owner = llGetOwner();
}
on_rez(integer total_number)
{
if (owner != llGetOwner()) {
llSay(0, "New owner detected, resetting...");
llResetOtherScript("Online Tracker / Message Keeper");
owner = llGetOwner();
}
}
}
Online Tracker - Message Keeper
Cita:string owner_name = "Owner ";
key namerequest;
key onlinerequest;
integer online = FALSE;
list agents = [];
list handles = [];
list messages = [];
init()
{
llSetText("Initializing...", <1,1,1>, 1);
llSetTimerEvent(5);
namerequest = llRequestAgentData(llGetOwner(), DATA_NAME);
}
regurgitate()
{
integer i;
for (i=0; i<llGetListLength(messages); i++) {
llInstantMessage(llGetOwner(), llList2String(messages, i));
}
messages = [];
}
default
{
on_rez(integer param)
{
init();
}
state_entry()
{
init();
}
timer()
{
onlinerequest = llRequestAgentData(llGetOwner(), DATA_ONLINE);
}
touch(integer touch_num)
{
integer i;
for (i=0; i<touch_num; i++) {
agents += llDetectedKey(i);
handles += llListen(0, "", llDetectedKey(i), "");
llSay(0, llDetectedName(i) + ", please say your message on one line and it will be recorded and/or sent.");
}
}
listen(integer channel, string name, key id, string message)
{
integer agent_index = llListFindList(agents, [id]);
if (agent_index != -1) {
llListenRemove(llList2Integer(handles, agent_index));
handles = llDeleteSubList(handles, agent_index, agent_index);
agents = llDeleteSubList(agents, agent_index, agent_index);
if (online) {
llInstantMessage(llGetOwner(), name + ": " + message);
llSay(0, "Thank you, " + name + ", your message has been sent.");
} else {
messages += name + ": " + message;
llSay(0, "Thank you, " + name + ", your message has been recorded, and will be sent when " + owner_name + " is online.");
}
}
}
dataserver(key request, string data)
{
if (request == namerequest) {
owner_name = data;
llSetTouchText("Send IM");
} else {
if (data == "1") {
llSetColor(<0,1,0>, ALL_SIDES);
llSetText(owner_name + " is online.\nClick here to send an instant message.", <0,1,0>, 1);
online = TRUE;
regurgitate();
} else {
llSetColor(<0,0,0>, ALL_SIDES);
llSetText(owner_name + " is offline.\nClick here to leave a message.", <0,0,0>, 1);
online = FALSE;
}
}
}
}
















