LlGetAgentInfo/ru

From Second Life Wiki
Jump to navigation Jump to search

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

Function: integer llGetAgentInfo( key id );

Возвращает битовое поле (в виде целочисленного значения), содержащее информацию об аватаре с ключом id.

• key id UUID аватара, находящегося в регионе

Constant Val Returned if agent...
AGENT_ALWAYS_RUN 0x1000 включен режим "всегда бежать" ("Always Run"), или бежит посредством двойного нажатия клавиши передвижения
AGENT_ATTACHMENTS 0x0002 имеет присоединенные объекты (аттачменты)
AGENT_AUTOPILOT 0x2000 в режиме "автопилота"
AGENT_AWAY 0x0040 в режиме "отошёл"
AGENT_BUSY 0x0800 в режиме "занят"
AGENT_CROUCHING 0x0400 присел
AGENT_FLYING 0x0001 летит или парит
AGENT_IN_AIR 0x0100 находится в воздухе (прыгает, летит или падает)
AGENT_MOUSELOOK 0x0008 в режиме от 1-го лица
AGENT_ON_OBJECT 0x0020 сидит на объекте (и привязан к нему)[1]
AGENT_SCRIPTED 0x0004 имеет присоединенные объекты (аттачменты), содержащие скрипты
AGENT_SITTING 0x0010 сидит (на объекте или на земле)
AGENT_TYPING 0x0200 печатает
AGENT_WALKING 0x0080 идёт, бежит или крадётся

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

  • AGENT_BUSY означает, что данный аватар проигрывает встроенную анимацию "busy", даже если он на самом деле не находится в режиме "занят" ("busy").
  • На серверах версии до 1.40 включительно, AGENT_TYPING обозначал, что аватар проигрывает встроенную анимацию "type" ("печатание"), и не возвращался, если у пользователя была отключена функция проигрывания анимации печатания (см. PlayTypingAnim). На серверах версии 1.42 и выше, он обозначает, что приходят сообщения о начале/конце печатания от программы-клиента, и более не зависит от анимации. Если требуется обнаружение по старому механизму, используйте функцию llGetAnimationList и проверяйте присутствие анимации "c541c47f-e0c0-058b-ad1a-d6ae3a4584d9"SVC-787
  • AGENT_ALWAYS_RUN | AGENT_WALKING означает, что пользователь задал настройку "всегда бежать" в опциях программы-просмотрщика. Используйте llGetAnimation для обнаружения бега, вызванного физическими воздействиями.
  • Эта функция не возвращает достоверной информации сразу после пересечения границы сима. Используйте llGetAnimation при необходимости. — SVC-3177

Примеры

<lsl> default {

   touch_start(integer buf)
   {
       buf = llGetAgentInfo(llDetectedKey(0));
       string out;
       if(buf & AGENT_FLYING)
           out += "The agent is flying.\n";
       else
           out += "The agent is not flying.\n";
       
       if(buf & AGENT_ATTACHMENTS)
       {
           if(buf & AGENT_SCRIPTED)
               out += "The agent has scripted attachments.\n";
           else
               out += "The agent's attachments are unscripted.\n";
       }
       else
           out += "The agent does not have attachments.\n";
       
       if(buf & AGENT_MOUSELOOK)
           out += "the agent is in mouselook.";
       else
           out += "the agent is in normal camera mode.";
       llWhisper(0, out);
   }

}

</lsl>

Заметки

Эта функция - не лучший способ определить, находится ли аватар в регионе, используйте llGetAgentSize (или, с недавнего времени, llGetAgentList --прим. пер.).

См. также

Функции

•  llRequestAgentData
•  llGetAnimation
•  llGetAnimationList

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

История

All Issues

~ Search JIRA for related Issues
   agent_info() event
   llGetAgentInfo() returns unreliable info after a sim border crossing

Tests

•  llGetAgentInfo_Test

Сноски

  1. ^ Сидение на земле здесь не считается, поскольку аватар может сесть как бы на объект таким образом, но при этом не быть к нему привязанным. Имеется в виду именно сидение на объекте.

Описания

function integer llGetAgentInfo( key id );