Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Can someone help

Ginge Reymont
Registered User
Join date: 10 Oct 2005
Posts: 190
10-10-2005 14:48
Can someone show me where i would insert my voice activation on this script , i want it so i can say On or Off, the script sucks as it is but can someone show me where i should put my voice activation.

CODE

integer on = FALSE;
lazer()
{
// Particle Parameters taken from script by Jopsy Pendragon
llParticleSystem( [
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE,
PSYS_SRC_BURST_PART_COUNT,(integer) 20, // adjust for beam strength,
PSYS_SRC_BURST_RATE,(float) .05,
PSYS_PART_MAX_AGE,(float) .6,
PSYS_SRC_BURST_SPEED_MIN,(float)1,
PSYS_SRC_BURST_SPEED_MAX,(float) 7.0,
PSYS_PART_START_SCALE,(vector) <0,.1,0>,
PSYS_PART_END_SCALE,(vector) <.04,.5,0>,
PSYS_PART_START_COLOR,(vector) <1,0,0>,
PSYS_PART_END_COLOR,(vector) <.2,0,0>,
PSYS_PART_START_ALPHA,(float)0.5,
PSYS_PART_END_ALPHA,(float)0.00,
PSYS_PART_FLAGS,
PSYS_PART_EMISSIVE_MASK |
PSYS_PART_FOLLOW_VELOCITY_MASK |
PSYS_PART_FOLLOW_SRC_MASK |
PSYS_PART_INTERP_SCALE_MASK
] );
}
switch()
{
if (message == "Stop" )
{
on == FALSE;
llParticleSystem([]);
llOwnerSay ("Lazer is OFF" );
}
else
{
on == TRUE;
lazer();
llOwnerSay( "Lazer is ON" );
}
}

init()
{
switch();
}

default
{
state_entry()
{
init();
}
on_rez( integer param )
{
init();
}
touch_start( integer num )
{
switch();
}
}
Ziggy Puff
Registered User
Join date: 15 Jul 2005
Posts: 1,143
10-10-2005 15:42
You're checking the 'message' varible inside the switch() function, but I don't see that variable defined or being set anywhere. Is this a complete script that compiles and runs in SL?

Here's how I would do it. This will always turn it off when it's rezzed, and will then go on or off based on commands from the owner. The way this is set up, you can just say On and it'll work. Ideally you should set it to use a different channel and then say On on that channel, like "/99 On". That way the script's listener won't be triggered with everything you say even when you're just chatting with someone else.

Also, == is for comparison, = is for assignment.

I haven't compiled this, so there may be bugs in it, but the basic structure should work.

CODE

integer on = FALSE;
lazer()
{
// Particle Parameters taken from script by Jopsy Pendragon
llParticleSystem( [
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE,
PSYS_SRC_BURST_PART_COUNT,(integer) 20, // adjust for beam strength,
PSYS_SRC_BURST_RATE,(float) .05,
PSYS_PART_MAX_AGE,(float) .6,
PSYS_SRC_BURST_SPEED_MIN,(float)1,
PSYS_SRC_BURST_SPEED_MAX,(float) 7.0,
PSYS_PART_START_SCALE,(vector) <0,.1,0>,
PSYS_PART_END_SCALE,(vector) <.04,.5,0>,
PSYS_PART_START_COLOR,(vector) <1,0,0>,
PSYS_PART_END_COLOR,(vector) <.2,0,0>,
PSYS_PART_START_ALPHA,(float)0.5,
PSYS_PART_END_ALPHA,(float)0.00,
PSYS_PART_FLAGS,
PSYS_PART_EMISSIVE_MASK |
PSYS_PART_FOLLOW_VELOCITY_MASK |
PSYS_PART_FOLLOW_SRC_MASK |
PSYS_PART_INTERP_SCALE_MASK
] );
}

turnOn()
{
on = TRUE;
lazer();
llOwnerSay( "Lazer is ON" );
}

turnOff()
{
on = FALSE;
llParticleSystem([]);
llOwnerSay ("Lazer is OFF" );
}

default
{
on_rez( integer param )
{
llResetScript();
}

state_entry()
{
turnOff();
// set up a listener so the script can receive stuff you say.
// This will only listen to the owner. Check the wiki for
// more info on how llListen works
llListen(0, "", llGetOwner(), ""); // Change the 0 to a different number to use a non-zero channel
}

// I'm assuming you want touch to flip between on and off
touch_start( integer num )
{
if (on == TRUE)
{
turnOff();
}
else
{
turnOn();
}
}

listen(integer channel, string name, key id, string message)
{
if (llToUpper(message) == "ON")
{
turnOn();
}
else if (llToUpper(message) == "OFF")
{
turnOff();
}
}
}
Ben Bacon
Registered User
Join date: 14 Jul 2005
Posts: 809
10-11-2005 06:26
... and to do it using states ('cuz I like'em)
CODE
default 
{
state_entry()
{
llListen(99, "", llGetOwner(), "on");
llParticleSystem([]);
}

listen(integer channel, string name, key id, string message)
{
state On;
}

on_rez( integer param )
{
llResetScript();
}
}

state On
{
state_entry()
{
llListen(99, "", llGetOwner(), "off");
llParticleSystem( [
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE,
PSYS_SRC_BURST_PART_COUNT,(integer) 20, // adjust for beam strength,
PSYS_SRC_BURST_RATE,(float) .05,
PSYS_PART_MAX_AGE,(float) .6,
PSYS_SRC_BURST_SPEED_MIN,(float)1,
PSYS_SRC_BURST_SPEED_MAX,(float) 7.0,
PSYS_PART_START_SCALE,(vector) <0,.1,0>,
PSYS_PART_END_SCALE,(vector) <.04,.5,0>,
PSYS_PART_START_COLOR,(vector) <1,0,0>,
PSYS_PART_END_COLOR,(vector) <.2,0,0>,
PSYS_PART_START_ALPHA,(float)0.5,
PSYS_PART_END_ALPHA,(float)0.00,
PSYS_PART_FLAGS,
PSYS_PART_EMISSIVE_MASK |
PSYS_PART_FOLLOW_VELOCITY_MASK |
PSYS_PART_FOLLOW_SRC_MASK |
PSYS_PART_INTERP_SCALE_MASK
] );
}

listen(integer channel, string name, key id, string message)
{
state default;
}

on_rez( integer param )
{
llResetScript();
}
}

(uses channel 99 as suggested by Ziggy)