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

Partikelfarbe regelmässig ändern

Colin Dragonash

Aktiver Nutzer
Hallo, ich brauch mal wieder hilfe.
Wie kann ich in einem Partikel Script die Farbe der Partikel ändern, so dass sie nach z.b. 20 Sekunden die Farbe ändern.
Zur Zeit benutze ich :

PSYS_PART_START_COLOR , <llFrand(1),llFrand(1.5),llFrand(2)>,
PSYS_PART_END_COLOR , <1.00000, 1.00000, 1.00000>, PSYS_PART_START_ALPHA , (float)0.010000,
PSYS_PART_END_ALPHA , (float)0.500000,

Das ergibt in der mitte der Partikel grün und aussen weiss.....hätte aber gerne das sich die Farbe in der mitte ändern kann, alle paar sekunden.
Geht das? Und wenn ja, wie:?:
 
Partikel sind eine Eigenschaft des Prims - um etwas dran zu ändern muß die Funktion jeweils neu aufgerufen werden. Also wie Archon schon sagte, nimm einen Timer und ruf die Partikelfunktion in den gewünschten Abständen immer wieder auf mit den neuen Farbwerten.
 
so z.B.

state_entry()
{
llSetTimerEvent(5);//hier Deine gewünschte Zeit in Sekunden eintragen
//hier dann den Part Deiner Partikel
}
timer()// hier startet der Timer und wiederholt in diesem Fall alle 5 Sekunden den im Timer aufgerufenen Befehl
{
llResetScript();//setzt das Script zurück
}
 
Also nicht unbedingt über llResetScript, aber mit einem Aufruf der Particle-Funktion mit den geänderten Parametern im Timer.
 
Hmm....geht irgendwie nicht, ich bekomme immer bei der Zeile

timer()// hier startet der Timer und wiederholt in diesem Fall alle 5 Sekunden den im Timer aufgerufenen Befehl

einen syntax error
 
Dann hast du da wohl einen Syntax Error. Der sich leider schlecht finden lässt, da du den Code nicht zeigst.
 
default {

state_entry() {

llSetTimerEvent(5);//hier Deine gewünschte Zeit in Sekunden eintragen

llParticleSystem( [ // texture parameters:
PSYS_SRC_TEXTURE , "",
PSYS_PART_START_SCALE , <1.68493, 1.84677, 0.00000>, PSYS_PART_END_SCALE , <2.58000, 3.22000, 0.00000>,
PSYS_PART_START_COLOR , <llFrand(1),llFrand(1),llFrand(1)>, PSYS_PART_END_COLOR , <0.50000, 0.60000, 1.00000>,
PSYS_PART_START_ALPHA , (float)0.480000, PSYS_PART_END_ALPHA , (float)0.000000,

// production parameters:
PSYS_SRC_BURST_PART_COUNT , (integer)66,
PSYS_SRC_BURST_RATE , (float)0.065410,
PSYS_PART_MAX_AGE , (float)4.041708,
PSYS_SRC_MAX_AGE , (float)0.000000,

// placement parameters:
PSYS_SRC_PATTERN , 8,
PSYS_SRC_BURST_SPEED_MIN , (float)1.399010, PSYS_SRC_BURST_SPEED_MAX , (float)2.997160,
PSYS_SRC_BURST_RADIUS , (float)0.872716,

// placement parameters (for angles only):
PSYS_SRC_ANGLE_BEGIN , (float)1.691656,
PSYS_SRC_ANGLE_END , (float)1.584113,
PSYS_SRC_OMEGA , <0.00000, 0.00000, 0.00000>,

// after-effects & influences:
PSYS_SRC_ACCEL , <0.00000, 0.00000, 0.00000>,
PSYS_SRC_TARGET_KEY , (key)"",
PSYS_PART_FLAGS , (integer)( 0 // (59) texture & influence options:
| PSYS_PART_INTERP_COLOR_MASK
| PSYS_PART_INTERP_SCALE_MASK
// | PSYS_PART_BOUNCE_MASK
| PSYS_PART_WIND_MASK
| PSYS_PART_FOLLOW_SRC_MASK
| PSYS_PART_FOLLOW_VELOCITY_MASK
// | PSYS_PART_TARGET_POS_MASK
// | PSYS_PART_TARGET_LINEAR_MASK
// | PSYS_PART_EMISSIVE_MASK

timer()// hier startet der Timer und wiederholt in diesem Fall alle 5 Sekunden den im Timer aufgerufenen Befehl




) ] );}}


In der Zeile
timer()
bekomme ich denn den Syntax Error
 
mach mal so. habs jetzt nicht getestet, aber sollte iegentlich gehen
Code:
ps() {
llParticleSystem( [ // texture parameters:
                  PSYS_SRC_TEXTURE , "",
PSYS_PART_START_SCALE , <1.68493, 1.84677, 0.00000>, PSYS_PART_END_SCALE , <2.58000, 3.22000, 0.00000>,
PSYS_PART_START_COLOR , <llFrand(1),llFrand(1),llFrand(1)>, PSYS_PART_END_COLOR , <0.50000, 0.60000, 1.00000>,
                  PSYS_PART_START_ALPHA , (float)0.480000, PSYS_PART_END_ALPHA , (float)0.000000,

                  // production parameters:
                  PSYS_SRC_BURST_PART_COUNT , (integer)66,
                  PSYS_SRC_BURST_RATE , (float)0.065410,
                  PSYS_PART_MAX_AGE , (float)4.041708,
                  PSYS_SRC_MAX_AGE , (float)0.000000,

                  // placement parameters:
                  PSYS_SRC_PATTERN , 8,
                  PSYS_SRC_BURST_SPEED_MIN , (float)1.399010, PSYS_SRC_BURST_SPEED_MAX , (float)2.997160,
                  PSYS_SRC_BURST_RADIUS , (float)0.872716,

                  // placement parameters (for angles only):
                  PSYS_SRC_ANGLE_BEGIN , (float)1.691656,
                  PSYS_SRC_ANGLE_END , (float)1.584113,
                  PSYS_SRC_OMEGA , <0.00000, 0.00000, 0.00000>,

                  // after-effects & influences:
                  PSYS_SRC_ACCEL , <0.00000, 0.00000, 0.00000>,
                  PSYS_SRC_TARGET_KEY , (key)"",
                  PSYS_PART_FLAGS , (integer)( 0 // (59) texture & influence options:
                     | PSYS_PART_INTERP_COLOR_MASK
                     | PSYS_PART_INTERP_SCALE_MASK
                  // | PSYS_PART_BOUNCE_MASK
                     | PSYS_PART_WIND_MASK
                     | PSYS_PART_FOLLOW_SRC_MASK
                     | PSYS_PART_FOLLOW_VELOCITY_MASK
                  // | PSYS_PART_TARGET_POS_MASK
                  // | PSYS_PART_TARGET_LINEAR_MASK
                  // | PSYS_PART_EMISSIVE_MASK) 
] );
}
default {
      state_entry() {
          ps();
          llSetTimerEvent(5);//hier Deine gewünschte Zeit in Sekunden eintragen
          
}
      timer() { // hier startet der Timer und wiederholt in diesem Fall alle 5 Sekunden den im Timer aufgerufenen Befehl
      ps();
}
}
 
danke.....habs grade getestet, leider bekomme ich immer noch einen Syntax Error.

hier bei der rechteckigen klammer

] );
}
default {
state_entry() {
ps();
llSetTimerEvent(5);//hier Deine gewünschte Zeit in Sekunden eintragen

}
timer() { // hier startet der Timer und wiederholt in diesem Fall alle 5 Sekunden den im Timer aufgerufenen Befehl
ps();
}
}
 
Das ist getestet und läuft

Code:
ps() {
llParticleSystem( [ // texture parameters:
PSYS_SRC_TEXTURE , "",
PSYS_PART_START_SCALE , <1.68493, 1.84677, 0.00000>, PSYS_PART_END_SCALE , <2.58000, 3.22000, 0.00000>,
PSYS_PART_START_COLOR , <llFrand(1),llFrand(1),llFrand(1)>, PSYS_PART_END_COLOR , <0.50000, 0.60000, 1.00000>,
PSYS_PART_START_ALPHA , (float)0.480000, PSYS_PART_END_ALPHA , (float)0.000000,

// production parameters:
PSYS_SRC_BURST_PART_COUNT , (integer)66,
PSYS_SRC_BURST_RATE , (float)0.065410,
PSYS_PART_MAX_AGE , (float)4.041708,
PSYS_SRC_MAX_AGE , (float)0.000000,

// placement parameters:
PSYS_SRC_PATTERN , 8,
PSYS_SRC_BURST_SPEED_MIN , (float)1.399010, PSYS_SRC_BURST_SPEED_MAX , (float)2.997160,
PSYS_SRC_BURST_RADIUS , (float)0.872716,

// placement parameters (for angles only):
PSYS_SRC_ANGLE_BEGIN , (float)1.691656,
PSYS_SRC_ANGLE_END , (float)1.584113,
PSYS_SRC_OMEGA , <0.00000, 0.00000, 0.00000>,

// after-effects & influences:
PSYS_SRC_ACCEL , <0.00000, 0.00000, 0.00000>,
PSYS_SRC_TARGET_KEY , (key)"",
PSYS_PART_FLAGS , (integer)( 0 // (59) texture & influence options:
| PSYS_PART_INTERP_COLOR_MASK
| PSYS_PART_INTERP_SCALE_MASK
// | PSYS_PART_BOUNCE_MASK
| PSYS_PART_WIND_MASK
| PSYS_PART_FOLLOW_SRC_MASK
| PSYS_PART_FOLLOW_VELOCITY_MASK
// | PSYS_PART_TARGET_POS_MASK
// | PSYS_PART_TARGET_LINEAR_MASK
// | PSYS_PART_EMISSIVE_MASK
) ] );;
}
default {
      state_entry() {
          ps();
          llSetTimerEvent(0.2);//hier Deine gewünschte Zeit in Sekunden eintragen
          
}
      timer() { // hier startet der Timer und wiederholt in diesem Fall alle 5 Sekunden den im Timer aufgerufenen Befehl
      ps();
}
}
 
Nur so nebenbei bemerkt: Für die Änderung der Farbe muss man nicht jedesmal den gesamten Sermon aufrufen (also die Parameter-List). Es genügt ein Aufruf von llParticleSystem([]) mit den zu ändernden Dingen in den eckigen Klammern.
 
Nur so nebenbei bemerkt: Für die Änderung der Farbe muss man nicht jedesmal den gesamten Sermon aufrufen (also die Parameter-List). Es genügt ein Aufruf von llParticleSystem([]) mit den zu ändernden Dingen in den eckigen Klammern.
Das wusste ich nicht, interessant.

Obwohl ein Semikolon zu viel drin ist? Hm, LSL ist manchmal wirklich lustig. ;)
Ja, das kommt noch aus C. Semikolon ist selbst ein NOP, sozusagen.
Auch sowas kompiliert astrein im LSL-Quelltext (obwohl eher nutzlos):
Code:
default
{
    state_entry() {
        integer a;
        
        a;
        1.0;
        ;
        ;;-1.;++a;;
    }
}
 
Hallo zusammen :)

erstmal danke für dieses Script :) funktioniert super :)

nun aber meine Frage: ich würde das Script gerne bei Tag ausschalten und bei Nacht automatisch an. Ich hab es auf Basis des Scripts für Tag/Nacht Toggle von Particle Laboratory versucht, aber ich bekomm es einfach nicht hin. :(

Liegt das an dem Timer?

Wenn ja, kann mir jemand helfen, dass es klappt? Bin leider bisher ein totaler Noob in Punkto scripting :(

Vielen Dank schon im Vorraus :)

Grüßle Luna :)
 
Genau das macht der Trigger aus dem Partikel Laboratory, Dok. Und ja, da ist der Timer das Problem. An der Stelle, in der im Trigger das Partikel-System ABgeschaltet wird, musst Du den Timer abschalten, Lunatic. Das geht mit llSetTimerEvent(0.0);
Da wo das Partikel-System ANgeschaltet wird, wird der Timer wieder gestartet (zB mit llSetTimerEvent(2.5 + llFrand(5.0));
 

Users who are viewing this thread

Zurück
Oben Unten