Link message/it

From Second Life Wiki
Jump to: navigation, search

Description

Event: link_message( integer sender_num, integer num, string str, key id ){ ; }

Lanciato quando lo script riceva un messaggio collegato che è stato mandato da una chiamata a llMessageLinked. llMessageLinked viene usato per inviare messaggi da uno script a un altro.

• integer sender_num Il numero di collegamento del prim che contiene lo script che ha chiamato llMessageLinked.
• integer num Secondo parametro della chiamata llMessageLinked.
• string str Terzo parametro della chiamata llMessageLinked.
• key id Quarto parametro della chiamata llMessageLinked.

id viene usato spesso come secondo campo stringa (in LSL il tipo key è implementato come una string con operatori personalizzati). La trasformazione tra i tipi string e key non ha effetti sui dati in essi contenuti. Le dimensioni di str e id sono limitate solamente dalla memoria script disponibile.

Caveats

  • Si possono accodare 64 eventi link_message, superati i quali, vengono scartati silenziosamente! Non fate troppe cose nell'evento se questi potrebbero arrivare velocemente.
  • sender_num non rispecchia il modo in cui è stato mandato un messaggio, non c'è modo di sapere se è stato inviato col flag LINK_* o il numero specifico di collegamento.
  • Se str e id sono più grandi della memoria disponibile, lo script crasherà silenziosamente con una Collisione Stack-Heap.
All Issues ~ Search JIRA for related Bugs

Examples

<lsl> // Questo è solo uno script di esempio, non dovreste gestire il tocco in questo modo all'interno di un unico script.

default {

   touch_start(integer c)
   {
       llMessageLinked(LINK_THIS, 0, llDetectedName(0), llDetectedKey(0));
   }
   link_message(integer source, integer num, string str, key id)
   {
       llWhisper(0, str + " (" + (string)id + ") mi ha toccato!");
   }

} </lsl>

Useful Snippets

<lsl> // Questo è solo uno script di esempio, non dovreste gestire i messaggi collegati in questo modo all'interno di un unico script.

default {

   // Per diffondere un numero illimitato di argomenti di qualsiasi tipo.
   // Presupposto, la stringa separatrice non viene utilizzata in nessuna stringa sorgente!
   state_entry() 
   {
       list mia_lista = [1, 2.0, "una stringa", <1, 2, 3>, <1, 2, 3, 4>, llGetOwner()];  
       string parametro_lista = llDumpList2String(mia_lista, "

Notes

Uno script può ascoltare i propri messaggi.

See Also

Functions

•  llMessageLinked/it

Deep Notes

Signature

event void link_message( integer sender_num, integer num, string str, key id );