User:Daemonika Nightfire/Scripts/Daes Particle

From Second Life Wiki
Jump to navigation Jump to search

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

/*
        ╔════════════════════════════════−−−−−−−−−→
        ║ 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 ziehl
                                 //| PSYS_PART_TARGET_LINEAR_MASK       // auf direktem weg zum ziehl (!PSYS_SRC_ACCEL & !PSYS_SRC_BURST_RADIUS)
                                 //| PSYS_PART_TARGET_POS_MASK          // auf umweg zum ziehl
                                 //| 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 Ziehl (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,                // Abschaldtimer                     | 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 Austrits-Geschrwindigkeit |
    PSYS_SRC_BURST_SPEED_MAX,   0.25,               // maximal Austrits-Geschrwindigkeit |
    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 v3.3 © by Daemonika Nightfire (daemonika.nightfire)

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.

INFO

Um die im Script angesprochenen Farben zu erkennen, muss man das komplette Script erst in ein LSL Script kopieren.
/* //start disabled code

    ╔════════════════════════════════−−−−−−−−−→
    ║ *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
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         // ohne 0x010, Particle halten relative position zum Prim  | deaktiviert (16)
integer    0x020 = PSYS_PART_FOLLOW_VELOCITY_MASK    // Textur ausrichtung "Oben" zum ziehl
integer    0x001 = PSYS_PART_INTERP_COLOR_MASK       // beeinflusst color und alpha
integer    0x002 = PSYS_PART_INTERP_SCALE_MASK       // beeinflusst groesse
integer    0x080 = PSYS_PART_TARGET_LINEAR_MASK      // auf direktem weg zum ziehl  | deaktiviert (8) und (16)
integer    0x040 = PSYS_PART_TARGET_POS_MASK         // auf umweg zum ziehl
integer    0x008 = PSYS_PART_WIND_MASK               // particle folgen dem Wind

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          // Aura aehnliche Explusion
integer    0x04 = PSYS_SRC_PATTERN_ANGLE               // Aura
integer    0x01 = PSYS_SRC_PATTERN_DROP                // Tropfen
integer    0x10 = PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY    // ?

Particle Parameter
integer      0 = // (System Behavior)       Beispiel: 0, 0x100 | 0x004 | 0x001 | 0x002 | 0x020 | u.s.w.,
vector       1 = PSYS_PART_START_COLOR      // Start_Farbe            braucht 0x001 | <0.0,0.0,0.0> bis <1.0,1.0,1.0>
float        2 = PSYS_PART_START_ALPHA      // Transparenz_Start           ''       | 0.0 bis 1.0
vector       3 = PSYS_PART_END_COLOR        // End_Farbe                   ''       | <0.0,0.0,0.0> bis <1.0,1.0,1.0>
float        4 = PSYS_PART_END_ALPHA        // Transparenz_End             ''       | 0.0 bis 1.0
vector       5 = PSYS_PART_START_SCALE      // Anfangsgroesse <x,y,z> braucht 0x002 | min. = 0.03125 | max. = 4.00 | z = ungenutzt
vector       6 = PSYS_PART_END_SCALE        // Endgroesse     <x,y,z>      ''       | min. = 0.03125 | max. = 4.00 | z = ungenutzt
float        7 = PSYS_PART_MAX_AGE          // Lebensdauer                          | max. 30.0 secunden
vector       8 = PSYS_SRC_ACCEL             // Globale Richtungsvorgabe             | <x,y,z>
integer      9 = // (System Presentation)   Beispiel: 9, 0x08,
            10 = // deleted
            11 = // deleted
string      12 = PSYS_SRC_TEXTURE           // Textur UUID erforderlich             | Beispiel: "b1d84ecb-2a83-d3c4-7bfb-592648dcb20d"
float       13 = PSYS_SRC_BURST_RATE        // Geschwindigkeit pro secunde          | min. = 0.01
            14 = // not used
integer     15 = PSYS_SRC_BURST_PART_COUNT  // Particle_Anzahl                      | mach nicht zuviele auf einmal
float       16 = PSYS_SRC_BURST_RADIUS      // Radius des Effects                   | (0.50 = 1 meter kreis) max. = 50.0 meter
float       17 = PSYS_SRC_BURST_SPEED_MIN   // Mindest_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)
key         20 = PSYS_SRC_TARGET_KEY        // Particle zum Ziehl                   | braucht 0x040 oder 0x080
vector      21 = PSYS_SRC_OMEGA             // Particle_Rotation                    | Globale Ausrichtung <x,y,z>
float       22 = PSYS_SRC_ANGLE_BEGIN       // Winkel Anfang (Aura)                 |
float       23 = PSYS_SRC_ANGLE_END         // Winkel Ende                          |

    Hier endet die Particle Wiki.
    
*/ //end disabled code

// ### Hier beginnt der Scriptbereich ###
// Im Scriptbefehl werden ausschliesslich die Value-Zahlen (schwarz) verwendet.
// Das dient der uebersichtlichkeit im eigentlichen Script
    
default
{
    state_entry()
    {
        // Ungenutzte Value Constanten glaenzen durch abwesenheit.
        // [ 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,
        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>,
        12,"b1d84ecb-2a83-d3c4-7bfb-592648dcb20d",  2,1.0,  4,0.5]);
        
        // Die im Script verwendete Textur UUID darf nicht fuer eigene Zwecke verwendet werden © by Daemonika Nightfire
    }
}