Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Library: ~ Who Said It? (Identification/Location Helper)

Shippou Oud
The Fox Within
Join date: 11 Jul 2005
Posts: 141
03-27-2008 18:13
I've designed this script to help in finding the location of a speaker in a crowded location. I know in options it is possible to highlight a speaker, but I like having more control, plus like to be creative with script work.

The basics of the script is to hover an object over top of an individual speaker/object that speaks, and emit partials down.

Features include the ability of the owner to turn on/off the practicals, and the ability to destroy the object if it gets lost.

It is in compliance with TOS, but to be on the safe side, the self destruct script can be activated by anyone.

Commands:
"start p" = turn on partials (Owner only)
"end p" = turn off partials (Owner only)
"dr4" = destroy the object (Any One)

Some other features: The object blinks from white to orange, displays the name of the last speaker over the object, the partials change color every time something new is said, and it hovers over the object talking, while the partials point to the owner (sorry, but it can't pickup on talking attachments)
From: someone


par()
{
llParticleSystem([
//**Particle settings *****************************************************
PSYS_PART_START_COLOR, <1.0,1.0,1.0>, PSYS_PART_END_COLOR, <aa,bb,cc>,
PSYS_PART_START_ALPHA, vv, PSYS_PART_END_ALPHA, vv,
PSYS_PART_START_SCALE,<0.1,0.1,0.1>,PSYS_PART_END_SCALE, <0.1,0.1,0.1>,
PSYS_PART_MAX_AGE, 2.0,//age in seconds. 0.1 to 60.0 seconds
//*** System settings *******************************************************
PSYS_SRC_PATTERN, 1,//1=DROP, 2=EXPLODE, 4=ANGLE, 8=ANGLE_CONE
PSYS_SRC_MAX_AGE, 0.0,//seconds it will operate, 0.1 to 60, Zero=infinite
PSYS_SRC_BURST_RATE, 0.0, //sec between bursts 0.0 = full speed to 60 sec
PSYS_SRC_BURST_PART_COUNT, 40, //1 to 4096 number of particles
PSYS_SRC_BURST_RADIUS, 0.1, //dist from, where particles will be created.
PSYS_SRC_ACCEL, <0.0,0.0,-1.0>,//acceleration applied,meters per sec.
PSYS_SRC_OMEGA, <0.0,0.0,0.0>,//rotation spin radians per sec along each axis
//PSYS_SRC_BURST_SPEED_MIN, 1.0, PSYS_SRC_BURST_SPEED_MAX, 2.0,
PSYS_SRC_INNERANGLE, 1.55, PSYS_SRC_OUTERANGLE, 1.54,//angle
PSYS_SRC_ANGLE_BEGIN, 1.0, PSYS_SRC_ANGLE_END, 0.0,
PSYS_SRC_TARGET_KEY, xx,
//PSYS_SRC_TEXTURE, llGetInventoryName(INVENTORY_TEXTURE, 0),
//*** System Behavior **************************************
PSYS_PART_FLAGS, ( 0
| PSYS_PART_INTERP_COLOR_MASK //particle color and alpha transition
| PSYS_PART_INTERP_SCALE_MASK //size/scale transitions
| PSYS_PART_EMISSIVE_MASK //particles are full-bright
| PSYS_PART_FOLLOW_VELOCITY_MASK //rotate to orient their "top" towards the dir
//| PSYS_PART_WIND_MASK //Hmmm yes the wind
// | PSYS_PART_BOUNCE_MASK //bounce off a Z plane
//| PSYS_PART_FOLLOW_SRC_MASK //move relative to the position of the emitter
| PSYS_PART_TARGET_POS_MASK //target specified by the PSYS_SRC_TARGET_KEY
//| PSYS_PART_TARGET_LINEAR_MASK//not doc, emitted particles move in a straight line towards the target spec by the PSYS_SRC_TARGET_KEY
)
] );
}

key xx;
float aa;
float bb;
float cc;
float vv;
integer sw;
string name1;

default
{
state_entry()
{
llListen(0, "", NULL_KEY, "";);
aa = 1.0;
bb = 1.0;
cc = 1.0;
vv = 1.0;
sw = 1;
name1 = "";
llSetTimerEvent(.5);
}

listen(integer chan, string name, key id, string mess) {
name1 = name;
if (mess == "dr4";)
{
llInstantMessage(llGetOwner(), "I died at " + llGetRegionName() + " " + (string) llGetPos());
llDie();
}
if (id == llGetOwner() )
{
if (mess == "end p";)
{
vv = 0.0;
par();
}
if (mess == "start p";)
{
vv = 0.5;
par();
}
}
llSensor(name, id, AGENT, 25, PI);
xx = llGetOwnerKey(id);
aa = llFrand(1);
bb = llFrand(1);
cc = llFrand(1);

par();
}

sensor(integer numDetected) {
while (llGetPos() != llDetectedPos(0) + <0,0,2>;) llSetPos(llDetectedPos(0) + <0,0,2>;);
}

timer()
{
if (sw == 1)
{
sw = 2;
llSetColor(<1,.5,0>,ALL_SIDES);
llSetText(name1 ,<1,.5,0>,1);
}
else if (sw == 2)
{

sw = 1;
llSetColor(<1,1,1>,ALL_SIDES);
llSetText("" ,<1,.5,0>,1);
}
}

}
Nada Epoch
The Librarian
Join date: 4 Nov 2002
Posts: 1,423
Library bump
03-28-2008 07:38
:-)
_____________________
i've got nothing. ;)