llSay

From Second Life Wiki
Revision as of 18:59, 7 December 2012 by Fred Gandt (talk | contribs) (linked "constants" in LSL tip to it's category page.)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Summary

Function: llSay( integer channel, string msg );

Says the text supplied in string msg on channel supplied in integer channel.

• integer channel output chat channel, any integer value
• string msg message to be transmitted
Channel Constant Description
DEBUG_CHANNEL 0x7FFFFFFF Chat channel reserved for script debugging and error messages, broadcasts to all nearby users.
PUBLIC_CHANNEL 0x0 Chat channel that broadcasts to all nearby users. This channel is sometimes referred to as: open chat, local chat and public chat.

Caveats

  • Messages sent on channel zero[1] and DEBUG_CHANNEL are throttled to a rate of <200/10sec, per region, per owner/user.
    • Once the rate is exceeded, all following messages on channel zero or DEBUG_CHANNEL will be dropped until the send rate is again below 200/10sec for the previous 10 sec. Dropped messages, despite being dropped still count against the limit.
  • Text spoken can only be heard within 20 meters of the speaking prim (rather than the root). This is contrary to how the event listen works, where a message can only be heard by any prim in the object if and only if the root prim is capable of hearing it.
  • Text can only be a maximum of 1023 bytes.
  • A prim can not hear itself, this to prevent problems with recursion. It can however hear other prims within the same object.
All Issues ~ Search JIRA for related Bugs

Examples

KBcaution.png Important: For sake of better readability of your code, please make use of constants. You can use PUBLIC_CHANNEL instead of channel 0 and DEBUG_CHANNEL instead of channel +2,147,483,647.

<lsl> default {

   state_entry()
   {
       // PUBLIC_CHANNEL has the integer value 0
       llSay(PUBLIC_CHANNEL, "Hello, Avatar!");
   }

} </lsl>

To avoid making your object spam its neighborhood, use llInstantMessage, llOwnerSay or llRegionSayTo.

Useful Snippets

Notes

  • Channel 0 is the PUBLIC_CHANNEL. Everyone can hear chat transmitted on this channel. All other channels are private channels (not sent to users, with the exception of DEBUG_CHANNEL).
  • Consider using llInstantMessage, llOwnerSay, or the DEBUG_CHANNEL for debugging purposes. If DEBUG_CHANNEL is used as channel, the script will say msg to the Script Warning/Error window.
  • 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.,

<lsl>

   llSay(-5243212,"turn on");

</lsl> Negative channels are popular for script communications because the 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). The only way to do so prior to llTextBox was to use llDialog which was limited to 24 bytes.

See Also

Events

•  listen                 Receives chat

Functions

•  llListen Ask for listen events
•  llInstantMessage Sends chat to the owner only (or to some other user only) to avoid spamming the PUBLIC_CHANNEL
•  llOwnerSay Sends chat to the owner only to avoid spamming the PUBLIC_CHANNEL
•  llRegionSay Sends chat region wide
•  llShout Sends chat limited to 100 meters
•  llWhisper Sends chat limited to 10 meters

Articles

•  Hello Avatar

Deep Notes

Search JIRA for related Issues

Footnotes

  1. ^ Channel zero is also known as: PUBLIC_CHANNEL, open chat, local chat and public chat

Signature

function void llSay( integer channel, string msg );