// V3 // float auto_close = 10.0; // The time the door remains open before auto closing. Set to zero for no auto closure. integer open; OperateDoors() { if(!open) { float f = 0.0; while((f += 0.01) <= 1.0) llSetLinkPrimitiveParamsFast(LINK_THIS, [9, 0, 0, <0.375,0.875,0.0>, 0.95, ZERO_VECTOR,, ZERO_VECTOR]); } else { float f = 1.0; while((f -= 0.01) >= -1.0) llSetLinkPrimitiveParamsFast(LINK_THIS, [9, 0, 0, <0.375,0.875,0.0>, 0.95, ZERO_VECTOR, , ZERO_VECTOR]); } llSetTimerEvent(auto_close); open = (!open); } default { state_entry() { vector pos = llGetPos(); llSetLinkPrimitiveParamsFast(LINK_THIS, [9, 0, 0, <0.375,0.875,0.0>, 0.95, ZERO_VECTOR, <0.0,1.0,0.0>, ZERO_VECTOR, 17, -1, TEXTURE_BLANK, <1.0,1.0,0.0>, ZERO_VECTOR, 0.0, 6, , 18, -1, ZERO_VECTOR, 0.4, 8, , 7, <3.0,5.0,0.01>]); } touch_start(integer nd) { if(llToLower(llGetObjectDesc()) == "owner") { while(nd) { if(llDetectedKey(--nd) == llGetOwner()) OperateDoors(); } } else OperateDoors(); } timer() { llSetTimerEvent(0.0); if(open) OperateDoors(); } }