• Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
  • Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
  • Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.

Gardinenscript / 2tlg - entgegengesetzt öffnen

Hallo,
Ich habe ein script das den Prim in der z-Achse dehnt.. ihn also zusammenschiebt (Gardine öffnet sich) und aufdehnt (Gardine schließt sich).
da ich aber horizontal öffnen und schliessen will, habe ich die z-Achse im script auf y-Achse geändert, was auch soweit funktioniert.

Der Prim schiebt sich von rechts nach links auf und umgekehrt wieder zusammen. Ich hätte jetzt gerne eine 2. Gardinenhälfte, die sich entgegengesetzt öffnet und schließt. Also auf von links nach rechts und zu umgehehrt, so daß die beiden quasi von der Mitte des Fensters nach aussen hin öffnen - entgegengesetzt eben.

Ein drehen des Prims bringt nichts.. die Richtung der Dehnung bleibt immer gleich. Also muss ich offensichtlich irgendetwas im script umstellen, aber was?
Meine Versuche haben die abenteuerlichsten Ergebnisse gebracht, nur nicht das gewünschte :)

geht das überhaupt, oder bruch ich evtl ein anderes script?
Vielleicht habt Ihr Rat für mich :)

Hier das script:

Code:
integer steps = 25;


vector storedPos;
vector storedSize; 

integer Closed = TRUE;

OpenBlinds()
{
    if (!Closed)
    {
        return;
    }
    llWhisper(0,"Opening blinds");
    
    storedPos = llGetPos();
    storedSize = llGetScale();
    
    float stepsize = (storedSize.y - 0.2)  /steps;
    vector currentSize = storedSize;
    vector currentPos  = storedPos;
    while(currentSize.y > 0.2)
    {
        currentSize.y -= stepsize;
        if (currentSize.y < 0.2)
        {
            currentSize.y = 0.2;
        }
        currentPos.y = storedPos.y + ((storedSize.y - currentSize.y)/2);
        llSetScale(currentSize);
        llSetPos(currentPos);
        
    }
    Closed = FALSE;
}

CloseBlinds()
{
    if (Closed)
    {
        return;
    }
    
    llWhisper(0,"Closing blinds");
    
    float stepsize = (storedSize.y - 0.2) / steps;
    vector currentSize = llGetScale();
    vector currentPos  = llGetPos();
    
    while (currentSize.y < storedSize.y)
    {
    
        currentSize.y += stepsize;
        if (currentSize.y > storedPos.y)
        {
            currentSize.y = storedPos.y;
        }
        currentPos.y = storedPos.y + ((storedSize.y - currentSize.y)/2);
        llSetScale(currentSize);
        llSetPos(currentPos);
    }
    
    llSetScale(storedSize);
    llSetPos(storedPos);
    
    Closed = TRUE;
}
default
{
   

    touch_start(integer total_number)
    {
        
     OpenBlinds() ;
     state closed;
    } 
   
}
 state closed
 
 {
    touch_start(integer total_number)
    {
        
        {
            CloseBlinds();
            
            state default; 
        }
    }
}

Gruß
Snake
 
nur das vorzeichen ändern würde ich sagen
von
currentPos.y = storedPos.y + ((storedSize.y - currentSize.y)/2);
zu
currentPos.y = storedPos.y - ((storedSize.y - currentSize.y)/2);
 
Jo! - Genau so funktionierts.. Dankeschön!!! Selina :)

Ich hatte immer zuviel verändert *an die Stirn schlag*
wieder was gelernt....

Gruß Snake
 

Users who are viewing this thread

Zurück
Oben Unten