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

From Second Life Wiki
Jump to navigation Jump to search
m (just some typos)
 
(4 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.
<source lang="lsl2">
<source lang="lsl2">
/*/|/
/*
 
        ╔════════════════════════════════−−−−−−−−−→
    ╔════════════════════════════════−−−−−−−−−→
        ║ Dae's Particle by Daemonika Nightfire
    ║ Dae's Particle by Daemonika Nightfire
        ╚═══════════════════−−−−−−−−−→
    ╚═══════════════════−−−−−−−−−→
        http://wiki.secondlife.com/wiki/LlLinkParticleSystem#llLinkParticleSystem
    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!
 
*/
*/
//*
// 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>
</source>


 
==*DS* Particle Wiki v5.0.00 (2021-05-16 17:14:43 lsl2 script)==
==*DS* Particle Wiki v3.3 © by Daemonika Nightfire (daemonika.nightfire)==
Dieses ist mein beforzugtes Format zum erstellen saemtlicher Particle-Effecte.
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.
Der Vorteil besteht darin, das sich diese Kurzfassung uebersichtlich in ein Script an die gewuenschte stelle einfuegen laesst.
==INFO==
Um die im Script angesprochenen Farben zu erkennen, muss man das komplette Script erst in ein LSL Script kopieren.


<source lang="lsl2">
<source lang="lsl2">
/* //start disabled code
/*
    ╔════════════════════════════════════════════════════════−−−−−−−−−→
    ║ *DS* Particle Wiki v5.0.00 for advanced by Daemonika Nightfire
    ╚═════════════════════════════−−−−−−−−−→
    http://wiki.secondlife.com/wiki/LlLinkParticleSystem#llLinkParticleSystem


    ╔════════════════════════════════−−−−−−−−−→
    ║ *DS* Particle Wiki v3.3 © by Daemonika Nightfire (daemonika.nightfire)
    ╚═══════════════════−−−−−−−−−→
    2010-12-30 15:48:40 lsl2 script
   
    Daemonika's Particle Wiki fuer Fortgeschrittene (extrem kurzfassung, Deutsch)
    Nachfolgende Zeilen dienen ausschliesslich zur Information!
    Dieses Script eignet sich hervorragend zum vorbereiten von Particle fuer ein entgueltiges Produkt.
   
    [ Type (gruen) | Value-Zahl (schwarz) | Value-Text (blau) | Beschreibung (orange) ]


System Behavior
System Behavior
integer        0 = PSYS_PART_FLAGS                   // fuer folgende Befehle wichtig:
integer        0 = PSYS_PART_FLAGS                     // fuer folgende Befehle wichtig:
integer    0x004 = PSYS_PART_BOUNCE_MASK             // bleiben auf ebene
integer    0x004 = PSYS_PART_BOUNCE_MASK               // bleiben auf ebene
integer    0x100 = PSYS_PART_EMISSIVE_MASK           // option ganz hell
integer    0x100 = PSYS_PART_EMISSIVE_MASK             // option ganz hell
integer    0x010 = PSYS_PART_FOLLOW_SRC_MASK         // ohne 0x010, Particle halten relative position zum Prim | deaktiviert (16)
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 ziehl
integer    0x020 = PSYS_PART_FOLLOW_VELOCITY_MASK       // Textur ausrichtung "Oben" zum ziel
integer    0x001 = PSYS_PART_INTERP_COLOR_MASK       // beeinflusst color und alpha
integer    0x001 = PSYS_PART_INTERP_COLOR_MASK         // erlaubt den farbwechsel
integer    0x002 = PSYS_PART_INTERP_SCALE_MASK       // beeinflusst groesse
integer    0x002 = PSYS_PART_INTERP_SCALE_MASK         // erlaubt die groessenaenderung
integer    0x080 = PSYS_PART_TARGET_LINEAR_MASK     // auf direktem weg zum ziehl  | deaktiviert (8) und (16)
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 ziehl
integer    0x040 = PSYS_PART_TARGET_POS_MASK           // auf umweg zum ziel
integer    0x008 = PSYS_PART_WIND_MASK               // particle folgen dem Wind
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
System Presentation
integer      9 = PSYS_SRC_PATTERN                     // fuer folgende Befehle wichtig:
integer      9 = PSYS_SRC_PATTERN                     // fuer folgende Befehle wichtig:
integer    0x02 = PSYS_SRC_PATTERN_EXPLODE             // Explusion
integer    0x02 = PSYS_SRC_PATTERN_EXPLODE             // Explusion
integer    0x08 = PSYS_SRC_PATTERN_ANGLE_CONE         // Aura aehnliche Explusion
integer    0x08 = PSYS_SRC_PATTERN_ANGLE_CONE           // kugelfoermiger Effekt mit start und end Begrenzung
integer    0x04 = PSYS_SRC_PATTERN_ANGLE               // Aura
integer    0x04 = PSYS_SRC_PATTERN_ANGLE               // ringfoermiger Effekt mit start und end Begrenzung
integer    0x01 = PSYS_SRC_PATTERN_DROP               // Tropfen
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   // ?
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
Particle Parameter
integer      0 = // (System Behavior)      Beispiel: 0, 0x100 | 0x004 | 0x001 | 0x002 | 0x020 | u.s.w.,
integer      0 = PSYS_PART_FLAGS                // System Behavior                   | Beispiel: 0,0x100 | 0x004 | 0x001 | 0x002 | 0x020,
vector      1 = PSYS_PART_START_COLOR     // Start_Farbe            braucht 0x001 | <0.0,0.0,0.0> bis <1.0,1.0,1.0>
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_Start          ''      | 0.0 bis 1.0
float        2 = PSYS_PART_START_ALPHA         // Transparenz Begin                | 0.0 bis 1.0                     PSYS_PART_INTERP_COLOR_MASK
vector      3 = PSYS_PART_END_COLOR       // End_Farbe                  ''      | <0.0,0.0,0.0> bis <1.0,1.0,1.0>
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_End            ''      | 0.0 bis 1.0
float        4 = PSYS_PART_END_ALPHA           // Transparenz Ende                  | 0.0 bis 1.0                     PSYS_PART_INTERP_COLOR_MASK
vector      5 = PSYS_PART_START_SCALE     // Anfangsgroesse <x,y,z> braucht 0x002 | min. = 0.03125 | max. = 4.00 | z = ungenutzt
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       // Endgroesse    <x,y,z>     ''      | min. = 0.03125 | max. = 4.00 | z = ungenutzt
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
float        7 = PSYS_PART_MAX_AGE             // Lebensdauer                       | max. 30.0 secunden
vector      8 = PSYS_SRC_ACCEL             // Globale Richtungsvorgabe            | <x,y,z>
vector      8 = PSYS_SRC_ACCEL                 // Beschleunigung                    | Globale Ausrichtung <x,y,z>
integer      9 = // (System PresentationBeispiel: 9, 0x08,
integer      9 = PSYS_SRC_PATTERN              // System Presentation               | Beispiel: 9,0x08,
             10 = // deleted
             10 = // deleted
             11 = // deleted
             11 = // deleted
string      12 = PSYS_SRC_TEXTURE           // Textur UUID erforderlich             | Beispiel: "b1d84ecb-2a83-d3c4-7bfb-592648dcb20d"
string      12 = PSYS_SRC_TEXTURE               // Textur UUID erforderlich         | Beispiel: 12,"b1d84ecb-2a83-d3c4-7bfb-592648dcb20d",
float      13 = PSYS_SRC_BURST_RATE       // Geschwindigkeit pro secunde          | min. = 0.01
float      13 = PSYS_SRC_BURST_RATE           // Geschwindigkeit pro Sekunde      | min. = 0.01
             14 = // not used
             14 = // not used
integer    15 = PSYS_SRC_BURST_PART_COUNT // Particle_Anzahl                      | mach nicht zuviele auf einmal
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 des Effects                  | (0.50 = 1 meter kreis) max. = 50.0 meter
float      16 = PSYS_SRC_BURST_RADIUS         // Radius                           | max. = 50.0 meter Radius (!PSYS_PART_FOLLOW_SRC_MASK)
float      17 = PSYS_SRC_BURST_SPEED_MIN   // Mindest_Austrits_geschrwindigkeit    |
float      17 = PSYS_SRC_BURST_SPEED_MIN       // minimal Austrits-Geschrwindigkeit |
float      18 = PSYS_SRC_BURST_SPEED_MAX   // Maximal_Austrits_geschrwindigkeit    |
float      18 = PSYS_SRC_BURST_SPEED_MAX       // maximal Austrits-Geschrwindigkeit |
float      19 = PSYS_SRC_MAX_AGE           // Abschaldtimer                        | nicht mit Lebensdauer verwechseln (0.0 = dauerbetrieb)
float      19 = PSYS_SRC_MAX_AGE               // Abschalt-Timer                    | nicht mit Lebensdauer verwechseln (0.0 = dauerbetrieb)
key        20 = PSYS_SRC_TARGET_KEY       // Particle zum Ziehl                   | braucht 0x040 oder 0x080
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             // Particle_Rotation                    | Globale Ausrichtung <x,y,z>
vector      21 = PSYS_SRC_OMEGA                 // Rotation                          | Globale Achse <x,y,z>
float      22 = PSYS_SRC_ANGLE_BEGIN      // Winkel Anfang (Aura)                 |
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        // Winkel Ende                         |
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


    Hier endet die Particle Wiki.
*/
   
</source>
*/ //end disabled code
Im eigentlichen Script wird lediglich folgendes Beispiel benoetigt.
 
<source lang="lsl2">
// ### Hier beginnt der Scriptbereich ###
// Im Scriptbefehl werden ausschliesslich die Value-Zahlen (schwarz) verwendet.
// Das dient der uebersichtlichkeit im eigentlichen Script
   
default
default
{
{
     state_entry()
     state_entry()
     {
     {
         // Ungenutzte Value Constanten glaenzen durch abwesenheit.
         // In der Liste verwende ich nur benoetigte Parameter.
        // [ Value-Zahl,Wert, Value-Zahl,Wert,  Value-Zahl,Wert,  Value-Zahl,Wert,  u.s.w.]
   
       
         llLinkParticleSystem(LINK_THIS,[7,3.0,  0,0x100 | 0x001 | 0x002,  9,0x02,
         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>,  
         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, 22,0.0, 23,0.0, 21,<0,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",  2,1.0,  4,0.5]);
         12,"b1d84ecb-2a83-d3c4-7bfb-592648dcb20d"]);
          
          
         // Die im Script verwendete Textur UUID darf nicht fuer eigene Zwecke verwendet werden © by Daemonika Nightfire
         //llLinkParticleSystem(LINK_SET, []); // loescht die Particle
     }
     }
}
}
</source>
</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
    }
}