Group Privacy: Difference between revisions

From Second Life Wiki
Jump to navigation Jump to search
No edit summary
Reduce obfuscation
 
(4 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Many landlords do not allow residents to have security devices that are continiously operating. This device is activated manually, and only operates so long as avatars are present. When avatars leave the vicinity, the device turns off.
{{LSL Header}}
Many landlords do not allow residents to have security devices that are continuously operating. This device is activated manually, and only operates so long as avatars are present. When avatars leave the vicinity, the device turns off. To turn on again, the device needs to be touched by an authorised person.


Place this script into a single prim, and decorate to taste.
Place this script into a single prim, and decorate to taste.


Requirement:
Requirements:


1. Deed to Match Land Group
# Edit script range and timer frequency to suit
2. Wear the Group Tag to Operate
# Deed to match the land group


//////////////////////////////////////////////////////////////////////////////////////
Operation:
//
 
//    Version 1.0 Release
# Insure that group members have the group tag active
//    Copyright (C) 2007, Chance Unknown
# Touch to activate; touch to deactivate
//  
<source lang="lsl2">
//    This library is free software; you can redistribute it and/or
//////////////////////////////////////////////////////////////////////////////////////
//    modify it under the terms of the GNU Lesser General Public License
//
//    as published by the Free Software Foundation; either
//    Version 1.0 Release
//    version 2.1 of the License, or (at your option) any later version.
//    Copyright (C) 2007, Chance Unknown
//  
//
//    This library is distributed in the hope that it will be useful,
//    This library is free software; you can redistribute it and/or
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    modify it under the terms of the GNU Lesser General Public License
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    as published by the Free Software Foundation; either
//    GNU Lesser General Public License for more details.
//    version 2.1 of the License, or (at your option) any later version.
//  
//
//    You should have received a copy of the GNU Lesser General Public License
//    This library is distributed in the hope that it will be useful,
//    along with this library; if not, write to the Free Software
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//
//    GNU Lesser General Public License for more details.
//////////////////////////////////////////////////////////////////////////////////////  
//
//    You should have received a copy of the GNU Lesser General Public License
float duration = 60.0;          // Duration of Land Ban Following the Eject (1Hr)
//    along with this library; if not, write to the Free Software
float RANGE = 40.0;            // Scan Range (40m)
//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
float RATE = 2.0;               // Scan Rate (2 Sec)
//
//////////////////////////////////////////////////////////////////////////////////////
integer status;
 
float duration = 60.0;          // Duration of Land Ban Following the Eject (1Hr)
off()
float RANGE = 40.0;            // Scan Range (40m)
{
float RATE = 10.0;             // Scan Rate (10 Sec)
    status = FALSE;
 
       
integer status;
    llSensorRemove();
 
       
off()
    llSetColor(<1,1,1>, ALL_SIDES);
{
   
    status = FALSE;
    llSay(0, "Deactivated.");
    llSensorRemove();
   
    llSetColor(<1,1,1>, ALL_SIDES);
    llSetText("Group Privacy\nOff\n\nTouch to Turn On", <1,1,1>, 1.0);
    llSay(0, "Deactivated.");
}
    llSetText("Group Privacy\nOff\n\nTouch to Turn On", <1,1,1>, 1);
}
on()
 
{
on()
    status = TRUE;
{
   
    status = TRUE;
    llSensorRepeat("", NULL_KEY, AGENT, RANGE, PI, RATE);
    llSensorRepeat("", NULL_KEY, AGENT, RANGE, PI, RATE);
   
    llSetColor(<1,0,0>, ALL_SIDES);
    llSetColor(<1,0,0>, ALL_SIDES);
    llSay(0, "Activated while group memebers are present.");
   
    llSetText("Group Privacy\nOn\n\nTouch to Turn Off", <1,1,1>, 0.5);
    llSay(0, "Activated while group memebers are present.");
}
   
 
    llSetText("Group Privacy\nOn\n\nTouch to Turn Off", <1,1,1>, 0.5);
boot(key id)
}
{
    if (llOverMyLand(id) == TRUE)
boot(key id)
    {
{
        llUnSit(id);
    if (llOverMyLand(id) == TRUE)
        llEjectFromLand(id);
    {
        llAddToLandBanList(id, duration); // Hour of Ban
        llUnSit(id);
    }
               
}
        llEjectFromLand(id);
 
               
default
        llAddToLandBanList(id, duration); // Hour of Ban
{
    }
    state_entry()
}
    {
default
{
    state_entry()
    {
        off();
    }
   
    touch_start(integer num_detected)
    {
        if (llGetLandOwnerAt(llGetPos()) != llGetOwner())
        {
            llSay(0, "Deed device to match land group.");
           
            return;
        }
       
        if (llSameGroup(llDetectedKey(0)) == TRUE)
        {
            if (status == FALSE)
            {
                on();
            }
            else
            {
                off();
            }
        }
       
        else
        {
            llSay(0, "Authorized to group members only.");
        }
    }
           
    sensor(integer num_detected)
    {
        integer i;
       
        integer group_members = 0;
       
        for (i = 0; i != num_detected; i++)
        {
            if (llSameGroup(llDetectedKey(i)) == FALSE)
            {
                boot(llDetectedKey(i));
            }
           
            else
            {
                llRemoveFromLandBanList(llDetectedKey(i));
               
                group_members++;
            }
        }
       
        if (group_members == 0)
        {
            off();
        }
    }
   
    no_sensor()
    {
         off();
         off();
    }
    }
      
 
}
    touch_start(integer num_detected)
    {
        if (llGetLandOwnerAt(llGetPos()) != llGetOwner())
            llSay(0, "Deed device to match land group.");
        else
        {
            if (llSameGroup(llDetectedKey(0)))
            {
                if (status)
                    off();
                else
                    on();
            }
            else
                llSay(0, "Authorized to group members only.");
        }
    }
 
    sensor(integer num_detected)
    {
        integer group_members;
        key id;
 
        integer i;
        for ( ; i < num_detected; ++i)
        {
            id = llDetectedKey(i);
 
            if (llSameGroup(id))
            {
                llRemoveFromLandBanList(id);
                ++group_members;
            }
            else
                boot(id);
        }
 
        if (!group_members)
            off();
    }
 
    no_sensor()
    {
        off();
     }
}
</source>
 
{{LSLC|Library}}

Latest revision as of 11:31, 21 January 2016

Many landlords do not allow residents to have security devices that are continuously operating. This device is activated manually, and only operates so long as avatars are present. When avatars leave the vicinity, the device turns off. To turn on again, the device needs to be touched by an authorised person.

Place this script into a single prim, and decorate to taste.

Requirements:

  1. Edit script range and timer frequency to suit
  2. Deed to match the land group

Operation:

  1. Insure that group members have the group tag active
  2. Touch to activate; touch to deactivate
//////////////////////////////////////////////////////////////////////////////////////
//
//    Version 1.0 Release
//    Copyright (C) 2007, Chance Unknown
//
//    This library is free software; you can redistribute it and/or
//    modify it under the terms of the GNU Lesser General Public License
//    as published by the Free Software Foundation; either
//    version 2.1 of the License, or (at your option) any later version.
//
//    This library is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU Lesser General Public License for more details.
//
//    You should have received a copy of the GNU Lesser General Public License
//    along with this library; if not, write to the Free Software
//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//
//////////////////////////////////////////////////////////////////////////////////////

float duration = 60.0;          // Duration of Land Ban Following the Eject (1Hr)
float RANGE = 40.0;             // Scan Range (40m)
float RATE = 10.0;              // Scan Rate (10 Sec)

integer status;

off()
{
    status = FALSE;
    llSensorRemove();
    llSetColor(<1,1,1>, ALL_SIDES);
    llSay(0, "Deactivated.");
    llSetText("Group Privacy\nOff\n\nTouch to Turn On", <1,1,1>, 1);
}

on()
{
    status = TRUE;
    llSensorRepeat("", NULL_KEY, AGENT, RANGE, PI, RATE);
    llSetColor(<1,0,0>, ALL_SIDES);
    llSay(0, "Activated while group memebers are present.");
    llSetText("Group Privacy\nOn\n\nTouch to Turn Off", <1,1,1>, 0.5);
}

boot(key id)
{
    if (llOverMyLand(id) == TRUE)
    {
        llUnSit(id);
        llEjectFromLand(id);
        llAddToLandBanList(id, duration); // Hour of Ban
    }
}

default
{
    state_entry()
    {
        off();
    }

    touch_start(integer num_detected)
    {
        if (llGetLandOwnerAt(llGetPos()) != llGetOwner())
            llSay(0, "Deed device to match land group.");
        else
        {
            if (llSameGroup(llDetectedKey(0)))
            {
                if (status)
                    off();
                else
                    on();
            }
            else
                llSay(0, "Authorized to group members only.");
        }
    }

    sensor(integer num_detected)
    {
        integer group_members;
        key id;

        integer i;
        for ( ; i < num_detected; ++i)
        {
            id = llDetectedKey(i);

            if (llSameGroup(id))
            {
                llRemoveFromLandBanList(id);
                ++group_members;
            }
            else
                boot(id);
        }

        if (!group_members)
            off();
    }

    no_sensor()
    {
        off();
    }
}