Difference between revisions of "Listen"

From Second Life Wiki
Jump to navigation Jump to search
(added llRegionSay link)
Line 80: Line 80:
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}
{{LSL DefineRow||[[llSay]]|Sends chat limited to 20 meters}}
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}
{{LSL DefineRow||[[llShout]]|Sends chat limited to 100 meters}}
{{LSL DefineRow||[[llRegionSay]]|Sends chat limited to region}}
|also_articles
|also_articles
|also_footer
|also_footer

Revision as of 17:36, 1 June 2007

Description

Event: listen( integer channel, string name, key id, string message ){ ; }

Trigged by chat, use llListen to enable and filter

• integer channel
• string name
• key id
• string message
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

  • On state change all listens are released (on script reset as well).
  • When an object changes owner any listen registered with llGetOwner will not automatically update itself. The scripter needs to capture this event (on_rez and CHANGED_OWNER).
All Issues ~ Search JIRA for related Bugs

Examples

// says beep whenever owner says something in main chat;
default
{
    state_entry()
    {//Registers the listen to the owner of the object at the moment of the call. This does not automatically update when the owner changes.
        llListen(0, "", llGetOwner(), "");
    }
    listen( integer channel, string name, key id, string message ){
        llSay(0,"beep");
    }
    on_rez(integer param)
    {//Triggered when the object is rezed, like after the object had been sold from a vendor
        llResetScript();//By resetting the script on rez it forces the listen to re-register.
    }
    changed(integer mask)
    {//Triggered when the object has been sold as "original" from in world.
        if(mask & CHANGED_OWNER)
        {
            llResetScript();
        }
    }
}
// says beep whenever owner says something in main chat;

//Does not use a hard reset to re-register it's listen.
integer handle;

reset()
{
    llListenRemove(handle);
    handle = llListen(0, "", llGetOwner(), "");
}

default
{
    state_entry()
    {//Registers the listen to the owner of the object at the moment of the call. This does not automatically update when the owner changes.
        reset();
    }
    listen( integer channel, string name, key id, string message ){
        llSay(0,"beep");
    }
    on_rez(integer param)
    {//Triggered when the object is rezed, like after the object had been sold from a vendor
        reset();
    }
    changed(integer mask)
    {//Triggered when the object has been sold as "original" from in world.
        if(mask & CHANGED_OWNER)
        {
            reset();
        }
    }
}

See Also

Functions

•  llListen
•  llListenControl
•  llListenRemove
•  llDialog
•  llWhisper Sends chat limited to 10 meters
•  llSay Sends chat limited to 20 meters
•  llShout Sends chat limited to 100 meters
•  llRegionSay Sends chat limited to region

Deep Notes

Signature

event void listen( integer channel, string name, key id, string message );