• 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.

Fernbedientes Script wieder abschalten per Zeit

Hallo,

ich habe hier ein Script gefunden und bei mir eingebaut. Funktioniert auch wunderbar.

Jetzt würde ich gern das nach 30Sekunden wieder abgeschaltet wird

Code:
integer rchannel = -65432;
integer toggle;
integer blink;

default{
    state_entry(){
        llListen(rchannel,"","","");
    }
    listen(integer channel, string name, key id, string message){
        if(llGetOwnerKey(id) == llGetOwner()){
            if(message == "touched"){   
                toggle = !toggle;
                llSetTimerEvent((float)toggle); 
            }
        }
    }    
    timer(){
        if(blink == 0){
            blink = 1;
            llSetPrimitiveParams([PRIM_GLOW, ALL_SIDES, 0.0]);
            //llSetColor(<0,0,255>,ALL_SIDES);
        }else{
            blink = 0;
            llSetPrimitiveParams([PRIM_GLOW, ALL_SIDES, 0.25]);
            //llSetColor(<1,1,1>,ALL_SIDES);
        }
    }
}

müßte ja ein zweiter Timer rein der nach 30 Sekunden ein etwas ausführt

So wie ich das sehe das hier
toggle = !toggle;

würde es so gehen?

timer(30) {
toggle = !toggle;
};

?

Danke tuxie
 
müßte ja ein zweiter Timer rein der nach 30 Sekunden ein etwas ausführt

Nee, es gibt nur einen timer. Du könntest ein 2. Script machen mit einem Timer, der diesem Script das dann per llMessageLinked mitteilt. Das ist aber Overkill und nicht elegant.

Ich würds einfach mit einer zusätzlich Zeitabfrage machen, also so:

Code:
integer rchannel = -65432;
integer toggle;
integer blink;

default{
    state_entry(){
        llListen(rchannel,"","","");
    }
    listen(integer channel, string name, key id, string message){
        if(llGetOwnerKey(id) == llGetOwner()){
            if(message == "touched"){   
                toggle = !toggle;
                llSetTimerEvent((float)toggle); 
                llResetTime();
            }
        }
    }    
    timer(){
       if (llGetTime() > 30.) {
           llSetTimerEvent(0.);
           return;
       }

        if(blink == 0){
            blink = 1;
            llSetPrimitiveParams([PRIM_GLOW, ALL_SIDES, 0.0]);
            //llSetColor(<0,0,255>,ALL_SIDES);
        }else{
            blink = 0;
            llSetPrimitiveParams([PRIM_GLOW, ALL_SIDES, 0.25]);
            //llSetColor(<1,1,1>,ALL_SIDES);
        }
    }
}
 
vielen Dank,

das Return ist die lösung. Habe allerdings nochwas einfügen müssen da das licht manchmal an und manchmal aus war. Habe vor dem Return noch llSetPrimitiveParams([PRIM_GLOW, ALL_SIDES, 0.0]); eingefügt.

Danke ihr seit Spitze
 
Und nochmals eine Frage,

leider schaltet sich das blinken erst beim 2. mal touchen ein, aber der Schalter reagiert und sendet auch.

integer rchannel = -65432;
integer toggle;
integer blink;

default{
state_entry(){
llListen(rchannel,"","","");
}
listen(integer channel, string name, key id, string message){
if(llGetOwnerKey(id) == llGetOwner()){
if(message == "touched"){
llSetPrimitiveParams([PRIM_GLOW, ALL_SIDES, 0.0]);
toggle = !toggle;
llSetTimerEvent((float)toggle);
llResetTime();
}
}
}
timer(){
if (llGetTime() > 30.) {
llSetTimerEvent(0.);
llSetPrimitiveParams([PRIM_GLOW, ALL_SIDES, 0.0]);
return;
}

if(blink == 0){
blink = 1;
llSetPrimitiveParams([PRIM_GLOW, ALL_SIDES, 0.0]);
//llSetColor(<0,0,255>,ALL_SIDES);
}else{
blink = 0;
llSetPrimitiveParams([PRIM_GLOW, ALL_SIDES, 0.35]);
//llSetColor(<1,1,1>,ALL_SIDES);
}
}
}

Noch jemand eine Idee woran das liegen kann?
 
Ezian Ecksol schrieb:
Nee, es gibt nur einen timer.
Notfalls kann man auch einen llSensorRepeat als 2. Timer missbrauchen. Einfach auf winzige Reichweite stellen, und vor allem: im sensor() und im no_sensor() muss das selbe stehen, so daß es auf jeden Fall ausgeführt wird. Mitunter recht praktisch ;-).
 

Users who are viewing this thread

Zurück
Oben Unten