Sliding door that glides smoothly from closed to open and back with an auto timer.

 

  • DO NOT LINK TO HOUSE (even though it is quite funny).
// V1 //
 
vector target = <1.5, 0.1, 0.0>; // Play about to get the result you want.
// Each of the 3 floats represents X, Y, Z region axis in meters.
 
float time = 10.0; // Time for auto close. Set to zero to disable.
 
//////////////////////////////////////////////////////////////////
 
integer t;
 
integer open;
 
vector pos;
 
Door()
{
    vector targ;
    if(!open)
    {
        targ = (pos + target);
        llSetTimerEvent(time);
    }
    else
    {
        llSetTimerEvent(0.0);
        targ = (pos);
    }
    open = (!open);
    t = llTarget(targ, 0.04);
    llMoveToTarget(targ, 0.75);
    llSetStatus(STATUS_PHYSICS |
                STATUS_PHANTOM, TRUE);
}
 
default
{
    on_rez(integer param)
    {
        llResetScript();
    }
    state_entry()
    {
        llSetStatus(STATUS_BLOCK_GRAB, TRUE);
        llSetStatus(STATUS_PHYSICS |
                    STATUS_ROTATE_X |
                    STATUS_ROTATE_Y |
                    STATUS_ROTATE_Z |
                    STATUS_PHANTOM, FALSE);
        pos = llGetPos();
    }
    touch_start(integer nd)
    {
        Door();
    }
    at_target(integer num, vector tpos, vector opos)
    {
        llTargetRemove(t);
        llSetStatus(STATUS_PHYSICS |
                    STATUS_PHANTOM, FALSE);
        llSetPos(tpos);
    }
    timer()
    {
        llSetTimerEvent(0.0);
        Door();
    }
}