The Ultimate door script for your creations. Sliding doors, rotating doors, drawers, etc. Rotation works in and X Y Z direction and supports full 360° rotations.
The Easy Door Script is designed to be used in a linked object. For example a door linked to a building or a drawers linked to a wardrobe. The door may also not be the root prim. This gives the Easy Door Script the ability to automatically adjust its position when you resize your object and allows you to setup double doors.
Setup is easy. Simply save the open position and closed position of your door using the blue dialog menu and you are done.

For most doors the rotation axis is automatically calculated. You do however have the option to manual set a rotation axis if you need to.
If you want your door to rotate around a hinge you can set hinge to On and set the hinge axis. The position of the hinge is automatically calculate but again you have the option to set this manually.
If you are setting up a sliding door you can ignore the hinge and rotation axis.
Ones your door has the desired movement you select print and copy and past the text in the “Easy Door Script (Settings)” notecard.

The Easy Door Script doesn’t affect the names or descriptions of your prims. If you call your door prim “door1” it will never change this. This means that if you are using a “name based” texture changer or any other script that uses the names and/or descriptions of your prims you wont have any problems.
_Config (Easy Door)
In addition to the settings notecard you can (optionally) add the config notecard for more options.
If you don’t add the _Config notecard then things like sound and auto close are turned off by default.

The link number lets you setup double doors (or link up to 50ish doors together).
In addition to doors with the same link number opening and closing at the same time they also automatically share lock status, access settings and the access list.
The link API number lets you setup other scripts like for example a house control system. Lock all doors, update the access list on all doors, etc. Almost every action of the Easy Door Script is shared using a llMessageLinked and can be triggered using a llMessageLinked. Included is a full perm example containing all the link messages the Easy Door Script sends and can receive. I have also added a simple doorbell example that will get triggered when someone that cant open the door clicks it.
User Menu
After setting up the door you can click and hold the door for 3 seconds to get the user menu (if you don’t turn it off in the config notecard).

The user menu lets the end user lock/unlock the door, change the access setting and open the Setup Menu.
_Access List (Easy Door)
In addition to the settings and config notecard you can (optionally) also add the access list notecard.
Avatars on the access list can always open and close the door and can lock/unlock the door using the user menu.

If you setup double doors you only need to add the access list to one of the doors as it is automatically shared with all doors on the same link number.
Irregular hinge
Not all hinges can be automatically calculated or are to complex to calculate manually.

For items with irregular hinges you can use the Find Hinge option (inside the Hinge XYZ menu). The only thing you need to do is add a prim to your object and name it “hinge” (and position it where you want your hinge to be). After adding the hinge prim you select “Find Hinge” in the menu and use one of the returned hinge poses in “Hinge Pos”. After you have setup your hinge you can remove the “hinge” prim again.
API
The Easy Door Script PRO contains a easy to use API (if you know basic scripting) and can be easily integrated with the Master Menu PRO .
To for example change the access setting on the door from a other script, the only thing you need to do is send a link message containing group, owner or everyone.
llMessageLinked(LINK_SET, link_number, “access”+ds+”owner”, link_hash);
In addition you can also add avatars to the access list of the doors by sending a link message like this:
llMessageLinked(LINK_SET, link_number, “access_list”+ds+”add”+ds+”bobsknief orsini”, link_hash);
If you want to make things a little bit more complicated you can also setup your own access system that controls the opening and closing of the doors by doing something like this:
link_message(integer sender_num, integer num, string msg, key id){
if(num == link_api_number){
if((string)id == link_hash){
list tmp_list = llParseStringKeepNulls(msg,[ds],[]); msg = "";
string var1 = llList2String(tmp_list,0); string var2 = llList2String(tmp_list,1);
string var3 = llList2String(tmp_list,2); string var4 = llList2String(tmp_list,3);
tmp_list = [];
if(var1 == "locked" || var1 == "no_access" || var1 == "col_locked" || var1 == "col_no_access"){
// check if avatar(var3) is in a access list ?
llMessageLinked(LINK_SET, link_number, "open"+ds+(string)uuid, link_hash); // open door
}
}
}
}