Difference between revisions of "LlAttachToAvatarTemp"

From Second Life Wiki
Jump to navigation Jump to search
m (added date of release)
(intial version of translation in french)
Line 1: Line 1:
{{LSL_Function
{{Multi-lang||/fr}}
{{LSL_Function/fr
|inject-2=
|inject-2=
{{LSL_Function/permission|PERMISSION_ATTACH|temp=*}}
{{LSL_Function/fr/permission|PERMISSION_ATTACH|temp=*}}
|func = llAttachToAvatarTemp
|func = llAttachToAvatarTemp
|func_desc = Follows the same convention as [[llAttachToAvatar]], with the exception that the object will not create new inventory for the user, and will disappear on detach or disconnect.
|func_desc = suit les mêmes règles que [[llAttachToAvatar/fr|llAttachToAvatar]], à l'exeption près que l'objet ne sera pas créé dans l inventaire de l'avatar et disparaîtra à sa déconnexion ou au détachement de l objet. En effet , par design , cela permet de "redonner" plusieurs fois à un autre utilisateur un objet en tant qu attachement sans que cela pollue son inventaire.
|func_footnote = It should be noted that when an object is attached temporarily, a user cannot 'take' or 'drop' the object that is attached to them.
|func_footnote = On doit considérer cet objet comme un attachement temporaire ; un utilisateur ne peut pas utiliser les actions "prendre" , "prendre une copie" sur celui ci.
*Note that the user DOES NOT have to be the owner of the object for it to attach properly. In fact giving the object, or having the user take the object in order to transfer ownership, negates most of the usefulness of this function.
* D'autre part, le grand avantage de cette fonction est que l'utilisateur  n'a pas besoin d'être le propriétaire de l objet pour pouvoir l'attacher.  
En revanche, les permissions du script sont à réinitialiser pour le"propriétaire à titre temporaire".  
|p1_type = integer
|p1_type = integer
|p1_name = attach_point
|p1_name = attach_point
|p1_desc = ATTACH_* constant or valid value (see the tables below)
|p1_desc = ATTACH_* constante ( voir table ci-dessous )
|constants = {{LSL_Constants_Attachment}}
|constants = {{LSL_Constants_Attachment/fr}}
|caveats =
|caveats =
* All permissions granted prior to actually attaching appear to dumped when successfully attached via this method, including PERMISSION_ATTACH (possible security measure).
* Toutes les permissions du script sont à réinitialiser lors de l 'attachement de l'objet temporaire ( probablement pour des mesures de sécurité)
** Until successful attachment via this method, previously granted permissions are retain as normal.
* L utilisation de llAttachToAvatarTemp sur un objet que vous n avez pas la permission de transférer provoquera une erreur de script ''No permission to transfer'', même si vous l'attachez à vous mêmes ( il faut voir cette fonction comme un transfert)
* If you use llAttachToAvatarTemp in an object that you do not have permission to transfer, the function will fail with a script error ''No permission to transfer'', even if you are trying to attach it to yourself.
* Les points d'attachements peuvent être occupés par plusieurs  objets.
*Attach points can be occupied by multiple attachments.{{Footnote|Multiple attachments per attach point were added as result of {{Jira|SCR-277}}|Multiple attachments per attach point were added as result of SCR-277}}
* Si {{LSLP|attach_point}} est zéro , il se retrouve attaché par défaut à la main droite ({{LSL Const/fr|ATTACH_RHAND|integer|6|c=right hand}}).
**This was not always the case, previously if {{LSLP|attach_point}} was occupied, the existing object was detached and the new attachment took it's place.
* Si l'objet est déjà attaché , la fonction ne fait rien silencieusement , même si le point d'attachement est différent .
*Objects attached to the head (and any attachment position within the head) will not be visible in First Person view (aka [[Mouselook]]) if "show attachments in mouselook" is disabled.
|examples = <lsl>// exemple basique qui ne fait rien d intéressant mais qui illustre son fonctionnement
*If {{LSLP|attach_point}} is zero but the object was never previously attached, it defaults to the right hand ({{LSL Const|ATTACH_RHAND|integer|6|c=right hand}}).
*If the object is already attached the function fails silently, regardless if the {{LSLP|attach_point}} is a different [[llGetAttached|attach point]].
|examples = <lsl>//-- rez object on ground, drop in this script, it will request permissions to attach,
//-- and then attach to the left hand if permission is granted. if permission is denied,
//-- then the script complains.
default
default
{
{
Line 63: Line 60:
}</lsl>
}</lsl>


<lsl>//-- This example can demonstrate ownership transfer of an object on a temporary basis using llAttachToAvatarTemp()
<lsl>//-- Cet exemple démontre le transfert de propriété d un objet temporaire attaché via llAttachToAvatarTemp()
//-- Whoever touches will be asked for permission to attach, and upon granting permission will have the item attach,
//-- Quelque soit la personne qui touche l objet , aura  l objet attaché sous réserve quj il accepte les permissions qu on lui demande
//-- But not appear in Inventory.
//-- Mais l'objet attaché n’apparaîtra pas dans l'inventaire.
default
default
{
{
Line 94: Line 91:
}</lsl>
}</lsl>


<lsl>// This example illustrates how to handle permissions before and after llAttachToAvatarTemp has been called. Because ownership
<lsl>// Cet exemple illustre comment gèrer les permissions après l'appel à llAttachToAvatarTemp.  
// changes when the object is attached, the initial PERMISSION_ATTACH is revoked and new permissions need to be requested.
// Parce que le proprétaire a changé , la permission initiale PERMISSION_ATTACH est révoquée et de nouvelles permissions ont besoin d'être demandées .
// Une façon de procéder sans que l'utilisateur soit ennuyé par une autre boite de dialogue pour demander les permissions est de
// demander de nouvelles permissions lors de l attachement à l avatar .
// Et utiliser ainsi , les permissions automatiques accordées pour les objets attachés .


integer gAttach = TRUE;
integer gAttach = TRUE;
Line 104: Line 104:
     touch_start(integer num)
     touch_start(integer num)
     {
     {
         if (gAttach)  // Object has not been attached yet
         if (gAttach)  // l'objet n' a pas déjà été attaché
         {
         {
             llRequestPermissions(llDetectedKey(0),PERMISSION_ATTACH);
             llRequestPermissions(llDetectedKey(0),PERMISSION_ATTACH);
             gAttach = FALSE;
             gAttach = FALSE;
         }
         }
         else  // Object has been attached, but you still need PERMISSION_ATTACH in order to detach the object
         else  // L'objet a été attaché , on vérifie les permissions PERMISSION_ATTACH puis on le détache
         {
         {
             if (llGetPermissions() & PERMISSION_TRIGGER_ANIMATION | PERMISSION_ATTACH)
             if (llGetPermissions() & PERMISSION_TRIGGER_ANIMATION | PERMISSION_ATTACH)
             {
             {
                 llDetachFromAvatar();  // Note that the object vanishes when detached, so there is no need to set gAttach = TRUE again
                 llDetachFromAvatar();  // Notez que l'objet disparait lors du détachement. Il n y a donc pas besoin de mettre  gAttach = TRUE  
             }
             }
         }
         }
Line 120: Line 120:
     attach(key id)
     attach(key id)
     {
     {
         if (id)  // Object has been attached, so request permissions again
         if (id)  //L objet vient juste d être attaché ; mais on aura besoin des permissions PERMISSION_ATTACH  pour pouvoir le détacher . Or comme les permissions sont réinitialisées à cause  du transfert d objet , on doit redemander les permissions . Dans ce cas , on utilise les permissions automatiques accordées pour les objets attachés , et la requête est automatiquement acceptée sans que l utilisateur reclique une seconde fois sur une
boite de dialogue de permissions
         {
         {
             llRequestPermissions(id,PERMISSION_ATTACH | PERMISSION_TRIGGER_ANIMATION);
             llRequestPermissions(id,PERMISSION_ATTACH | PERMISSION_TRIGGER_ANIMATION);
Line 128: Line 129:
     run_time_permissions (integer perm)
     run_time_permissions (integer perm)
     {
     {
         if (!gAttach)  //First time
         if (!gAttach)  // première fois
         {
         {
             if (perm & PERMISSION_ATTACH)
             if (perm & PERMISSION_ATTACH)
             {
             {
                 gAttach = TRUE;
                 gAttach = TRUE;
                 llAttachToAvatarTemp(ATTACH_HEAD);  // Initial PERMISSION_ATTACH is revoked at this point
                 llAttachToAvatarTemp(ATTACH_HEAD);  // Initial PERMISSION_ATTACH est révoqué à cette ligne du script.
             }
             }
         }
         }
         else  // Second time
         else  // seconde fois
         {
         {
             if (perm & PERMISSION_ATTACH | PERMISSION_TRIGGER_ANIMATION)
             if (perm & PERMISSION_ATTACH | PERMISSION_TRIGGER_ANIMATION)
Line 145: Line 146:
     }
     }
}</lsl>
}</lsl>
An alternative solution:
Une autre solution :
<lsl>
<lsl>
// Because ownership changes when the object is attached, the initial PERMISSION_ATTACH is revoked and new permissions need to be requested.


default
default
Line 167: Line 167:
}</lsl>
}</lsl>


|also_functions = {{LSL DefineRow||[[llDetachFromAvatar]]|Detaches the object from the avatar}}
|also_functions = {{LSL DefineRow||[[llDetachFromAvatar/fr|llDetachFromAvatar]]|Détache un objet de l'avatar}}
{{LSL DefineRow||[[llGetAttached]]|Gets the attach point number}}
{{LSL DefineRow||[[llGetAttached/fr|llGetAttached]]|Retourne le numéro du point attachement}}
|cat1 = Attachment
|cat1 = Attachment
|cat2 = Avatar
|cat2 = Avatar
|history = Date of Release  [[ Release_Notes/Second_Life_Server/12#12.07.24.262437 | 24/07/2012 ]]
|history = Date de Release  [[ Release_Notes/Second_Life_Server/12#12.07.24.262437 | 24/07/2012 ]]
}}
}}

Revision as of 13:04, 29 June 2013

  Don't delete the 'func_id'

func_id est un bit d’information technique qui ne doit pas être supprimé car il est utile aux personnes souhaitant écrire un compileur ou décompileur LSL, vous devriez retourner sur la page et remettre la bonne valeur:P.

Description

Fonction: llAttachToAvatarTemp( integer attach_point );

suit les mêmes règles que llAttachToAvatar, à l'exeption près que l'objet ne sera pas créé dans l inventaire de l'avatar et disparaîtra à sa déconnexion ou au détachement de l objet. En effet , par design , cela permet de "redonner" plusieurs fois à un autre utilisateur un objet en tant qu attachement sans que cela pollue son inventaire.

• integer attach_point ATTACH_* constante ( voir table ci-dessous )

On doit considérer cet objet comme un attachement temporaire ; un utilisateur ne peut pas utiliser les actions "prendre" , "prendre une copie" sur celui ci.

  • D'autre part, le grand avantage de cette fonction est que l'utilisateur n'a pas besoin d'être le propriétaire de l objet pour pouvoir l'attacher.

En revanche, les permissions du script sont à réinitialiser pour le"propriétaire à titre temporaire".

Constante Commentaire
ATTACH_CHEST 1 Poitrine/sternum
ATTACH_HEAD 2 Tête
ATTACH_LSHOULDER 3 Épaule gauche
ATTACH_RSHOULDER 4 Épaule droite
ATTACH_LHAND 5 Main gauche
ATTACH_RHAND 6 Main droite
ATTACH_LFOOT 7 Pied gauche
ATTACH_RFOOT 8 Pied droit
ATTACH_BACK 9 Dos
ATTACH_PELVIS 10 Bassin
ATTACH_MOUTH 11 Bouche
ATTACH_CHIN 12 Menton
ATTACH_LEAR 13 Oreille gauche
Constante Commentaire
ATTACH_REAR 14 Oreille droite
ATTACH_LEYE 15 Œil gauche
ATTACH_REYE 16 Œil droit
ATTACH_NOSE 17 Nez
ATTACH_RUARM 18 Bras droit
ATTACH_RLARM 19 Avant-bras droit
ATTACH_LUARM 20 Bras gauche
ATTACH_LLARM 21 Avant-bras gauche
ATTACH_RHIP 22 Hanche droite
ATTACH_RULEG 23 Jambe droite
ATTACH_RLLEG 24 Tibia droit
ATTACH_LHIP 25 Hanche gauche
ATTACH_LULEG 26 Jambe gauche
Constante Commentaire
ATTACH_LLLEG 27 Tibia gauche
ATTACH_BELLY 28 Ventre
ATTACH_LEFT_PEC 29 pectoraux gauche
ATTACH_RIGHT_PEC 30 pectoraux droits
ATTACH_HUD_CENTER_2 31 HUD au centre 2
ATTACH_HUD_TOP_RIGHT 32 HUD en haut à droite
ATTACH_HUD_TOP_CENTER 33 HUD en haut
ATTACH_HUD_TOP_LEFT 34 HUD en haut à gauche
ATTACH_HUD_CENTER_1 35 HUD au centre
ATTACH_HUD_BOTTOM_LEFT 36 HUD en bas à gauche
ATTACH_HUD_BOTTOM 37 HUD en bas
ATTACH_HUD_BOTTOM_RIGHT 38 HUD en bas à droite
ATTACH_NECK 39 Cou
ATTACH_AVATAR_CENTER 40 Centre de l'avatar

Avertissements

  • Toutes les permissions du script sont à réinitialiser lors de l 'attachement de l'objet temporaire ( probablement pour des mesures de sécurité)
  • L utilisation de llAttachToAvatarTemp sur un objet que vous n avez pas la permission de transférer provoquera une erreur de script No permission to transfer, même si vous l'attachez à vous mêmes ( il faut voir cette fonction comme un transfert)
  • Les points d'attachements peuvent être occupés par plusieurs objets.
  • Si attach_point est zéro , il se retrouve attaché par défaut à la main droite (ATTACH_RHAND).
  • Si l'objet est déjà attaché , la fonction ne fait rien silencieusement , même si le point d'attachement est différent .

Exemples

<lsl>// exemple basique qui ne fait rien d intéressant mais qui illustre son fonctionnement default {

   state_entry()
   {
       llRequestPermissions( llGetOwner(), PERMISSION_ATTACH );
   }
   run_time_permissions( integer vBitPermissions )
   {
       if( vBitPermissions & PERMISSION_ATTACH )
       {
           llAttachToAvatarTemp( ATTACH_LHAND );
       }
       else
       {
           llOwnerSay( "Permission to attach denied" );
       }
   }
   on_rez(integer rez)
   {
       if(!llGetAttached())
       { //reset the script if it's not attached.
           llResetScript();
       }
   }
   attach(key AvatarKey)
   {
       if(AvatarKey)
       {//event is called on both attach and detach, but Key is only valid on attach
           integer test = llGetAttached();
           if (test) {
               llOwnerSay( "The object is attached" );
           } else {
               llOwnerSay( "The object is not attached");
           }
       }
   }

}</lsl>

<lsl>//-- Cet exemple démontre le transfert de propriété d un objet temporaire attaché via llAttachToAvatarTemp() //-- Quelque soit la personne qui touche l objet , aura l objet attaché sous réserve quj il accepte les permissions qu on lui demande //-- Mais l'objet attaché n’apparaîtra pas dans l'inventaire. default {

   touch_start(integer num_touches)
   {
       llRequestPermissions( llDetectedKey(0), PERMISSION_ATTACH );
   }
   run_time_permissions( integer vBitPermissions )
   {
       if( vBitPermissions & PERMISSION_ATTACH )
       {
           llAttachToAvatarTemp( ATTACH_LHAND );
       }
       else
       {
           llOwnerSay( "Permission to attach denied" );
       }
   }
   on_rez(integer rez)
   {
       if(!llGetAttached())
       { //reset the script if it's not attached.
           llResetScript();
       }
   }

}</lsl>

<lsl>// Cet exemple illustre comment gèrer les permissions après l'appel à llAttachToAvatarTemp. // Parce que le proprétaire a changé , la permission initiale PERMISSION_ATTACH est révoquée et de nouvelles permissions ont besoin d'être demandées . // Une façon de procéder sans que l'utilisateur soit ennuyé par une autre boite de dialogue pour demander les permissions est de // demander de nouvelles permissions lors de l attachement à l avatar . // Et utiliser ainsi , les permissions automatiques accordées pour les objets attachés .

integer gAttach = TRUE;

default {

   touch_start(integer num)
   {
       if (gAttach)  // l'objet n' a pas déjà été attaché
       {
           llRequestPermissions(llDetectedKey(0),PERMISSION_ATTACH);
           gAttach = FALSE;
       }
       else   // L'objet a été attaché , on vérifie les permissions PERMISSION_ATTACH puis on le détache
       {
           if (llGetPermissions() & PERMISSION_TRIGGER_ANIMATION

Voir également

Fonctions

•  llDetachFromAvatar Détache un objet de l'avatar
•  llGetAttached Retourne le numéro du point attachement

Notes avancées

Historique

Date de Release 24/07/2012

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