Skip to content
lsl.devlsl.devLSL Dev

LlTriggerSoundLimited

Looking for the current API? Open the llTriggerSoundLimited reference →

Wiki description

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

Function notes

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

Caveats

  • Unlike llSetSoundRadius, the sound audibility is determined by avatar position and not camera position.
  • If the script is attached and the parcel has avatar sounds turned off, an error is shouted on DEBUG_CHANNEL: "Too many sound triggers."

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

Secret Collision Sound

This will play a sound on collision, only to the person who collided with it.
It can be used for haunted houses where you want to add confusion, since others wont hear!
string sound = "a9da4612-5d4b-662a-050a-c821c394991f"; // squeaky toy

playSoundAt(key avatar, string sound, float volume)
{
    if (llGetAgentSize(avatar)) // Make sure theyre actually present
    {
        vector pos = (vector)llList2String(llGetObjectDetails(avatar, [OBJECT_POS]),0); // Their position
        list scale = llGetBoundingBox(avatar); // The corners of their bounding box
        vector corner2 = pos+llList2Vector(scale,1); // Top northeast corner of their bounding box
        vector corner1 = pos+llList2Vector(scale,0); // Bottom southwest corner of their bounding box
        llTriggerSoundLimited(sound, volume, corner2, corner1); // Play sound in their location only
    }
}
default
{
    collision_start(integer n)
    {
        key bumper = llDetectedKey(0);
        float volume = 1.0; // Volume is affected by distance like llPlaySound!
        playSoundAt(bumper, sound, volume);
    }
}

See also: functions

History

Added in SL 0.4.0

Shared wiki helpers

The original page also injects shared parameter notes, caveats or issue information through these helpers. Their conditional MediaWiki logic is not reproduced here; inspect the preserved helper source for additional material.

Template:Issues/SVC-4897

Original shared helper source (conditional wiki logic is not evaluated)
{{Issues|SVC-4897|'''llSetSyncTime'''() - a function for synchronising client side effects|type=nf}}

Template:LSL Function/inventory

Original shared helper source (conditional wiki logic is not evaluated)
{{LSL Injection Test}}<includeonly>{{#if:
{{:DEBUG_CHANNEL}}

{{#vardefine:p_{{{1|none}}}_desc|{{AAn|{{#if:{{{insert|}}}|{{{insert}}}|{{#if:{{{type|}}}|{{{type}}}|item}}}}}} in the {{LSLGC|Inventory|inventory}} {{#if:{{{remote|}}}|of the {{#if:{{{target|}}}|[[{{{target|}}}|target]]|target}} prim|of the prim this script is in}}{{#ifeq:{{{uuid|}}}{{{UUID|}}}|true|{{#if:{{{empty|}}}|,|&#32;or}} a {{HoverLink|UUID|Universally Unique IDentifier}}{{#if:{{{type|}}}|&#32;of {{AAn|{{{type}}}}}}}}}{{#if:{{{empty|}}}|&#32;or an empty string{{#ifeq:{{{empty}}}|*||&#32;{{{empty}}}}}}}{{#var:p_{{{1|none}}}_desc}}}}

{{#vardefine:p_{{{1|none}}}_hover|{{AAn|{{#if:{{{insert|}}}|{{{insert}}}|{{#if:{{{type|}}}|{{{type}}}|item}}}}}} in the inventory {{#if:{{{remote|}}}|of the target prim|of the prim this script is in}}{{#ifeq:{{{uuid|}}}{{{UUID|}}}|true|{{#if:{{{empty|}}}|,|&#32;or}} a UUID{{#if:{{{type|}}}|&#32;of {{AAn|{{{type}}}|{{{type_hover|{{{type}}}}}}}}}}}}{{#if:{{{empty|}}}|&#32;or an empty string{{#ifeq:{{{empty}}}|*||&#32;{{{empty_hover|{{{empty}}}}}}}}}}{{#var:p_{{{1|none}}}_hover}}}}

{{#vardefine:caveats{{#var:direction}}|{{#if:{{#if:{{{no_caveat|}}}||{{{1|}}}}}|{{#var:caveats{{#var:direction}}}}
{{#if:{{{empty|}}}|* If {{LSLP|{{{1}}}}} is not an empty string and...
**{{LSLP|{{{1}}}}} is missing from the prim&#39;s inventory {{#if:{{{full|}}}|or not {{HoverLink|:Category:LSL_Permissions/Asset|copy, mod and transfer|full permissions}}}} {{#ifeq:{{{uuid|}}}{{{UUID|}}}|true|and it is not a {{HoverLink|UUID|Universally Unique IDentifier}}}} {{#if:{{{type|}}}|or it is not {{AAn|{{{type|item}}}}}}} then {{#if:{{{silent|}}}|it fails silently|an error is shouted on {{#var:DEBUG_CHANNEL}}}}.
|* If {{LSLP|{{{1}}}}} is missing from the prim&#39;s inventory {{#if:{{{full|}}}|or not {{HoverLink|:Category:LSL_Permissions/Asset|copy, mod and transfer|full permissions}}}} {{#ifeq:{{{uuid|}}}{{{UUID|}}}|true|and it is not a {{HoverLink|UUID|Universally Unique IDentifier}}}} {{#if:{{{type|}}}|or it is not {{AAn|{{{type|item}}}}}}} then {{#if:{{{silent|}}}|it fails silently|an error is shouted on {{#var:DEBUG_CHANNEL}}}}. }}{{#ifeq:{{{uuid|}}}{{{UUID|}}}|true|
* If {{LSLP|{{{1}}}}} is a {{HoverLink|UUID|Universally Unique IDentifier}} then there are no new [[:Category:LSL_Permissions/Asset|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.}}|{{#var:caveats{{#var:direction}}}}}}}}

{{{{#if:{{{volume|}}}|LSL Function/volume}}|{{{volume|}}}|}}

}}</includeonly><noinclude>
{{Multi-lang}}
{{UpdateLink}}

{| {{Prettytable}} {{#vardefine:caveats}}{{#vardefine:p_ta_desc}}{{#vardefine:p_ta_hover}}
|+<code><nowiki>{{{{FULLPAGENAMEE}}|ta|type=sound|uuid=true}}</nowiki></code>{{{{FULLPAGENAMEE}}|ta|type=sound|uuid=true}}
|-{{Hl2}}
! #var
! value
|-
{{VarPair|caveats}}
|-
{{VarPair|p_ta_desc}}
|-
{{VarPair|p_ta_hover}}
|}

{| {{Prettytable}} {{#vardefine:caveats}}{{#vardefine:p_ta_desc}}{{#vardefine:p_ta_hover}}
|+<code><nowiki>{{{{FULLPAGENAMEE}}|ta|type=sound|uuid=false}}</nowiki></code>{{{{FULLPAGENAMEE}}|ta|type=sound|uuid=false}}
|-{{Hl2}}
! #var
! value
|-
{{VarPair|caveats}}
|-
{{VarPair|p_ta_desc}}
|-
{{VarPair|p_ta_hover}}
|}

{| {{Prettytable}} {{#vardefine:caveats}}{{#vardefine:p_ta_desc}}{{#vardefine:p_ta_hover}}
|+<code><nowiki>{{{{FULLPAGENAMEE}}|ta|type=landmark|uuid=true|empty=(for teleporting within the same region)}}</nowiki></code>{{{{FULLPAGENAMEE}}|ta|type=landmark|uuid=true|empty=(for teleporting within the same region)}}
|-{{Hl2}}
! #var
! value
|-
{{VarPair|caveats}}
|-
{{VarPair|p_ta_desc}}
|-
{{VarPair|p_ta_hover}}
|}

</noinclude>

Template:LSL Function/position

Original shared helper source (conditional wiki logic is not evaluated)
{{LSL Injection Test}}<noinclude>
This template is to be used to specify setup the description for position like parameters (offsets, positions, points, etc.).

Right now it's pretty basic and easy to edit. I'm wondering if these functions should be in a position parameter specific category.

====TODO====
* add clamping flag and verbiage for out of region/range coordinates.
</noinclude>{{#if:

{{#if:{{{region|}}}|
  {{#if:{{{local|}}}|

    {{#vardefine:p_{{{1|}}}_desc|position in {{HoverLink|Viewer coordinate frames#Region|Origin is the origin of the region which {{String|owns}} the object.|region}} or [[Viewer coordinate frames#Local|local coordinates]] depending upon the situation{{{desc|}}}}}

    {{#vardefine:p_{{{1|}}}_hover|position in region or local coordinates depending upon the situation{{#if:{{{hover|}}}|{{{hover|}}}|{{{desc|}}}}}}}

  |
    {{#ifeq:{{{1|}}}|point|

      {{#vardefine:p_{{{1|}}}_desc|A point in {{HoverLink|Viewer coordinate frames#Region|Origin is the origin of the region which {{String|owns}} the object.|region-local}} space{{#ifeq:{{{region|}}}|noZ|&#32;(z component is ignored)}}{{{desc|}}}}}

      {{#vardefine:p_{{{1|}}}_hover|A point in region-local space{{#ifeq:{{{region|}}}|noZ|&#32;(z component is ignored)}}{{#if:{{{hover|}}}|{{{hover|}}}|{{{desc|}}}}}}}

    |

      {{#vardefine:p_{{{1|}}}_desc|position in {{HoverLink|Viewer coordinate frames#Region|Origin is the origin of the region which {{String|owns}} the object.|region coordinates}}{{#ifeq:{{{region|}}}|noZ|&#32;(z component is ignored)}}{{{desc|}}}}}

      {{#vardefine:p_{{{1|}}}_hover|position in region coordinates{{#ifeq:{{{region|}}}|noZ|&#32;(z component is ignored)}}{{#if:{{{hover|}}}|{{{hover|}}}|{{{desc|}}}}}}}

    }}
  }}
|
  {{#if:{{{local|}}}|

    {{#ifeq:{{{1|}}}|offset|

      {{LSL Function/offset|{{{1|}}}|local={{{local}}}}}

    |

      {{#vardefine:p_{{{1|}}}_desc|position in [[Viewer coordinate frames#Local|local coordinates]]{{{desc|}}}}}

      {{#vardefine:p_{{{1|}}}_hover|position in local coordinates{{#if:{{{hover|}}}|{{{hover|}}}|{{{desc|}}}}}}}

    }}
  }}
}}

}}
Original wiki source

Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.