Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Help please! Looking for single prim door script

Theremes Langdon
Registered User
Join date: 14 Oct 2004
Posts: 4
08-10-2005 12:22
Just as the title says. I am looking for a 1 prim door script. All the scripts I have for locking doors cause the door to open/close from the middle so I am looking for a script that will work with just the door where I don't have to add an extra prim on the door for it to open and close correctly.

Thanks :)

Theremes Langdon
Cid Jacobs
Theoretical Meteorologist
Join date: 18 Jul 2004
Posts: 4,304
08-10-2005 12:25
If you cut the prim in half, then it will still turn about the middle, but it will look like its on a hinge because the other half has been cut off. :)
_____________________
Hank Ramos
Lifetime Scripter
Join date: 15 Nov 2003
Posts: 2,328
08-10-2005 19:17
CODE
// deluxe door script by Ezhar Fairlight
// features: one prim, no building skills required, automatic closing, workaround for rotation drift,
// doesn't mess up when moved, adjustable direction (inwards/outwards) and sound volume, HHGG quotes!
// updated for SL 1.4

// just rez a cube primitive and put this script inside - it will shape and texture itself into a door

// ********** SETTINGS HERE ************
float TIMER = 30.0; // automatically close the door after this many seconds,
// set to 0 to disable automatic closing

integer DIRECTION = -1; // direction door opens in. Either 1 (outwards) or -1 (inwards);

float VOLUME = 0.8; // sound volume, 1.0 loudest, 0.0 to disable sound
// ********** END OF SETTINGS **********


key SOUND_OPEN = "cb340647-9680-dd5e-49c0-86edfa01b3ac";
key SOUND_CLOSE = "e7ff1054-003d-d134-66be-207573f2b535";

vector gPos; // door position (objects move a tiny amount
// away from their position each time they are rotated,
// thus we need to workaround this by resetting
// the position after rotating)

door(integer open) {
if (open) {
llTriggerSound(SOUND_OPEN, VOLUME);
llSetRot(llEuler2Rot(<0, 0, -DIRECTION * PI_BY_TWO>) * llGetRot());
} else { // close
llSetRot(llEuler2Rot(<0, 0, DIRECTION * PI_BY_TWO>) * llGetRot());
llTriggerSound(SOUND_CLOSE, VOLUME);
}
}


default { // first time startup
state_entry() {
if (llGetTexture(0) == "89556747-24cb-43ed-920b-47caed15465f") { // is default texture, set it up
llSetPos(llGetPos() + <0, 0, 3.325 / 2 - 0.25>);
llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_BOX, <0.375, 0.875, 0>, 0.0, 0.0, <1, 1, 0>, <0, 0, 0>,
PRIM_SIZE, <0.2, 4, 3.325>,
PRIM_TEXTURE, 0, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <2.000000, 0.060000, 0.000000>, <0.500015, 0.469985, 0.000000>, 1.570840,
PRIM_TEXTURE, 1, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <-2.000000, 1.000000, 0.000000>, <0.500015, 0.000000, 0.000000>, 0.000000,
PRIM_TEXTURE, 2, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <0.100000, 1.000000, 0.000000>, <0.599994, 0.000000, 0.000000>, 0.000000,
PRIM_TEXTURE, 3, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <2.000000, 1.000000, 0.000000>, <0.500015, 0.000000, 0.000000>, 0.000000,
PRIM_TEXTURE, 4, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <2.000000, 0.080000, 0.000000>, <0.500015, 0.550005, 0.000000>, 1.570840,
PRIM_TEXTURE, 5, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <0.100000, 1.000000, 0.000000>, <0.449995, 0.000000, 0.000000>, 0.000000,
PRIM_TEXTURE, 6, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <0.100000, 1.000000, 0.000000>, <0.449995, 0.000000, 0.000000>, 0.000000]
);
llSetObjectName("Door Deluxe");
llSay(0, "Thank you for making a simple door very happy.");
}
gPos = llGetPos(); // remember where we're supposed to be
door(TRUE);
state closed;
}
}

state closed { // door is closed
on_rez(integer start_param) {
gPos = llGetPos();
}

state_entry() {
door(FALSE);
}

touch_start(integer total_number) {
state open;
}

moving_end() { // done moving me around, store new position
gPos = llGetPos();
}
}

state open { // door is open
on_rez(integer start_param) {
gPos = llGetPos();
state closed;
}

state_entry() {
llSetTimerEvent(TIMER);
llSetPos(gPos); // rotation drift workaround
door(TRUE);
}

touch_start(integer num) {
state closed;
}

timer() { // auto-close
state closed;
}

moving_start() { // close when being moved
state closed;
}

state_exit() {
llSetTimerEvent(0);
}
}
Theremes Langdon
Registered User
Join date: 14 Oct 2004
Posts: 4
08-11-2005 10:55
Oh thanks so much...but :( ran into a problem. I made the cube put in the script and it jumped up then...I got this message

llSetPrimitiveParams error running rule #1 (PRIM_TYPE_BOX): arg #1 (hole type) integer expected but vector given.

Any suggestions?
Cid Jacobs
Theoretical Meteorologist
Join date: 18 Jul 2004
Posts: 4,304
08-11-2005 11:24
From: Hank Ramos
CODE
llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_BOX, <0.375, 0.875, 0>, 0.0, 0.0, <1, 1, 0>, <0, 0, 0>,
PRIM_SIZE, <0.2, 4, 3.325>,
PRIM_TEXTURE, 0, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <2.000000, 0.060000, 0.000000>, <0.500015, 0.469985, 0.000000>, 1.570840,
PRIM_TEXTURE, 1, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <-2.000000, 1.000000, 0.000000>, <0.500015, 0.000000, 0.000000>, 0.000000,
PRIM_TEXTURE, 2, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <0.100000, 1.000000, 0.000000>, <0.599994, 0.000000, 0.000000>, 0.000000,
PRIM_TEXTURE, 3, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <2.000000, 1.000000, 0.000000>, <0.500015, 0.000000, 0.000000>, 0.000000,
PRIM_TEXTURE, 4, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <2.000000, 0.080000, 0.000000>, <0.500015, 0.550005, 0.000000>, 1.570840,
PRIM_TEXTURE, 5, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <0.100000, 1.000000, 0.000000>, <0.449995, 0.000000, 0.000000>, 0.000000,
PRIM_TEXTURE, 6, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <0.100000, 1.000000, 0.000000>, <0.449995, 0.000000, 0.000000>, 0.000000]
);

I cant get in world atm, but shouldnt that be:

CODE
llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_BOX, 0, <0.375, 0.875, 0>, 0.0, <0.0, 0.0, 0.0>, <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>,
PRIM_SIZE, <0.2, 4, 3.325>,
PRIM_TEXTURE, 0, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <2.000000, 0.060000, 0.000000>, <0.500015, 0.469985, 0.000000>, 1.570840,
PRIM_TEXTURE, 1, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <-2.000000, 1.000000, 0.000000>, <0.500015, 0.000000, 0.000000>, 0.000000,
PRIM_TEXTURE, 2, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <0.100000, 1.000000, 0.000000>, <0.599994, 0.000000, 0.000000>, 0.000000,
PRIM_TEXTURE, 3, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <2.000000, 1.000000, 0.000000>, <0.500015, 0.000000, 0.000000>, 0.000000,
PRIM_TEXTURE, 4, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <2.000000, 0.080000, 0.000000>, <0.500015, 0.550005, 0.000000>, 1.570840,
PRIM_TEXTURE, 5, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <0.100000, 1.000000, 0.000000>, <0.449995, 0.000000, 0.000000>, 0.000000,
PRIM_TEXTURE, 6, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <0.100000, 1.000000, 0.000000>, <0.449995, 0.000000, 0.000000>, 0.000000]
);
_____________________
Theremes Langdon
Registered User
Join date: 14 Oct 2004
Posts: 4
08-13-2005 00:47
wooohooo thanks
Theremes Langdon
Registered User
Join date: 14 Oct 2004
Posts: 4
08-13-2005 01:05
doh...uh how do I make it lock?