Reply
Honored Resident
JohnathanLuke Larkham
Posts: 11
0 Kudos

"Tattler" Script?

Hey there!

Needing a script to help a friend out.

Somebody in his group of friends keeps coming into his house and messing up his prims and objects.  We would like to place a script in some of these frequently-moved objects to track down which of his friends is the culprit.  He really does not want to take away perms from all his friends because they all claim they are innocent, and we are trying to figure out other possibilities from sim resets to the land owner simply being a jerk.

 

The basis of the script:

When an object is moved

The owner of the object (my friend)

will be IMed by the object moved

regardless of online status of owner (my friend)

and tell the owner (my friend)

who (moved the object)

what (object was moved)

when (that object was moved)

 

If anybody can point me to a script already made, I would be happy to purchase it.

Any help at all will be appreciated.

Thanks!

Sephy McCaw
Posts: 147
Topics: 1
Kudos: 0
Registered: ‎02-25-2009
0 Kudos

Re: "Tattler" Script?

Reply to JohnathanLuke Larkham - view message

You could simply tell your friend to just lock his items in place so that they cant be moved, since only he can lock/unlock his items and no one else.

Honored Resident
Jenny Siddeley
Posts: 41
0 Kudos

Re: "Tattler" Script?

Reply to JohnathanLuke Larkham - view message

The easiest solution is indeed to lock your objects you don't want moved. But it won't tell you who the 'culprit' is.

If you want to know who it is, even with a script there is no 100% sure way to know, but you can use a timer checking the position of an object, and once the position is different, it could trigger a sensor checking for who's around. Most likely it will find one person not too far and chances are it will be that person. This is not absolutely sure, but it may help your friend.

For example:

vector pos = ZERO_VECTOR;

string Clock(integer clock)
{
    integer hours = clock/3600;
    integer minutes = clock/60 - hours*60;
    integer seconds = clock%60;
    return (string)hours+":"+(string)minutes+":"+(string)seconds;
}

default
{
    state_entry()
    {
        pos = llGetPos();
        llSetTimerEvent(2.0);
    }
    
    on_rez(integer param)
    {
        llResetScript();
    }
    
    timer()
    {
        if (llGetPos() != pos)
        {
            pos = llGetPos();
            llSensor("", NULL_KEY, AGENT_BY_LEGACY_NAME, 96.0, PI);
        }
    }
    
    sensor(integer num)
    {
        list Agents = [];
        integer i;
        for (i=0 ; i<num ; ++i)
           Agents += [llDetectedName(i)+" ("+(string)llVecDist(llGetPos(), llDetectedPos(i))+" meters)"];
        
        string msg = "Object Moved: "+llGetObjectName()+"\n";
        msg += "Time: "+(string)llGetDate()+", "+Clock((integer)llGetGMTclock())+" GMT\n";
        msg += "List of people around : "+llList2CSV(Agents);
        llInstantMessage(llGetOwner(), msg);
    }
}

Copy / paste it in a script and put it in the objects being moved, then once you found out who it is (or once you give up if it didn't help), don't forget to remove this script from all your objects. Hopefully it will help though.