Difference between revisions of "LlTriggerSoundLimited"

From Second Life Wiki
Jump to: navigation, search
m
m (Example code optimized)
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{LSL_Function
 
{{LSL_Function
|inject-2={{Issues/SVC-4897}}{{Issues/BUG-4130}}
+
|inject-2={{Issues/SVC-4897}}
 
{{LSL_Function/inventory|sound|uuid=true|type=sound|volume=volume}}
 
{{LSL_Function/inventory|sound|uuid=true|type=sound|volume=volume}}
 
{{LSL_Function/position|top_north_east|region=*}}
 
{{LSL_Function/position|top_north_east|region=*}}
Line 14: Line 14:
 
|return_text
 
|return_text
 
|spec
 
|spec
|caveats
+
|caveats=
 +
* If the script is attached and the parcel has avatar sounds turned off, an error is shouted on {{#var:DEBUG_CHANNEL}}: "Too many sound triggers."
 
|constants
 
|constants
|examples
+
|examples=<source lang="lsl2">
 +
/*
 +
    Single Prim llTriggerSoundLimited Helper by Daemonika Nightfire.
 +
 +
    Just use this script in a single prim and make the prim as big as your room.
 +
    If you then click on the prim, the sound will only be triggered inside and you will get a message with a finished LSL code.
 +
    You can simply copy this code to the clipboard and use it in your actual script.
 +
   
 +
    Important:
 +
    You cannot rotate the prim, the code needs global coordinates.
 +
*/
 +
 
 +
string sound = "c704dbd8-53b1-246d-e197-b486e92da45b"; // use here your own sound uuid
 +
 
 +
////////// nothing to do below this line \\\\\\\\\\
 +
default
 +
{
 +
    state_entry()
 +
    {
 +
        llSetStatus(STATUS_PHANTOM, TRUE);
 +
        llSetRot(ZERO_ROTATION);
 +
    }
 +
 
 +
    touch_start(integer total_number)
 +
    {
 +
        llSetRot(ZERO_ROTATION);
 +
        vector my_pos = llGetPos();
 +
        vector my_scale = llGetScale();
 +
       
 +
        float _X = my_scale.x/2;
 +
        float _Y = my_scale.y/2;
 +
        float _Z = my_scale.z/2;
 +
       
 +
        vector bottom_south_west = <my_pos.x - _X, my_pos.y - _Y, my_pos.z - _Z>;
 +
        vector top_north_east    = <my_pos.x + _X, my_pos.y + _Y, my_pos.z + _Z>;
 +
       
 +
        llTriggerSoundLimited(sound, 1.0, top_north_east, bottom_south_west);
 +
       
 +
        llOwnerSay("\nllTriggerSoundLimited(\"" + sound + "\", 1.0, " + (string)top_north_east + ", " + (string)bottom_south_west + ");");
 +
    }
 +
   
 +
    on_rez(integer Dae)
 +
    {
 +
        llResetScript();
 +
    }
 +
}
 +
</source>
 
|helpers
 
|helpers
 
|also_functions={{LSL DefineRow||[[llPlaySound]]}}
 
|also_functions={{LSL DefineRow||[[llPlaySound]]}}

Latest revision as of 11:15, 5 January 2020

Summary

Function: llTriggerSoundLimited( string sound, float volume, vector top_north_east, vector bottom_south_west );

Plays sound at volume, centered at but not attached to the object, limited to the box defined by vectors top_north_east and bottom_south_west

• string sound a sound in the inventory of the prim this script is in or a UUID of a sound
• float volume between 0.0 (silent) and 1.0 (loud) (0.0 <= volume <= 1.0)
• vector top_north_east position in region coordinates
• vector bottom_south_west position in region coordinates

If the object moves the sound does not move with it.
Use llPlaySound to play a sound attached to the object.

Caveats

  • If sound is missing from the prim's inventory and it is not a UUID or it is not a sound then an error is shouted on DEBUG_CHANNEL.
  • If sound is a UUID then there are no new asset permissions consequences for the object.
    • The resulting object develops no new usage restrictions that might have occurred if the asset had been placed in the prims inventory.
  • If the script is attached and the parcel has avatar sounds turned off, an error is shouted on DEBUG_CHANNEL: "Too many sound triggers."
All Issues ~ Search JIRA for related Bugs

Examples

/*
    Single Prim llTriggerSoundLimited Helper by Daemonika Nightfire.
 
    Just use this script in a single prim and make the prim as big as your room.
    If you then click on the prim, the sound will only be triggered inside and you will get a message with a finished LSL code.
    You can simply copy this code to the clipboard and use it in your actual script.
 
    Important:
    You cannot rotate the prim, the code needs global coordinates.
*/
 
string sound = "c704dbd8-53b1-246d-e197-b486e92da45b"; // use here your own sound uuid
 
////////// nothing to do below this line \\\\\\\\\\
default
{
    state_entry()
    {
        llSetStatus(STATUS_PHANTOM, TRUE);
        llSetRot(ZERO_ROTATION);
    }
 
    touch_start(integer total_number)
    {
        llSetRot(ZERO_ROTATION);
        vector my_pos = llGetPos();
        vector my_scale = llGetScale();
 
        float _X = my_scale.x/2;
        float _Y = my_scale.y/2;
        float _Z = my_scale.z/2;
 
        vector bottom_south_west = <my_pos.x - _X, my_pos.y - _Y, my_pos.z - _Z>;
        vector top_north_east    = <my_pos.x + _X, my_pos.y + _Y, my_pos.z + _Z>;
 
        llTriggerSoundLimited(sound, 1.0, top_north_east, bottom_south_west);
 
        llOwnerSay("\nllTriggerSoundLimited(\"" + sound + "\", 1.0, " + (string)top_north_east + ", " + (string)bottom_south_west + ");");
    }
 
    on_rez(integer Dae)
    {
        llResetScript();
    }
}

See Also

Functions

•  llPlaySound
•  llTriggerSound

Deep Notes

History

All Issues

~ Search JIRA for related Issues
   llSetSyncTime() - a function for synchronising client side effects

Footnotes

  1. ^ Early release notes were not very accurate or thorough, they sometimes included information about features added in previous releases or failed to include information about features added in that release.

Signature

function void llTriggerSoundLimited( string sound, float volume, vector top_north_east, vector bottom_south_west );