О сайте Druker (only 1 prim). User Ma Инструкция по и Руководство LSL д Руководство LSL д Руководство LSL д Обновлено: 29.06.2007 |
Содержание
Руководство LSL для программистов. Часть I.ПредисловиеЗдесь уже были опубликованы статьи "LSL для чайников". Однако многие из программистов, имеющих опыт разработки программ в других средах, могут испытывать затруднения при работе в LSL. Данная статья предназначена для ускорения освоения языка LSL профессионалами. Я сам занимаюсь освоением LSL уже второй месяц методом проб и ошибок, не обращаясь за советами практически ни к кому. Набил себе некоторые шишки и хочу с Вами ими поделиться :) Приводить тут примеры кода я не стану, т.к. есть очень хорошее руководство по LSL – http://lslwiki.net/lslwiki/, к которому я постоянно обращаюсь. Там навалом примеров. Итак, для начала рассмотрим, что это за язык и на что он похож. LSL is whatПохож он на C++. Синтаксис взят оттуда. Работа с переменными похожа на Перл, но без долларов впереди идентификаторов (часто путаюсь, после LSL забываю ставить доллары в Перле и наоборот). Синтаксис упрощ‘нный. Выпендриваться, как в C немного можно, но не сильно. Например, постинкремент i++ работает, а прединкремент --i – нет. Но это неважно, если Вы любите Delphi, то там и этого нет. Состояния (state) – это неплохое средство сглаживания сложности сложных программ. Однажды я написал программу, которая не влезла в 16 кбайт. Переписав ее под состояния, я смог значительно улучшить ее читабельность и сократить объем кода в два раза. ОтладкаОтладочных средств практически нет. Отладку можно делать вручную, отправляя значения переменных в канал владельца (llOwnerSay). Не рекомендуется общаться с программой на нулевом канале, чтобы не пугать случайных прохожих. Командовать лучше на одном из каналов, отправляя фразы в программу через чат: "/5 строка". Если Ваша программа где-то реально глючит, ставьте преждевременные вылеты из функций посредством "return;". А вообще, программы для LSL лучше готовить на бумаге, с расписыванием алгоритмов на блок-схемы. Ну, вспомните 80-ые годы, ЕС ЭВМ, Fortran. Эх, были времена… Как впихнуть данные в памятьДа очень просто, держите все в нотекартах. По понятиям программы нотекарта – текстовый файл с прямым доступом к строкам. Навалив туда информации, упорядоченной по строкам, можно обеспечить к ней прямой доступ. Максимальная длина одной строки в карте – 255. Объем нотекарты – 64Kb. Например, массив из 600 точек раскладываете в 50 строк по 12 точек в строке. И делов-то. Чтение: делаете состояние setup, которое читает строку с заданным номером из карты и возвращает ее в виде глобальной переменной. Да, приготовьтесь к тому, что некоторые данные придется готовить программно, чтобы потом подать их в нотекарту. Объем данных в LSL пока является игольным ушком, к которому надо найти лазейку из мира реального с безграничными объемами информации. Например, мой Дрюкер хранит в одной нотекарте специальным образом упакованный шрифт (trip.chr). Без упаковки шрифт занимал 78Kb не и не влазил в карту, а после побитного кодирования он стал весить 19Kb. Длина сегментов одного символа шрифта – максимум 64 пиксела. Это 6 бит. Еще 1 бит для служебного использования. Число 0..127 кодируем в латинский символ. Символ пишем в карту. Таким образом, в одну строку можно загнать 255 чисел в диапазоне 0..63 и 255 логических значений. И так далее. Где хранить кодПоскольку клиент SL склонен к падениям и вылетам в окно, то программы лучше держать на своем компьютере. И корректировать тоже на нем, используя редактор MS VC++ 6.0 или выше. Во-первых, он быстро работает, во-вторых, в нем есть замечательная кнопочка Ctrl+S, которая сохраняет код на винчестере мгновенно, а не висит по 15-20 секунд, как в SL-клиенте. Недостатком может быть только отстутствие подсветки конструкций языка LSL. Но это неважно. Настоящие программисты не ошибаются! :) Как правило, лишний минус или неправильно поставленная запятая приносит больше несчастий, чем неверно написанное слово "ша", которое заставит исправить LSL-компилятор. Вспомните старую историю про американские беспилотные истребители, которые из-за одного лишнего минуса в коде перевернулись на 180 градусов и в таком виде вернулись на базу. Одно из наблюдений: клиент валится чаще, если Ваша софтина сильно забивает память и кушает ресурсы сима. Наверное, это один из способов борьбы с неправильными программистами. Эта статья создана с помощью DokuWiki. Последняя версия статьи лежит здесь. Перепечатка возможна только при согласии автора. |
|