Темы:
Клиентская программа Second Life обладает не только встроенным 3D-редактором, но и инструментами для написания скриптов на языке LSL (Linden Scripting Language).
LSL представляет собой простой, но достаточно мощный язык описания поведения объектов* в Second Life.
*под объектом понимается примитив или набор связанных примитивов.
Существует несколько способов создания нового скрипта.
Способ 1
Кликнаем правой кнопкой мыши на земле, в открывшемся круглом меню выбираем Create. Затем щелкаем на земле левой кнопки мыши. Это должно привести к созданию нового объекта (по умолчанию куб) и появлению окна Edit.
В правом нижнем углу окна нажмите кнопку More>>.

Рис. 01
Выбираем Content и нажмимаем New Script...

Рис. 02
В папке Contents появится новый скрипт с названием New Script, при двойном клике на который откроется редактор скриптов.

Рис. 03
Способ 2
Открываем инвентарь, выбираем меню Create и пункт New Script.

Рис. 04
В папке скриптов появится новый скрипт с названием New Script, при двойном клике на который откроется редактор скриптов.
Способ 3
Этот вариант предполагает использование любого доступного внешнего (оффлайн) редактора скриптов с последующим копированием скрипта в редактор скриптов Second Life.
Первое время рекомендую использовать способ 1.
Если заглянуть в редактор скриптов, то можно увидеть, что там автоматически сгенерирован некий скрипт.

Рис. 05
Перед нами классический пример программирования известный как "Hello, World!", но на манер Second Life. Кратко рассмотрим этот код.
Default State
Первое, что мы видим - это слово default - вызов так называемого "state", который представляет собой нечто среднее между подпрограммой и точкой входа в подпрограмму. Не будем пока останавливаться на state подробно (позже ему будет посвящена отдельная статья). Необходимо запомнить следующее: каждый скрипт LSL в обязательном порядке должен содержать default state. Это отправная точка для компилятора LSL. Весь код внутри state должен быть заключен в фигурные скобки. Также следует помнить, что код внутри state default запускается автоматически на выполнение, кроме случаев, когда вы находитесь на местности, в которой запрещено выполнение скриптов. Определить такую местность можно по значку с перечеркнутым листом, который появляется в верхнем меню клиента.
![]()
Рис. 06
События (Events)
Основной частью скриптов LSL является обработка событий, происходящих с объектом и/или внешним миром (по отношению к объекту). Именно события запускают в работу скрипт, те или иные его подпрограммы (если быть точнее, обработчики событий). Появился на свет сам объект - это событие, на объект нажали - событие, мимо объекта кто-то прошел - тоже событие. На момент написания этой статьи существовало 33 события, которые можно отработать в коде объекта.
Событие state_entry
Это событие выполняется всякий раз, когда скрипт, содержащийся в state, перезапускается.
*Reset скрипта происходит:
- при компилировании (сохранении) скрипта;
- при нажатии на кнопку Reset в окне редактора скрипта;
- при помощи специальной функции llResetScript.
*Следует помнить, что событие срабатывает только при сбросе скрипта! Например, если положить объект в инвентарь и потом достать его, скрипт не перезапустится!
Другими словами, если вспомнить, что default state запускается автоматически, можно сказать следующее: при сбросе скрипта автоматически срабатывает state dafault и его событие state_entry. Разумеется, при условии, что это событие описано. Хотя в данном примере такое событие и идет первым, это вовсе не обязательно. Даже если событие будет находиться в конце state, то компилятор его найдет и выполнит. Код внутри событий должен быть заключен в фигурные скобки.
Событие touch_start
Это событие происходит всякий раз, когда кто-то прикасается к объекту путем простого клика мышкой или выбора пункта Touch в круглом меню. Отличие от state_entry сразу заметно - это функция, которой передаются некие параметры (integer total_number). Можно использовать параметры, которые передаются вам в обработчике событий (Statements), можно не использовать, но они в любом случае передаются вам от SL. В приведеннм примере вам передается количество агентов (аватар), которые прикоснулись в данным момент к объекту.
Statements
Заявления - это тот самый код, который находится внутри обработчика событий. В нашем случае это функция llSay, с некоторыми параметрами в скобках, которая выведет текст в общий чат клиента, и обязательная точка с запятой в конце ( всегда завершайте команды точкой с запятой!). Помните также, что не принято писать больше одной команды в строке, хотя такое и допускается.
Сохранение скрипта
Нажмите кнопку Save, если она активна. Произойдет компиляция, сохранение и сброс скрипта. Сработает событие state_entry, state default и объект произнесет в общий чат:
![]()
Рис. 07
Состояние скрипта
Следует помнить, что скрипт сохраняет свое состояние. Что это значит? Фактически работа скрипта не завершается, но может приостановиться. Например, вы кладете объект со скриптом в свой инвентарь и через какое-то время достаете его снова. State_entry выполняться не будет, так как это уже произошло при сбросе скрипта. Если бы в скрипте были какие-то переменные, они бы также сохранили свои значения. Получается, что скрипт как бы ставится на паузу, со следующим полным восстановлением в работе.
Примечание
Некоторое число русских резидентов устанавливают русские меню и кнопки в клиенте Second Life. Почему я не использую русский интерфейс в клиенте Second Life? Хочу напомнить, что русский интерфейс не входит в число официально поддерживаемых Second Life и является самодельным дополнением группы энтузиастов. Даже официально доступные языки интерфейса (кроме, естественно, английского) имеют статус беты. Поэтому 99% резидентов используют английский интерфейс.
Представьте себе ситуацию, в которой вы просите помощи у резидента, не имеющего русского интерфейса (или он просит у вас) - легко ли вам будет договориться, на какие кнопки нажимать и какое меню открывать?
Кроме того, в случае возникновения специфических проблем с клиентом, вы не сможете обратиться в официальную службу поддержки Second Life, если пользуетесь русским интерфейсом - они-то, естественно, используют английский язык в клиенте, и вы попросту не сможете понять друг друга.
Поверьте, даже с минимальным знанием английского языка достаточно просто разобраться в оригинальном интерфейсе. Используйте английский интерфейс - так будет лучше и проще!
Полезные ссылки
http://www.lslwiki.net
http://wiki.secondlife.com/wiki/LSL_Portal
|
Ivus 14:56, 11.05.07 ссылка
С нетерпением буду ждать выхода следующей статьи. Написано понятно и доходчиво :-) . Жалко, что несколько месяцев назад не было этого сайта и возможности прочесть на русском языке документацию по LSL - приходилось разбираться в англоязычной документации, которая сильно проигрывает статье Зубы :-) . Ответить |
|
zaha 15:01, 11.05.07 ссылка
Очень полезная статья! Ответить |
|
Alex 19:10, 11.05.07 ссылка
Про On Rezz надо было еще сказать сразу. Ответить |
|
Koshachii Xeno 02:55, 12.05.07 ссылка
Это только первая статья из цикла. Все будет. |
|
Freemsk1 18:44, 06.07.07 ссылка
Полезно, очень... |
|
Za.vodila 21:52, 01.12.07 ссылка
этого не хватало, спасибо |
|
Dolly 00:35, 08.12.07 ссылка
|
|
Umka 04:04, 08.12.07 ссылка
Чтобы "вступить" в этот клуб, начни читать этот раздел FAQ Ответить |
|
Selena-irina 13:33, 16.12.07 ссылка
помогите, пожалуйста, разобраться с игрой. Ответить |
|
Koshachii Xeno 15:03, 16.12.07 ссылка
FAQ - Что вы хотели узнать о Second Life Ответить |









Я еще не играла в игру и не знаю как начать, но эта статья мне пригодится когда узнаю.Вы мне поможете вступить в игру?






