Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Chat command doesn't work for next owner

Paulo Dielli
Symfurny Furniture
Join date: 19 Jan 2007
Posts: 780
09-03-2007 19:13
I am trying to use the bling script I found on this forum and it works fine. I have made a necklace and put the script in two tiny prims. The chat commands (bling on and bling off) work good for myself. But when I give the necklace away to someone else, the chat commands don't work anymore for the new owner. But, even though I don't own the given necklace anymore, when I give the chat commands it does work.

I can see nothing wrong in the script myself. Chat is regular on channel zero and I see the llGetOwner in the script. But something must be wrong, because the necklace/script still seems to see me as the owner. What is wrong here? Did I overlook something? Please help.

CODE

//BLING PARTICLES FOR BLINGY JEWELS AND STUFF Adapted by Stormy Roentgren

//For those not knowing how to alter particle scripts, the parameters you'll want to alter here (if you choose to) are the "float rate" and the start and end sizes.

// Channel to listen for "bling on" "bling off" commands
integer channel = 0;

// Particle Script 0.3
// Created by Ama Omega
// 10-10-2003

// Mask Flags - set to TRUE to enable
integer glow = TRUE; // Make the particles glow
integer bounce = FALSE; // Make particles bounce on Z plan of object
integer interpColor = TRUE; // Go from start to end color
integer interpSize = TRUE; // Go from start to end size
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_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; // Life of each particle
float maxSpeed = .1; // Max speed each particle is spit out at
float minSpeed = .1; // Min speed each particle is spit out at
string texture = ""; // Texture used for particles, default used if blank
float startAlpha = 10; // Start alpha (transparency) value
float endAlpha = 10; // End alpha (transparency) value
vector startColor = <1,1,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 = <.04,.25,.01>; // Start size of particles
vector endSize = <.03,.25,.01>; // End size of particles (if interpSize == TRUE)
vector push = <0,0,0>; // Force pushed on particles

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

// Script variables
integer flags;

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;

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
]);
}

// Small change made by Compulov Weeks on 2006-09-14... will listen on
// channel 7 for "bling on" or "bling off" to activate and deactivate

default
{
state_entry()
{
llListen(channel, "", llGetOwner(), "");
}

listen(integer channel, string name, key id, string message)
{
if (message == "bling off")
{
llOwnerSay("Turning bling off");
llParticleSystem([]);
} else if (message == "bling on") {
llOwnerSay("Turning bling on");
updateParticles();
}
}
}
Kenn Nilsson
AeonVox
Join date: 24 May 2005
Posts: 897
09-03-2007 19:23
PLEASE do not use channel 0 for your listen!

Anyway...

...you're setting the listen on "state_entry()" only...which means that it will not recognize new owners. Try something more along the lines of:

integer handle;


default
{
attach(key id)
{
if(id != NULL_KEY)
{
llListenRemove(handle);
handle = llListen(channel, "", id, "";);
}
}
listen(integer channel, string name, key id, string message)
{
if (message == "bling off";)
{
llOwnerSay("Turning bling off";);
llParticleSystem([]);
} else if (message == "bling on";) {
llOwnerSay("Turning bling on";);
updateParticles();
}
}
}

I used the attach() event because you're using it for jewelry. If you were rezzing the item on the ground, I would use the on_rez() event instead. You'll want to make sure that the listen "resets" to a new owner whenever ownership changes--not just in state_entry().
_____________________
--AeonVox--

Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms chasing ghosts, eating magic pills, and listening to repetitive, addictive, electronic music.
Paulo Dielli
Symfurny Furniture
Join date: 19 Jan 2007
Posts: 780
09-03-2007 21:12
Ahhh thanks Kenn, that did it! I already made some changes to the existing script, including the channel. But it still seems that, how much I try to learn, there always appear to be obvious solutions that seem pretty difficult to me. Thanks a lot for your help!!