LlMessageLinked/fr

From Second Life Wiki
< LlMessageLinked
Revision as of 12:18, 29 January 2008 by Gally Young (talk | contribs) (fixe)
Jump to navigation Jump to search

Description

Fonction: llMessageLinked( integer linknum, integer num, string str, key id );

Déclenche un évènement link_message avec les paramètres num, str et id dans le groupe ou le lien linknum.

• integer linknum N° de lien ou un code LINK_*
• integer num
• string str
• key id

Vous pouvez utiliser id comme une seconde zone de type string (dans le LSL la zone de type key est implémentée comme un string avec un formatage spécial). Le type n'a aucun effet sur les données stockées dans le string et le key.

Codes Descriptions
LINK_ROOT 1 Envoie à la la prim racine.
LINK_SET -1 Envoie à toutes les prims.
LINK_ALL_OTHERS -2 Envoie à toutes les autres prims
Codes Description
LINK_ALL_CHILDREN -3 Envoie à toutes les prims filles
LINK_THIS -4 Envoie à la prim contenant ce script.

Avertissements

  • Un script peut entendre son propre "message lié" si linknum est positionné à LINK_SET ou LINK_THIS. Cette option crée des risques de boucles infinies. Faites attention à la façon dont vos messages sont traités.
  • Certains utilisateurs ont observé des échecs dans l'envoi simultané de messages liés à un grand nombre de scripts dans des prims différentes en utilisant LINK_SET, LINK_ALL_OTHERS & LINK_ALL_CHILDREN (cad sans rendre toutes les prims destinatrices). Si vous rencontrez ce problèmes, une astuce consiste à placer les scripts dans la même prim et à utiliser des fonctions telles llSetLinkPrimitiveParams pour modifier une prim sans qu'elle ne contienne le script et à utiliser un simple message lié.

Exemples

<lsl>default{ // Suppositions : // nom de l'objet : LSLWiki // nom du script : _lslwiki

   state_entry() {
       llMessageLinked(LINK_THIS, 0, llGetScriptName(), "");
   }
   link_message(integer sender_num, integer num, string msg, key id) {
       llOwnerSay(msg);
       // Le propriétaire de l'objet LSLWiki entendra :
       // LSLWiki:_lslwiki
   }    

}</lsl>

Codes utiles

<lsl>default { // une façon rapide de débuguer link_message

   link_message(integer sender_num, integer num, string msg, key id) {
       llSay(DEBUG_CHANNEL, llList2CSV([sender_num, num, msg, id]));
   }

}</lsl> <lsl>// Il s'agit ici juste d'un exemple, vous ne devriez pas utiliser les messages liés (link message) de cette façon.

default{ // comment communiquer un nombre illimité de paramètres. // On suppose que le caractère de séparation des strings n'est utilisé dans aucun string de la source.

   state_entry() {    
       list my_list = [1, 2.0, "a string", <1, 2, 3>, <1, 2, 3, 4>, llGetOwner()];  
       string list_parameter = llDumpList2String(my_list, "

Notes

  • Utilisez llMessageLinked dans une simple prim permet aux développeurs de réduire certaines limites du LSL en permettant à des scripts de coopérer et de réaliser des actions syncronisées. Faites attention à ne pas créer de boucles infinies.
  • Les tailles de str et de id sont à priori seulement limitées par la mémoire disponible.

Voir également

Évènement

•  link_message Evènement déclenché lorsqu'un message lié est reçu.

Fonctions

•  llGetLinkNumber Renvoie le N° de lien de la prim le contenant.
Vous cherchez encore des informations ? Peut-être cette page du LSLwiki pourra vous renseigner.