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> /*/|/ ╔══════════...')
(No difference)

Revision as of 07:13, 4 September 2010

Dae's Particle

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!
  • /

//* // 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() { // dieser block benoetigt keinerlei aenderungen

   flags = 0;
   if (target == "owner") target = llGetOwner();    // ziehl = besitzer
   if (target == "self")  target = llGetKey();      // ziehl = der prim indem das script liegt
   if (target == "root")  target = llGetLinkKey(1); // ziehl = der rootprim wenn das script in einem child liegt ((1) ist immer root)
   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)
   if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK;      // erlaubt das ziehl setzen
   if (glow)         flags = flags | PSYS_PART_EMISSIVE_MASK;        // wie bei prims das "ganz hell"
   if (bounce)       flags = flags | PSYS_PART_BOUNCE_MASK;          // springen auf dem boden und fallen nicht durch
   if (color)        flags = flags | PSYS_PART_INTERP_COLOR_MASK;    // erlaubt den farbwechsel
   if (size)         flags = flags | PSYS_PART_INTERP_SCALE_MASK;    // erlaubt die groessenaenderung
   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

   llLinkParticleSystem(LINK_THIS,[              // waehlt im Linkset den Prim wo die Particle austreten sollen.
   PSYS_PART_MAX_AGE,          2.0,              // lebensdauer jedes einzelnen particles
   PSYS_PART_FLAGS,            flags,            // siehe oben **
   PSYS_SRC_PATTERN,           pattern,          // siehe oben ***
   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_START_SCALE,      <0.10,0.10,0.00>, // groesse beim austreten aus dem prim    benoetigt (integer size = TRUE;)
   PSYS_PART_END_SCALE,        <0.05,0.05,0.00>, // groesse am ende for dem verschwinden   
   PSYS_SRC_BURST_RATE,        0.5,              // "rate" abstabd in secunden zwischen jedem austritt
   PSYS_SRC_ACCEL,             <0.00,0.00,0.02>, // zwingt die particle in eine richtung (Global)
   PSYS_SRC_BURST_PART_COUNT,  10,               // anzahl der austretenden particle pro "rate"
   PSYS_SRC_BURST_RADIUS,      0.05,             // Radius die groesse des effects (0.50 = 1 meter kreis)
   PSYS_SRC_BURST_SPEED_MIN,   0.01,             // minimale geschwindigkeit der einzelnen particle
   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_SRC_OMEGA,             <1,1,1>,          // Rotation des gesamt effects <x,y,z>
   PSYS_SRC_MAX_AGE,           0.0,              // zeit bis das particle system selbststaendig aufhoert (0.0 = dauerbetrieb)
   PSYS_SRC_TEXTURE,           "",               // Asset-UUID einer textur fuer poofer zwischen die "" eintragen
   PSYS_PART_START_ALPHA,      1.0,              // transparenz zu begin
   PSYS_PART_END_ALPHA,        0.0               // transparenz am ende
   ]);

}

// hier beginnt das eigentliche script default {

   state_entry()
   {
       Particle(); // startet hier das oben angepasste Particlesystem

// zum loeschen der particle, einfach hier im state_entry den befehl "Particle();" mit "llParticleSystem([]);" austauschen.

   }

} </LSL>