OsForceAttachToOtherAvatarFromInventory
From OpenSimulator
osForceAttachToOtherAvatarFromInventory(string rawAvatarId, string itemName, integer attachmentPoint)
| |
Attach an inventory item in the object containing this script to any avatar in the region without asking for PERMISSION_ATTACH. Nothing happens if the avatar is not in the region.
| |
Threat Level | VeryHigh |
Permissions | Use of this function is always disabled by default |
Extra Delay | 0 seconds |
Example(s) | |
// // osForceAttachToOtherAvatarFromInventory Script Exemple (XEngine) // Author: djphil // string AvatarUuid = "<TARGET_AVATAR_UUID>"; string ObjectName; default { state_entry() { ObjectName = llGetInventoryName(INVENTORY_ALL, 0); if (ObjectName == "") { llSay(PUBLIC_CHANNEL, "Inventory object missing ..."); } else if (AvatarUuid == "<USER_UUID_TO_EJECT>" || !osIsUUID(AvatarUuid)) { llOwnerSay("Please replace <TARGET_AVATAR_UUID> with a valid user uuid"); } else { llSay(PUBLIC_CHANNEL, "Touch to see osForceAttachToOtherAvatarFromInventory attach the object to the target avatar's left hand."); llSay(PUBLIC_CHANNEL, "Object name is " + ObjectName + " and target avatar uuid is " + AvatarUuid + " (" + osKey2Name(AvatarUuid) + ")"); } } touch_start(integer number) { osForceAttachToOtherAvatarFromInventory(AvatarUuid, ObjectName, ATTACH_LHAND); } // 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 " + ObjectName + " 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: // // osForceAttachToOtherAvatarFromInventory Script Exemple (YEngine) // Author: djphil // string AvatarUuid = "<TARGET_AVATAR_UUID>"; string ObjectName; default { state_entry() { ObjectName = llGetInventoryName(INVENTORY_ALL, 0); if (ObjectName == "") { llSay(PUBLIC_CHANNEL, "Inventory object missing ..."); } else if (AvatarUuid == "<USER_UUID_TO_EJECT>" || !osIsUUID(AvatarUuid)) { llOwnerSay("Please replace <TARGET_AVATAR_UUID> with a valid user uuid"); } else { llSay(PUBLIC_CHANNEL, "Touch to see osForceAttachToOtherAvatarFromInventory attach the object to the target avatar's left hand."); llSay(PUBLIC_CHANNEL, "Object name is " + ObjectName + " and target avatar uuid is " + AvatarUuid + " (" + osKey2Name(AvatarUuid) + ")"); } } touch_start(integer number) { osForceAttachToOtherAvatarFromInventory(AvatarUuid, ObjectName, ATTACH_LHAND); } // 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 " + ObjectName + " 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(); } } } Another exemple: // Simple example for osForceAttachToOtherAvatarFromInventory that attaches a list of items on touch // Author: mewtwo0641 // List of items in object inventory to be attached in format: item_name, attach_point list items = [ "Belt", (string)ATTACH_BELLY, "Hat", (string)ATTACH_HEAD, "Left Shoe", (string)ATTACH_LFOOT, "Right Shoe", (string)ATTACH_RFOOT ]; key toucher; default { touch_start(integer number) { toucher = llDetectedKey(0); integer i; for(i = 0; i < llGetListLength(items); i++) { string name = llList2String(items, i); integer point = (integer)llList2String(items, i + 1); osForceAttachToOtherAvatarFromInventory(toucher, name, point); i++; } } } | |
Notes | |
This function was added in 0.7.4-post-fixes. See Attachment Points for the complete list of LSL Attachment Points Constants. |
See Also:
- osForceAttachToAvatar
- osForceAttachToAvatarFromInventory
- osForceAttachToOtherAvatarFromInventory
- osForceDetachFromAvatar
- osForceDropAttachment
- osForceDropAttachmentAt
- osDropAttachment
- osDropAttachmentAt