llSay
void llSay(integer Channel, string Text)Says Text on Channel.
This chat method has a range of 20m radius.
PUBLIC_CHANNEL is the public chat channel that all avatars see as chat text. DEBUG_CHANNEL is the script debug channel, and is also visible to nearby avatars. All other channels are are not sent to avatars, but may be used to communicate with scripts.
Parameters
-
Channel(integer) - Channel to use to say text on.
-
Text(string) - Text to say.
default{ state_entry() { llSay(0, "Hello, Avatar!"); }}To avoid making your object spam its neighborhood, use llInstantMessage, llOwnerSay or llRegionSayTo.
Caveats
Section titled “Caveats”msgcan only be heard within 20 meters of the speaking prim (rather than the root). This is contrary to how the event listen works, where amsgcan only be heard by any prim in the object if and only if the root prim is capable of hearing it.- Some simulators (mostly event sims or linden-owned ones) have
llGetEnv("chat_range")set to a value other than 20. On these sims:llSay(0, msg)can be heard in a radius ofllGetEnv("chat_range")llSay(any_other_channel, msg)can be heard in a radius of 20m- as of 2023-03-26, Hippotropolis (a linden meeting sim) has a chat range of 40m
msgcan be a maximum of 1024 bytes. This can convey 1024 ASCII characters, or 256-512 multibyte UTF-8 characters such asá(2 bytes),ℋ(3 bytes) or🧡(4 bytes).- If a multibyte character ends up on the 1024 byte boundary, it is discarded and not split into invalid bytes.
- A prim can not hear itself, this to prevent problems with recursion. It can however hear other prims within the same object. Use llMessageLinked instead for intra-prim messaging.
- 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 saymsgto the Script Warning/Error window.- Note, however, that when using DEBUG_CHANNEL, what you consider to be ‘debugging messages’ will still be seen by others as scripting errors indicated by the floating ‘script error’ icon.
- 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.,
-5243212but don’t just use any number take a look at the User-Defined Protocols & APIs and choose one that won’t interfere with other protocols. If you are going to sell your script widely, please add it to the appropriate known chat channels list so others won’t interfere with your product (do keep in mind you should build your product so that it handles interference appropriately).
llSay(-5243212,"turn on");- From at least September 2016 (see Release Notes/Second Life Release/4.0.9.320038), viewers have been able to chat on negative channels, although chat from viewers is limited to 254 characters. (Chat from objects caps at 1024 bytes, whether the channel is negative or not). Negative channels were popular for script communications because the standard SL client was unable to chat directly on those channels (
/-xxxx messagewould not chatmessageon channel-xxxx). The only way for a viewer to generate chat on negative channels prior to llTextBox was to use llDialog which was limited to 24 bytes. - Be aware that if you mistakenly use an integer bigger than the maximum or smaller than the minimum, SL will treat the literal number as a
floatand convert it implicitly to an out-of-range integer, resulting in1, without giving a script/syntax error (since this implicit conversion is legitimate). This means that all scripts listening to an out-of-range integer will be listening to channel 1 instead! (see also llListen).
See Also
Section titled “See Also”Events
Section titled “Events”- listen - Receives chat
Functions
Section titled “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
- llRegionSayTo - Sends chat region wide to a specific avatar, or their attachments, or to a rezzed object of known UUID
- llShout - Sends chat limited to 100 meters
- llWhisper - Sends chat limited to 10 meters