User:Daemonika Nightfire/Scripts/Doors
Jump to navigation
Jump to search
Bla Bla Bla
*DS* Smooth rotate door (center)
Text
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();
}
}
*DS* Smooth rotate door (edge)
Text
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();
}
}