Select Page

This is a well-written sliding door script.  Written by Pavl Duke of SL.  Works in both SL and Opensim.

```//  FREE SCRIPTS - TESTED AND WORKING ON KITELY

//  If you paid for this script, you were ripped off.
//  You may use in your creations.
//  You may not sell it as a script or in a script collection.

// Copy and paste the contents of this notecard into a new script.

//By all means make any and all uses you want to of this script, just don't sell it as a script, change the name or remove this or any other of the comments.

//This Script was written in a very basic form by Pavl Duke who then made the mistake of passing a copy to Robin Kierstrider who got all "nerr nerr nerr why doesnt it do more?" so now it does - Be warned!!

float time = 5;         //How long in seconds should the prim take to move..
float move = -3.0;      //How Far to move (this can be a negative number if the door is going the wrong way)
vector axis = <0,1,0>;  //Mark the x y or z axis with a 1 depending on which direction you need
float wait = 0.0;       //how long to stay open before closing - set to 0 for no auto-close
integer switch;
vector home;
vector moved;
do_it(vector here, vector target)
{
float i;
vector pos;
vector mov = here - target;
llResetTime();
do
{
i = llGetTime()/time;
pos =  (here - (mov*i));
llSleep(time/40);//divide by a smaller number if it's causing lag
}
while (llGetTime() < time);
}

default
{
state_entry()
{
}

touch_start(integer total_number)
{
if (axis.x > axis.y & axis.x > axis.z) moved = <move,0.0,0.0>;
else if (axis.y > axis.z) moved = <0.0,move,0.0>;
else moved = <0.0,0.0,move>;
if (wait != 0)
{
do_it(home,home + moved);
llSleep(wait);
do_it(moved+home,home);
}
else if (!switch) do_it(home,home + moved);
else do_it(moved+home,home);
switch = !switch;
}
}
//2012 Pavl Duke```