Хочешь узнать как попасть в Second Life?

 

 

Русификатор для клиента Second Life версии 1.21.6.99587

Количество загрузок: 869
Подробнее о русификаторе

Все права на русификатор принадлежат SecondRussia

 


Зарегистрироваться
Вспомнить пароль

Top-10


Первые шаги в Second Life. Часть 1

Регистрация аккаунта

Как заработать в Second Life легко и быстро!

Русификация SL-клиента

Халява, сэр!

LSL. Основы. Часть 1

Системные требования

Любовь единорога - это прекрасно!

Управляем "собой"

Москва в Second Life – это, безусловно, товарищество. Часть 1

 
     

Сейчас на сайте

Сейчас на сайте 5 пользователей и 4 гостя.

Пользователи на сайте

  • Marie
  • Labusti
  • Sasha Leakey
  • dimm Torok
  • Kitsune

Объявления


Школа "SecondRussia"

Заказ строительства учебного острова

Для работы над зрелищным проектом требуется скульптор

Открытие Second Kiev!

Empire Style and Black Cat Club presents

 
     

Афиша


В ближайшие дни в Second Life:

Школа "SecondRussia"

Афиша: интересные события в Second Life 28 ноября – 30 ноября 2008 года

Открытие Second Kiev!

Балет, балет, балет...

Empire Style and Black Cat Club presents

 
     

LSL. Основы. Часть 2

Автор: Zuba Zenovka      Время публикации: 16:07, 15.05.07
Темы:

touch_start, llDetectedName

В первой части мы в подробностях рассмотрели создание самого простого скрипта LSL. При сбросе он произносил в общий чат "Hello, Avatar!", а при прикосновении говорил "Touched".

Рис. 1
Рис.1

Попробуем немного усложнить наш скрипт. Например, сделаем так, чтобы при прикосновении к объекту он говорил "Hello" и добавлял при этом имя того, кто к нему прикоснулся. Для начала нам нужно более детально познакомиться с событием touch_start().

Вообще, существует три события, связанных с прикосновением к объекту:

  • touch() - выполняется, когда пользователь кликнул на объект;
  • touch_start() - выполняется, когда пользователь начал прикосновение к объекту;
  • touch_end() - выполняется, когда пользователь закончил прикосновение к объекту.

Теоретически нам подошел бы обычный touch(), но разработчики не рекомендуют им пользоваться. Связано это с какими-то ошибками в реализации и большой вероятностью задержки при выполнении. Во избежание подобных проблем лучше пользоваться именно событием touch_start(). Подробную информацию о нем вы сможете найти здесь.

Событие touch_start()

Синтаксис: touch_start(integer num_detected)
Описание: это событие, которое может быть вызвано многократно во время прикосновения (клика) пользователя (агента) на объект, содержащий скрипт. Общее количество агентов, начавших прикосновение, передается событию в параметре num_detected. Информация об агентах может быть собрана с помощью функций llDetected*. Одну из них мы рассмотрим ниже.

* Коснуться означает кликнуть на объект, а не наступить на него, врезаться или удариться головой. Для этого существуют соответствующие события коллизий (столкновений).

Рис. 2
Рис. 2

Помимо отработки прикосновения к объекту нам еще понадобится узнать, кто именно к нему прикоснулся. Для этого нам как раз пригодятся функции llDetected*, в частности, функция llDetectedName.

Функция llDetectedName

Синтаксис: string llDetectedName(integer number)
Описание: возвращает имя обнаруженного объекта под номером number. Возвратит пустую строку, если number не является действительным объектом. Если выявленная цель выходит за пределы региона или прекращает свое существование, то функция возвращает ключ цели вместо названия.

Как видим, функции нужно передать некоторые параметры перед вызовом. Мы подразумеваем, что только один агент прикоснулся к объекту, поэтому нужно вызвать функцию с первым прикоснувшимся к нему агентом. Нумерация целей в функциях llDetected* начинается с 0, то есть наш вызов должен выглядеть так: llDetectedName(0).

Все исходные данные для создания скрипта мы получили. Попробуем теперь выполнить все то, что мы теперь знаем. Создадим новый объект и скрипт, откроем скрипт на редактирование (смотрите LSL. Основы. Часть 1). В событии touch_start() сотрем команду:

llSay(0, "Touched.");

и напишем свою:

llSay(0,"Hello, "+llDetectedName(0));

В результате наш скрипт полностью должен смотреться вот так:

Рис. 3
Рис. 3

Нажимаем кнопку Save и закрываем окно редактирования скрипта и объекта. Проверяем работу скрипта - кликаем на объект или в круглом меню объекта выбираем команду Touch. В ответ объект напишет в общий чат приветствие с вашим именем.

Рис. 4
Рис. 4
Рис. 5
Рис. 5

Ну, как? Все работает? Поздравляю!

Это нужно знать!

В языке LSL очень важен регистр букв – как в названиях функций, так и в именах переменных. Иначе говоря, LSL регистрозависим! Например, если вы напишите название функции правильно, но промахнетесь с выбором регистра для буквы N в слове Name, то редактор не будет подсвечивать такую функцию и при выборе команды Save выдаст ошибку:

Рис. 6
Рис. 6
Рис. 7
Рис. 7

Ошибка не обязательно будет описана именно так, но она будет! Следите за подсветкой синтаксиса и уделяйте особое внимание регистру в переменных!

Также время от времени настоятельно рекомендую сохранять скрипты и не забывать при этом брать копию объекта со скриптом к себе в инвентарь. Это можно сделать через круглое меню объекта, выбрав More>

Рис. 8
Рис. 8

и затем Take Copy.

Рис. 9
Рис. 9

Потому что, если в этот момент полностью упадет симулятор или, например, начнется гриферская атака, которая также может привести к падению симулятора, вы с очень большой вероятностью рискуете потерять свой объект и весь код, который вами написан. Не пренебрегайте этим правилом – я и сам попадал в ситуации, когда симулятор падал, и я терял все, что лежало на земле и не успел сохранить или сделать копию.

Если же вы не хотите сохранять скрипт по причине нежелания допустить автоматический запуск скрипта, то можно сделать следующее. В правом нижнем углу редактора вы можете найти галочку с надписью Running, снимите ее, и при сохранении скрипт не будет автоматически запускаться. Главное, не забудьте ее потом поставить обратно.

Рис. 10
Рис. 10

Полезные ссылки:
http://www.lslwiki.net/lslwiki/wakka.php?wakka=touch_start
http://www.lslwiki.net/lslwiki/wakka.php?wakka=llDetectedName

Нет комментариев



Свежие комментарии


Alex пишет в Дмитрий Медведев в Second Life  

Radeus пишет в Дебют Chenkos Goldshark в клубе "Петергоф"  

Oxy Jewell пишет в Женитьба в Second Life  

Manoul Carnell пишет в Вредные советы  

Laurena Dryke пишет в Бал в Петергофе  

Oksana Quintessa пишет в Как победить чревовещание  

Ерёма пишет в Проблема...  

Mackseem пишет в Кто над нами вверх ногами?..  

dimm Torok пишет в Конкурс "Русская машинима Second Life"  

Ерёма пишет в Хелп ми глюк при входе!  

 
   

Галерея


Последнее добавленное изображение.
Самое популярное изображениеСлучайное изображение
 
     

Подписка

RSS лента статей

RSS лента новостей

RSS лента блогов

Партнеры

sm_sl.gif

rz_sl.gif

Статистика




Rambler's Top100

количество читателей онлайн и всего