list llGetObjectDetails(key id,// UUID of the avatar or prim (in the same or adjacent regions) to query.list params// A list of OBJECT_* flags specifying the attributes to retrieve.
);- Returns
list- Energy
- 10
An empty list if id is not found.
OBJECT_UNKNOWN_DETAIL is returned when passed an invalid integer parameter.
Returns a list of the details for id, specifically those requested in params.
list result = llGetObjectDetails(NULL_KEY, []);Specification
Section titled “Specification”// Identity and ownershipOBJECT_NAME → string name // avatars: legacy nameOBJECT_DESC → string desc // avatars: emptyOBJECT_OWNER → key ownerOBJECT_GROUP → key groupOBJECT_CREATOR → key creatorOBJECT_LAST_OWNER_ID → key last_owner // if knownOBJECT_REZZER_KEY → key rezzerOBJECT_ROOT → key rootOBJECT_LINK_NUMBER → integer link_numberOBJECT_CREATION_TIME → string timestampOBJECT_REZ_TIME → string timeOBJECT_PERMS → integer base, integer owner, integer group, integer everyone, integer next_owner // PERM_* masksOBJECT_PERMS_COMBINED → integer base, integer owner, integer group, integer everyone, integer next_owner // PERM_* masks, including the contents// Position and movementOBJECT_POS → vector pos // region coordinatesOBJECT_ROT → rotation rotOBJECT_SCALE → vector scaleOBJECT_VELOCITY → vector velOBJECT_OMEGA → vector omegaOBJECT_MASS → float mass // whole linksetOBJECT_ATTACHED_POINT → integer attach_point // ATTACH_*// Object propertiesOBJECT_PHYSICS → integer booleanOBJECT_PHANTOM → integer booleanOBJECT_TEMP_ON_REZ → integer booleanOBJECT_TEMP_ATTACHED → integer booleanOBJECT_VOLUME_DETECT → integer isVolumeDetectOBJECT_LOCKED → integer isLockedOBJECT_CLICK_ACTION → integer action // CLICK_ACTION_*OBJECT_MATERIAL → integer material // PRIM_MATERIAL_*OBJECT_PATHFINDING_TYPE → integer pathfinding_type // OPT_*OBJECT_TEXT → string text // floating textOBJECT_TEXT_COLOR → vector colorOBJECT_TEXT_ALPHA → float alphaOBJECT_SIT_COUNT → integer count // agents sitting on any linkOBJECT_SELECT_COUNT → integer count // agents selecting any link// AvatarsOBJECT_GROUP_TAG → string textOBJECT_ACCOUNT_LEVEL → integer levelOBJECT_RENDER_WEIGHT → integer weightOBJECT_HOVER_HEIGHT → float heightOBJECT_BODY_SHAPE_TYPE → float body_shape // sex of the shape, 0.0 to 1.0OBJECT_ATTACHED_SLOTS_AVAILABLE → integer countOBJECT_ANIMATED_COUNT → integer count // animated mesh attachments worn; objects: booleanOBJECT_ANIMATED_SLOTS_AVAILABLE → integer count// Scripts, prims and costsOBJECT_RUNNING_SCRIPT_COUNT → integer script_count // object or avatarOBJECT_TOTAL_SCRIPT_COUNT → integer script_count // running and stoppedOBJECT_SCRIPT_MEMORY → integer bytesOBJECT_SCRIPT_TIME → float seconds // average CPU timeOBJECT_CHARACTER_TIME → float seconds // pathfinding CPU timeOBJECT_PRIM_COUNT → integer countOBJECT_PRIM_EQUIVALENCE → integer prim_countOBJECT_TOTAL_INVENTORY_COUNT → integer countOBJECT_SERVER_COST → float costOBJECT_STREAMING_COST → float costOBJECT_PHYSICS_COST → float cost// CombatOBJECT_HEALTH → float healthOBJECT_DAMAGE → float damage // dealt on collisionOBJECT_DAMAGE_TYPE → integer damage_type // DAMAGE_TYPE_*
| Flags | Description | Length when typecast to a string | Return | Alternatives | Local | |
|---|---|---|---|---|---|---|
OBJECT_NAME | 1 | Gets the prim’s name. If id is an avatar, the Legacy Name is returned. | max. 63 characters | string name | llGetObjectName | |
OBJECT_DESC | 2 | Gets the prim’s description. If id is an avatar, an empty string is returned. | max. 127 characters | string desc | llGetObjectDesc | |
OBJECT_POS | 3 | Gets the prim’s position in region coordinates. If id is an avatar outside the region (see above), this position is relative to the region the script is running in. | max. 37 characters | vector pos | llGetPos | |
OBJECT_ROT | 4 | Gets the prim’s rotation. | max. 48 characters | rotation rot | llGetRot | |
OBJECT_VELOCITY | 5 | Gets the object’s velocity. | 36 characters | vector vel | llGetVel | |
OBJECT_OWNER | 6 | Gets an object’s owner key. If id is an avatar, that avatar’s key is returned (which is the same as id). If id is group-owned, a NULL_KEY is returned. | 36 characters | key | llGetOwner | |
OBJECT_GROUP | 7 | Gets the prim’s group key. If id is an avatar, a NULL_KEY is returned, which means a workaround is required to get an avatar’s active group.1 | 36 characters | key group | Group | |
OBJECT_CREATOR | 8 | Gets the prim’s creator key. If id is an avatar, a NULL_KEY is returned. | 36 characters | key creator | Creator | llGetCreator |
OBJECT_RUNNING_SCRIPT_COUNT | 9 | Gets the number of running scripts attached to the object or agent. | max. 11 characters | integer count | llGetScriptState | |
OBJECT_TOTAL_SCRIPT_COUNT | 10 | Gets the number of scripts, both running and stopped, attached to the object or agent. | max. 11 characters | integer count | llGetInventoryNumber | |
OBJECT_SCRIPT_MEMORY | 11 | Gets the amount of script memory used by the object or agent, in bytes, or its upper limit. See page for more info. | max. 11 characters | integer bytes | ||
OBJECT_SCRIPT_TIME | 12 | Gets the total amount of average script CPU time used by the object or agent, in seconds. See page for more info. | max. 15 characters | float seconds | Top Scripts | |
OBJECT_PRIM_EQUIVALENCE | 13 | Gets the prim equivalence of the object. | max. 11 characters | integer count | Calculating land impact | |
OBJECT_SERVER_COST | 14 | Gets the server cost of the object. | max. 15 characters | float cost | Server cost | |
OBJECT_STREAMING_COST | 15 | Gets the streaming (download) cost of the object. | max. 15 characters | float cost | Streaming (download) cost | |
OBJECT_PHYSICS_COST | 16 | Gets the physics cost of the object. | max. 15 characters | float cost | Physics cost | |
OBJECT_CHARACTER_TIME | 17 | Gets the average CPU time (in seconds) used by the object for navigation, if the object is a pathfinding character. Returns 0 for non-characters. | max. 15 characters | float seconds | Pathfinding characters | |
OBJECT_ROOT | 18 | Gets the id of the root prim of the object requested. If id is an avatar, returns the id of the root prim of the linkset the avatar is sitting on and linked to (or the avatar’s own id if the avatar is not sitting on an object within the region). | 36 characters | key root | llGetLinkKey | |
OBJECT_ATTACHED_POINT | 19 | Gets the attachment point to which the object is attached. It returns an integer matching one of the ATTACH_* constants. | max. 11 characters | integer | llGetAttached | |
OBJECT_PATHFINDING_TYPE | 20 | Gets the pathfinding setting of the object in the region. It returns an integer matching one of the OPT_* constants. | max. 11 characters | integer type | Pathfinding types | |
OBJECT_PHYSICS | 21 | Gets the integer boolean detailing if physics is enabled or disabled on the object. If id is an avatar or attachment, 0 is returned. | 1 character | integer | llGetStatus PRIM_PHYSICS | |
OBJECT_PHANTOM | 22 | Gets the integer boolean detailing if phantom is enabled or disabled on the object. If id is an avatar or attachment, 0 is returned. | 1 character | integer | llGetStatus PRIM_PHANTOM | |
OBJECT_TEMP_ON_REZ | 23 | Gets the integer boolean detailing if temporary is enabled or disabled on the object. | 1 character | integer | PRIM_TEMP_ON_REZ | |
OBJECT_RENDER_WEIGHT | 24 | Gets the avatar’s render weight. If id is an object, 0 is returned. If id is an avatar whose render weight is unknown to the simulator, -1 is returned. The maximum render weight reported by the server is 5000002. | max. 6 characters | integer weight | Avatar_Rendering_Cost | |
OBJECT_HOVER_HEIGHT | 25 | Gets the hover height of the avatar. If id is not an avatar, 0.0 is returned. Normal values are in the range [-2.0, 2.0] with a default of 0.0. This value does not reflect the avatar shape’s “Hover” slider, only the dynamic viewer setting. | max. 9 characters | float height | ||
OBJECT_BODY_SHAPE_TYPE | 26 | Gets a float which describes the sex setting of the avatar’s currently worn shape. If id is not an avatar, -1.0 is returned. Normal operational values are in the range [0.0, 1.0].
Intermediate values with visible differences are possible with manually crafted shapes. | max. 9 characters | float shape | ||
OBJECT_LAST_OWNER_ID | 27 | Gets the UUID of the object’s previous owner, if known.
| 36 characters | key last_owner | ||
OBJECT_CLICK_ACTION | 28 | Gets the click action of the prim. It returns an integer matching one of the CLICK_ACTION_* constants. | max. 3 characters | integer action | ||
OBJECT_OMEGA | 29 | Gets the object’s rotational velocity (radians per second). | 36 characters | vector omega | llGetOmega | |
OBJECT_PRIM_COUNT | 30 | Gets the object’s prim count | max. 3 characters | integer count | llGetObjectPrimCount | llGetNumberOfPrims |
OBJECT_TOTAL_INVENTORY_COUNT | 31 | Gets the object’s total number of inventory items. | max. 10 characters | integer count | llGetInventoryNumber(INVENTORY_ALL) | |
OBJECT_REZZER_KEY | 32 | Gets the key of the object that rezzed this object be it an object or an avatar. | 36 characters | key rezzer | ||
OBJECT_GROUP_TAG | 33 | Gets the avatar’s group tag text. If id is not an avatar, an empty string is returned. | max. 20 bytes | string text | ||
OBJECT_TEMP_ATTACHED | 34 | Gets the integer boolean detailing if the object is temporarily attached. | 1 character | integer | ||
OBJECT_ATTACHED_SLOTS_AVAILABLE | 35 | Gets the avatar’s available attachment slot count. If id is not an avatar, 0 is returned. | max. 2 characters | integer count | ||
OBJECT_CREATION_TIME | 36 | Gets the object’s creation time. This time is established with raw material rezzing through the build menu and with mesh uploads. This time is NOT established with inventory rezzes, scripted rezzes, object modifying, copying or transferring. If id is an avatar, an empty string is returned. | max. 27 bytes | string timestamp | ||
OBJECT_SELECT_COUNT | 37 | Gets the total number of agents selecting any links in the object. If id is an avatar, 0 is returned. | max. 3 characters | integer count | ||
OBJECT_SIT_COUNT | 38 | Gets the total number of agents sitting on any links in the object. If id is an avatar, 0 is returned. | max. 3 characters | integer count | ||
OBJECT_ANIMATED_COUNT | 39 | Gets the integer boolean detailing if the object’s root is set to “Animated Mesh” or gets the total number of “Animated Mesh” attachments worn by an agent. | max. 1 character | integer count | ||
OBJECT_ANIMATED_SLOTS_AVAILABLE | 40 | Gets the avatar’s available “Animated Mesh” attachment slot count. If id is not an avatar, 0 is returned. | max. 2 characters | integer count | ||
OBJECT_ACCOUNT_LEVEL | 41 | Gets the account level of an avatar. If id is not an avatar, -1 is returned.
| max. 1 character | integer level | ||
OBJECT_MATERIAL | 42 | Retrieves the physics material set on this object. It returns an integer matching one of the PRIM_MATERIAL_* constants. | integer material | llGetPrimitiveParamsPRIM_MATERIAL | ||
OBJECT_MASS | 43 | Gets the mass (in Kilograms) of this object’s linkset. | float mass | llGetMassMKS | ||
OBJECT_TEXT | 44 | Gets the floating text displayed above this object. | string text | llGetPrimitiveParamsPRIM_TEXT | ||
OBJECT_REZ_TIME | 45 | Retrieves the time that this object was rezzed. | string time | |||
OBJECT_LINK_NUMBER | 46 | Get this object’s index in the linkset. | integer link_number | llGetLinkNumber | ||
OBJECT_SCALE | 47 | Get the size of this object. | vector scale | llGetScale | ||
OBJECT_TEXT_COLOR | 48 | Gets the color of the floating text displayed above this object. | vector color | llGetPrimitiveParamsPRIM_TEXT | ||
OBJECT_TEXT_ALPHA | 49 | Gets the alpha value of the floating text displayed above this object. | float alpha | llGetPrimitiveParamsPRIM_TEXT | ||
OBJECT_HEALTH | 50 | Retrieves the health of an avatar or prim. | float health | llGetPrimitiveParamsPRIM_HEALTHllGetHealth | ||
OBJECT_DAMAGE | 51 | Retrieves the amount of damage a prim inflicts on collision. | float damage | llGetPrimitiveParamsPRIM_DAMAGE | ||
OBJECT_DAMAGE_TYPE | 52 | Retrieves the type of damage a prim inflicts on collision. It returns an integer that can match one of the DAMAGE_TYPE_* constants, be a custom damage type or be repurposed by a combat system. | integer damage_type | llGetPrimitiveParamsPRIM_DAMAGE | ||
OBJECT_PERMS, integer base, integer owner, integer group, integer everyone, integer next_owner | 53 | Retrieves the permissions for this object as 5 integers. | integer base, integer owner, integer group, integer everyone, integer next_owner | llGetObjectPermMask | ||
OBJECT_PERMS_COMBINED, integer base, integer owner, integer group, integer everyone, integer next_owner | 54 | Retrieves the permissions for this object combined with all of its inventory items as 5 integers. | ||||
OBJECT_LOCKED | 55 | Retrieves the locked status of this object | integer isLocked | llGetObjectPermMask | ||
OBJECT_VOLUME_DETECT | 56 | Retrieves the VolumeDetect status of this object | integer isVolumeDetect | llVolumeDetect |
Caveats
Section titled “Caveats”OBJECT_ROTwill return an accurate facing for Avatars seated or in mouselook, but only a rough direction otherwise.- Adjacent regions are not searched for prims which match id.
- Information for avatars that can no longer be found will still be available for a short period (about 45 seconds) but it is not updated.
- Items in params that are not integers are silently ignored,
OBJECT_UNKNOWN_DETAILis not returned. - This function does not return information about items in inventory.
llTargetOmegawill only effect the return ofOBJECT_ROTif the object isphysical. If the object is not physical then the original start rotation is returned,llTargetOmegais a client side effect.OBJECT_SCRIPT_MEMORYreports the maximum memory that all scripts in an object could use, not the actual amount of real memory currently used. In particular, Mono scripts only report the default 64K or what they chose withllSetMemoryLimit, not the current dynamic allocation that is only accessible from within the script. For LSO scripts, the 16K is real usage in all cases. In practice, this makes the number reported a worst case scenario.OBJECT_RUNNING_SCRIPT_COUNTincludes crashed scripts in its count.OBJECT_REZZER_KEYwill returnNULL_KEYfor objects rezzed prior to server version 16.01.16.310114- Objects copied in-world between server versions 16.01.16.310114 & 16.10.14.320687 return the object’s creator key for rezzer key.
- Child prims linked before server version 17.11.11.510664 return the root prim’s rezzer key.
- Child prims delinked before server version 17.11.11.510664 return
NULL_KEYfor rezzer key. - When targeting an agent with
OBJECT_REZZER_KEYwhile they are sitting on an object, the rezzer key of the object’s root prim is returned. - When targeting an attachment with
OBJECT_MASS, the mass of the avatar (or that of the avatar’s sat-upon object) is returned. - Since
OBJECT_GROUPreturnsNULL_KEYfor avatars, a workaround is required to acquire an avatar’s active group. A common approach is to query the avatar’s attachments withllGetAttachedListand if at least one is found, get theOBJECT_GROUPfor that attachment as it is likely to match the avatar’s group.
Examples
Section titled “Examples”Example 1
// Show some basic details for the colliding object/avatar. Note that group will be NULL_KEY for avatars.default{ collision_start(integer num_detected) { key id = llDetectedKey(0); list details = llGetObjectDetails(id, ([OBJECT_NAME, OBJECT_DESC, OBJECT_POS, OBJECT_ROT, OBJECT_VELOCITY, OBJECT_OWNER, OBJECT_GROUP, OBJECT_CREATOR])); llShout(PUBLIC_CHANNEL, "UUID: " + (string)id + "\nName: " + llList2String(details, 0)9 collapsed lines
+ "\nDescription: " + llList2String(details, 1) + "\nPosition: " + llList2String(details, 2) + "\nRotation: " + llList2String(details, 3) + "\nVelocity: " + llList2String(details, 4) + "\nOwner: " + llList2String(details, 5) + "\nGroup: " + llList2String(details, 6) + "\nCreator: " + llList2String(details, 7)); }}Example 2
11 collapsed lines
// group join inviter// gets the name of the object's active group from the online group profile
key groupNameRequestId;key groupKey;string groupName;
init(){ // WARNING: // different prims can have different active groups!!!
// get the key of the root prim's group groupKey = llList2Key(llGetObjectDetails(llGetLinkKey(LINK_ROOT), [OBJECT_GROUP]), 0);
// request the name of the root prim's group30 collapsed lines
groupNameRequestId = llHTTPRequest("http://world.secondlife.com/group/" + (string)groupKey, [], "");}
default{ state_entry() { init(); }
touch_start(integer num_detected) { if (groupKey == NULL_KEY || groupName == "") return;
key id = llDetectedKey(0); llInstantMessage(id, "Click the link to join the group '" + groupName + "'\n" + "secondlife:///app/group/" + (string)groupKey + "/about"); }
http_response(key request_id, integer status, list metadata, string body) { if (request_id != groupNameRequestId) return;
list args = llParseString2List(body, ["title"], []); groupName = llList2String(llParseString2List(llList2String(args, 1), [">", "<", "/"], []), 0); }}Example 3
13 collapsed lines
// aim & shootdefault{ state_entry() { llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS); } control(key id, integer pressed, integer change) { if(change & pressed & CONTROL_ML_LBUTTON) llSensor("", "", AGENT|PASSIVE|ACTIVE, 96.0, PI/16.0); } run_time_permissions(integer perm) { if(perm&PERMISSION_TAKE_CONTROLS) llTakeControls(CONTROL_ML_LBUTTON, TRUE, TRUE); } sensor(integer n) { key uuid=llDetectedKey(0); list a = llGetObjectDetails(uuid, ([ OBJECT_NAME, OBJECT_DESC, OBJECT_POS, OBJECT_ROT, OBJECT_VELOCITY,OBJECT_OWNER, OBJECT_GROUP, OBJECT_CREATOR])); llOwnerSay("UUID: " + (string)uuid + "\nName: \"" + llList2String(a,0)+ "\"" +10 collapsed lines
"\nDecription: \"" + llList2String(a,1) + "\"" + "\nPosition: " + llList2String(a,2) + "\nRotation: " + llList2String(a,3) + "\nVelocity: " + llList2String(a,4) + "\nOwner: " + llList2String(a,5) + "\nGroup: " + llList2String(a,6) + "\nCreator: " + llList2String(a,7) ); }}Example 4
// Object Script Timedefault{ touch_start(integer num_detected) { llOwnerSay(llGetObjectName()+" Script Time: "+llList2String(llGetObjectDetails(llGetKey(), [OBJECT_SCRIPT_TIME]), 0)); }}Helper functions
Section titled “Helper functions”See Link/Get for some link related helper functions. Also see llGetLinkPrimitiveParams if you need to get the position and rotation of a linked prim.
integer isLindenTreeOrGrass(key id){ //Check if it's an OPT_OTHER and not an attachment, which makes it a Linden tree or grass! list out = llGetObjectDetails(id, [OBJECT_PATHFINDING_TYPE, OBJECT_ATTACHED_POINT]); return (llList2Integer(out, 0) == OPT_OTHER) && !llList2Integer(out, 1);}History
Section titled “History”2007 – SL 1.18.3(2): Introduced
28-09-2007 – SL 1.18.3.285.29: Released
Known issues
Section titled “Known issues”From the issue templates included by the wiki article:
- SCR-87 (nf): <code>OBJECT_DISPLAY_NAME</code> and <code>OBJECT_USERNAME</code> to llGetObjectDetails()
- SVC-7592 (bug): OBJECT_RUNNING_SCRIPT_COUNT includes the crashed scripts in the count of running scripts.
See also
Section titled “See also”Functions
Section titled “Functions”Articles
Section titled “Articles”Original wiki source
Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.
Footnotes
Section titled “Footnotes”-
There are at least 3 JIRA’s about
OBJECT_GROUPand avatars, LL has refused all of them. Most recently on December 5th 2013 in BUG-4654. ↩ -
On July 2016, Rolig Loon commented on the talk page for llGetObjectDetails() that allegedly SL viewers are showing render weights of 1,300,000. ↩