LlDialog/fr

From Second Life Wiki
< LlDialog
Revision as of 14:10, 30 January 2008 by Gally Young (talk | contribs) (Localized to french)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Description

Fonction: llDialog( key avatar, string message, list boutons, integer canal );

Fait apparaître une boîte de dialogue sur l'écran de l'avatar avec le message et les boutons indiqués.

• key avatar UUID d'avatar
• string message
• list boutons
• integer canal

Quand un bouton est pressé l'avatar "crie" le texte correspondant au bouton sur le canal.
La localisation géographique du message est celle de la prim au moment ou elle a créé le boîte de dialogue.

Ordre des boutons
9   10 11
6 7 8  
3 4 5
0 1 2
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.

Avertissements

  • Cette fonction fait dormir le script pendant 1.0 secondes.
  • Il n'existe aucun moyen de fermer une boîte de dialogue par script.
  • Il n'y a aucun moyen pour le script de détecter si l'utilisateur à utiliser le (petit) bouton "ignorer" ("ignore") car aucun message n'est émis.
  • Il n'y a aucun moyen de distinguer un message émis par une boîte de dialogue d'un message émis par un autre moyen par le même utilisateur.
    • Il est important de prendre en compte la possibilité que le message ne soit pas un de ceux proposées par la boîte de dialogue.
  • Si la prim est déplacée et "crie" en dehors du pérmimètre ou la boîte de dialogue a été crée, elle ne sera pas capable d'entendre la réponse.
    • Cette limite concerne également les attachements (par exemple si le porteur se déplace trop loin de l'endroit ou la boîte de dialogue a été créée)

message limits

  • Si le message contient plus de 8 lignes, une barre de défilement est créée.
  • Le message doit faire moins de 512 bytes et ne pas être vide. Dans le cas contrainte, le script enverra un message sur le DEBUG_CHANNEL.

buttons limits

  • Si la liste des boutons est une liste vide, la liste ["OK"] sera utilisée par défaut
  • Une erreur sera signalée sur le DEBUG_CHANNEL si :
    • Il y a plus de 12 boutons.
    • Un objet d'une liste n'est pas un string.
    • Un objet d'une liste est de taille nulle ou supérieure à 24 bytes.

Exemples

<lsl>integer canal= 1000; list pairs = [];

default {

   state_entry()
   {
       llListen(canal,"", "","");
   }
   touch_start(integer count)
   {
       llDialog(llDetectedKey(0), "Voici une  boîte de dialogue de test.\n\nChoisisez une des options ci-dessous.",
                ["Oui", "Non", "0", "1"], canal);
   }
   
   listen(integer canal, string nom, key id, string mes)
   {
       if(id == llGetOwnerKey(id))//N'écoute pas les objets, à moins qu'ils ne soient pas dans la région.
           llSay(0,nom+ " ( position : " + (string)llGetObjectDetails(id, (list)OBJECT_POS) + ") a choisi l'option " + mes);
   }

}</lsl>

Codes utiles

<lsl>//Une fonction optimale pour placer les boutons dans le bon ordre de lecture integer canal;

list order_buttons(list boutons) {

   return llList2List(boutons, -3, -1) + llList2List(boutons, -6, -4)
       + llList2List(boutons, -9, -7) + llList2List(boutons, -12, -10);

}

default {

   state_entry()
   {   // Crée un canal au hazard dans le périmètre [-1000000000,-2000000000]

canal= (integer)(llFrand(-1000000000.0) - 1000000000.0);

llListen(canal,"", "","");

   }
   touch_start(integer total_number)
   {
       llDialog(llDetectedKey(0),"\nChoisissez une option :\n",

order_buttons(["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]),canal);

   }
   listen(integer _chan, string _nom, key _id, string _option)
   {
       llSay(0, _nom+ " a choisi l'option " + _option);
   }

}</lsl>

Notes

Utilisez un canal négatif est une bonne idée (mais jamais inférieur à la valeur 32-bits la plus petite -2 147 483 648) <lsl>// Crée un canal au hasard dans le périmètre [-1000000000,-2000000000] integer Canal = (integer)(llFrand(-1000000000.0) - 1000000000.0);

llDialog(llDetectedKey(0), "Choisissez une option :",

   ["Oui", "Non", "0", "1"], Canal);</lsl>

Il est impossible pour un avatar d'envoyer des messages manuellement sur un canal négatif et il y a peu de chance qu'un autre objet utilise ce canal

Vous cherchez encore des informations ? Peut-être cette page du LSLwiki pourra vous renseigner.