Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

voice start and stop particle script

Robin Peel
Registered User
Join date: 8 Feb 2005
Posts: 163
08-31-2005 17:58
Hello,
i use a basic particle script and i was wondering if its possible to start it and stop it by voice.
if so, can sombody please help me?
thank you so very much.
Keknehv Psaltery
Hacker
Join date: 11 Apr 2005
Posts: 1,185
08-31-2005 21:18
Ehh, sure.

Here's my particle script, modified to have listens, although I prefer it with touch. It's easier.

CODE

// Keknehv Psaltery's Particle Script v1.1
// 1.0 -- 5/30/05
// 1.1 -- 6/17/05

// This script may be used in anything you choose, including and not limited to commercial products.
// Just copy the MakeParticles() function; it will function without any other variables in a different script
// ( You can, of course, rename MakeParticles() to something else, such as StartFlames() )

// This script is basically an llParticleSystem() call with comments and formatting. Change any of the values
// that are listed second to change that portion. Also, it is equipped with a touch-activated off button,
// for when your particles go haywire and cause everyone to start yelling at you.

// Contact Keknehv Psaltery if you have questions or comments.

MakeParticles() //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 , NULL_KEY, //Key of the target for the particles to head towards
//This one is particularly finicky, so be careful.
//Choose one of these as a pattern:
//PSYS_SRC_PATTERN_DROP Particles start at emitter with no velocity
//PSYS_SRC_PATTERN_EXPLODE Particles explode from the emitter
//PSYS_SRC_PATTERN_ANGLE Particles are emitted in a 2-D angle
//PSYS_SRC_PATTERN_ANGLE_CONE Particles are emitted in a 3-D cone
//PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY Particles are emitted everywhere except for a 3-D cone

PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE_CONE

,PSYS_SRC_TEXTURE, "" //UUID of the desired particle texture
,PSYS_PART_MAX_AGE, 1.0 //Lifetime, in seconds, that a particle lasts
,PSYS_SRC_BURST_RATE, 0.02 //How long, in seconds, between each emission
,PSYS_SRC_BURST_PART_COUNT, 2 //Number of particles per emission
,PSYS_SRC_BURST_RADIUS, 5.0 //Radius of emission
,PSYS_SRC_BURST_SPEED_MIN, 5.5 //Minimum speed of an emitted particle
,PSYS_SRC_BURST_SPEED_MAX, 6.0 //Maximum speed of an emitted particle
,PSYS_SRC_ACCEL, <0.0,0.0,-0.8> //Acceleration of particles each second
,PSYS_PART_START_COLOR, <0.0,0.0,1.0> //Starting RGB color
,PSYS_PART_END_COLOR, <0.6,0.6,1.0> //Ending RGB color, if INTERP_COLOR_MASK is on
,PSYS_PART_START_ALPHA, 0.9 //Starting transparency, 1 is opaque, 0 is transparent.
,PSYS_PART_END_ALPHA, 0.0 //Ending transparency
,PSYS_PART_START_SCALE, <2.4,2.4,0.0> //Starting particle size
,PSYS_PART_END_SCALE, <1.3,2.3,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,0.0,0.0> //Rotation of ANGLE patterns, similar to llTargetOmega()
]);
}

default
{
state_entry()
{
llListen( 1, "", llGetOwner(), "off" ); //Set up listener
MakeParticles(); //Start making particles
}

touch_start( integer num ) //Turn particles off when touched
{
state off; //Switch to the off state
}

listen( integer chan, string name, key id, string msg ) //Turn particles off when told to
{
state off; //Switch to the off state
}
}

state off
{
state_entry()
{
llListen( 1, "", llGetOwner(), "on" ) //Set up listener
llParticleSystem([]); //Stop making particles
}

touch_start( integer num ) //Turn particles back on when touched
{
state default;
}

listen( integer chan, string name, key id, string msg ) //Turn particles on when told to
{
state default;
}
}


EDIT: Fixed error
Robin Peel
Registered User
Join date: 8 Feb 2005
Posts: 163
09-01-2005 01:55
When I try to use it I keep getting syntax errors with the MakeParticles();
Robin Peel
Registered User
Join date: 8 Feb 2005
Posts: 163
09-01-2005 03:09
I showed it to my mistress in SL and she was able to find the problem. It was missing a ; after one of the listens.
Thanks for the script this was just what i needed to get this thing working.
Keknehv Psaltery
Hacker
Join date: 11 Apr 2005
Posts: 1,185
09-01-2005 09:30
Ah, good. Sorry about that. I don't always test my scripts before I post them to the forums.
Chaz Longstaff
Registered User
Join date: 11 Oct 2006
Posts: 685
File Note
06-18-2007 10:16
File note to save starting-out scripters grief:

Semi-colon needed here, just before //Set up listener

llListen( 1, "", llGetOwner(), "on" ) //Set up listener

therefore should be:

llListen( 1, "", llGetOwner(), "on" ); //Set up listener
Paulo Dielli
Symfurny Furniture
Join date: 19 Jan 2007
Posts: 780
09-02-2007 21:43
The script works great on touch. But when I put the same script in different linked prims, then only one of these prims shows the particles. And I also must make one of the prims with the particle scripts the root prim, otherwise it doesn't work at all on touch.

Is there a way to make this work? I read about the LINK_SET command, but I really don't know how and where to put it.