OsDropAttachmentAt
From OpenSimulator
(Difference between revisions)
(Add new exemples) |
m (Whoops) |
||
Line 7: | Line 7: | ||
|ossl_example=<source lang="lsl"> | |ossl_example=<source lang="lsl"> | ||
// | // | ||
− | // | + | // osDropAttachmentAt Script Example (XEngine) |
// | // | ||
vector pos; | vector pos; | ||
rotation rot; | rotation rot; | ||
− | + | ||
default | default | ||
{ | { | ||
Line 20: | Line 20: | ||
rot = llGetRot(); | rot = llGetRot(); | ||
− | llSay(PUBLIC_CHANNEL, "Touch to see | + | llSay(PUBLIC_CHANNEL, "Touch to see llAttachToAvatar attach this object to your avatar's left hand."); |
− | llSay(PUBLIC_CHANNEL, "Touch it again to see | + | llSay(PUBLIC_CHANNEL, "Touch it again to see osDropAttachmentAt drop this object to its original position and rotation."); |
llSay(PUBLIC_CHANNEL, "The posistion is " + (string)pos + " and the rotation is " + (string)rot); | llSay(PUBLIC_CHANNEL, "The posistion is " + (string)pos + " and the rotation is " + (string)rot); | ||
} | } | ||
Line 29: | Line 29: | ||
if (!llGetAttached()) | if (!llGetAttached()) | ||
{ | { | ||
− | + | llRequestPermissions(llGetOwner(), PERMISSION_ATTACH); | |
} | } | ||
else if (llGetAttached()) | else if (llGetAttached()) | ||
{ | { | ||
− | + | osDropAttachmentAt(pos, rot); | |
} | } | ||
} | } | ||
+ | run_time_permissions(integer perm) | ||
+ | { | ||
+ | if (perm & PERMISSION_ATTACH) | ||
+ | { | ||
+ | llAttachToAvatar(ATTACH_LHAND); | ||
+ | } | ||
+ | |||
+ | else | ||
+ | { | ||
+ | llOwnerSay("Permission to attach denied"); | ||
+ | } | ||
+ | } | ||
+ | |||
// The attach event is called on both attach and detach. | // The attach event is called on both attach and detach. | ||
attach(key id) | attach(key id) | ||
Line 66: | Line 79: | ||
<source lang="lsl"> | <source lang="lsl"> | ||
// | // | ||
− | // | + | // osDropAttachmentAt Script Example (XEngine) |
// | // | ||
vector pos; | vector pos; | ||
rotation rot; | rotation rot; | ||
− | + | ||
default | default | ||
{ | { | ||
Line 79: | Line 92: | ||
rot = llGetRot(); | rot = llGetRot(); | ||
− | llSay(PUBLIC_CHANNEL, "Touch to see | + | llSay(PUBLIC_CHANNEL, "Touch to see llAttachToAvatar attach this object to your avatar's left hand."); |
− | llSay(PUBLIC_CHANNEL, "Touch it again to see | + | llSay(PUBLIC_CHANNEL, "Touch it again to see osDropAttachmentAt drop this object to its original position and rotation."); |
llSay(PUBLIC_CHANNEL, "The posistion is " + (string)pos + " and the rotation is " + (string)rot); | llSay(PUBLIC_CHANNEL, "The posistion is " + (string)pos + " and the rotation is " + (string)rot); | ||
} | } | ||
Line 88: | Line 101: | ||
if (!llGetAttached()) | if (!llGetAttached()) | ||
{ | { | ||
− | + | llRequestPermissions(llGetOwner(), PERMISSION_ATTACH); | |
} | } | ||
else if (llGetAttached()) | else if (llGetAttached()) | ||
{ | { | ||
− | + | osDropAttachmentAt(pos, rot); | |
} | } | ||
} | } | ||
+ | run_time_permissions(integer perm) | ||
+ | { | ||
+ | if (perm & PERMISSION_ATTACH) | ||
+ | { | ||
+ | llAttachToAvatar(ATTACH_LHAND); | ||
+ | } | ||
+ | |||
+ | else | ||
+ | { | ||
+ | llOwnerSay("Permission to attach denied"); | ||
+ | } | ||
+ | } | ||
+ | |||
// The attach event is called on both attach and detach. | // The attach event is called on both attach and detach. | ||
attach(key id) | attach(key id) | ||
{ | { | ||
− | // Test if is a valid key('id' is only valid on attach) | + | // Test if is a valid key ('id' is only valid on attach) |
if (id) | if (id) | ||
{ | { |
Revision as of 10:10, 24 November 2020
osDropAttachmentAt(vector pos, rotation rot)
| |
Requires script to be granted PERMISSION_ATTACH, drops an attachment at position pos with rotation rot | |
Threat Level | Moderate |
Permissions | ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER |
Extra Delay | 0 seconds |
Example(s) | |
// // osDropAttachmentAt Script Example (XEngine) // vector pos; rotation rot; default { state_entry() { pos = llGetPos(); rot = llGetRot(); llSay(PUBLIC_CHANNEL, "Touch to see llAttachToAvatar attach this object to your avatar's left hand."); llSay(PUBLIC_CHANNEL, "Touch it again to see osDropAttachmentAt drop this object to its original position and rotation."); llSay(PUBLIC_CHANNEL, "The posistion is " + (string)pos + " and the rotation is " + (string)rot); } touch_start(integer number) { if (!llGetAttached()) { llRequestPermissions(llGetOwner(), PERMISSION_ATTACH); } else if (llGetAttached()) { osDropAttachmentAt(pos, rot); } } run_time_permissions(integer perm) { if (perm & PERMISSION_ATTACH) { llAttachToAvatar(ATTACH_LHAND); } else { llOwnerSay("Permission to attach denied"); } } // The attach event is called on both attach and detach. attach(key id) { // Test if is a valid key and not NULL_KEY ('id' is only valid on attach) if (id && id != NULL_KEY) { llOwnerSay("The object is attached to " + llKey2Name(id)); } else { llOwnerSay("The object is not attached!"); } } on_rez(integer param) { // Reset the script if it's not attached. if (!llGetAttached()) { llResetScript(); } } } For YEngine: // // osDropAttachmentAt Script Example (XEngine) // vector pos; rotation rot; default { state_entry() { pos = llGetPos(); rot = llGetRot(); llSay(PUBLIC_CHANNEL, "Touch to see llAttachToAvatar attach this object to your avatar's left hand."); llSay(PUBLIC_CHANNEL, "Touch it again to see osDropAttachmentAt drop this object to its original position and rotation."); llSay(PUBLIC_CHANNEL, "The posistion is " + (string)pos + " and the rotation is " + (string)rot); } touch_start(integer number) { if (!llGetAttached()) { llRequestPermissions(llGetOwner(), PERMISSION_ATTACH); } else if (llGetAttached()) { osDropAttachmentAt(pos, rot); } } run_time_permissions(integer perm) { if (perm & PERMISSION_ATTACH) { llAttachToAvatar(ATTACH_LHAND); } else { llOwnerSay("Permission to attach denied"); } } // The attach event is called on both attach and detach. attach(key id) { // Test if is a valid key ('id' is only valid on attach) if (id) { llOwnerSay("The object is attached to " + llKey2Name(id)); } else { llOwnerSay("The object is not attached!"); } } on_rez(integer param) { // Reset the script if it's not attached. if (!llGetAttached()) { llResetScript(); } } } | |
Notes | |
This function was added in 0.7.5-post-fixes. See Attachment Points for the complete list of LSL Attachment Points Constants. |
See Also: