Jump to content

Particle effect trigger when teleporting?


Giyua
 Share

You are about to reply to a thread that has been inactive for 285 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

Hello is there any way i can make this particle script trigger when I teleport?

 

integer keystate = 0 ; 
integer glow = FALSE;            // Make the particles glow 
integer bounce = FALSE;          // Make particles bounce on Z plane of object 
integer interpColor = TRUE;     // Go from start to end color 
integer interpSize = TRUE;      // Go from start to end size 
integer wind = TRUE;           // Particles effected by wind 
integer followSource = FALSE;    // Particles follow the source 
integer followVel = FALSE;       // Particles turn to velocity direction 


integer pattern = PSYS_SRC_PATTERN_EXPLODE; 

// Select a target for particles to go towards 
// "" for no target, "owner" will follow object owner 
//    and "self" will target this object 
//    or put the key of an object for particles to go to 
key target = ""; 

// Particle paramaters 
float age = 2.6;                  // Life of each particle 
float maxSpeed = 1;            // Max speed each particle is spit out at 
float minSpeed = 0.75;            // Min speed each particle is spit out at 
string texture = "4f714019-c1cf-6b16-994f-44b217022f1a";                 // Texture used for particles, default used if blank 
float startAlpha = 0.8;           // Start alpha (transparency) value 
float endAlpha = 0.0;           // End alpha (transparency) value 
vector startColor = <0,0.4,0.9>;    // Start color of particles <R,G,B> 
vector endColor = <0,0.4,0.9>;      // End color of particles <R,G,B> (if interpColor == TRUE) 
vector startSize = <0.01,0.01,0.0>;     // Start size of particles 
vector endSize = <2.0,2.0,0.0>;       // End size of particles (if interpSize == TRUE) 
vector push = <.2,0,3>;          // Force pushed on particles 

// System paramaters 
float rate = 0.45;            // How fast (rate) to emit particles 
float radius = 0.0;          // Radius to emit particles for BURST pattern 
integer count = 20;        // How many particles to emit per BURST 
float outerAngle = 0;    // Outer angle for all ANGLE patterns 
float innerAngle = 0.15;    // Inner angle for all ANGLE patterns 
vector omega = <0,0,0>;    // Rotation of ANGLE patterns around the source 
float life = 0;             // Life in seconds for the system to make particles 


integer flags; 
list sys; 
integer type; 
vector tempVector; 
rotation tempRot; 
string tempString; 
integer i; 


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; 
    sys = [  PSYS_PART_MAX_AGE,age, 
                        PSYS_PART_FLAGS,flags, 
                        PSYS_PART_START_COLOR, startColor, 
                        PSYS_PART_END_COLOR, endColor, 
                        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, 10, 
                        PSYS_SRC_TEXTURE, texture, 
                        PSYS_PART_START_ALPHA, startAlpha, 
                        PSYS_PART_END_ALPHA, endAlpha 
                            ]; 
                            
    llParticleSystem(sys); 


default 

    state_entry() 
    { 
        keystate = 0 ; 
        updateParticles() ; 
    } 
    
}

Link to comment
Share on other sites

By "when I teleport", you mean at the arriving end, right?  Getting it to trigger where you just left is a touch trickier.

And the change needed would be:

... the other stuff stays the same ...

default
{
	state_entry()
	{
		keystate = 0;
	}

	changed(integer change)
	{
		if ( change & CHANGED_TELEPORT )
		{
			updateParticles();
		}
	}
} 

 

  • Like 1
Link to comment
Share on other sites

If I'm reading it right, the script already seems to have a non-zero PSYS_SRC_MAX_AGE, which will cause its particle effect to activate whenever someone sees it enter their draw distance or receive any unrelated-to-particles object update. People other than the wearer may already see the particles happen when the wearer teleports into a region.

Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 285 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...