Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Particle script not working for sold items

Robin Peel
Registered User
Join date: 8 Feb 2005
Posts: 163
09-15-2005 06:01
I have a particle script that I use in a vehicle that I sell. But the people that buy it have to click the reset button on the script to get it to work.
I put in this in thinking that it would reset the script, but it don't work.
Can somebody please help?
CODE
changed(integer change)
{
if (change & 128)
{
llResetScript();
}
}


Here's the script that I'm using.
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, 0.40 //Lifetime, in seconds, that a particle lasts
,PSYS_SRC_BURST_RATE, 0.01 //How long, in seconds, between each emission
,PSYS_SRC_BURST_PART_COUNT, 2 //Number of particles per emission
,PSYS_SRC_BURST_RADIUS, 0.1 //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, <1.0,1.0,0.0> //Starting RGB color
,PSYS_PART_END_COLOR, <1.0,0.0,0.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( 3, "", llGetOwner(), "stop" ); //Set up listener
MakeParticles(); //Start making particles
}
on_rez(integer start_param)
{
llResetScript();
}

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( 3, "", llGetOwner(), "start" ); //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;
}
}
Ben Bacon
Registered User
Join date: 14 Jul 2005
Posts: 809
09-15-2005 06:58
the llResetScript in on_rez is indeed one of the standard ways of doing this, Robin, but I notice that you don't have one in the "off" state. If your script is in this state when your customer rezzes it the first time, it won't reset, won't know about the new owner, and will never hear them say "start".