Chat
Chat functions allow
objects and
agents to
communicate with each other and among themselves.
Chat in
Second Life uses
channels. Channel 0 is the public chat channel all
users see as chat
text. There is no way for users to
listen to any channel other than channel 0 directly, though users can send messages on other channels using
llDialog or by specifiying a channel in the chat
text-entry field itself.
Users can send messages to other channels by typing "/num message", where "num" is the number of the channel and "message" is the desired chat
text. So, "/10 Hello,
script!" will say "Hello, script!" on channel 10. Additionally, "//message" can be used to send "message" to the last-used chat channel. Scripts make no distinction between channels. Users are unable to send messages on negative channels.
Channels are stored as
signed integers, so the possible chat channels range from -2147483648 to 2147483647.
A script can only have up to 64
listens open at a time (if it goes over its limit, it crashes with a "Too Many Listens"
run-time error). The functions listed at the bottom help manage situations where this error may occur.
If the
string passed to the chat function is greater then 1023
bytes long, it is truncated (chopped off) at its 1023th byte.
Prims that output chat never receive their own output back in
listen events. This applies to
all scripts in that primitive, not just the one that called the chat function.
This is a good thing--trust us. To communicate between scripts in the same primitive, use
llMessageLinked. Prims in the same
link-set can use chat to communicate with one another, but this practice is discouraged (the use of
llMessageLinked is recommended instead).
Chat can be heard within a sphere centered on the sender:
Other Chat Functions
llDialog
llListen
llListenControl
llListenRemove
llOwnerSay
Q: Is there a way to specify an arbitrary chat radius? What if I want to chat in a bigger range than 20m, but less than 100? Better yet, is there a way to limit or extend chat to cover a given parcel of land?
A: Unfortunately, no. You could do something with attachments and llOwnerSay, but there's no way to do it by default.
You could always use a sensor and llInstantMessage the detected users in a for() loop. -JacobxGoff
Functions |
Communications