From Second Life Wiki
listen
Déclenché lorsque l'on parle sur un canal, utilisez llListen pour activer et filtrer la lecture.
| • integer
| canal
|
|
|
|
| • string
| nom
|
|
|
|
| • key
| id
|
|
|
|
| • string
| message
|
|
|
|
|
| Numéros de canal constants
| Descriptions
|
| DEBUG_CHANNEL
| 0x7FFFFFFF
| Canal réservé au débogage et aux messages d'alertes des scripts.
|
| PUBLIC_CHANNEL
| 0x0
| Canal réservé pour parler à tous les avatars alentours (en say/dire)
|
|
Défauts
- Sur un changement d'état ou une réinitialisation du script, toutes les écoutes sont fermées automatiquement.
- Lorsqu'un objet change de propriétaire, toutes les écoutes enregistrées à l'aide de llGetOwner ne seront pas automatiquement mises à jour tant que le script n'aura pas été réinitialisé. L'exemple ci-dessous illustre cette particularité.
|
Exemples
Voici un exemple d'utilisation du listen à partir d'un objet qui répondra (une fois) à chaque fois que le propriétaire parlera sur le chat (en "say"). Pour réduire le lag et éviter le spam pour les personnes alentours, il est préférable d'écouter sur un canal autre que le 0 (say) et d'utiliser plutôt un canal altenatif tel que le 5 : '/5 hello'
.
// dit 'bip' au propriétaire la première fois que qu'il parle dans le canal principal (say);
integer listen_handle;
default
{
state_entry()
{ // Crée une écoute avec la clé du propriétaire, cette section du code n'est pas ré-exécutée automatiquement en cas de changement de propriétaire.
// Vous pouvez changer le canal 0 en n'importe quel nombre positif (par exemple le 5 (pour parler, utilisez : '/5 hello')
listen_handle = llListen(0, "", llGetOwner(), "");
}
listen( integer canal, string name, key id, string message )
{
llOwnerSay("bip");
// Arrête d'écouter jusqu'à ce que le script soit ré-initialisé.
llListenRemove(listen_handle);
}
on_rez(integer param)
{ //Déclenché lorsque l'objet est rez, comme par exemple aprés que l'objet ait été vendu.
llResetScript();//En forçant la ré-initialisation au moment du rez, on force le listen à se ré-enregistrer.
}
changed(integer mask)
{ //Déclenché lorsque l'objet contenant le script change de propriétaire.
if(mask & CHANGED_OWNER)
{
llResetScript();
}
}
}
|
|
|
Listen