I found this script awhile back, so I thought I would try it out. I know nothing about scripting, the command works with the poofer, but I don't know how to get it to work on tp'ing or on login. I noticed it said something about a note card, but I didn't understand what to put on the note card to trigger the login poof or tp poofer to work... not even sure if it requires a note card or a name or what. Please someone help ...Thank You, Sweetheart Baskerville, (Juliea)
// Particle Poofer
// 7/6/05
//Just change this variable to change the (default) texture.
//It needs either the name of a texture in the inventory, or a key ( asset UUID )
string pooftexture = "texture";
float pooftime = 2; //How long it poofs
float poofrate = 0.4; //How long between each emission ( during poofing )
integer poofnum = 10; //How many particles per emission
float poofscale = 2; //The scale of the particles
float poofspeed = 5.5; //Speed of emitted particles
integer commandchannel = 1; //What channel to listen for commands on
key oldkey; //For the teleportation and rezzing stuff...
integer POOF_NOTECARD_READ_REQUEST = 10003;
integer POOF_COMMAND = 10004;
poof() //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
//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_EXPLODE
,PSYS_SRC_TEXTURE, pooftexture //UUID of the desired particle texture
,PSYS_PART_MAX_AGE, 5.0 //Lifetime, in seconds, that a particle lasts
,PSYS_SRC_MAX_AGE, pooftime //How long, in seconds, that the system lasts1
,PSYS_SRC_BURST_RATE, poofrate //How long, in seconds, between each emission
,PSYS_SRC_BURST_PART_COUNT, 10 //Number of particles per emission
,PSYS_SRC_BURST_RADIUS, 5.0 //Radius of emission
,PSYS_SRC_BURST_SPEED_MIN, poofspeed //Minimum speed of an emitted particle
,PSYS_SRC_BURST_SPEED_MAX, poofspeed + .5 //Maximum speed of an emitted particle
,PSYS_SRC_ACCEL, <0.0,0.0,0.0> //Acceleration of particles each second
,PSYS_PART_START_COLOR, <1.0,1.0,1.0> //Starting RGB color
,PSYS_PART_END_COLOR, <1.0,1.0,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.5 //Ending transparency
,PSYS_PART_START_SCALE, poofscale*<1,1,1> //Starting particle size
,PSYS_PART_END_SCALE, poofscale*<1,1,1>-<.3,.3,.3> //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()
]);
}
string trim( string f2s ) //This will trim a typecast float
{
integer length = llStringLength( f2s ) - 1;
while( llGetSubString( f2s, length, length ) == "0" )
{
--length;
f2s = llGetSubString( f2s, 0, length );
}
if ( llGetSubString( f2s, length, length ) == "." )
{
--length;
f2s = llGetSubString( f2s, 0, length );
}
return f2s;
}
docommand( string msg ) //This will parse out a command for the poofer
{
msg = llToLower( msg ); //Make it accept commands in any case
list parsedcommand = llParseString2List( msg, [" "], [] );
string part1 = llList2String( parsedcommand, 0 );
if ( part1 == "poof" )
{
if ( llGetListLength( parsedcommand ) > 1 ) //They gave us a texture parameter
{
pooftexture = llDumpList2String( llList2List( parsedcommand, 1, llGetListLength( parsedcommand ) ), " " );
poof();
} else
{
poof();
}
} else if ( ( part1 == "pooftexture" ) || ( part1 == "pt" ) )
//This is so long because it needs to ignore the spaces
pooftexture = llDumpList2String( llList2List( parsedcommand, 1, llGetListLength( parsedcommand ) ), " " );
else if ( part1 == "pooftime" )
pooftime = (float)llList2String( parsedcommand, 1 );
else if ( part1 == "poofrate" )
poofrate = (float)llList2String( parsedcommand, 1 );
else if ( part1 == "poofnum" )
poofnum = (integer)llList2String( parsedcommand, 1 );
else if ( part1 == "poofscale" )
poofscale = (float)llList2String( parsedcommand, 1 );
else if ( part1 == "poofspeed" )
poofspeed = (float)llList2String( parsedcommand, 1 );
else if ( part1 == "poofreset" )
llResetScript();
else if ( part1 == "poofdump" )
{
llOwnerSay( "pooftexture : " + pooftexture );
llOwnerSay( "pooftime : " + trim( (string)pooftime ) );
llOwnerSay( "poofrate: " + trim( (string)poofrate ) );
llOwnerSay( "poofnum: " + (string)poofnum );
llOwnerSay( "poofscale: " + trim( (string)poofscale ) );
llOwnerSay( "poofspeed: " + trim( (string)poofspeed ) );
}
}
default
{
on_rez( integer sparam )
{
poof();
llResetScript();
}
state_entry()
{
llParticleSystem([]);
oldkey = llGetKey();
llMessageLinked( LINK_SET, POOF_NOTECARD_READ_REQUEST, "", "" );
llListen( commandchannel, "", llGetOwner(), "" );
}
moving_start()
{
if ( oldkey != llGetKey() ) //We teleported! ( teleporting changes keys )
{
oldkey = llGetKey();
poof();
}
}
listen( integer chan, string name, key id, string msg )
{
docommand( msg );
}
link_message( integer sender, integer num, string str, key id )
{
if ( num == POOF_COMMAND )
docommand( str );
}
changed( integer change )
{
llParticleSystem( [] ); //Stop the particles going off with every modification
}
}

