Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Say what!?

Ephraim Kappler
Reprobate
Join date: 9 Jul 2007
Posts: 1,946
09-30-2009 00:59
One object goes:

CODE

llSay(-20090929,"Whatever");


But the other object doesn't appear to be paying attention:

CODE

list particle_parameters;
float SystemSafeSet;
float SystemAge;

StartParticles()
{
llParticleSystem([
PSYS_PART_START_SCALE, <0.015,0.015,FALSE>,
PSYS_PART_END_SCALE, <1,1,FALSE>,
PSYS_PART_START_COLOR, <0.3,0.3,0.3>,
PSYS_PART_END_COLOR, <0.8,0.8,0.8>,
PSYS_PART_START_ALPHA, (float) 0.05,
PSYS_PART_END_ALPHA, (float) 0,
PSYS_PART_MAX_AGE, (float) 1,
PSYS_SRC_MAX_AGE, SystemSafeSet,
PSYS_SRC_BURST_PART_COUNT, (integer) 20,
PSYS_SRC_BURST_RATE, (float) 0.01,
PSYS_SRC_PATTERN, (integer) 4,
PSYS_SRC_BURST_SPEED_MIN, (float) 0.25,
PSYS_SRC_BURST_SPEED_MAX, (float) 1.5,
PSYS_SRC_ANGLE_BEGIN, (float) 0.9 * PI,
PSYS_SRC_ANGLE_END, (float) 1.1 * PI,
PSYS_SRC_OMEGA, <0,0,0>,
PSYS_SRC_ACCEL, <1.5,0,1.5>,

PSYS_PART_FLAGS, (integer)( 0
| PSYS_PART_INTERP_COLOR_MASK
| PSYS_PART_INTERP_SCALE_MASK
| PSYS_PART_EMISSIVE_MASK
| PSYS_PART_FOLLOW_VELOCITY_MASK
)
]);
llSleep(SystemAge);
SystemSafeSet = 0.00;
}

default
{
state_entry()
{
SystemSafeSet = 0.00;
SystemAge = 1.5;
llListen(-20090929, "", NULL_KEY, "");
}
listen( integer channel, string name, key id, string message )
{
if (message == "Whatever") StartParticles();
}
}


Any ideas what's wrong here?
Ee Maculate
Owner of Fourmile Castle
Join date: 11 Jan 2007
Posts: 919
09-30-2009 01:39
Replacing the Startparticles() call with an llSay shows that it hears the other object fine, so that's a red herring. The problem is in the particle generator.
Ee Maculate
Owner of Fourmile Castle
Join date: 11 Jan 2007
Posts: 919
09-30-2009 01:41
Ah.. the particles are there but are almost invisible!

PSYS_PART_START_ALPHA, (float) 0.05,
PSYS_PART_END_ALPHA, (float) 0,

If you change both to 1 you will see them!
Ephraim Kappler
Reprobate
Join date: 9 Jul 2007
Posts: 1,946
09-30-2009 01:55
Thanks Ee, but I have an almost exactly similar particle system operating in another Hud-controlled object I made sometime back. The effect is subtle - something like breath on a frosty morning - but it is certainly visible thanks to the emmissive mask:

CODE

list particle_parameters;
float SystemSafeSet;
float SystemAge;

StartParticles()

{
SystemSafeSet = SystemAge;

llParticleSystem([

PSYS_PART_START_SCALE, <0.15,0.15,FALSE>,
PSYS_PART_END_SCALE, <0.5,0.5,FALSE>,
PSYS_PART_START_COLOR, <0.35,0.35,0.25>,
PSYS_PART_END_COLOR, <0.75,0.75,0.75>,
PSYS_PART_START_ALPHA, (float) 0.04,
PSYS_PART_END_ALPHA, (float)0.0,

PSYS_SRC_BURST_PART_COUNT, (integer) 15,
PSYS_SRC_BURST_RATE, (float) 0.1,
PSYS_PART_MAX_AGE, (float) 1,
PSYS_SRC_MAX_AGE, SystemSafeSet,
PSYS_SRC_PATTERN, (integer)10,

PSYS_SRC_BURST_SPEED_MIN, (float)0.1,
PSYS_SRC_BURST_SPEED_MAX, (float)0.25,
PSYS_SRC_ANGLE_BEGIN, (float)0.05*PI,
PSYS_SRC_ANGLE_END, (float)0.0*PI,
PSYS_SRC_ACCEL, <0.25,0.0,0.125>,

PSYS_PART_FLAGS, (integer)( 0
| PSYS_PART_INTERP_COLOR_MASK
| PSYS_PART_INTERP_SCALE_MASK
| PSYS_PART_EMISSIVE_MASK
| PSYS_PART_FOLLOW_VELOCITY_MASK
| PSYS_PART_BOUNCE_MASK
)
]);

llSleep(SystemAge);
SystemSafeSet = 0.00;
}

default
{
changed(integer change)
{
if(change & CHANGED_OWNER)
{
llResetScript();
}
}
state_entry()
{
SystemSafeSet = 0.00;
SystemAge = 1.5;
llListen(-291009, "", NULL_KEY, "");
}
listen(integer channel, string name, key id, string message)
{
if (llGetOwnerKey(id) != llGetOwner()) return;
else if (message == "Breathe") StartParticles();
}
}


The only significant difference between the two systems is that this 'breath' version resets at the beginning and ties the listen to the owner, which I don't want in this instance.
Ephraim Kappler
Reprobate
Join date: 9 Jul 2007
Posts: 1,946
SystemSafeSet = SystemAge, Dolt!
10-01-2009 03:51
Just for the record, in case other scriptily challenged individuals pull this thread up for reference in the archived future: I neglected to declare 'SystemSafeSet = SystemAge;' in the problematic script. Of course it's there in the working example but why the hell would I want to look at that when I could spend all day bouncing my head off the desk?