llRegionSayTo

From Second Life Wiki
Revision as of 13:44, 2 February 2015 by Lou Netizen (talk | contribs) (Clarified downsides for llRegionSayTo throttle)
Jump to navigation Jump to search

Summary

Function: llRegionSayTo( key target, integer channel, string msg );
0.0 Forced Delay
10.0 Energy

Says the text supplied in string msg on channel supplied in integer channel to the object or avatar specified by target

• key target group, avatar or prim UUID that is in the same region
• integer channel
• string msg

Caveats

  • Text is spoken directly to the object or avatar within the same region as the script.
  • Scripts in tasks other than target can not listen for and receive these text messages, with an exception for attachments as described below.
  • Text can be a maximum of 1024 bytes. This can convey 1024 ASCII-7 characters, or 512 UTF-8 characters such as á
  • A prim cannot hear itself, to prevent problems with recursion.
  • Sending text on DEBUG_CHANNEL is not supported
  • Text sent to an avatar's ID on channel zero will be sent to the receiver's viewer.
  • Text sent to an avatar's ID on non-zero channels can be heard by any attachment on the avatar
  • A quick series of messages sent by llRegionSayTo cannot be relied on to arrive at their destination in the same order as sent.
  • Sending more than 100 messages in five minutes will produce a block; block is sim-wide and applies to all objects with the same owner. Block apparently only resets with a sim restart.

Examples

default
{
    touch_start(integer num_detected)
    {
        key id = llDetectedKey(0);

        // send a message to the chat window of the avatar touching
        llRegionSayTo(id, 0, "You touched this!");

        // send a message to the attachments of the avatar touching
        // example channel: -12345
        llRegionSayTo(id, -12345, "Hello there attachments!");
    }
}

Notes

  • If one object 'says' something to another object (e.g., a button that, when touched, turns on a lamp), it is a good idea to use a very negative channel, e.g.,
    llRegionSayTo("55499a64-45c3-4b81-8880-8ffb5a7c251b", -5243212, "turn on");

Negative channels are popular for script communications because the standard Second Life client is unable to chat directly on those channels ("/-xxxx message" won't chat "message" on channel "-xxxx", it will chat "/-xxxx message" on channel zero).

  • Messages sent via LLRegionSayTo() seem to be blocked after 100 messages in a five minute period (see https://jira.secondlife.com/browse/BUG-5457). The block is sim-wide and applies to all objects belonging to the owner, so if a script triggers the throttle, all objects in the same sim belonging to the same owner will also be blocked. Throttle apparently only resets on a sim restart. Therefore, llRegionSayTo() is unsuitable for (say) verbose script debugging, and even moderate use can break users' content completely unrelated to the script for an indeterminate (and potentially very long) period of time.

See Also

Events

•  listen Receives chat

Functions

•  llListen Ask for listen events
•  llInstantMessage Sends chat to a specific avatar, inside our outside the current region.
•  llOwnerSay Sends chat to the owner only to avoid spamming the PUBLIC_CHANNEL
•  llRegionSay Sends chat region wide
•  llSay Sends chat limited to 20 meters
•  llShout Sends chat limited to 100 meters
•  llWhisper Sends chat limited to 10 meters

Articles

•  Hello Avatar

Deep Notes

History

Date of Release 26/04/2011

Signature

function void llRegionSayTo( key target, integer channel, string msg );