Listen/it

From Second Life Wiki
Jump to navigation Jump to 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.


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 );