Second Life
Advertisement

Программирование скриптов на LSL

LSL расшифровывается как "Linden Scripting Language" и используется для написания скриптов к объектам в Second Life.

Для кого написана эта инструкция:

Эта инструкция адресована тем, кто никогда прежде не писал программ, в SL или в другом месте. Однако, она будет иметь смысл только в Second Life. LSL предназначен только для Second Life.

Изучение LSL начинается со стандартной программы "Hello World" ("Привет мир!").

Что такое LSL?

LSL это "Linden Scripting Language". Это язык, на котором написаны все скрипты в Second Life. Структура языка подобна языкам Java и C.

Скрипты в Second Life могут быть помещены в любом примитивном объекте, но не в Аватаре. Аватар может носить на себе скриптованные объекты. Скрипты LSL пишутся при помощи встроенного в SL редактора/компилятора.

Язык LSL оперирует понятиями "Состояние" и "Событие". Дверь может быть "открытой" или "закрытой", и свет может быть "включенным" или "выключенным". Человек может быть "Энергичный", "Спокойный", или "Скучающий". Многие реальные объекты имеют "Состояние", то же самое верно и для программ LSL. Минимально скрипт имеет одно состояние, состояние по умолчанию.

"Событие" можно рассматривать как "Триггер"(переключатель). События вызваны взаимодействием объектов и аватаров или создаются в скриптах.

"Событие" вызывает обработчик события. Touch_start() запустит выполнение кода, если дотронуться до объекта. Таким образом минимальная программа LSL должна иметь одно состояние с одним событием. Ниже представлена минимальная программа, написанная в LSL, смысл которой можно представить, как.... "Когда я нахожусь в состоянии по умолчанию, и до меня дотронулись, я говорю "Привет Мир" на нулевом канале". (Нулевой канал - вывод в общий чат).

  default
  {
    touch_start(integer total_number)
    {
         llSay(0,"Hello World");
    }
  }

Что могут скрипты?

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

Основной объект в SL - "Prim" или примитив, основной стандартный блок всех объектов, которые Вы можете строить во Второй Жизни. Если несколько примитивов связаны, то каждый из них может содержать скрипт, который передает параметры остальным частям объекта через связанные сообщения. В этой обучающей программе будет рассмотрен только один Примитив с одним скриптом.

Традиционно первая программа должна выводить фразу "Привет, Мир". Поскольку LSL работает только с объектами, Вы должны уметь создавать объекты и помещать в них скрипты.

Вы должны быть на земле, на которой разрешено строить. Это или ваша собственная земля, или "Песочница". Нажимаем правой кнопкой мышки и выбираем "Create" ("Создать"). По умолчанию, Вы должны видеть изображение "волшебной палочки", которой Вы можете щелкнуть и создать куб на земле. Автоматически появится окно редактора. Щелкаем по кнопке "more>>>".

Появляются еще пять кнопок: general, object, features, content, и texture. Нажимаем "content" (содержимое). Появляется окно, показывающее содержание объекта. Это могут быть скрипты, заметки или другие объекты. Нажмите "New script", чтобы добавить новый скрипт. Откроется окно редактора, в котором уже записан скрипт по умолчанию. Для удобства проверки синтаксиса редактор подсвечивает строки разными цветами.

Перед объяснением кода посмотрим, как этот скрипт работает. Нажмите "save". Редактор скрипта закроется и автоматически проверит код на наличие ошибок. Закройте редактор объекта. Если теперь подойти к объекту, то в окне чата появится "Hello Avatar". А если дотронуться до объекта, то появится "Touched".

Поздравляю! Вы написали Ваш первый скрипт на LSL!

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

Теперь Вы можете взять этот объект к себе в инвентарь.

При каждом редактировании скрипт сбрасывается в начальное состояние.

Подробно про скрипт

  default
  {
    state_entry()
    {
    llSay(0, "Hello, Avatar!");
    }
    touch_start(integer total_number)
    {
    llSay(0, "Touched.");
    }
  }

Этот код содержит 2 коментария, 1 состояние, 2 события и 2 функции.

Две косые черты обозначают коментарий. Все расположенное за ними не выполняется.

// This is a comment

Состояние

Состояние в LSL - секция, которая работает, ожидая события. Только одно состояние может быть активно в скрипте в любой момент времени. Каждый скрипт должен содержать состояние по умолчанию по крайней мере с одним событием в нем. За исключением состояния по умолчанию, каждое состояние определяется словом STATE, сопровождаемым названием состояния. Содержание состояния заключается в фигурные скобки.

  default
  {
  // Здесь пишем код
  }

или

  state playing
  {
  // Это секция, вызывающая "playing"
  }
Advertisement