Difference between revisions of "User:Fred Gandt/Scripts/Continued 2"

From Second Life Wiki
Jump to navigation Jump to search
(→‎Swingin' Door: Added a couple of minor improvements/features.)
(→‎Swingin' Door: Squished a bug or two and added a feature. Full breakdown of config options to follow (still debugging).)
Line 158: Line 158:


list angle_list = ["210", "240", "270", "120", "150", "180", "30", "60", "90"];
list angle_list = ["210", "240", "270", "120", "150", "180", "30", "60", "90"];
 
key LL_Brazillian_Rosewood = "a25bebc8-4739-453d-d44e-fc522cf95488";
key LL_Brazillian_Rosewood = "a25bebc8-4739-453d-d44e-fc522cf95488";
 
list time_list = ["16", "18", "20","10", "12", "14", "4", "6", "8"];
list time_list = ["16", "18", "20","10", "12", "14", "4", "6", "8"];
 
key Door_Opening = "99236139-075b-3057-7c6f-0f68bb2af001";
key Door_Opening = "99236139-075b-3057-7c6f-0f68bb2af001";
 
key Door_Closing = "43e46041-25fa-0a03-7be8-78297f579d53";
key Door_Closing = "43e46041-25fa-0a03-7be8-78297f579d53";
 
key Doorbell = "213aae54-6093-7fcc-118f-3039a5435986";
key Doorbell = "213aae54-6093-7fcc-118f-3039a5435986";
 
integer notecard_length;
integer notecard_length;
 
integer sound_on = TRUE;
integer sound_on = TRUE;
 
string dia_msg = "\n";
string dia_msg = "\n";
 
list dia_buttons = [];
list dia_buttons = [];
 
list whitelist = [];
list whitelist = [];
 
list blacklist = [];
list blacklist = [];
 
float angle = 90.0;
float angle = 90.0;
 
integer count_NCL;
integer count_NCL;
 
string owner_name;
string owner_name;
 
float time = 6.0;
float time = 6.0;
 
integer dia_chan;
integer dia_chan;
 
integer dia_lis;
integer dia_lis;
 
integer t_count;
integer t_count;
 
integer global;
integer global;
 
integer locked;
integer locked;
 
integer group;
integer group;


integer local;
integer IGAN;
integer IGAN;
 
integer dead;
integer dead;
 
integer open;
integer open;
 
integer nop;
integer nop;
 
key bell_id;
key bell_id;
 
integer mln;
integer mln;
 
integer ot;
integer ot;
 
string NCN;
string NCN;
 
key owner;
key owner;
 
key NoNL;
key NoNL;
 
key NCK;
key NCK;
 
key OLC;
key OLC;
 
key NL;
key NL;
 
 
 
OperateDoor(integer o, integer lm)
OperateDoor(integer o, integer lm)
{
{
     if(nop > 2 && (!lm))
     if(nop >= 2 && (!lm))
     llMessageLinked(LINK_ALL_OTHERS, dia_chan, owner_name, owner);
     llMessageLinked(LINK_ALL_OTHERS, dia_chan, owner_name, owner);
     if(sound_on)
     if(sound_on)
Line 268: Line 270:
     open = (!open);
     open = (!open);
}
}
 
TouchMeAllOver(key id, integer t, integer te)
TouchMeAllOver(key id, integer t, integer te)
{
{
Line 275: Line 277:
         ot = TRUE;
         ot = TRUE;
         global = FALSE;
         global = FALSE;
         dia_msg = "\n\"Global\" - Instruct all doors linked to this.\n\n\"Local\" - Instruct only locally linked doors.";
        local = FALSE;
         dia_buttons = ["Global", "CANCEL", "Local"];
         dia_msg = "\n\"Global\" - Instruct all doors linked to this.
        \n\"Local\" - Instruct only locally linked doors.
        \n\"Self\" - Instruct only this door.";
         dia_buttons = ["Self", "Local", "CANCEL", "Global"];
         dia_lis = llListen(dia_chan, owner_name, owner, "");
         dia_lis = llListen(dia_chan, owner_name, owner, "");
         llDialog(owner, dia_msg, dia_buttons, dia_chan);
         llDialog(owner, dia_msg, dia_buttons, dia_chan);
Line 303: Line 308:
     }
     }
}
}
 
integer Whitelist(key id)
integer Whitelist(key id)
{
{
Line 353: Line 358:
     return w;
     return w;
}
}
 
GetCracking()
GetCracking()
{
{
Line 362: Line 367:
     mln = llGetLinkNumber();
     mln = llGetLinkNumber();
}
}
 
default
default
{
{
Line 374: Line 379:
         GetCracking();
         GetCracking();
         vector pos = llGetPos();
         vector pos = llGetPos();
         llSetPrimitiveParams([9, 0, 0, <0.125, 0.375, 0.0>, 0.0,ZERO_VECTOR, <1.0, 1.0, 0.0>, ZERO_VECTOR, // Build the door.
         llSetPrimitiveParams([9, 0, 0, <0.125, 0.375, 0.0>, 0.0,ZERO_VECTOR, <1.0, 1.0, 0.0>, ZERO_VECTOR,
                               17, 0, LL_Brazillian_Rosewood, <2.0, 0.1, 0.0>, <0.5, 0.025, 0.0>, 0.0,     //
                               17, 0, LL_Brazillian_Rosewood, <2.0, 0.1, 0.0>, <0.5, 0.025, 0.0>, 0.0,
                               17, 1, LL_Brazillian_Rosewood, <2.0, 1.0, 0.0>, <0.5, 0.0, 0.0>, 0.0,       //
                               17, 1, LL_Brazillian_Rosewood, <2.0, 1.0, 0.0>, <0.5, 0.0, 0.0>, 0.0,
                               17, 2, LL_Brazillian_Rosewood, <0.05, 1.0, 0.0>, <0.0125, 0.0, 0.0>, 0.0,   // Set the texture offsets.
                               17, 2, LL_Brazillian_Rosewood, <0.05, 1.0, 0.0>, <0.0125, 0.0, 0.0>, 0.0,
                               17, 3, LL_Brazillian_Rosewood, <2.0, 0.1, 0.0>, <0.5, -0.025, 0.0>, 0.0,     //
                               17, 3, LL_Brazillian_Rosewood, <2.0, 0.1, 0.0>, <0.5, -0.025, 0.0>, 0.0,
                               17, 4, LL_Brazillian_Rosewood, <0.05, 1.0, 0.0>, ZERO_VECTOR, 0.0,           //
                               17, 4, LL_Brazillian_Rosewood, <0.05, 1.0, 0.0>, ZERO_VECTOR, 0.0,
                               17, 5, LL_Brazillian_Rosewood, <1.0, 1.0, 0.0>, ZERO_VECTOR, 0.0,           // Raise up out of floor.
                               17, 5, LL_Brazillian_Rosewood, <1.0, 1.0, 0.0>, ZERO_VECTOR, 0.0,
                              6, <pos.x,pos.y,(pos.z + 1.25)>,                                            //
                               19,ALL_SIDES,1,13,
                               19,ALL_SIDES,1,13,                                                           //
                               7, <3.0, 0.2, 3.0>]);
                               7, <3.0, 0.2, 3.0>,                                                          //
                              8, ZERO_ROTATION]);                                                         // etc.
         Whitelist(NULL_KEY);
         Whitelist(NULL_KEY);
     }
     }
Line 392: Line 395:
         if(msg != "CANCEL")
         if(msg != "CANCEL")
         {
         {
             if(msg == "Global" | msg == "Local")
             if(msg == "Global" | msg == "Local" | msg == "Self")
             {
             {
                 if(msg == "Global")
                 if(msg == "Global")
                 global = TRUE;
                 global = TRUE;
                else if(msg == "Local")
                local = TRUE;
                 dia_msg = "\nConfigure your doors.";
                 dia_msg = "\nConfigure your doors.";
                 dia_buttons = ["AutoClose", "CANCEL", "Angle"];
                 dia_buttons = ["AutoClose", "CANCEL", "Angle"];
Line 416: Line 421:
                 if(global)
                 if(global)
                 llMessageLinked(LINK_ALL_OTHERS, dia_chan, "ALTT", owner);
                 llMessageLinked(LINK_ALL_OTHERS, dia_chan, "ALTT", owner);
                 else
                 else if(local)
                 llMessageLinked(LINK_ALL_OTHERS, dia_chan, "LTT", owner);
                 llMessageLinked(LINK_ALL_OTHERS, dia_chan, "LTT", owner);
                 dia_lis = llListen(dia_chan, owner_name, owner, "");
                 dia_lis = llListen(dia_chan, owner_name, owner, "");
                 llDialog(owner, dia_msg, dia_buttons, dia_chan);
                 llDialog(owner, dia_msg, dia_buttons, dia_chan);
             }
             }
             if(msg == "SoundOff")
             else if(msg == "SoundOff")
             sound_on = FALSE;
             sound_on = FALSE;
             else if(msg == "SoundOn")
             else if(msg == "SoundOn")
Line 462: Line 467:
                 }
                 }
             }
             }
             else
             else if(msg != "-")
             {
             {
                 if(msg != "-")
                 float m = ((float)msg);
                {
                if(m > 20.0)
                    float m = ((float)msg);
                angle = m;
                    if(m > 20.0)
                else
                    angle = m;
                time = m;
                    else
                    time = m;
                }
             }
             }
         }
         }
Line 555: Line 557:
         llListenRemove(dia_lis);
         llListenRemove(dia_lis);
         OperateDoor(open, FALSE);
         OperateDoor(open, FALSE);
       
     }
     }
     changed(integer change)
     changed(integer change)

Revision as of 20:12, 17 February 2010

FG jpg.jpg

My Contributions

Other Pages

Free Scripts

More Free Scripts

Legal Stuff

The legal stuff about contributing to this wiki (worth reading).

Tuition

Tuition scripts, notes, videos and screenshots etc. (hardly any content yet)

Free Scripts

Online Status Display & Pager

This will display the owners profile picture and a color coded and text texture sign that changes depending on the owners online status.

Just drop the script into a fresh prim.

<lsl>key owner_id;

string owner_name;

key ON_OFF_line = "124cfcec-6b8d-552c-42b8-6a1179884e74";

string profile_url = "http://world.secondlife.com/resident/";

key name_id;

key online_id;

key touch_request_id;

integer lis;

integer channel;

key requester;

OnlineStatus(integer ol, integer tr) {

   list ol_params = [];
   if(ol)
   ol_params = [17, 5, ON_OFF_line, <1.4,0.25,0.0>, <0.0,0.375,0.0>, (90*DEG_TO_RAD),
                18, 5, <0.0,1.0,0.0>, 1.0,
                18, 6, <1.0,1.0,1.0>, 1.0];
   else
   ol_params = [17, 5, ON_OFF_line, <1.4,0.25,0.0>, <0.0,0.625,0.0>, (90*DEG_TO_RAD),
                18, 5, <1.0,0.0,0.0>, 1.0,
                18, 6, <0.5,0.5,0.5>, 1.0];
   llSetPrimitiveParams(ol_params);
   if(tr)
   {
       llSetTimerEvent(30.0);
       if(ol)
       {
           lis = llListen(channel, "", requester, "");
           llDialog(requester, ("\nWould you like to page " + owner_name + "?"), ["YES", "NO"], channel);
       }
       else
       llInstantMessage(requester, (owner_name + " is currently offline."));
   }

}

default {

   state_entry()
   {
       owner_id = llGetOwner();
       name_id = llRequestAgentData(owner_id, DATA_NAME);
       channel = -5647;
   }
   dataserver(key q, string data)
   {
       if(q == name_id)
       {
           owner_name = data;
           llSetObjectName(owner_name + "'s Online Status");
           llHTTPRequest((profile_url + ((string)owner_id)), [], "");
       }
       else if(q == online_id)
       OnlineStatus(((integer)data), FALSE);
       else if(q == touch_request_id)
       OnlineStatus(((integer)data), TRUE);
   }
   http_response(key q, integer status, list metadata, string body)
   {
       integer tex_key_start = (llSubStringIndex(body, "imageid") + 18);
       integer tex_key_end = (tex_key_start + 35);
       key profile_image = ((key)llGetSubString(body, tex_key_start, tex_key_end));
       llSetPrimitiveParams([9, 0, 0, <0.6,0.875,0.0>, 0.02, ZERO_VECTOR, <1.0,1.0,0.0>, ZERO_VECTOR,
                             8, llEuler2Rot(<0.0,90.0,0.0>*DEG_TO_RAD),
                             7, <0.85,0.01,0.6>,
                             17, -1, TEXTURE_BLANK, <1.0,1.0,0.0>, ZERO_VECTOR, 0.0,
                             18, -1, ZERO_VECTOR, 1.0]);
       llSetPrimitiveParams([17, 6, profile_image, <1.0,1.0,0.0>, ZERO_VECTOR, (90*DEG_TO_RAD),
                             17, 5, ON_OFF_line, <1.4,0.25,0.0>, <0.0,0.375,0.0>, (90*DEG_TO_RAD),
                             19, 5, 0, 1,
                             18, 6, <1.0,1.0,1.0>, 1.0,
                             18, 5, <0.0,1.0,0.0>, 1.0,
                             20, 5, 1,
                             20, 6, 1]);
       llSetTimerEvent(0.1);
   }
   timer()
   {
       llListenRemove(lis);
       llSetTimerEvent(10.0);
       online_id = llRequestAgentData(owner_id, DATA_ONLINE);
   }
   touch_start(integer nd)
   {
       llSetTimerEvent(0.0);
       requester = llDetectedKey(0);
       touch_request_id = llRequestAgentData(owner_id, DATA_ONLINE);
   }
   listen(integer chan, string name, key id, string msg)
   {
       llListenRemove(lis);
       llSetTimerEvent(10.0);
       if(msg == "YES")
       {
           llInstantMessage(owner_id, ("secondlife:///app/agent/" + ((string)requester) + "/about has requested to message you."));
           llInstantMessage(requester, owner_name + " has been paged.");
       }
   }

}</lsl>

Swingin' Door

I have tested this roughly and there are a couple of little bumps in it. I'll heat up the steam iron...

I will add notes and guidance soon too. Basically this is a link or unlink, rotate or don't super robust swinging door script.

Although this is far more featured than you might imagine the one thing you need to know to get full use is to include a notecard in the doors something like the example below. More detailed explanation will come soon.

<lsl>Whitelist Fred Gandt Elmer Fudd Rank Xerox Blacklist The Joker Miss Crabapple M Linden</lsl><lsl>// Don't fiddle with the contents of this script unless you know what you're doing. // I designed it to be dragged and dropped into a fresh prim. // Touch and hold until a blue drop-down dialog shows for config options.

list angle_list = ["210", "240", "270", "120", "150", "180", "30", "60", "90"];

key LL_Brazillian_Rosewood = "a25bebc8-4739-453d-d44e-fc522cf95488";

list time_list = ["16", "18", "20","10", "12", "14", "4", "6", "8"];

key Door_Opening = "99236139-075b-3057-7c6f-0f68bb2af001";

key Door_Closing = "43e46041-25fa-0a03-7be8-78297f579d53";

key Doorbell = "213aae54-6093-7fcc-118f-3039a5435986";

integer notecard_length;

integer sound_on = TRUE;

string dia_msg = "\n";

list dia_buttons = [];

list whitelist = [];

list blacklist = [];

float angle = 90.0;

integer count_NCL;

string owner_name;

float time = 6.0;

integer dia_chan;

integer dia_lis;

integer t_count;

integer global;

integer locked;

integer group;

integer local;

integer IGAN;

integer dead;

integer open;

integer nop;

key bell_id;

integer mln;

integer ot;

string NCN;

key owner;

key NoNL;

key NCK;

key OLC;

key NL;


OperateDoor(integer o, integer lm) {

   if(nop >= 2 && (!lm))
   llMessageLinked(LINK_ALL_OTHERS, dia_chan, owner_name, owner);
   if(sound_on)
   {
       key door_sound;
       if(o)
       door_sound = Door_Closing;
       else
       door_sound = Door_Opening;
       llPlaySound(door_sound, 1.0);
   }
   vector v = (llRot2Euler(llGetLocalRot())*RAD_TO_DEG);
   float x = llFabs(v.x);
   float z = v.z;
   float d;
   if(x < 1.0)
   d = 1.0;
   else
   d = -1.0;
   float a = angle;
   if(o)
   {
       if(x < 1.0)
       d = -1.0;
       else
       d = 1.0;
       a = -angle;
       llSetTimerEvent(0.0);
   }
   else
   llSetTimerEvent(time);
   llTargetOmega(<0.0,0.0,d>, (angle/90.0), 1.0);
   llSleep(1.5);
   llTargetOmega(ZERO_VECTOR, 0.0, 0.0);
   llSetLocalRot(llEuler2Rot(<x,0.0,(z + a)>*DEG_TO_RAD));
   open = (!open);

}

TouchMeAllOver(key id, integer t, integer te) {

   if(t && id == owner)
   {
       ot = TRUE;
       global = FALSE;
       local = FALSE;
       dia_msg = "\n\"Global\" - Instruct all doors linked to this.
       \n\"Local\" - Instruct only locally linked doors.
       \n\"Self\" - Instruct only this door.";
       dia_buttons = ["Self", "Local", "CANCEL", "Global"];
       dia_lis = llListen(dia_chan, owner_name, owner, "");
       llDialog(owner, dia_msg, dia_buttons, dia_chan);
   }
   if(te)
   {
       if(t_count < 10)
       {
           if(!dead)
           {
               if(!Whitelist(id))
               {
                   bell_id = id;
                   OLC = llRequestAgentData(owner, DATA_ONLINE);
                   return;
               } 
           }
           else
           {
               if(id != owner)
               return;
           }
           OperateDoor(open, FALSE);
       }
       t_count = 0;
   }

}

integer Whitelist(key id) {

   integer w = TRUE;
   integer index;
   if(id == NULL_KEY)
   {
       whitelist = [];
       blacklist = [];
       count_NCL = 0;
       NCN = llGetInventoryName(INVENTORY_NOTECARD, 0);
       if(llStringLength(NCN))
       {
           IGAN = TRUE;
           NCK = llGetInventoryKey(NCN);
           llMessageLinked(LINK_ALL_OTHERS, dia_chan, "IGAN", NCK);
           NoNL = llGetNumberOfNotecardLines(NCN);
       }
       else
       {
           IGAN = FALSE;
           if(nop > 1)
           llMessageLinked(LINK_ALL_OTHERS, dia_chan, "IGAN", owner);
       }
   }
   else
   {
       if(id != owner)
       {
           if(locked)
           {
               index = llListFindList(whitelist, [llKey2Name(id)]);
               if(index == -1)
               w = FALSE;
               if(group)
               {
                   if(!w)
                   {
                       if(llSameGroup(id))
                       w = TRUE;
                   }
               }
           }
           index = llListFindList(blacklist, [llKey2Name(id)]);
           if(index != -1)
           w = FALSE;
       }
   }
   return w;

}

GetCracking() {

   owner = llGetOwner();
   dia_chan = (-1 * llAbs(((integer)("0x" + llGetSubString(((string)owner), -9, -3)))));
   owner_name = llKey2Name(owner);
   nop = llGetNumberOfPrims();
   mln = llGetLinkNumber();

}

default {

   on_rez(integer param)
   {
       GetCracking();
       Whitelist(NULL_KEY);
   }
   state_entry()
   {
       GetCracking();
       vector pos = llGetPos();
       llSetPrimitiveParams([9, 0, 0, <0.125, 0.375, 0.0>, 0.0,ZERO_VECTOR, <1.0, 1.0, 0.0>, ZERO_VECTOR,
                             17, 0, LL_Brazillian_Rosewood, <2.0, 0.1, 0.0>, <0.5, 0.025, 0.0>, 0.0,
                             17, 1, LL_Brazillian_Rosewood, <2.0, 1.0, 0.0>, <0.5, 0.0, 0.0>, 0.0,
                             17, 2, LL_Brazillian_Rosewood, <0.05, 1.0, 0.0>, <0.0125, 0.0, 0.0>, 0.0,
                             17, 3, LL_Brazillian_Rosewood, <2.0, 0.1, 0.0>, <0.5, -0.025, 0.0>, 0.0,
                             17, 4, LL_Brazillian_Rosewood, <0.05, 1.0, 0.0>, ZERO_VECTOR, 0.0,
                             17, 5, LL_Brazillian_Rosewood, <1.0, 1.0, 0.0>, ZERO_VECTOR, 0.0,
                             19,ALL_SIDES,1,13,
                             7, <3.0, 0.2, 3.0>]);
       Whitelist(NULL_KEY);
   }
   listen(integer chan, string name, key id, string msg)
   {
       llListenRemove(dia_lis);
       if(msg != "CANCEL")
       {
           if(msg == "Global" | msg == "Local" | msg == "Self")
           {
               if(msg == "Global")
               global = TRUE;
               else if(msg == "Local")
               local = TRUE;
               dia_msg = "\nConfigure your doors.";
               dia_buttons = ["AutoClose", "CANCEL", "Angle"];
               if(sound_on)
               dia_buttons += ["SoundOff"];
               else
               dia_buttons += ["SoundOn"];
               if(locked)
               dia_buttons += ["UnLock"];
               else
               dia_buttons += ["Lock"];
               if(group)
               dia_buttons += ["GroupOff"];
               else
               dia_buttons += ["GroupOn"];
               if(dead)
               dia_buttons += ["UnDead"];
               else
               dia_buttons += ["DeadLock"];
               if(global)
               llMessageLinked(LINK_ALL_OTHERS, dia_chan, "ALTT", owner);
               else if(local)
               llMessageLinked(LINK_ALL_OTHERS, dia_chan, "LTT", owner);
               dia_lis = llListen(dia_chan, owner_name, owner, "");
               llDialog(owner, dia_msg, dia_buttons, dia_chan);
           }
           else if(msg == "SoundOff")
           sound_on = FALSE;
           else if(msg == "SoundOn")
           sound_on = TRUE;
           else if(msg == "UnLock")
           locked = FALSE;
           else if(msg == "Lock")
           locked = TRUE;
           else if(msg == "GroupOff")
           group = FALSE;
           else if(msg == "GroupOn")
           group = TRUE;
           else if(msg == "UnDead")
           dead = FALSE;
           else if(msg == "DeadLock")
           dead = TRUE;
           else if(msg == "NoAuto")
           time = 0.0;
           else if(msg == "AutoClose" | msg == "Angle")
           {
               dia_lis = llListen(dia_chan, owner_name, owner, "");
               if(ot)
               {
                   ot = FALSE;
                   if(msg == "AutoClose")
                   {
                       dia_msg = "\nSelect the length of time to wait before auto closing or turn off auto closure.";
                       if(llRound(time))
                       dia_msg += ("\nThe time this door is set at is \"" + ((string)((integer)time)) + "\" seconds now.");
                       dia_buttons = ["NoAuto", "-", "CANCEL"];
                       dia_buttons += time_list;
                   }
                   else
                   {
                       dia_msg = ("\nSelect the degree of travel for your doors.\nThis door is set at \"" + ((string)angle) + "\" now.");
                       dia_buttons = ["-", "CANCEL", "-"];
                       dia_buttons += angle_list;
                   }
                   llDialog(owner, dia_msg, dia_buttons, dia_chan);
               }
           }
           else if(msg != "-")
           {
               float m = ((float)msg);
               if(m > 20.0)
               angle = m;
               else
               time = m;
           }
       }
   }
   dataserver(key q, string data)
   {
       if(q == NoNL)
       {
           notecard_length = ((integer)data);
           NL = llGetNotecardLine(NCN, count_NCL);
       }
       else if(q == NL)
       {
           if(data != EOF)
           whitelist += [data];
           if(count_NCL < notecard_length)
           NL = llGetNotecardLine(NCN, (++count_NCL));
           else
           {
               integer index = llListFindList(whitelist, ["blacklist"]);
               blacklist = llList2List(whitelist, index, -1);
               whitelist = llDeleteSubList(whitelist, index, -1);
           }
       }
       else if(q == OLC)
       {
           if(((integer)data))
           {
               llPlaySound(Doorbell, 1.0);
               llInstantMessage(owner, (llKey2Name(bell_id) + " is at the door"));
           }
       }
   }
   link_message(integer sender, integer num, string str, key id)
   {
       if(str != "IGAN")
       {
           if(sender == (mln + 1) | sender == (mln - 1))
           {
               if(num == dia_chan && str == owner_name && id == owner)
               OperateDoor(open, TRUE);
               else if(num == dia_chan && str == "LTT" && id == owner)
               dia_lis = llListen(dia_chan, owner_name, owner, "");
           }
           if(num == dia_chan && str == "ALTT" && id == owner)
           dia_lis = llListen(dia_chan, owner_name, owner, "");
       }
       else
       {
           if(num == dia_chan && id == owner)
           {
               if(IGAN)
               llMessageLinked(LINK_ALL_OTHERS, dia_chan, "IGAN", NCK);
           }
           else
           {
               NCN = ((string)id);
               whitelist = [];
               blacklist = [];
               count_NCL = 0;
               NoNL = llGetNumberOfNotecardLines(NCN);
           }
       }        
   }
   touch(integer nd)
   {
       ++t_count;
       if(t_count >= 10)
       {
           key id = llDetectedKey(0);
           TouchMeAllOver(id, TRUE, FALSE);
       }
   }
   touch_end(integer nd)
   {
       key id = llDetectedKey(0);
       TouchMeAllOver(id, FALSE, TRUE);
   }
   timer()
   {
       llSetTimerEvent(0.0);
       ot = FALSE;
       llListenRemove(dia_lis);
       OperateDoor(open, FALSE);

   }
   changed(integer change)
   {
       if(change & CHANGED_INVENTORY)
       {
           IGAN = FALSE;
           Whitelist(NULL_KEY);
       }
       if(change & CHANGED_LINK)
       {
           llSleep(2.0);
           nop = llGetNumberOfPrims();
           mln = llGetLinkNumber();
           Whitelist(NULL_KEY);
       }
   }

}</lsl>