Below is the elevator script, followed by the control button script.
---------------------------
vector door_offset = <0,0,2>; // distance to move from start popsition(closed) to open.
float steps = 14.0; // number of steps to take to get there
// Variables
vector closed;
vector opened;
// Functions
moveit(vector target)
{
vector offset = (target - llGetPos()) / steps;
while ( llVecDist(llGetPos(), target) > 0.1 )
{
llSetPos(llGetPos() + offset);
}
llSetPos(target);
llSleep(1);
llStopSound();
}
// States
default
{
state_entry()
{
closed = llGetPos();
opened = closed + door_offset;
llSay(0, "Reset!"

state close;
}
on_rez(integer n)
{
llResetScript();
}
}
state close
{
state_entry()
{
moveit(closed);
llListen(90902, "", NULL_KEY, ""

}
on_rez(integer n)
{
llResetScript();
}
listen(integer chan, string name, key id, string msg)
{
if ( msg == "sesame" && llGetOwnerKey(id) == llGetOwner() )
{
state open;
}
else if ( msg == "reset" && id == llGetOwner() )
{
llResetScript();
}
}
}
state open
{
state_entry()
{
moveit(opened);
llListen(90902, "", NULL_KEY, ""

}
on_rez(integer n)
{
llResetScript();
}
listen(integer chan, string name, key id, string msg)
{
if ( msg == "sesame" && llGetOwnerKey(id) == llGetOwner() )
{
state close;
}
else if ( msg == "reset" && id == llGetOwner() )
{
llResetScript();
}
}
}
---------------------------------------------------------
default
{
touch_start(integer total_number)
{
if( llGetOwner() == llDetectedKey(0) )
{
llShout(90902, "sesame"

}
}
}