LlGetLinkKey/ru

From Second Life Wiki
< LlGetLinkKey
Revision as of 02:58, 24 August 2012 by Highstaker Resident (talk | contribs) (Created page with "{{LSL_Function/ru |inject-2={{Issues/SVC-600}}{{LSL_Function/link/ru|link|nogroup=*}} |func_id=144|func_sleep=0.0|func_energy=10.0 |func=llGetLinkKey |return_type=key|p1_type=int…")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

Function: key llGetLinkKey( integer link );

Возвращает ключ примитива под номером link в связанном объекте.

• integer link Номер примитива (0: одиночный примитив, 1: корневой примитив, >1:дочерние примитивы) или флаг типа LINK_*
Флаг и значение Описание
LINK_ROOT 1 для корневого примитива[1]
Флаг и значение Описание
LINK_THIS -4 для примитива, в котором находится данный скрипт

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

All Issues ~ Search JIRA for related Bugs

Примеры

Поместите этот скрипт в в одиночный примитив, в примитив в связанном объекте, в примитив с сидящими аватарами, чтобы увидеть, как работает данная функция по сравнению с llGetKey, llGetLinkNumber, llGetNumberOfPrims, LINK_ROOT, и т.д.. <lsl>// Return the name of a link num else the empty string. string getLinkNumName(integer link) {

   if (LINK_THIS == link) return "LINK_THIS";
   if (LINK_ALL_CHILDREN == link) return "LINK_ALL_CHILDREN";
   if (LINK_ALL_OTHERS == link) return "LINK_ALL_OTHERS";
   if (LINK_SET == link) return "LINK_SET";
   if (LINK_ROOT == link) return "LINK_ROOT";
   return "";

}

// Say the key of each linked prim. default {

   state_entry()
   {
       integer theLink = llGetLinkNumber();
       
       key theLinkKey = llGetKey();
       key owner = llGetOwner();
       key creator = llGetCreator();
       
       // Visit each link num.
       
       integer link;
       integer primmed = llGetNumberOfPrims();
       for (link = -5; link <= (primmed + 5); ++link)
       {
           key linkKey = llGetLinkKey(link);
           
           // Detail the key at the link num.
           
           string line = (string) linkKey; // large constant width
           
           if (linkKey == owner) line += " llGetOwner";
           if (linkKey == creator) line += " llGetCreator";
           if (linkKey == theLinkKey) line += " llGetKey";
           
           // Detail the link num.
           
           line += " @ " + (string) link;
           line += " " + getLinkNumName(link);
           if (link == theLink) line += " llGetLinkNumber";
           if (link == primmed) line += " llGetNumberOfPrims";
           
           // Say the detail if fun.
           
           if (linkKey != NULL_KEY)
           {
               llOwnerSay(line);
           }
       }
       
       // Always count the linked prims.
       
       llOwnerSay((string) primmed + " llGetNumberOfPrims");
       llOwnerSay("OK");
   }
}</lsl>

Заметки

Номера примитивов в объекте

Каждый примитив в связанном объекте имеет свой порядковый номер. Для получения доступа к определенному примитиву внутри объекта необходимо знать его номер. Номера имеют также аватары, которые сидят на данном объекте.

  • Если объект состоит из одного примитива, и на нём не сидит аватар, то номер этого (корневого) примитива равен 0 (не 1).
  • Однако, если объект состоит из нескольких примитивов и/или на нём сидит аватар, то номер корневого примитива равен 1.

Когда аватар садится на объект, он становится в конце списка примитивов и ему присваивается наибольший номер. В дополнение к этому, когда аватар сидит на объекте, этот объект не может прикреплять или откреплять примитивы, не заставив аватар встать.

Вывод количества примитивов и аватаров

Для вывода количества примитивов и сидящих аватаров есть две функции.

  • llGetNumberOfPrims() - Возвращает количество примитивов и сидящих аватаров.
  • llGetObjectPrimCount(llGetKey()) - Возвращает только количество примитивов в объекте. Не работает (возвращает всегда 0) для объектов, прикрепленных к аватару (т.н. аттачментов).

<lsl>integer GetPrimCount() { //Всегда возвращает только количество примитивов в объекте

   if(llGetAttached())//Объект прицеплен к аватару
       return llGetNumberOfPrims();//т.к. на аттачментах нельзя сидеть, возвращает только примитивы
   return llGetObjectPrimCount(llGetKey());//только число примитивов для не аттачмента

}</lsl>Более подробно смотрите в статье llGetNumberOfPrims.

См. также

Функции

•  llGetLinkNumber Возвращает номер в линке примитива, в котором находится скрипт.
•  llGetKey
•  llGetLinkName

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

All Issues

~ Search JIRA for related Issues
   llGetLinkKey returns the wrong result when passed LINK_THIS

Сноски

  1. ^ LINK_ROOT не работает с объектами, состоящими из одного примитива!

Описания

function key llGetLinkKey( integer link );