User:Daemonika Nightfire/Scripts/Daes Particle
Jump to navigation
Jump to search
*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
}
}