User:Daemonika Nightfire/Scripts/Daes Particle
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>