|
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. 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. 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) 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)
|