LlGetObjectDetails/ru

From Second Life Wiki
Jump to navigation Jump to search

Общая информация

Function: list llGetObjectDetails( key id, list params );

Возвращает список атрибутов объекта/аватара с ключом id, обозначенных в списке params.

• key id UUID аватара или примитива, находящегося в том же регионе or adjacent regions*
• list params OBJECT_* flags

Если id не найден, возвращает пустой список. Если в params задан неправильный целочисленный параметр, возвращает OBJECT_UNKNOWN_DETAIL.

Характеристики

Зона обнаружения аватара для сервера версии 1.34
Параметр id

id содержит уникальный ключ аватара или примитива, атрибуты которого функция должна возвратить.

Если id не найден в регионе, производится поиск аватаров в соседних регионах. Аватар считается найденным, если он находится в регионе или в зоне шириной 34 метра в соседнем регионе (жёлтая зона на рисунке). Когда аватар покидает эту зону, функция может вернуть только одно соответствующее действительности (последнее) значение.

Параметр params

Список params отражает атрибуты, которые требуется получить. Порядок, в котором они заданы в этом списке, соответствует порядку их в возвращаемом функцией списке.

  • Если в params содержатся недопустимые целочисленные параметры, в соответствующих местах в возвращаемом списке ставится OBJECT_UNKNOWN_DETAIL .
  • Если в params содержатся не целочисленные параметры, они игнорируются (без сообщений об ошибке).

Параметры Описание Максимальная длина Тип Альтернативные функции Для примитива со скриптом
OBJECT_NAME 1 Возвращает имя примитива. 63 Characters string llGetObjectName
OBJECT_DESC 2 Возвращает описание примитива.
Если id является аватаром, возвращает пустую строку.
127 Characters string llGetObjectDesc
OBJECT_POS 3 Возвращает позицию примитива в региональных координатах.
Если id является аватаром, находящимся вне региона (см. рисунок выше), позиция считается относительно региона, в котором находится скрипт.
(37 Characters) vector llGetPos
OBJECT_ROT 4 Возвращает поворот объекта. (48 Characters) rotation llGetRot
OBJECT_VELOCITY 5 Возвращает вектор скорости объекта. (36 Characters) vector llGetVel
OBJECT_OWNER 6 Возвращает ключ владельца объекта.
Если id является аватаром, возвращается ключ этого аватара (равный id).
Если id находится во владении группы, возвращается нулевой ключ NULL_KEY.
(36 Characters) key llGetOwner
OBJECT_GROUP 7 Возвращает ключ группы, за которой закреплен данный примитив.
Если id является аватаром, возвращается нулевой ключ NULL_KEY.
(36 Characters) key Group
OBJECT_CREATOR 8 Возвращает ключ создателя объекта.
Если id является аватаром, возвращается нулевой ключ NULL_KEY.
(36 Characters) key Creator llGetCreator
OBJECT_RUNNING_SCRIPT_COUNT 9 Возвращает количество работающих скриптов в объекте или во всех объектах, прицепленных к аватару. (11 Characters) integer llGetScriptState
OBJECT_TOTAL_SCRIPT_COUNT 10 Возвращает общее количество скриптов в объекте или во всех объектах, прицепленных к аватару. (11 Characters) integer llGetInventoryNumber
OBJECT_SCRIPT_MEMORY 11 Возвращает общий объем памяти выделенный скриптам объекта или аватара. (11 Characters) integer
OBJECT_SCRIPT_TIME 12 Возвращает среднее процессорное время, затрачиваемое всеми скриптами объекта или аватара, в секундах. (15 Characters) float Top Scripts
OBJECT_PRIM_EQUIVALENCE 13 Возвращает примитивную эквивалентность данного объекта. (Понятия не имею, чё это такое. Видимо речь идёт о мешах.) (11 Characters) integer Calculating land impact
OBJECT_SERVER_COST 14 Возвращает серверный вес объекта. (15 Characters) float Server cost
OBJECT_STREAMING_COST 15 Возвращает сетевой вес объекта. (15 Characters) float Streaming (download) cost
OBJECT_PHYSICS_COST 16 Возвращает физический вес объекта. (15 Characters) float Physics cost
Максимальные длины в (скобках) показывают, сколько данный параметр занимает символов при переводе его в символьную строку.

Предостережения

  • OBJECT_ROT возвращает точное значение поворота для аватара, когда он сидит или находится в режиме 1-го лица (мауслук). В остальных случаях это значение приблизительное.
  • В отличие от аватаров, поиск примитивов в соседних регионах не производится.
  • Информация об аватарах, которые не могут быть обнаружены, доступна на протяжении небольшого периода времени (около 45 секунд), и она не обновляется.
  • Параметры в списке params, не являющиеся целочисленными, игнорируются, OBJECT_UNKNOWN_DETAIL в соответствующем месте в возвращаемом списке не ставится.
  • Эта функция неприменима к вещам в инвентаре.
  • llTargetOmega влияет на параметр OBJECT_ROT только если объект физический. Иначе возвращается изначальный поворот объекта, т.к. llTargetOmega для нефизических объектов является клиентским эффектом.
  • OBJECT_SCRIPT_MEMORY сообщает максимальный объём памяти, которые могут использовать скрипты в данном объекте, а не действительный потребляемый на данный момент объём. Скрипты, работающие под Mono, используют только необходимое им количество памяти, а не максимально возможное. На практике, этот параметр показывает, сколько памяти в наихудшем случае будут потреблять скрипты. На самом деле, практически всегда они потребляют объём памяти меньше этого показателя.
  • OBJECT_RUNNING_SCRIPT_COUNT включает в себя и зависшие скрипты тоже (т.е. скрипты, чья работа была прервана вследствие ошибки).

Примеры

<lsl>default {

   collision_start(integer i)
   {
       list a = llGetObjectDetails(llDetectedKey(0), ([OBJECT_NAME, 
                   OBJECT_DESC, OBJECT_POS, OBJECT_ROT, OBJECT_VELOCITY,
                   OBJECT_OWNER, OBJECT_GROUP, OBJECT_CREATOR]));
       llWhisper(0,"UUID: "         + (string)llDetectedKey(0) +
                 "\nName: \""       + llList2String(a,0) + "\"" +
                 "\nDescription: \"" + 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));
   }

}</lsl> <lsl>// Group join inviter default {

   touch_start(integer num_detected)
   {
       llInstantMessage(llDetectedKey(0),"Click on Join in my group profile:\n" +
           " secondlife:///app/group/" + llList2String(llGetObjectDetails(llGetKey(), [OBJECT_GROUP]), 0) + "/about ");
   }

}</lsl> <lsl>// aim & shoot default { state_entry()

   {   llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS);
   }
   control(key id, integer pressed, integer change) 
   {   if(change & pressed & CONTROL_ML_LBUTTON)
llSensor("", "", AGENT

Полезные вырезки

На странице Link/Get Вы найдёте полезные функции, касающиеся связанных объектов. Также обратите внимане на функцию llGetLinkPrimitiveParams, если вам нужно получить позицию и поворот примитива в связанном объекте.

См. также

Функции

•  llKey2Name
•  llGetPrimitiveParams
•  llSetLinkPrimitiveParams
•  llSetPrimitiveParams
•  llGetParcelDetails

Статьи

•  Limits SL limits and constrictions
•  Detected
•  Prim Attribute Overloading

Углублённые заметки

История

Введено в версии 1.18.3(2)

All Issues

~ Search JIRA for related Issues
   OBJECT_DISPLAY_NAME and OBJECT_USERNAME to llGetObjectDetails()
   [Won't Fix] OBJECT_RUNNING_SCRIPT_COUNT includes the crashed scripts in the count of running scripts.

Описания

function list llGetObjectDetails( key id, list params );
integer OBJECT_SERVER_COST = 14;//Gets the server cost of the object.
integer OBJECT_STREAMING_COST = 15;//Gets the streaming (download) cost of the object.
integer OBJECT_PHYSICS_COST = 16;//Gets the physics cost of the object.