Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

voice command on/off for particle script

ArchTx Edo
Mystic/Artist/Architect
Join date: 13 Feb 2005
Posts: 1,993
12-03-2005 14:33
I'm pretty new to scripting. A particle script (copy below) that I am using for a project I'm working on appears to have voice command tags at the end. But I cant seem to figure out how they work. Typing "spray on" or "spray off" doesnt seem to do anything. I'm sure there is something about this that I don't understand.

I have successfully used touch commands to turn the particle spray on and off, but I hate a mystery and would like to understand this better.

Thank you for any help you can give.

CODE

// Particle System 1.0

StartSteam()
{
// MASK FLAGS: set to "TRUE" to enable
integer glow = TRUE; // Makes the particles glow
integer bounce = FALSE; // Make particles bounce on Z plane of objects
integer interpColor = TRUE; // Color - from start value to end value
integer interpSize = TRUE; // Size - from start value to end value
integer wind = FALSE; // Particles effected by wind
integer followSource = FALSE; // Particles follow the source
integer followVel = TRUE; // Particles turn to velocity direction



// Choose a pattern from the following:
// PSYS_SRC_PATTERN_EXPLODE
//PSYS_SRC_PATTERN_DROP
// PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
// PSYS_SRC_PATTERN_ANGLE_CONE
// PSYS_SRC_PATTERN_ANGLE
integer pattern = PSYS_SRC_PATTERN_ANGLE;

// 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.3; // Life of each particle
float maxSpeed = 0.5; // Max speed each particle is spit out at
float minSpeed = 0.0; // Min speed each particle is spit out at
string texture = "Water Particle - Mist"; // Texture used for particles, default used if blank
float startAlpha = 0.3; // Start alpha (transparency) value
float endAlpha = 0.2; // End alpha (transparency) value
vector startColor = <0.9,0.9,1>; // Start color of particles <R,G,B>
vector endColor = <1,1,1>; // End color of particles <R,G,B> (if interpColor == TRUE)
vector startSize = <0.1,0.1,0.1>; // Start size of particles
vector endSize = <0.9,0.9,0.9>; // End size of particles (if interpSize == TRUE)
vector push = <0,0.05,-1>; // Force pushed on particles

// System paramaters

float rate = 0.05; // How fast (rate) to emit particles
float radius = 0.1; // Radius to emit particles for BURST pattern
integer count = 7; // How many particles to emit per BURS
float outerAngle = 0.1; // Outer angle for all ANGLE patterns
float innerAngle = 0.1; // 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

// Script variables

integer flags;


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, 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, life,
PSYS_SRC_TEXTURE, texture,
PSYS_PART_START_ALPHA, startAlpha,
PSYS_PART_END_ALPHA, endAlpha
]);

}
StartSpray()
{

}

StopSpray()
{
llParticleSystem([]);
}



default
{
state_entry()
{
StartSteam();
}

listen(integer channel, string name, key id, string message)
{

if (0 == llSubStringIndex(message, "spray on"))
{
StartSteam();

}
else if (0 == llSubStringIndex(message, "spray off"))
{
StopSpray();
}
}
}

_____________________

VRchitecture Model Homes at http://slurl.com/secondlife/Shona/60/220/30
http://www.slexchange.com/modules.php?name=Marketplace&MerchantID=2240
http://shop.onrez.com/Archtx_Edo
Upshaw Underhill
Techno-Hobbit
Join date: 13 Mar 2003
Posts: 293
12-03-2005 16:34
try adding llListen in the state_entry?

:)

L8r,
UU
_____________________
Helen Quatro
Cephalopod Overlord
Join date: 6 Sep 2005
Posts: 24
12-03-2005 17:34
I think all you need to do is replace both llSubStringIndex() to something like

CODE
llListen(55, "", "", "spray on");


and

CODE
llListen(55, "", "", "spray off");


respectively.

You could change the channel to just 0 and change the second "" to llGetOwner() so "spray on/off" could be said in open chat and the script would only change if the owner says it. One problem I've had in using the llGetOwner() is that future owners will have to usually reset the script, so my personal choice is to use a channel other than 0 and not llGetOwner().
_____________________
Pain Pirandello
Registered User
Join date: 26 Oct 2005
Posts: 39
I think they are both missing the real problem
12-05-2005 15:19
You do not have a listener started.

CODE

state_entry()
{
StartSteam();
}


Should read:

CODE

state_entry()
{
StartSteam();
// we need to turn on the listener that will send info to the listen function
// here we listen to channel 0 (main chat channel) for any message from the owner
// see: http://secondlife.com/badgeo/wakka.php?wakka=llListen for more details
llListen( 0, "", llGetOwner(), "" );
}
Rafe Phoenix
AKA Rafe Zessinthal
Join date: 15 Nov 2004
Posts: 490
Me too...
12-05-2005 18:56
Using the free particle script in Sl i made a touch controled particle system for use in a dance area. I've also edited and made an animation start stop switch for scrolling textures, these are a big client side lag reducer at my land. If anyone is interested in my versions i'de be happy to post them here.