|
re....bon, j' ai encore viré qlq trucs inutiles, ya surement moyen de faire mieux, mais plus trop le temps...ça, ça devrait marcher....avec le HUD d' avant.....
// SECTION ONE: APPEARANCE -- These settings affect how each particle LOOKS.
integer glow = TRUE; // TRUE or FALSE(*)
vector color; // RGB color, black<0,0,0> to white<1,1,1>(*)
//vector endColor = color; //
float startAlpha = 1.0; // 0.0 to 1.0(*), lower = more transparent
float endAlpha = 0.0; //
vector startSize = <7.5,7.5,0>; // <0.04,0.04,0>(min) to <10,10,0>(max>, <1,1,0>(*)
vector endSize = <5.5,5.5,0>; // (Z part of vector is discarded)
string texture = "fire-ring"; // Texture used for particles. Texture must be in prim's inventory.
// SECTION TWO: FLOW -- These settings affect how Many, how Quickly, and for how Long particles are created.
// Note,
integer count = 3; // Number of particles created per burst, 1(*) to 4096
float rate = 0.1; // Delay between bursts of new particles, 0.0 to 60, 0.1(*)
float age = 1.0; // How long each particle lives, 0.1 to 60, 10.0(*)
float life = 0.0; // When to stop creating new particles. never stops if 0.0(*)
// SECTION THREE: PLACEMENT -- Where are new particles created, and what direction are they facing?
float radius = 4.25; // 0.0(default) to 64? Distance from Emitter where new particles are created.
float innerAngle = 0.5; // "spread", for all ANGLE patterns, 0(default) to PI
float outerAngle = 0; // "tilt", for ANGLE patterns, 0(default) to TWO_PI, can use PI_BY_TWO or PI as well.
integer pattern = PSYS_SRC_PATTERN_EXPLODE; // Choose one of the following:
vector omega = <0,0,0>; // How much to rotate the emitter around the <X,Y,Z> axises. <0,0,0>(*)
integer followSource = TRUE; // TRUE or FALSE(*), Particles move as the emitter moves, (TRUE disables radius!)
integer followVel = TRUE; // TRUE or FALSE(*), Particles rotate towards their direction
integer wind = FALSE; // TRUE or FALSE(*), Particles get blown away by wind in the sim
integer bounce = FALSE; // TRUE or FALSE(*), Make particles bounce on Z altitude of emitter
float minSpeed = 0.3; // 0.01 to ? Min speed each particle is spit out at, 1.0(*)
float maxSpeed = 0.2; // 0.01 to ? Max speed each particle is spit out at, 1.0(*)
vector push = <0,0,0>; // Continuous force pushed on particles, use small settings for long lived particles
key target = "self"; // Select a target for particles to arrive at when they die
// can be "self" (emitter), "owner" (you), "" or any prim/persons KEY.
integer interpColor = TRUE; // Go from start to end color
integer interpSize = TRUE; // Go from start to end size
// SECTION FIVE: Ama's "Create Short Particle Settings List"
integer enableoutput = FALSE; // If this is TRUE, clicking on your emitter prim will cause it to speak
integer flags;
updateParticles()
{
flags = 0;
if (target == "owner") target = llGetOwner();
if (target == "self") target = llGetKey();
if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK;
if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK;
if (interpColor) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
if (interpSize) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
if (wind) flags = flags | PSYS_PART_WIND_MASK;
if (followSource) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
if (followVel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
if (target != "") flags = flags | PSYS_PART_TARGET_POS_MASK;
llParticleSystem([ PSYS_PART_MAX_AGE,age,
PSYS_PART_FLAGS,flags,
PSYS_PART_START_COLOR, color,
PSYS_PART_END_COLOR, color,
PSYS_PART_START_SCALE,startSize,
PSYS_PART_END_SCALE,endSize,
PSYS_SRC_PATTERN, pattern,
PSYS_SRC_BURST_RATE,rate,
PSYS_SRC_ACCEL, push,
PSYS_SRC_BURST_PART_COUNT,count,
PSYS_SRC_BURST_RADIUS,radius,
PSYS_SRC_BURST_SPEED_MIN,minSpeed,
PSYS_SRC_BURST_SPEED_MAX,maxSpeed,
PSYS_SRC_TARGET_KEY,target,
PSYS_SRC_INNERANGLE,innerAngle,
PSYS_SRC_OUTERANGLE,outerAngle,
PSYS_SRC_OMEGA, omega,
PSYS_SRC_MAX_AGE, life,
PSYS_SRC_TEXTURE, texture,
PSYS_PART_START_ALPHA, startAlpha,
PSYS_PART_END_ALPHA, endAlpha
]);
}
SprayParticles(string xTexture) //This is the function that actually starts the particle system.
{
llParticleSystem([ //KPSv1.0
PSYS_PART_FLAGS , 0 //Comment out any of the following masks to deactivate them
//| PSYS_PART_BOUNCE_MASK //Bounce on object's z-axis
//| PSYS_PART_WIND_MASK //Particles are moved by wind
| PSYS_PART_INTERP_COLOR_MASK //Colors fade from start to end
| PSYS_PART_INTERP_SCALE_MASK //Scale fades from beginning to end
//| PSYS_PART_FOLLOW_SRC_MASK //Particles follow the emitter
//| PSYS_PART_FOLLOW_VELOCITY_MASK //Particles are created at the velocity of the emitter
| PSYS_PART_TARGET_POS_MASK //Particles follow the target
| PSYS_PART_EMISSIVE_MASK //Particles are self-lit (glow)
//| PSYS_PART_TARGET_LINEAR_MASK //Undocumented--Sends particles in straight line?
,
PSYS_SRC_TARGET_KEY , llGetKey(), //Key of the target for the particles to head towards
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_EXPLODE
,PSYS_SRC_TEXTURE, xTexture //UUID of the desired particle texture, or inventory name
,PSYS_SRC_MAX_AGE, 0.0 //Time, in seconds, for particles to be emitted. 0 = forever
,PSYS_PART_MAX_AGE, 60.0 //Lifetime, in seconds, that a particle lasts
,PSYS_SRC_BURST_RATE, 0.2 //How long, in seconds, between each emission
,PSYS_SRC_BURST_PART_COUNT, 6 //Number of particles per emission
,PSYS_SRC_BURST_RADIUS, 0.2 //Radius of emission
,PSYS_SRC_BURST_SPEED_MIN, 0.9 //Minimum speed of an emitted particle
,PSYS_SRC_BURST_SPEED_MAX, 1.8 //Maximum speed of an emitted particle
,PSYS_SRC_ACCEL, <0.0,0.0,0.0> //Acceleration of particles each second
,PSYS_PART_START_COLOR, color //Starting RGB color
,PSYS_PART_END_COLOR, color //Ending RGB color, if INTERP_COLOR_MASK is on
,PSYS_PART_START_ALPHA, 0.4 //Starting transparency, 1 is opaque, 0 is transparent.
,PSYS_PART_END_ALPHA, 0.0 //Ending transparency
,PSYS_PART_START_SCALE, <10.0, 10.0, 10.0> //Starting particle size
,PSYS_PART_END_SCALE, <0,0,0.0> //Ending particle size, if INTERP_SCALE_MASK is on
,PSYS_SRC_ANGLE_BEGIN, PI //Inner angle for ANGLE patterns
,PSYS_SRC_ANGLE_END, PI //Outer angle for ANGLE patterns
,PSYS_SRC_OMEGA, <0.0,5.0,5.0> //Rotation of ANGLE patterns, similar to llTargetOmega()
]);
}
string smoke_texture = texture;
key owner;
integer canal;
integer ecoute;
default
{
state_entry()
{
color = <1.0,1.0,1.0>;
updateParticles();
llListen(0, "", owner, "");
owner = llGetOwner();
canal = (integer)("0xA" + llGetSubString((string)owner, 0,6 ));
ecoute = llListen(canal, "","","");
}
touch_end(integer num_detected)
{
state default2;
}
listen(integer channel, string name, key id, string message)
{
if(channel == 0)
{
if(llToLower(message) == "staroff")
{
state off;
}
}
else if (channel == canal)
{
llParticleSystem([]);
color = (vector)message;
updateParticles();
}
}
}
state default2
{
state_entry()
{
SprayParticles(smoke_texture);
llSetTimerEvent(15.0);
llListen(0, "", llGetOwner(), "");
ecoute = llListen(canal, "",owner,"");
}
timer()
{
llSetTimerEvent(0.0);
state default;
}
touch_end(integer num_detected)
{
state default;
}
listen(integer channel, string name, key id, string message)
{
if(channel == 0)
{
if(llToLower(message) == "staroff")
{
state off;
}
}
else if (channel == canal)
{
color = (vector)message;
}
}
}
state off
{
state_entry()
{
llParticleSystem([]);
llListen(0, "", llGetOwner(), "");
ecoute = llListen(canal, "",owner,"");
}
listen(integer channel, string name, key id, string message)
{
if(channel == 0)
{
if(llToLower(message) == "staron")
{
state default;
}
}
else if (channel == canal)
{
color = (vector)message;
}
}
}
|