Difference between revisions of "Listen"

From Second Life Wiki
Jump to: navigation, search
(added llRegionSay link)
(replace llSay(0,... with llOwnerSay()
Line 19: Line 19:
 
     }
 
     }
 
     listen( integer channel, string name, key id, string message ){
 
     listen( integer channel, string name, key id, string message ){
         llSay(0,"beep");
+
         llOwnerSay("beep");
 
     }
 
     }
 
     on_rez(integer param)
 
     on_rez(integer param)
Line 54: Line 54:
 
     }
 
     }
 
     listen( integer channel, string name, key id, string message ){
 
     listen( integer channel, string name, key id, string message ){
         llSay(0,"beep");
+
         llOwnerSay("beep");
 
     }
 
     }
 
     on_rez(integer param)
 
     on_rez(integer param)

Revision as of 18:16, 5 July 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 ){
        llOwnerSay("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 ){
        llOwnerSay("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 );