Home |
Add a script
|
||
|---|---|---|---|
| Category: | Contributor: | Description | |
| Door | Ezhar Fairlight | Ultra Deluxe Door Script | |
Ultra Deluxe Door Script - updated
Ultra Deluxe Door Script.lsl
Download this script - Please use this link to get this script. If you see all the code on one long line, please use Wordpad or another editor, such as LSLEdit.exe. The .LSL file you will download is an ordinary text file.
1 // deluxe door script by Ezhar Fairlight 2 // features: one prim, no building skills required, automatic closing, workaround for rotation drift, 3 // doesn't mess up when moved, adjustable direction (inwards/outwards) and sound volume, HHGG quotes! 4 // updated for SL 1.4 5 6 // just rez a cube primitive and put this script inside - it will shape and texture itself into a door 7 8 // ********** SETTINGS HERE ************ 9 float TIMER = 30.0; // automatically close the door after this many seconds, 10 // set to 0 to disable automatic closing 11 12 integer DIRECTION = -1; // direction door opens in. Either 1 (outwards) or -1 (inwards); 13 14 float VOLUME = 0.8; // sound volume, 1.0 loudest, 0.0 to disable sound 15 // ********** END OF SETTINGS ********** 16 17 18 key SOUND_OPEN = "cb340647-9680-dd5e-49c0-86edfa01b3ac"; 19 key SOUND_CLOSE = "e7ff1054-003d-d134-66be-207573f2b535"; 20 21 vector gPos; // door position (objects move a tiny amount 22 // away from their position each time they are rotated, 23 // thus we need to workaround this by resetting 24 // the position after rotating) 25 26 door(integer open) { 27 if (open) { 28 llTriggerSound(SOUND_OPEN, VOLUME); 30 } else { // close 32 llTriggerSound(SOUND_CLOSE, VOLUME); 33 } 34 } 35 36 37 default { // first time startup 38 state_entry() { 39 if (llGetTexture(0) == "89556747-24cb-43ed-920b-47caed15465f") { // is default texture, set it up 41 llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_BOX,0, <0.375, 0.875, 0>, 0.0,<0, 0, 0>, <1, 1, 0>, <0, 0, 0>, 42 PRIM_SIZE, <0.2, 4, 3.325>, 43 PRIM_TEXTURE, 0, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <2.000000, 0.060000, 0.000000>, <0.500015, 0.469985, 0.000000>, 1.570840, 44 PRIM_TEXTURE, 1, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <-2.000000, 1.000000, 0.000000>, <0.500015, 0.000000, 0.000000>, 0.000000, 45 PRIM_TEXTURE, 2, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <0.100000, 1.000000, 0.000000>, <0.599994, 0.000000, 0.000000>, 0.000000, 46 PRIM_TEXTURE, 3, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <2.000000, 1.000000, 0.000000>, <0.500015, 0.000000, 0.000000>, 0.000000, 47 PRIM_TEXTURE, 4, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <2.000000, 0.080000, 0.000000>, <0.500015, 0.550005, 0.000000>, 1.570840, 48 PRIM_TEXTURE, 5, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <0.100000, 1.000000, 0.000000>, <0.449995, 0.000000, 0.000000>, 0.000000, 49 PRIM_TEXTURE, 6, "086c7e6b-bdd6-7388-f146-f3d1b353ed15", <0.100000, 1.000000, 0.000000>, <0.449995, 0.000000, 0.000000>, 0.000000] 50 ); 51 llSetObjectName("Door Deluxe"); 52 llSay(0, "Thank you for making a simple door very happy."); 53 } 54 gPos = llGetPos(); // remember where we're supposed to be 55 door(TRUE); 56 state closed; 57 } 58 } 59 60 state closed { // door is closed 62 gPos = llGetPos(); 63 } 64 65 state_entry() { 66 door(FALSE); 67 } 68 69 touch_start(integer total_number) { 70 state open; 71 } 72 73 moving_end() { // done moving me around, store new position 74 gPos = llGetPos(); 75 } 76 } 77 78 state open { // door is open 80 gPos = llGetPos(); 81 state closed; 82 } 83 84 state_entry() { 85 llSetTimerEvent(TIMER); 87 door(TRUE); 88 } 89 90 touch_start(integer num) { 91 state closed; 92 } 93 94 timer() { // auto-close 95 state closed; 96 } 97 98 moving_start() { // close when being moved 99 state closed;100 }101 102 state_exit() {103 llSetTimerEvent(0);104 }105 }// END //