LlSetLinkTexture/ru

From Second Life Wiki
Jump to navigation Jump to 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 указывает на сторону, которой не существует, функция не срабатывает (при этом не выводится сообщение об ошибке).

Примеры

Применить ко всем сторонам всех примитивов связанного объекта библиотечную текстуру. <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 );