LlAttachToAvatarTemp
LSL Portail Francophone | LSL Portail Anglophone | Fonctions | Évènements | Types | Operateurs | Constantes | Contrôle d'exécution | Bibliothèque | Tutoriels |
Don't delete the 'func_id'
Description
Fonction: llAttachToAvatarTemp( integer attach_point );suit les mêmes règles que llAttachToAvatar, à l’exception 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".
|
|
|
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 qu'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 proprié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 |