User:Daemonika Nightfire/Scripts/Doors
Jump to navigation
Jump to search
Bla Bla Bla
*DS* Smooth rotate door (center)
Text
<source lang="lsl2"> float degrees = 90; // Ein positiver oder negativer Wert bestimmt die Dreh-Richtung. integer steps = 20; // Ein kleinerer Wert beschleunigt die Bewegung.
integer st = 0; Moving() {
rotation default_rot = llGetLocalRot(); vector rot = llRot2Euler(default_rot) * RAD_TO_DEG; float section = degrees / steps; if(!st) { // FREEBIE Sound "Door open", Klinke wird gesdueckt. llTriggerSound("cb340647-9680-dd5e-49c0-86edfa01b3ac", 1.0); llSetTimerEvent(30.0); } integer i = 0; do { if(!st) { rot.z = rot.z+section; } else if(st) { rot.z = rot.z-section; } rotation newLocalRot = llEuler2Rot(rot * DEG_TO_RAD); llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_ROT_LOCAL, newLocalRot]); llSleep(0.06); } while(++i < steps); if(st) { // FREEBIE Sound "Door close", Tuer faellt ins Schloss. llTriggerSound("e7ff1054-003d-d134-66be-207573f2b535", 1.0); } st = !st;
}
default {
state_entry() { llOwnerSay("/me - " + llGetScriptName() + " Memory: " + (string)llGetUsedMemory() + " bytes in use."); } touch_start(integer total_number) { if(st) { llSetTimerEvent(0.0); } Moving(); } collision_start(integer total_number) { if(!st) { Moving(); } } timer() { llSetTimerEvent(0.0); Moving(); }
} </source>
*DS* Smooth rotate door (edge)
Text
<source lang="lsl2"> float degrees = 90; // Ein positiver oder negativer Wert bestimmt die Dreh-Richtung. integer steps = 20; // Ein kleinerer Wert beschleunigt die Bewegung.
integer st = 0; Moving() {
vector size = llGetScale(); rotation default_rot = llGetLocalRot(); vector rot = llRot2Euler(default_rot) * RAD_TO_DEG; float section = degrees / steps; if(!st) { // FREEBIE Sound "Door open", Klinke wird gesdueckt. llTriggerSound("cb340647-9680-dd5e-49c0-86edfa01b3ac", 1.0); llSetTimerEvent(30.0); } integer i; do { if(!st) { rot.z = rot.z+section; } else if(st) { rot.z = rot.z-section; } rotation newLocalRot = llEuler2Rot(rot * DEG_TO_RAD); // Nutze llRot2Fwd & size.x oder llRot2Left & size.y fuer breite Seite deiner Tuer. vector currentPos = llRot2Fwd(llGetLocalRot()) * size.x / 2.0; vector newPos = llRot2Fwd(newLocalRot) * size.x / 2.0; // Vertauschen der Zeichen + und - wechselt die Seite der "Scharniere". vector newLocalPos = llGetLocalPos() - currentPos + newPos; llSetLinkPrimitiveParamsFast(LINK_THIS,[PRIM_ROT_LOCAL, newLocalRot, PRIM_POS_LOCAL, newLocalPos]); llSleep(0.06); } while(++i < steps); if(st) { // FREEBIE Sound "Door close", Tuer faellt ins Schloss. llTriggerSound("e7ff1054-003d-d134-66be-207573f2b535", 1.0); } st = !st;
}
default {
state_entry() { llOwnerSay("/me - " + llGetScriptName() + " Memory: " + (string)llGetUsedMemory() + " bytes in use."); } touch_start(integer num) { if(st) { llSetTimerEvent(0.0); } Moving(); } collision_start(integer total_number) { if(!st) { Moving(); } } timer() { llSetTimerEvent(0.0); Moving(); }
} </source>