Difference between revisions of "LlRegionSay"

From Second Life Wiki
Jump to navigation Jump to search
m (Shorter and hopefully even clearer)
 
(18 intermediate revisions by 10 users not shown)
Line 1: Line 1:
{{LSL_Function
{{LSL_Function
|inject-2={{LSL_Function/chat|channel|msg|np=*}}
|func_id=331
|func_id=331
|func_sleep=0.0
|func_sleep=0.0
|func_energy=10.0
|func_energy=10.0
|func=llRegionSay
|func=llRegionSay
|p1_type=integer|p1_name=channel|p1_desc=Any integer value other than zero.
|p1_type=integer|p1_name=channel|p1_desc
|p2_type=string|p2_name=msg|p2_desc=Message to be transmitted.
|p2_type=string|p2_name=msg|p2_desc
|func_desc=Says the string '''msg''' on channel number '''channel''' that can be heard anywhere in the [[region]] by a script [[listen|listening]] on '''channel'''.
|func_desc=Says the string {{LSLP|msg}} on channel number {{LSLP|channel}} that can be heard anywhere in the [[region]] by a script [[listen|listening]] on {{LSLP|channel}}.
|func_footnote=Regardless of where the prim is, the message will not travel over region borders.
|func_footnote=Regardless of where the prim is, the message will not travel over region borders.
|return_text
|return_text
|spec
|spec
|constants={{LSL Constants/Chat|mode=no_public}}
|constants
|caveats=*This function cannot transmit on the {{LSL Const|PUBLIC_CHANNEL|integer|0|public channel}}, this is a design feature and not a bug.
|caveats=*This function cannot transmit on {{#var:PUBLIC_CHANNEL}} channel 0, this is a design feature and not a bug.
*If '''msg''' is longer then 1023 bytes it is truncated to 1023 bytes.
*If {{LSLP|msg}} is longer than 1024 characters it is truncated to 1024 characters. (Note that in Mono, each character occupies 2 memory bytes).
*A prim can '''not''' hear itself, to prevent problems with recursion.
*A prim can '''not''' hear itself, this to prevent problems with recursion. It can however hear other prims within the same object.
|examples=<pre>
|examples=<source lang="lsl2">default
default {
{
     state_entry()
     state_entry()
     {
     {
         llRegionSay(25,"This is an incredibly useless program." );
         llRegionSay(25,"This is an incredibly useless program." );
     }
     }
}
}</source>
</pre>
To avoid making your object spam its neighborhood, use [[llOwnerSay]] or [[llInstantMessage]].
To avoid making your object spam its neighborhood, use [[llOwnerSay]] or [[llInstantMessage]].
|helpers
|helpers
Line 28: Line 28:
|also_functions=
|also_functions=
{{LSL DefineRow||[[llListen]]|}}
{{LSL DefineRow||[[llListen]]|}}
{{LSL DefineRow||[[llRegionSayTo]]|Sends chat directly to specified target within region}}
{{LSL DefineRow||[[llOwnerSay]]|Sends chat to the owner only}}
{{LSL DefineRow||[[llOwnerSay]]|Sends chat to the owner only}}
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}
{{LSL DefineRow||[[llWhisper]]|Sends chat limited to 10 meters}}
Line 33: Line 34:
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}
{{LSL DefineRow||[[llInstantMessage]]|}}
{{LSL DefineRow||[[llInstantMessage]]|}}
{{LSL DefineRow||[[llDialog]]|}}
{{LSL DefineRow||[[llTextBox]]|}}
|also_tests
|also_tests
|also_articles
|also_articles
|notes=If one object 'says' something to another object (e.g., a button that, when touched,
|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.,
turns on a lamp), consider a very negative channel, e.g.,
<pre>
<source lang="lsl2">   llRegionSay(-5243212,"turn on");</source>
    llRegionSay(-5243212,"turn on");
Using negative channels for script communications remains a common practice because, prior to September 2016, the standard SL client was unable to chat on negative channels. The only way to do so prior to [[llTextBox]] was to use [[llDialog]] which was limited to 24 bytes. However, since 2016, viewers have been able to chat on negative channels, with messages capped to 254 bytes.
</pre>
It is impossible for an avatar to chat on a negative channel, and extremely unlikely that some
other object would accidentally say something on such a channel. (Of course, the intended target
of the message must be set to 'listen' on this channel.)


If {{LSL Const|DEBUG_CHANNEL|integer|hex=0x7FFFFFFF}} is used as '''channel''', the script will say '''msg''' to the Script Warning/Error window.
If DEBUG_CHANNEL is used as {{LSLP|channel}}, the script will say {{LSLP|msg}} to the Script Warning/Error window.  


* As of 1.18.3, using llRegionSay on the {{LSL Const|DEBUG_CHANNEL|integer|hex=0x7FFFFFFF}} will wrap around and display on channel 0, with a range of 100m.
If you wish two objects owned by the same person to communicate within a SIM, one idea is to make both scripts compute the channel based on the owner UUID. e.g. :-
<source lang="lsl2">
    gChannel = 0x80000000 | (integer) ( "0x" + (string) llGetOwner() );
</source>


|history=Introduced with SL 1.16.0
* As of 1.18.3, using llRegionSay on the {{#var:DEBUG_CHANNEL}} will wrap around and display on channel 0, with a range of 100m.
|history=
*Introduced with SL 1.16.0
* Date of Release [[ Release_Notes/Second_Life_Release/1.16 | 23-05-2007 ]]
|cat1=Communications
|cat1=Communications
|cat2=Chat
|cat2=Chat

Latest revision as of 14:59, 30 August 2023

Summary

Function: llRegionSay( integer channel, string msg );
0.0 Forced Delay
10.0 Energy

Says the string msg on channel number channel that can be heard anywhere in the region by a script listening on channel.

• integer channel output chat channel, any integer value except zero
• string msg message to be transmitted

Regardless of where the prim is, the message will not travel over region borders.

Channel Constant Description
DEBUG_CHANNEL 0x7FFFFFFF Chat channel reserved for script debugging and error messages, broadcasts to all nearby users.

Caveats

  • Messages sent on DEBUG_CHANNEL are throttled to a rate of <200/10sec, per region, per owner/user.
    • Once the rate is exceeded, all following messages on 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.
  • This function cannot transmit on PUBLIC_CHANNEL channel 0, this is a design feature and not a bug.
  • If msg is longer than 1024 characters it is truncated to 1024 characters. (Note that in Mono, each character occupies 2 memory bytes).
  • A prim can not hear itself, this to prevent problems with recursion. It can however hear other prims within the same object.

Examples

default
{
    state_entry()
    {
        llRegionSay(25,"This is an incredibly useless program." );
    }
}
To avoid making your object spam its neighborhood, use llOwnerSay or llInstantMessage.

Notes

If one object 'says' something to another object (e.g., a button that, when touched, turns on a lamp), consider a very negative channel, e.g.,

    llRegionSay(-5243212,"turn on");

Using negative channels for script communications remains a common practice because, prior to September 2016, the standard SL client was unable to chat on negative channels. The only way to do so prior to llTextBox was to use llDialog which was limited to 24 bytes. However, since 2016, viewers have been able to chat on negative channels, with messages capped to 254 bytes.

If DEBUG_CHANNEL is used as channel, the script will say msg to the Script Warning/Error window.

If you wish two objects owned by the same person to communicate within a SIM, one idea is to make both scripts compute the channel based on the owner UUID. e.g. :-

    gChannel = 0x80000000 | (integer) ( "0x" + (string) llGetOwner() );
  • As of 1.18.3, using llRegionSay on the DEBUG_CHANNEL will wrap around and display on channel 0, with a range of 100m.

See Also

Events

•  listen

Functions

•  llListen
•  llRegionSayTo Sends chat directly to specified target within region
•  llOwnerSay Sends chat to the owner only
•  llWhisper Sends chat limited to 10 meters
•  llSay Sends chat limited to 20 meters
•  llShout Sends chat limited to 100 meters
•  llInstantMessage
•  llDialog
•  llTextBox

Deep Notes

History

Signature

function void llRegionSay( integer channel, string msg );