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

 

 

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

Патч загружен 9857 раз
Подробнее о русификаторе

 



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

Top-10


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

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

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

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

Халява, сэр!

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

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

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

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

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

 
     

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

Сейчас на сайте 11 пользователей и 16 гостей.

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

  • Не Свобода
  • Oksana Quintessa
  • SashaGopheller
  • Cranyak Homewood
  • Koshachii Xeno
  • dimm Torok
  • Elektrik
  • umnik
  • OksanaEv
  • Velga

Объявления


Конкурс "Русская машинима Second Life"

BCC present: HALLOWEEN

GOA party

Школа "SecondRussia"

Награждение участников конкурса "Здравствуй, школа!"

 
     

Афиша


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

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

Концерт из Санкт-Петербурга

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

Ежемесячная фотосессия: Cienega Soon

Международный день борьбы со СПИДом в Second Life

 
     

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

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

State, llResetScript, llGetFreeMemory

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

State

С официальным определением понятия state вы можете ознакомиться на соответствующих порталах, посвященных LSL, например, здесь.

Свое же объяснение я постараюсь сделать более простым. Даже если вы раньше имели опыт программирования, то вряд ли сталкивались с подобным. State - это что-то среднее между скриптом в скрипте и процедурами, правда, сходство поверхностное. Проще всего state показать на примере.

Пример 1
Пример 1

Разберемся с порядком выполнения скрипта. После того, как мы сохранили скрипт (reset), state default запускается на выполнение и ожидает срабатывания события прикосновения к объекту. Далее, после того, как к объекту прикоснулись, он выводит в общий чат "State default" и передает управление state my, который описан ниже. Тот, в свою очередь, опять ждет выполнения события touch_start, при его выполнении пишет в общий чат "state my" и возвращает управление обратно в state default, и так далее. Пример полностью рабочий, можете попробовать его в деле.

Вроде бы не сложно, но зачем это нужно, спросите вы? Немного терпения!
Теперь для примера напишем то же самое, но только в одном state. Для этого нам понадобится глобальная переменная и условия ветвления.

Пример 2
Пример 2

После сброса скрипта глобальной переменной "on" присваивается значение TRUE, и далее скрипт ожидает нажатия на объект. Как только это событие происходит, выполняется условие проверки глобальной переменной - если оно TRUE, то в общий чат выводится "One", переменной присваивается значение FALSE и обработка события прекращается до следующего нажатия на объект, и так далее. Помимо того, что мы усложнили скрипт, внеся в него глобальную переменную и условие, в этом случае мы потеряли и в простоте кода. Надеюсь, теперь основная суть state ясна.

Существуют два события, относящиеся к state. Это state_entry, которое выполняется при передаче управления в state (см. LSL. Основы. Часть 1), и state_end, которое выполняется при завершении работы текущего state. Следует помнить, что событие state_end выполнится раньше события state_start в state, которому передается управление. Также напомню, что в любом скрипте обязательно должен присутствовать state default, при этом перед ним не нужно писать служебное слово state, иначе компилятор вернет ошибку.

Кроме того, не забывайте, что событие state_entry не срабатывает, когда вы достаете предмет из инвентаря, кладете на землю или одеваете на себя. Это очень частая ошибка новичков. Для подобной реакции объекта существует событие on_rez() и/или функция llResetScrpt().

Пример 3
Пример 3

В данном случае как раз и достигается нужный эффект - после того как вы достанете объект из инвентаря, сработает событие on_rez и запустится функция llResetScript.

Максимальное количество state в одном скрипте ограничено количеством 144, включая default state.

llResetScript

Синтаксис: llResetScript()
Описание: Происходит сброс скрипта, все значения устанавливаются по умолчанию, все ожидающие события останавливаются. Управление передается в default state, и выполняется событие state_entry, если оно описано. Совместима с функцией llResetOtherScript. Выполнить llResetScript также можно из редактора скриптов, нажав на кнопку Reset.

Ограничения

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

Пример 4
Пример 4

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

Комментарии
Dryke 17:20, 28.05.07 ссылка

Поскольку это всё пишется для неспециалистов, то стоило бы заострить внимание на определении слова "скрипт" - в каком контексте оно означает программу как действие, в каком текст с набором инструкций. Скрипт в скрипте, память для скриптов, сохранили скрипт.
А state, на мой взгляд, для непрограммистов удобнее представлять как программу. Событийно-ориентированную (ещё одно понятие, требующее разжевывания). Переход из одного state в другой - одна программа запускает другую и сама завершается.
Ну вот такие пара мыслей, связанных с наблюдениями за начинающими програмёрами.

У Линденов получилась весьма оригинальная схема наборов событийных обработчиков. Кстати, скрипт - это набор интерпретируемых инструкций. А в lsl текст программы компилируется в промежуточный код.

Ответить



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


SashaGopheller пишет в Количество участков в Second Life продолжает падать  

Elektrik пишет в Oksana Quintessa RL  

Koshachii Xeno пишет в LindenLab забанили Вторую Москву  

umnik пишет в Великая стена острова Mao   

Koshachii Xeno пишет в Пираты на Luxory Warehouse!  

Marie пишет в Не смотри на девок, смотри на приборы ;)  

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

Oksana Quintessa пишет в The Three Graces  

Oxy Jewell пишет в Oxy Jewell: Эфирные отголоски забытых мечтаний  

Manoul Carnell пишет в Фонтан мыслей Twitter от Daden  

 
   

Галерея


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

Каталог

русскоязычных ресурсов, посвященных Second Life
 
     

Подписка

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

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

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

Партнеры

sm_sl.gif

rz_sl.gif

Статистика




Rambler's Top100

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