LlAttachToAvatarTemp
De DigiWiki.
Version du 11 octobre 2014 à 08:47 par Djphil (discuter | contributions)
//-- 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 { state_entry() { llRequestPermissions( llGetOwner(), PERMISSION_ATTACH ); } run_time_permissions( integer vBitPermissions ) { if( vBitPermissions & PERMISSION_ATTACH ) { llAttachToAvatarTemp">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"); } } } }
//-- This example can demonstrate ownership transfer of an object on a temporary basis using llAttachToAvatarTemp() //-- Whoever touches will be asked for permission to attach, and upon granting permission will have the item attach, //-- But not appear in Inventory. default { touch_start(integer num_touches) { llRequestPermissions( llDetectedKey(0), PERMISSION_ATTACH ); } run_time_permissions( integer vBitPermissions ) { if( vBitPermissions & PERMISSION_ATTACH ) { llAttachToAvatarTemp">llAttachToAvatarTemp( ATTACH_LHAND ); } else { llOwnerSay( "Permission to attach denied" ); } } on_rez(integer rez) { if(!llGetAttached()) { //reset the script if it's not attached. llResetScript(); } } }
// This example illustrates how to handle permissions before and after llAttachToAvatarTemp has been called. Because ownership // changes when the object is attached, the initial PERMISSION_ATTACH is revoked and new permissions need to be requested. integer gAttach = TRUE; default { touch_start(integer num) { if (gAttach) // Object has not been attached yet { llRequestPermissions(llDetectedKey(0),PERMISSION_ATTACH); gAttach = FALSE; } else // Object has been attached, but you still need PERMISSION_ATTACH in order to detach the object { 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 } } } attach(key id) { if (id) // Object has been attached, so request permissions again { llRequestPermissions(id,PERMISSION_ATTACH | PERMISSION_TRIGGER_ANIMATION); } } run_time_permissions (integer perm) { if (!gAttach) //First time { if (perm & PERMISSION_ATTACH) { gAttach = TRUE; llAttachToAvatarTemp">llAttachToAvatarTemp(ATTACH_HEAD); // Initial PERMISSION_ATTACH is revoked at this point } } else // Second time { if (perm & PERMISSION_ATTACH | PERMISSION_TRIGGER_ANIMATION) { llStartAnimation(llGetInventoryName(INVENTORY_ANIMATION,0)); } } } }
// Because ownership changes when the object is attached, the initial PERMISSION_ATTACH is revoked and new permissions need to be requested. default { touch_start(integer num) { if (!llGetAttached()) llRequestPermissions( llDetectedKey(0), PERMISSION_ATTACH); else if ( llGetPermissions() & PERMISSION_ATTACH) llDetachFromAvatar(); } attach(key id) { if (id) llRequestPermissions( id, PERMISSION_ATTACH | PERMISSION_TRIGGER_ANIMATION); } run_time_permissions (integer perm) { if (!llGetAttached() && (perm & PERMISSION_ATTACH)) llAttachToAvatarTemp">llAttachToAvatarTemp( ATTACH_NOSE); if (perm & PERMISSION_TRIGGER_ANIMATION) llStartAnimation( llGetInventoryName( INVENTORY_ANIMATION, 0)); } }