LlSetLinkTexture/ru

From Second Life Wiki
Jump to: navigation, search

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

Function: llSetLinkTexture( integer link, string texture, integer face );

Если в связанном объекте существует примитив под номером link, установить текстуру texture на его стороне под номером face .

• integer link Номер примитива (0: одиночный примитив, 1: корневой примитив, >1:дочерние примитивы) или флаг типа LINK_*
• string texture текстура в инвентаре примитива или UUIDтекстура
• integer face Номер стороны или ALL_SIDES

Если номер стороны face равен ALL_SIDES, то функция срабатывает для всех сторон примитива.

Флаг и значение Описание
LINK_ROOT 1 для корневого примитива[1]
LINK_SET -1 для всех примитивов
LINK_ALL_OTHERS -2 для всех других примитивов
Флаг и значение Описание
LINK_ALL_CHILDREN -3 для всех дочерних примитивов (т.е. все, кроме корневого)
LINK_THIS -4 для примитива, в котором находится данный скрипт

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

  • После применения этой функции скрипт приостанавливает работу (засыпает) на 0.2 секунд.
  • Если texture отсутствует в инвентаре примитива или пользователь не имеет к нейполного доступа и texture не является Ключом-идентификатором или не является текстураой ,то высвечивается сообщение об ошибке на DEBUG_CHANNEL.
  • If texture is a UUID then there are no new asset permissions consequences for the object.
    • The resulting object develops no new usage restrictions that might have occurred if the asset had been placed in the prims inventory.
  • Если номер стороны примитива face указывает на сторону, которой не существует, функция не срабатывает (при этом не выводится сообщение об ошибке).

Important Issues

~ All Issues ~ Search JIRA for related Bugs
   llSetLinkTexture fails and reports an error on textures created by someone else without full permissions
   llSetLinkTexture(LINK_THIS, foo, bar) does not work for non-full-perm textures.

Примеры

Применить ко всем сторонам всех примитивов связанного объекта библиотечную текстуру. <lsl> default {

   touch_start(integer detected)
   {
       llSetLinkTexture(LINK_SET, "66bf4030-04f9-a808-43ab-b48b6aeb6456", ALL_SIDES);
   }

}

</lsl>

Заметки

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

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

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

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

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

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

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

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

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

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

См. также

Функции

•  llGetLinkNumber Возвращает номер в линке примитива, в котором находится скрипт.
•  llGetLinkNumberOfSides Возвращает количество сторон примитива под определенным номером в связанном объекте (линке).
•  llSetLinkAlpha
•  llSetLinkColor
•  llSetLinkPrimitiveParams

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

All Issues

~ Search JIRA for related Issues
   llSetLinkTexture fails and reports an error on textures created by someone else without full permissions
   llSetLinkTexture(LINK_THIS, foo, bar) does not work for non-full-perm textures.
   CHANGED_TEXTURE is not triggered when texture is changed via script

Сноски

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

Описания

function void llSetLinkTexture( integer link, string texture, integer face );