Listen/it

From Second Life Wiki
Jump to: navigation, search

Description

Event: listen( integer canale, string nome, key UUID, string messaggio ){ ; }

Ascolto della chat, usa llListen/it per abilitare i filtri

• integer canale Integer del canale che vogliamo ascoltare
• string nome nome dell'User o dell'Oggetto che ha detto il messaggio
• key UUID UUID dell'User o dell'Oggetto che ha detto il messaggio
• string messaggio Messaggio che ascoltiamo
Numero del canale Descrizione
DEBUG_CHANNEL 0x7FFFFFFF Canale riservato per lo scripting debugging e la trasmissione di messaggi d'errore.
PUBLIC_CHANNEL 0x0 Canale pubblico di comunicazione chat.

Caveats

  • Al cambio di state/it o al reset dello script tutti i Listen sono chiusi automaticamente.
  • Quando l'oggetto cambia l'owner tutti i Listen che ascoltano escusivamente l'Owner llGetOwner/it non sono aggiornati automaticamente e ascolteranno l'Owner precedente.
  • Se un messaggio soddisfa i criteri di più Listenviene registrato dallo script, ma solo un evento verrà eseguito.
  • Un prim non riesce ad ascoltare la chat che genera.
  • La posizione del listen deve essere nel Root prim, per scoraggiare chi vuole spiare le conversazioni oltre la parcella.
All Issues ~ Search JIRA for related Bugs

Examples

Semplice esempio che ascolta tutto quello detto dall'Owner del prim. Risponde ripetendo il messaggio. Per evitare il ritardo e l'appesantimento degli script si consiglia di utilizzare canali diversi da 0, per poi scrivere in chat ad esempio "/5 ciao". Lo script è costruito in modo tale da ripetere solo la prima frase detta dall'owner per evitare spam in chat e l'appesantimento dello script. <lsl> integer listen_handle;

default {

   state_entry()
   {   //Ascolta tutto quello detto dall'Owner del prim, se il prim cambia nome e lo script non è resettato l'Owner non è aggiornato in modo automatico
       // Cambia il numero 0 per evitare l'appesantimento della chat.
       listen_handle = llListen(0, "", llGetOwner(), "");
   }
   listen( integer channel, string name, key id, string message )
   {
       llSay(0, "il mio Owner ha detto "+message);
       // fermo il Listen per il prossimo reset
       llListenRemove(listen_handle);
   }
   on_rez(integer param)
   {   
       llResetScript();//Quando l'oggetto viene rezzato lo script si resetta
   }
   changed(integer mask)
   {   //Quando l'oggetto cambia Owner lo script si resetta
       if(mask & CHANGED_OWNER)
       {
           llResetScript();
       }
   }

}</lsl>

See Also

Functions

•  llListen/it
•  llListenControl/it
•  llListenRemove/it
•  llDialog/it
•  llOwnerSay/it Manda un messaggio solo all'Owner, per evitare lo spam nel PUBLIC_CHANNEL/it
•  llWhisper/it Manda un messaggio limitato a 10 metri di raggio
•  llSay/it Manda un messaggio limitato ai 20 metri di raggio
•  llShout/it Manda un messaggio limitato ai 100 metri di raggio
•  llRegionSay/it Manda un messaggio limitato alla regione

Deep Notes

Signature

event void listen( integer canale, string nome, key UUID, string messaggio );