LlSetLinkColor/ru

From Second Life Wiki
Jump to navigation Jump to search

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

Function: llSetLinkColor( integer link, vector color, integer face );

Если в связанном объекте (линке) существует примитив под номером link, Задать стороне под номером face цвет color.

• integer link Номер примитива (0: одиночный примитив, 1: корневой примитив, >1:дочерние примитивы) или флаг типа LINK_*
• vector color Цвет в палитре RGB <R, G, B> (<0.0, 0.0, 0.0> = Черный, <1.0, 1.0, 1.0> = Белый)
• 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 для примитива, в котором находится данный скрипт

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

  • Если номер стороны примитива face указывает на сторону, которой не существует, функция не срабатывает (при этом не выводится сообщение об ошибке).

Примеры

Делает зеленым весь связанный объект. <lsl> default {

   touch_start(integer detected)
   {
       llSetLinkColor(LINK_SET, <0.0, 1.0, 0.0>, ALL_SIDES);
   }

}

</lsl>

Заметки

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

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

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

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

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

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

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

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

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

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

См. также

События

•  changed CHANGED_COLOR

Функции

•  llGetLinkNumber Возвращает номер в линке примитива, в котором находится скрипт.
•  llGetLinkNumberOfSides Возвращает количество сторон примитива под определенным номером в связанном объекте (линке).
•  llGetAlpha Возвращает значение прозрачности примитива, в котором находится скрипт.
•  llSetAlpha Задаёт прозрачность примитива, в котором находится скрипт.
•  llGetColor Возвращает вектор цвета примитива, в котором находится скрипт.
•  llSetColor Задаёт цвет примитива, в котором находится скрипт.
•  llSetLinkAlpha
•  llSetLinkTexture
•  llSetLinkPrimitiveParams

Статьи

•  Color in LSL

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

Search JIRA for related Issues

Сноски

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

Описания

function void llSetLinkColor( integer link, vector color, integer face );