Difference between revisions of "User:Daemonika Nightfire/Scripts/Daes Particle"

From Second Life Wiki
Jump to navigation Jump to search
(Created page with '==Dae's Particle== I never use a particle generator. This Particle-Script serves me as a Basis for all of my Particle-Effects. <LSL> /*/|/ ╔══════════...')
 
m (just some typos)
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Dae's Particle==
==*DS* Particle Wiki v4.0.03 (2021-05-09 23:01:10 lsl2 script)==
I never use a particle generator.
This Particle-Script serves me as a Basis for all of my Particle-Effects.
<LSL>
/*/|/
 
    ╔════════════════════════════════−−−−−−−−−→
    ║ Dae's Particle by Daemonika Nightfire
    ╚═══════════════════−−−−−−−−−→
    target und flags nur bei den oberen 9 variablen einstellen!
    wenn die particle dauerhaft laufen sollen, loesch das script anschliessed raus, der prim braucht es dann nicht mehr!
 
    weniger laufende scripte auf der Sim bedeutet, weniger Lag!


<source lang="lsl2">
/*
        ╔════════════════════════════════−−−−−−−−−→
        ║ Dae's Particle by Daemonika Nightfire
        ╚═══════════════════−−−−−−−−−→
        http://wiki.secondlife.com/wiki/LlLinkParticleSystem#llLinkParticleSystem
*/
*/
//*
// mit dem key target richtest particle auf ein ziehl
key target = "";        // moegliche werte: "Avatar-Key" | "owner" | "self" | "root" | "child"
//**
// mit den flags steuerst das verhalten der particle
integer flags;          // moegliche werte: TRUE (ja) oder FALSE (nein)
integer glow    = TRUE;  // bei FALSE sind die particle nachts auch dunkel
integer bounce  = FALSE; // bei TRUE fallen sie nicht durch den boden
integer color  = TRUE;  // farbwechsel, bei FALSE ignoriert es PSYS_PART_END_COLOR
integer size    = TRUE;  // groessenaenderung, bei FALSE ignoriert es PSYS_PART_END_SCALE <x,y,z> ("2D" z wird nicht beruecksichtigt)
integer wind    = TRUE;  // reagiert auf den Wind, bei FALSE hat der wind keinen einfluss auf die particle
integer source  = FALSE; // muss ich mir noch was einfallen lassen :)
integer vel    = TRUE;  // beeinflusst die textur orientierung
//***
// folgende pattern aendern das erscheinungsbild der particle
// Beispiel: PSYS_SRC_PATTERN_EXPLODE ist eine rundum explusion
// such dir eine aus indem du die zwei // vor den befehlen entfehrnst oder setzt (wirst sehen, gibt nette effecte)
integer pattern = PSYS_SRC_PATTERN_EXPLODE;
//integer pattern = PSYS_SRC_PATTERN_DROP;
//integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY;
//integer pattern = PSYS_SRC_PATTERN_ANGLE_CONE;
//integer pattern = PSYS_SRC_PATTERN_ANGLE;


Particle()
Particle()
{
{
// dieser block benoetigt keinerlei aenderungen
     llLinkParticleSystem(LINK_THIS,[
     flags = 0;
     PSYS_PART_FLAGS,             PSYS_PART_EMISSIVE_MASK             // option ganz hell
    if (target == "owner") target = llGetOwner();    // ziehl = besitzer
                                //| PSYS_PART_BOUNCE_MASK             // bleiben auf ebene
    if (target == "self")  target = llGetKey();      // ziehl = der prim indem das script liegt
                                | PSYS_PART_INTERP_COLOR_MASK       // erlaubt den Farbwechsel
     if (target == "root")  target = llGetLinkKey(1); // ziehl = der rootprim wenn das script in einem child liegt ((1) ist immer root)
                                | PSYS_PART_INTERP_SCALE_MASK       // erlaubt die Groessenaenderung
    if (target == "child") target = llGetLinkKey(2); // ziehl = ein child prim egal in welchem prim das script liegt, mit der nummer waehlst den prim aus (ab (2) fortlaufend)
                                | PSYS_PART_WIND_MASK               // Particle folgen dem wind
    if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK;      // erlaubt das ziehl setzen
                                //| PSYS_PART_FOLLOW_SRC_MASK          // Particle halten relative position zum Prim (!PSYS_SRC_BURST_RADIUS)
    if (glow)        flags = flags | PSYS_PART_EMISSIVE_MASK;        // wie bei prims das "ganz hell"
                                | PSYS_PART_FOLLOW_VELOCITY_MASK    // Textur Ausrichtung "Oben" zum Ziel
    if (bounce)      flags = flags | PSYS_PART_BOUNCE_MASK;          // springen auf dem boden und fallen nicht durch
                                //| PSYS_PART_TARGET_LINEAR_MASK       // auf direktem weg zum Ziel (!PSYS_SRC_ACCEL & !PSYS_SRC_BURST_RADIUS)
    if (color)        flags = flags | PSYS_PART_INTERP_COLOR_MASK;    // erlaubt den farbwechsel
                                //| PSYS_PART_TARGET_POS_MASK         // auf Umweg zum Ziel
    if (size)        flags = flags | PSYS_PART_INTERP_SCALE_MASK;    // erlaubt die groessenaenderung
                                //| PSYS_PART_RIBBON_MASK              // verbindet die Particle zu einem Faden (!PSYS_PART_FOLLOW_VELOCITY_MASK)
    if (wind)        flags = flags | PSYS_PART_WIND_MASK;            // particle folgen dem wind
                                ,
    if (source)      flags = flags | PSYS_PART_FOLLOW_SRC_MASK;      // startet die particle versetzt, hebt radius auf
    if (vel)          flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK; // richtet die "obenseite" einer textur aufs ziehl
      
      
// hier beginnt das Particlesystem und kann frei gestaltet werden
    PSYS_SRC_PATTERN,            PSYS_SRC_PATTERN_EXPLODE            // Explusion
     llLinkParticleSystem(LINK_THIS,[             // waehlt im Linkset den Prim wo die Particle austreten sollen.
                                //PSYS_SRC_PATTERN_DROP                // Tropfen (!PSYS_SRC_BURST_RADIUS & !SYS_SRC_BURST_SPEED_MIN & !PSYS_SRC_BURST_SPEED_MAX)
     PSYS_PART_MAX_AGE,          2.0,              // lebensdauer jedes einzelnen particles
                                //PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY    // unvollstaendige Implementierung (NUTZLOS)
    PSYS_PART_FLAGS,           flags,           // siehe oben **
                                //PSYS_SRC_PATTERN_ANGLE_CONE          // kugelfoermiger Effekt mit start und end Begrenzung
     PSYS_SRC_PATTERN,           pattern,          // siehe oben ***
                                //PSYS_SRC_PATTERN_ANGLE              // ringfoermiger Effekt mit start und end Begrenzung
     PSYS_SRC_TARGET_KEY,       target,           // siehe oben *
                                ,
     PSYS_PART_START_COLOR,      <1.0,1.0,1.0>,   // farbe beim austreten aus dem prim      benoetigt (integer color = TRUE;)
                               
     PSYS_PART_END_COLOR,        <0.0,0.0,0.0>,    // farbe am ende for dem verschwinden    ''
     PSYS_PART_BLEND_FUNC_SOURCE, //PSYS_PART_BF_ONE                    //
     PSYS_PART_START_SCALE,      <0.10,0.10,0.00>, // groesse beim austreten aus dem prim    benoetigt (integer size = TRUE;)
                                //PSYS_PART_BF_ZERO                    //
     PSYS_PART_END_SCALE,        <0.05,0.05,0.00>, // groesse am ende for dem verschwinden   ''
                                //PSYS_PART_BF_DEST_COLOR             //  
     PSYS_SRC_BURST_RATE,        0.5,             // "rate" abstabd in secunden zwischen jedem austritt
                                //PSYS_PART_BF_SOURCE_COLOR            //
     PSYS_SRC_ACCEL,             <0.00,0.00,0.02>, // zwingt die particle in eine richtung (Global)
                                //PSYS_PART_BF_ONE_MINUS_DEST_COLOR    //
    PSYS_SRC_BURST_PART_COUNT,  10,               // anzahl der austretenden particle pro "rate"
                                //PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR  //
     PSYS_SRC_BURST_RADIUS,      0.05,             // Radius die groesse des effects (0.50 = 1 meter kreis)
                                PSYS_PART_BF_SOURCE_ALPHA            // Standard
     PSYS_SRC_BURST_SPEED_MIN,  0.01,             // minimale geschwindigkeit der einzelnen particle
                                //PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA  //
     PSYS_SRC_BURST_SPEED_MAX,  0.10,             // maximale geschwindigkeit der einzelnen particle
                                ,
     PSYS_SRC_ANGLE_BEGIN,      0.00,             // innerer abstand zum startprim
                               
     PSYS_SRC_ANGLE_END,        0.00,             // aeusserer abstand zum startprim
     PSYS_PART_BLEND_FUNC_DEST,   //PSYS_PART_BF_ONE                    //
     PSYS_SRC_OMEGA,            <1,1,1>,         // Rotation des gesamt effects <x,y,z>
                                //PSYS_PART_BF_ZERO                    //
     PSYS_SRC_MAX_AGE,           0.0,             // zeit bis das particle system selbststaendig aufhoert (0.0 = dauerbetrieb)
                                //PSYS_PART_BF_DEST_COLOR             //  
     PSYS_SRC_TEXTURE,          "",              // Asset-UUID einer textur fuer poofer zwischen die "" eintragen
                                //PSYS_PART_BF_SOURCE_COLOR           //
    PSYS_PART_START_ALPHA,      1.0,              // transparenz zu begin
                                //PSYS_PART_BF_ONE_MINUS_DEST_COLOR    //
    PSYS_PART_END_ALPHA,        0.0              // transparenz am ende
                                //PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR  //
                                //PSYS_PART_BF_SOURCE_ALPHA           //  
                                PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA  // Standard
                                ,
   
     //PSYS_SRC_TARGET_KEY,       "",                 // Particle zum Ziel (UUID)         | PSYS_PART_TARGET_LINEAR_MASK oder PSYS_PART_TARGET_POS_MASK
/**/PSYS_PART_MAX_AGE,          5.0,                // Lebensdauer                      | max. 30.0 Sekunden
     PSYS_SRC_MAX_AGE,           0.0,               // Abschalt-Timer                    | nicht mit Lebensdauer verwechseln (0.0 = dauerbetrieb)
     PSYS_PART_START_COLOR,      <1.0,0.0,0.0>,      // Farbe Begin                      | <0.0,0.0,0.0> bis <1.0,1.0,1.0>    PSYS_PART_INTERP_COLOR_MASK
     PSYS_PART_END_COLOR,        <0.0,0.0,1.0>,      // Farbe Ende                        | <0.0,0.0,0.0> bis <1.0,1.0,1.0>   ''
     PSYS_PART_START_SCALE,      <0.30,0.30,0.00>,   // Groesse Begin <x,y,z>            | min. = 0.03125 | max. = 4.00 | z = ungenutzt  PSYS_PART_INTERP_SCALE_MASK
     PSYS_PART_END_SCALE,        <0.15,0.15,0.00>,   // Groesse Ende  <x,y,z>            | min. = 0.03125 | max. = 4.00 | z = ungenutzt   ''
     PSYS_PART_START_ALPHA,      1.00,              // Transparenz Begin                | 0.0 bis 1.0    PSYS_PART_INTERP_COLOR_MASK
    PSYS_PART_END_ALPHA,        0.00,              // Transparenz Ende                  | 0.0 bis 1.0    ''
    PSYS_PART_START_GLOW,      0.10,               // Gluehen Begin                    | 0.0 bis 1.0    PSYS_PART_INTERP_COLOR_MASK
     PSYS_PART_END_GLOW,         0.00,               // Gluehen Ende                      | 0.0 bis 1.0    ''
/**/PSYS_SRC_BURST_RATE,       0.05,               // Geschwindigkeit pro Sekunde      | min. = 0.01
/**/PSYS_SRC_BURST_PART_COUNT,  1,                  // Particle Anzahl                  | Viewer Limit berechnen, /**/ _COUNT x _RATE x _MAX_AGE = Total
     PSYS_SRC_BURST_RADIUS,      0.75,               // Radius                           | max. = 50.0 meter Radius (!PSYS_PART_FOLLOW_SRC_MASK)
     PSYS_SRC_BURST_SPEED_MIN,  0.10,               // minimal Austritts-Geschwindigkeit |
     PSYS_SRC_BURST_SPEED_MAX,  0.25,               // maximal Austritts-Geschwindigkeit |
     PSYS_SRC_ANGLE_BEGIN,      0.00,               // innerer Abstand zum Zentrum      | PSYS_SRC_PATTERN_ANGLE oder PSYS_SRC_PATTERN_ANGLE_CONE
     PSYS_SRC_ANGLE_END,        0.00,               // aeusserer Abstand zum Zentrum    | ''
     PSYS_SRC_OMEGA,            <1,1,1>,           // Rotation                         | Globale Achse <x,y,z>
     PSYS_SRC_ACCEL,            <0.00,0.00,0.10>,  // Beschleunigung                    | Globale Ausrichtung <x,y,z>
     PSYS_SRC_TEXTURE,          ""                 // Textur UUID erforderlich          | Beispiel: "b1d84ecb-2a83-d3c4-7bfb-592648dcb20d"
     ]);
     ]);
}
}


// hier beginnt das eigentliche script
// hier unten beginnt das eigentliche script
default
default
{
{
Line 89: Line 81:
     {
     {
         Particle(); // startet hier das oben angepasste Particlesystem
         Particle(); // startet hier das oben angepasste Particlesystem
// zum loeschen der particle, einfach hier im state_entry den befehl "Particle();" mit "llParticleSystem([]);" austauschen.
        //llLinkParticleSystem(LINK_SET, []); // loescht die Particle
    }
}
</source>
 
==*DS* Particle Wiki v5.0.00 (2021-05-16 17:14:43 lsl2 script)==
Dieses ist mein beforzugtes Format zum erstellen saemtlicher Particle-Effecte.
Der Vorteil besteht darin, das sich diese Kurzfassung uebersichtlich in ein Script an die gewuenschte stelle einfuegen laesst.
 
<source lang="lsl2">
/*
    ╔════════════════════════════════════════════════════════−−−−−−−−−→
    ║ *DS* Particle Wiki v5.0.00 for advanced by Daemonika Nightfire
    ╚═════════════════════════════−−−−−−−−−→
    http://wiki.secondlife.com/wiki/LlLinkParticleSystem#llLinkParticleSystem
 
 
System Behavior
integer        0 = PSYS_PART_FLAGS                      // fuer folgende Befehle wichtig:
integer    0x004 = PSYS_PART_BOUNCE_MASK                // bleiben auf ebene
integer    0x100 = PSYS_PART_EMISSIVE_MASK              // option ganz hell
integer    0x010 = PSYS_PART_FOLLOW_SRC_MASK            // Particle halten relative position zum Prim (!PSYS_SRC_BURST_RADIUS)
integer    0x020 = PSYS_PART_FOLLOW_VELOCITY_MASK      // Textur ausrichtung "Oben" zum ziel
integer    0x001 = PSYS_PART_INTERP_COLOR_MASK          // erlaubt den farbwechsel
integer    0x002 = PSYS_PART_INTERP_SCALE_MASK          // erlaubt die groessenaenderung
integer    0x080 = PSYS_PART_TARGET_LINEAR_MASK        // auf direktem weg zum ziel (!PSYS_SRC_ACCEL & !PSYS_SRC_BURST_RADIUS)
integer    0x040 = PSYS_PART_TARGET_POS_MASK            // auf umweg zum ziel
integer    0x008 = PSYS_PART_WIND_MASK                  // Particle folgen dem Wind
integer    0x400 = PSYS_PART_RIBBON_MASK                // verbindet die Particle zu einem Faden (!PSYS_PART_FOLLOW_VELOCITY_MASK)
 
System Presentation
integer      9 = PSYS_SRC_PATTERN                      // fuer folgende Befehle wichtig:
integer    0x02 = PSYS_SRC_PATTERN_EXPLODE              // Explusion
integer    0x08 = PSYS_SRC_PATTERN_ANGLE_CONE          // kugelfoermiger Effekt mit start und end Begrenzung
integer    0x04 = PSYS_SRC_PATTERN_ANGLE                // ringfoermiger Effekt mit start und end Begrenzung
integer    0x01 = PSYS_SRC_PATTERN_DROP                // Tropfen (!PSYS_SRC_BURST_RADIUS & !SYS_SRC_BURST_SPEED_MIN & !PSYS_SRC_BURST_SPEED_MAX)
integer    0x10 = PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY    // unvollstaendige Implementierung (NUTZLOS)
 
Particle Blending
integer      24 = PSYS_PART_BLEND_FUNC_SOURCE          // fuer folgende Befehle wichtig:
integer      25 = PSYS_PART_BLEND_FUNC_DEST            // fuer folgende Befehle wichtig:
integer    0x0 = PSYS_PART_BF_ONE
integer    0x1 = PSYS_PART_BF_ZERO 
integer    0x2 = PSYS_PART_BF_DEST_COLOR
integer    0x3 = PSYS_PART_BF_SOURCE_COLOR
integer    0x4 = PSYS_PART_BF_ONE_MINUS_DEST_COLOR
integer    0x5 = PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR
integer    0x7 = PSYS_PART_BF_SOURCE_ALPHA            // Standard
integer    0x9 = PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA  // Standard
 
Particle Parameter
integer      0 = PSYS_PART_FLAGS                // System Behavior                  | Beispiel: 0,0x100 | 0x004 | 0x001 | 0x002 | 0x020,
vector      1 = PSYS_PART_START_COLOR          // Farbe Begin                      | <0.0,0.0,0.0> bis <1.0,1.0,1.0>  PSYS_PART_INTERP_COLOR_MASK
float        2 = PSYS_PART_START_ALPHA          // Transparenz Begin                | 0.0 bis 1.0                      PSYS_PART_INTERP_COLOR_MASK
vector      3 = PSYS_PART_END_COLOR            // Farbe Ende                        | <0.0,0.0,0.0> bis <1.0,1.0,1.0>  PSYS_PART_INTERP_COLOR_MASK
float        4 = PSYS_PART_END_ALPHA            // Transparenz Ende                  | 0.0 bis 1.0                      PSYS_PART_INTERP_COLOR_MASK
vector      5 = PSYS_PART_START_SCALE          // Groesse Begin <x,y,z>            | min. = 0.03125 | max. = 4.00 | z = ungenutzt  PSYS_PART_INTERP_SCALE_MASK
vector      6 = PSYS_PART_END_SCALE            // Groesse Ende  <x,y,z>            | min. = 0.03125 | max. = 4.00 | z = ungenutzt  PSYS_PART_INTERP_SCALE_MASK
float        7 = PSYS_PART_MAX_AGE              // Lebensdauer                      | max. 30.0 secunden
vector      8 = PSYS_SRC_ACCEL                // Beschleunigung                    | Globale Ausrichtung <x,y,z>
integer      9 = PSYS_SRC_PATTERN              // System Presentation              | Beispiel: 9,0x08,
            10 = // deleted
            11 = // deleted
string      12 = PSYS_SRC_TEXTURE              // Textur UUID erforderlich          | Beispiel: 12,"b1d84ecb-2a83-d3c4-7bfb-592648dcb20d",
float      13 = PSYS_SRC_BURST_RATE            // Geschwindigkeit pro Sekunde      | min. = 0.01
            14 = // not used
integer    15 = PSYS_SRC_BURST_PART_COUNT      // Particle Anzahl                  | Viewer Limit berechnen, _COUNT x _RATE x _MAX_AGE = Total
float      16 = PSYS_SRC_BURST_RADIUS          // Radius                            | max. = 50.0 meter Radius (!PSYS_PART_FOLLOW_SRC_MASK)
float      17 = PSYS_SRC_BURST_SPEED_MIN      // minimal Austrits-Geschrwindigkeit |
float      18 = PSYS_SRC_BURST_SPEED_MAX      // maximal Austrits-Geschrwindigkeit |
float      19 = PSYS_SRC_MAX_AGE              // Abschalt-Timer                    | nicht mit Lebensdauer verwechseln (0.0 = dauerbetrieb)
key        20 = PSYS_SRC_TARGET_KEY            // Particle zum Ziehl (key)"UUID"    | PSYS_PART_TARGET_LINEAR_MASK oder PSYS_PART_TARGET_POS_MASK
vector      21 = PSYS_SRC_OMEGA                // Rotation                          | Globale Achse <x,y,z>
float      22 = PSYS_SRC_ANGLE_BEGIN          // innerer Abstand zum Zentrum      | PSYS_SRC_PATTERN_ANGLE oder PSYS_SRC_PATTERN_ANGLE_CONE
float      23 = PSYS_SRC_ANGLE_END            // aeusserer Abstand zum Zentrum    | PSYS_SRC_PATTERN_ANGLE oder PSYS_SRC_PATTERN_ANGLE_CONE
integer    24 = PSYS_PART_BLEND_FUNC_SOURCE    // Particle Blending                | Beispiel: 24,0x7,
integer    25 = PSYS_PART_BLEND_FUNC_DEST      // Particle Blending                | Beispiel: 25,0x9,
float      26 = PSYS_PART_START_GLOW          // Gluehen Begin                    | 0.0 bis 1.0    PSYS_PART_INTERP_COLOR_MASK
float      27 = PSYS_PART_END_GLOW            // Gluehen Ende                      | 0.0 bis 1.0    PSYS_PART_INTERP_COLOR_MASK
 
*/
</source>
Im eigentlichen Script wird lediglich folgendes Beispiel benoetigt.
<source lang="lsl2">
default
{
    state_entry()
    {
        // In der Liste verwende ich nur benoetigte Parameter.
        llLinkParticleSystem(LINK_THIS,[7,3.0,  0,0x100 | 0x001 | 0x002,  9,0x02,
        1,<0.8,0.6,0.2>, 3,<1.0,0.0,0.0>, 5,<0.10,0.10,0.00>, 6,<0.05,0.05,0.00>, 8,<0.00,0.00,0.1>,
        13,0.1, 15,2, 16,0.5, 17,0.01, 18,0.02, 21,<0,0,1>, 2,1.0, 4,0.5, 26,0.10, 27,0.00,
        12,"b1d84ecb-2a83-d3c4-7bfb-592648dcb20d"]);
       
        //llLinkParticleSystem(LINK_SET, []); // loescht die Particle
     }
     }
}
}
</LSL>
</source>

Latest revision as of 10:41, 23 May 2021

*DS* Particle Wiki v4.0.03 (2021-05-09 23:01:10 lsl2 script)

/*
        ╔════════════════════════════════−−−−−−−−−→
        ║ Dae's Particle by Daemonika Nightfire
        ╚═══════════════════−−−−−−−−−→
        http://wiki.secondlife.com/wiki/LlLinkParticleSystem#llLinkParticleSystem
*/

Particle()
{
    llLinkParticleSystem(LINK_THIS,[
    PSYS_PART_FLAGS,             PSYS_PART_EMISSIVE_MASK              // option ganz hell
                                 //| PSYS_PART_BOUNCE_MASK              // bleiben auf ebene
                                 | PSYS_PART_INTERP_COLOR_MASK        // erlaubt den Farbwechsel
                                 | PSYS_PART_INTERP_SCALE_MASK        // erlaubt die Groessenaenderung
                                 | PSYS_PART_WIND_MASK                // Particle folgen dem wind
                                 //| PSYS_PART_FOLLOW_SRC_MASK          // Particle halten relative position zum Prim (!PSYS_SRC_BURST_RADIUS)
                                 | PSYS_PART_FOLLOW_VELOCITY_MASK     // Textur Ausrichtung "Oben" zum Ziel
                                 //| PSYS_PART_TARGET_LINEAR_MASK       // auf direktem weg zum Ziel (!PSYS_SRC_ACCEL & !PSYS_SRC_BURST_RADIUS)
                                 //| PSYS_PART_TARGET_POS_MASK          // auf Umweg zum Ziel
                                 //| PSYS_PART_RIBBON_MASK              // verbindet die Particle zu einem Faden (!PSYS_PART_FOLLOW_VELOCITY_MASK)
                                 ,
    
    PSYS_SRC_PATTERN,            PSYS_SRC_PATTERN_EXPLODE             // Explusion
                                 //PSYS_SRC_PATTERN_DROP                // Tropfen (!PSYS_SRC_BURST_RADIUS & !SYS_SRC_BURST_SPEED_MIN & !PSYS_SRC_BURST_SPEED_MAX)
                                 //PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY    // unvollstaendige Implementierung (NUTZLOS)
                                 //PSYS_SRC_PATTERN_ANGLE_CONE          // kugelfoermiger Effekt mit start und end Begrenzung
                                 //PSYS_SRC_PATTERN_ANGLE               // ringfoermiger Effekt mit start und end Begrenzung
                                 ,
                                
    PSYS_PART_BLEND_FUNC_SOURCE, //PSYS_PART_BF_ONE                     // 
                                 //PSYS_PART_BF_ZERO                    // 
                                 //PSYS_PART_BF_DEST_COLOR              // 
                                 //PSYS_PART_BF_SOURCE_COLOR            // 
                                 //PSYS_PART_BF_ONE_MINUS_DEST_COLOR    // 
                                 //PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR  // 
                                 PSYS_PART_BF_SOURCE_ALPHA            // Standard
                                 //PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA  //
                                 ,
                                 
    PSYS_PART_BLEND_FUNC_DEST,   //PSYS_PART_BF_ONE                     // 
                                 //PSYS_PART_BF_ZERO                    // 
                                 //PSYS_PART_BF_DEST_COLOR              // 
                                 //PSYS_PART_BF_SOURCE_COLOR            // 
                                 //PSYS_PART_BF_ONE_MINUS_DEST_COLOR    // 
                                 //PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR  // 
                                 //PSYS_PART_BF_SOURCE_ALPHA            //   
                                 PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA  // Standard
                                 ,
    
    //PSYS_SRC_TARGET_KEY,        "",                 // Particle zum Ziel (UUID)          | PSYS_PART_TARGET_LINEAR_MASK oder PSYS_PART_TARGET_POS_MASK
/**/PSYS_PART_MAX_AGE,          5.0,                // Lebensdauer                       | max. 30.0 Sekunden
    PSYS_SRC_MAX_AGE,           0.0,                // Abschalt-Timer                    | nicht mit Lebensdauer verwechseln (0.0 = dauerbetrieb)
    PSYS_PART_START_COLOR,      <1.0,0.0,0.0>,      // Farbe Begin                       | <0.0,0.0,0.0> bis <1.0,1.0,1.0>    PSYS_PART_INTERP_COLOR_MASK
    PSYS_PART_END_COLOR,        <0.0,0.0,1.0>,      // Farbe Ende                        | <0.0,0.0,0.0> bis <1.0,1.0,1.0>    ''
    PSYS_PART_START_SCALE,      <0.30,0.30,0.00>,   // Groesse Begin <x,y,z>             | min. = 0.03125 | max. = 4.00 | z = ungenutzt   PSYS_PART_INTERP_SCALE_MASK
    PSYS_PART_END_SCALE,        <0.15,0.15,0.00>,   // Groesse Ende  <x,y,z>             | min. = 0.03125 | max. = 4.00 | z = ungenutzt   ''
    PSYS_PART_START_ALPHA,      1.00,               // Transparenz Begin                 | 0.0 bis 1.0    PSYS_PART_INTERP_COLOR_MASK
    PSYS_PART_END_ALPHA,        0.00,               // Transparenz Ende                  | 0.0 bis 1.0    ''
    PSYS_PART_START_GLOW,       0.10,               // Gluehen Begin                     | 0.0 bis 1.0    PSYS_PART_INTERP_COLOR_MASK
    PSYS_PART_END_GLOW,         0.00,               // Gluehen Ende                      | 0.0 bis 1.0    ''
/**/PSYS_SRC_BURST_RATE,        0.05,               // Geschwindigkeit pro Sekunde       | min. = 0.01
/**/PSYS_SRC_BURST_PART_COUNT,  1,                  // Particle Anzahl                   | Viewer Limit berechnen, /**/ _COUNT x _RATE x _MAX_AGE = Total
    PSYS_SRC_BURST_RADIUS,      0.75,               // Radius                            | max. = 50.0 meter Radius (!PSYS_PART_FOLLOW_SRC_MASK)
    PSYS_SRC_BURST_SPEED_MIN,   0.10,               // minimal Austritts-Geschwindigkeit |
    PSYS_SRC_BURST_SPEED_MAX,   0.25,               // maximal Austritts-Geschwindigkeit |
    PSYS_SRC_ANGLE_BEGIN,       0.00,               // innerer Abstand zum Zentrum       | PSYS_SRC_PATTERN_ANGLE oder PSYS_SRC_PATTERN_ANGLE_CONE
    PSYS_SRC_ANGLE_END,         0.00,               // aeusserer Abstand zum Zentrum     | ''
    PSYS_SRC_OMEGA,             <1,1,1>,            // Rotation                          | Globale Achse <x,y,z>
    PSYS_SRC_ACCEL,             <0.00,0.00,0.10>,   // Beschleunigung                    | Globale Ausrichtung <x,y,z>
    PSYS_SRC_TEXTURE,           ""                  // Textur UUID erforderlich          | Beispiel: "b1d84ecb-2a83-d3c4-7bfb-592648dcb20d"
    ]);
}

// hier unten beginnt das eigentliche script
default
{
    state_entry()
    {
        Particle(); // startet hier das oben angepasste Particlesystem
        //llLinkParticleSystem(LINK_SET, []); // loescht die Particle
    }
}

*DS* Particle Wiki v5.0.00 (2021-05-16 17:14:43 lsl2 script)

Dieses ist mein beforzugtes Format zum erstellen saemtlicher Particle-Effecte. Der Vorteil besteht darin, das sich diese Kurzfassung uebersichtlich in ein Script an die gewuenschte stelle einfuegen laesst.

/*
    ╔════════════════════════════════════════════════════════−−−−−−−−−→
    ║ *DS* Particle Wiki v5.0.00 for advanced by Daemonika Nightfire
    ╚═════════════════════════════−−−−−−−−−→
    http://wiki.secondlife.com/wiki/LlLinkParticleSystem#llLinkParticleSystem


System Behavior
integer        0 = PSYS_PART_FLAGS                      // fuer folgende Befehle wichtig:
integer    0x004 = PSYS_PART_BOUNCE_MASK                // bleiben auf ebene
integer    0x100 = PSYS_PART_EMISSIVE_MASK              // option ganz hell
integer    0x010 = PSYS_PART_FOLLOW_SRC_MASK            // Particle halten relative position zum Prim (!PSYS_SRC_BURST_RADIUS)
integer    0x020 = PSYS_PART_FOLLOW_VELOCITY_MASK       // Textur ausrichtung "Oben" zum ziel
integer    0x001 = PSYS_PART_INTERP_COLOR_MASK          // erlaubt den farbwechsel
integer    0x002 = PSYS_PART_INTERP_SCALE_MASK          // erlaubt die groessenaenderung
integer    0x080 = PSYS_PART_TARGET_LINEAR_MASK         // auf direktem weg zum ziel (!PSYS_SRC_ACCEL & !PSYS_SRC_BURST_RADIUS)
integer    0x040 = PSYS_PART_TARGET_POS_MASK            // auf umweg zum ziel
integer    0x008 = PSYS_PART_WIND_MASK                  // Particle folgen dem Wind
integer    0x400 = PSYS_PART_RIBBON_MASK                // verbindet die Particle zu einem Faden (!PSYS_PART_FOLLOW_VELOCITY_MASK)

System Presentation
integer       9 = PSYS_SRC_PATTERN                      // fuer folgende Befehle wichtig:
integer    0x02 = PSYS_SRC_PATTERN_EXPLODE              // Explusion
integer    0x08 = PSYS_SRC_PATTERN_ANGLE_CONE           // kugelfoermiger Effekt mit start und end Begrenzung
integer    0x04 = PSYS_SRC_PATTERN_ANGLE                // ringfoermiger Effekt mit start und end Begrenzung
integer    0x01 = PSYS_SRC_PATTERN_DROP                 // Tropfen (!PSYS_SRC_BURST_RADIUS & !SYS_SRC_BURST_SPEED_MIN & !PSYS_SRC_BURST_SPEED_MAX)
integer    0x10 = PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY     // unvollstaendige Implementierung (NUTZLOS)

Particle Blending
integer      24 = PSYS_PART_BLEND_FUNC_SOURCE           // fuer folgende Befehle wichtig:
integer      25 = PSYS_PART_BLEND_FUNC_DEST             // fuer folgende Befehle wichtig:
integer     0x0 = PSYS_PART_BF_ONE
integer     0x1 = PSYS_PART_BF_ZERO  
integer     0x2 = PSYS_PART_BF_DEST_COLOR 
integer     0x3 = PSYS_PART_BF_SOURCE_COLOR
integer     0x4 = PSYS_PART_BF_ONE_MINUS_DEST_COLOR
integer     0x5 = PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR
integer     0x7 = PSYS_PART_BF_SOURCE_ALPHA             // Standard
integer     0x9 = PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA   // Standard

Particle Parameter
integer      0 = PSYS_PART_FLAGS                // System Behavior                   | Beispiel: 0,0x100 | 0x004 | 0x001 | 0x002 | 0x020,
vector       1 = PSYS_PART_START_COLOR          // Farbe Begin                       | <0.0,0.0,0.0> bis <1.0,1.0,1.0>  PSYS_PART_INTERP_COLOR_MASK
float        2 = PSYS_PART_START_ALPHA          // Transparenz Begin                 | 0.0 bis 1.0                      PSYS_PART_INTERP_COLOR_MASK
vector       3 = PSYS_PART_END_COLOR            // Farbe Ende                        | <0.0,0.0,0.0> bis <1.0,1.0,1.0>  PSYS_PART_INTERP_COLOR_MASK
float        4 = PSYS_PART_END_ALPHA            // Transparenz Ende                  | 0.0 bis 1.0                      PSYS_PART_INTERP_COLOR_MASK
vector       5 = PSYS_PART_START_SCALE          // Groesse Begin <x,y,z>             | min. = 0.03125 | max. = 4.00 | z = ungenutzt   PSYS_PART_INTERP_SCALE_MASK
vector       6 = PSYS_PART_END_SCALE            // Groesse Ende  <x,y,z>             | min. = 0.03125 | max. = 4.00 | z = ungenutzt   PSYS_PART_INTERP_SCALE_MASK
float        7 = PSYS_PART_MAX_AGE              // Lebensdauer                       | max. 30.0 secunden
vector       8 = PSYS_SRC_ACCEL                 // Beschleunigung                    | Globale Ausrichtung <x,y,z>
integer      9 = PSYS_SRC_PATTERN               // System Presentation               | Beispiel: 9,0x08,
            10 = // deleted
            11 = // deleted
string      12 = PSYS_SRC_TEXTURE               // Textur UUID erforderlich          | Beispiel: 12,"b1d84ecb-2a83-d3c4-7bfb-592648dcb20d",
float       13 = PSYS_SRC_BURST_RATE            // Geschwindigkeit pro Sekunde       | min. = 0.01
            14 = // not used
integer     15 = PSYS_SRC_BURST_PART_COUNT      // Particle Anzahl                   | Viewer Limit berechnen, _COUNT x _RATE x _MAX_AGE = Total
float       16 = PSYS_SRC_BURST_RADIUS          // Radius                            | max. = 50.0 meter Radius (!PSYS_PART_FOLLOW_SRC_MASK)
float       17 = PSYS_SRC_BURST_SPEED_MIN       // minimal Austrits-Geschrwindigkeit |
float       18 = PSYS_SRC_BURST_SPEED_MAX       // maximal Austrits-Geschrwindigkeit |
float       19 = PSYS_SRC_MAX_AGE               // Abschalt-Timer                    | nicht mit Lebensdauer verwechseln (0.0 = dauerbetrieb)
key         20 = PSYS_SRC_TARGET_KEY            // Particle zum Ziehl (key)"UUID"    | PSYS_PART_TARGET_LINEAR_MASK oder PSYS_PART_TARGET_POS_MASK
vector      21 = PSYS_SRC_OMEGA                 // Rotation                          | Globale Achse <x,y,z>
float       22 = PSYS_SRC_ANGLE_BEGIN           // innerer Abstand zum Zentrum       | PSYS_SRC_PATTERN_ANGLE oder PSYS_SRC_PATTERN_ANGLE_CONE
float       23 = PSYS_SRC_ANGLE_END             // aeusserer Abstand zum Zentrum     | PSYS_SRC_PATTERN_ANGLE oder PSYS_SRC_PATTERN_ANGLE_CONE
integer     24 = PSYS_PART_BLEND_FUNC_SOURCE    // Particle Blending                 | Beispiel: 24,0x7,
integer     25 = PSYS_PART_BLEND_FUNC_DEST      // Particle Blending                 | Beispiel: 25,0x9,
float       26 = PSYS_PART_START_GLOW           // Gluehen Begin                     | 0.0 bis 1.0    PSYS_PART_INTERP_COLOR_MASK
float       27 = PSYS_PART_END_GLOW             // Gluehen Ende                      | 0.0 bis 1.0    PSYS_PART_INTERP_COLOR_MASK

*/
Im eigentlichen Script wird lediglich folgendes Beispiel benoetigt.
default
{
    state_entry()
    {
        // In der Liste verwende ich nur benoetigte Parameter.
 
        llLinkParticleSystem(LINK_THIS,[7,3.0,  0,0x100 | 0x001 | 0x002,  9,0x02,
        1,<0.8,0.6,0.2>, 3,<1.0,0.0,0.0>, 5,<0.10,0.10,0.00>, 6,<0.05,0.05,0.00>, 8,<0.00,0.00,0.1>, 
        13,0.1, 15,2, 16,0.5, 17,0.01, 18,0.02, 21,<0,0,1>, 2,1.0, 4,0.5, 26,0.10, 27,0.00,
        12,"b1d84ecb-2a83-d3c4-7bfb-592648dcb20d"]);
        
        //llLinkParticleSystem(LINK_SET, []); // loescht die Particle
    }
}