Difference between revisions of "LlAttachToAvatarTemp"
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 = | |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 = | |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. | ||
* 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_* | |p1_desc = ATTACH_* constante ( voir table ci-dessous ) | ||
|constants = {{LSL_Constants_Attachment}} | |constants = {{LSL_Constants_Attachment/fr}} | ||
|caveats = | |caveats = | ||
* | * 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 {{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}}). | ||
* Si l'objet est déjà attaché , la fonction ne fait rien silencieusement , même si le point d'attachement est différent . | |||
|examples = <lsl>// exemple basique qui ne fait rien d intéressant mais qui illustre son fonctionnement | |||
* | |||
* | |||
|examples = <lsl>// | |||
default | default | ||
{ | { | ||
Line 63: | Line 60: | ||
}</lsl> | }</lsl> | ||
<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 | default | ||
{ | { | ||
Line 94: | Line 91: | ||
}</lsl> | }</lsl> | ||
<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; | integer gAttach = TRUE; | ||
Line 104: | Line 104: | ||
touch_start(integer num) | touch_start(integer num) | ||
{ | { | ||
if (gAttach) // | 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 // | 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(); // | 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) // | 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) // | if (!gAttach) // première fois | ||
{ | { | ||
if (perm & PERMISSION_ATTACH) | if (perm & PERMISSION_ATTACH) | ||
{ | { | ||
gAttach = TRUE; | gAttach = TRUE; | ||
llAttachToAvatarTemp(ATTACH_HEAD); // Initial PERMISSION_ATTACH | llAttachToAvatarTemp(ATTACH_HEAD); // Initial PERMISSION_ATTACH est révoqué à cette ligne du script. | ||
} | } | ||
} | } | ||
else // | else // seconde fois | ||
{ | { | ||
if (perm & PERMISSION_ATTACH | PERMISSION_TRIGGER_ANIMATION) | if (perm & PERMISSION_ATTACH | PERMISSION_TRIGGER_ANIMATION) | ||
Line 145: | Line 146: | ||
} | } | ||
}</lsl> | }</lsl> | ||
Une autre solution : | |||
<lsl> | <lsl> | ||
default | default | ||
Line 167: | Line 167: | ||
}</lsl> | }</lsl> | ||
|also_functions = {{LSL DefineRow||[[llDetachFromAvatar]]| | |also_functions = {{LSL DefineRow||[[llDetachFromAvatar/fr|llDetachFromAvatar]]|Détache un objet de l'avatar}} | ||
{{LSL DefineRow||[[llGetAttached]]| | {{LSL DefineRow||[[llGetAttached/fr|llGetAttached]]|Retourne le numéro du point attachement}} | ||
|cat1 = Attachment | |cat1 = Attachment | ||
|cat2 = Avatar | |cat2 = Avatar | ||
|history = Date | |history = Date de Release [[ Release_Notes/Second_Life_Server/12#12.07.24.262437 | 24/07/2012 ]] | ||
}} | }} |
Revision as of 12:04, 29 June 2013
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'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".
|
|
|
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 |