[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
Результаты поиска
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
у меня есть странное желание делиться знаниями. собственно поэтому появился этот сайт)

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
статистика для меня пока неожиданная)
для проголосовавших: кто хочет, чтобы я проводил на сайте уроки по lua?
Начнём с вещей, никак не связанных с Worms, с помощью которых вы поймёте, что такое lua и как изучать скрипты в Worms4(типы данных, управляющие структуры, таблицы, метатаблицы, окружения, реализация объектов и наследования, разные фичи для понимания и анализа того, что делает lua код).
Затем, получив достаточные знания, вы поймёте, как работает lua в worms4, а ещё самое важное - вы поймёте, как исследовать возможности, которые вам даёт lua в worms4. К тому же у вас пропадёт боязнь пробовать делать lua моды.

По второй части(lua в worms4) мне кто-нибудь(например Krash) будет помогать, ибо мне это не так интересно=) Я могу объяснить базовые принципы, конкретные хорошие примеры я привести не смогу.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
нельзя. пробуй использовать такой код:
Code
--Вызывает функцию f
--При возникновении ошибки при выполнении функции
--на панель комментариев будет выведено описание
--ошибки с указанием файла и строки, где она произошла
function DebugCall(f)
   res,err=pcall(f)
   if not res then
     SetData("Text.TestComment",err)
     lib_Comment("Text.TestComment")
   end
end

-----------------------------
--Пример использования:
--testedFunction - функция, в которой может быть ошибка
--callerFunction  - функция, из которой вызывается testedFunction(в Worms это к примеру TurnStarted)
function testedFunction()
   --тут где-то ошибка
end

function callerFunction()
   --Безопасный вызов
   DebugCall(testedFunction )
end

и проверяй любые варианты, и смотри в чём ошибка


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
сначала мне надо, чтобы хотя бы 4 человека сказали, что будут участвовать в обучении, ибо я хочу его сделать в форме диалога, а не в форме справочника.
То есть сделаю ветку на форуме, там буду делать темы, примерно такие:
Intro:
Урок 1. Что такое lua? Настройка интерпретатора. Первая программа.
Базовые знания:
Урок 2. Переменные.
Урок 3. Управляющие структуры.
Урок 4. Таблицы.
Урок 5. Функции. Локальные переменные.
Урок 6. Стандартные модули.
Урок 7. Немного об алгоритмах
Расширенные знания:
Урок 8. Метатаблицы
Урок 9. ООП на lua
Урок 10. Модули.
Урок 11. Окружения.
Lua в Worms:
Урок 12. Об интерпетаторе в Worms
Урок 13. Анализ действий Worms
Урок 14. Worms API
Урок 15*. Некоторые моды.

Уроки буду проводить в форме диалога с этими 3-4 человеками. Т.е. написал основную инфу по теме, жду ответов учеников, отвечаю на вопросы, по возможности глубже всё это дело раскрываю.

Вообще уроки хочу организовать, чтобы привести и свои знания в порядок)

=============================================
Оставляем заявки на обучение=)
Только обязательное условие - не халявить с этим, активно участвовать и не кидать на половине процесса.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
нужен ещё народ.

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
это очень нужно, но я не помогу.

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
я не твоё изучение редактора имел ввиду, а тему

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
народ, проголосовавший за "Не знаю, но хочу изучить" меня удивляет) вы чё молчите?

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
то есть начинать?? мне нужен активный просмотр того, что я буду писать, а не так, чтобы я написал, а в ответ никакой реакции

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Раздел полностью посвящён последовательному изучению lua.
Изучение разобьём на несколько уроков. Постепенно изучим всё что надо.
Каждый урок будет состоять сначала из моего бреда, который надо прочитать и попробовать на практике, а потом из общих обсуждений и вопросов.
План уроков примерно такой(буду менять по ходу написания уроков):
Intro:
Урок 1. Что такое lua? Общий трёп.
Урок 2. Установка и настройка интерпретатора. Первая программа.
Базовые знания:
Урок 3. Переменные.
Урок 4. Управляющие структуры.
Урок 5. Таблицы.
Урок 6. Функции. Локальные переменные.
Урок 7. Стандартные модули.
Урок 8. Немного об алгоритмах
Расширенные знания:
Урок 9. Метатаблицы
Урок 10*. ООП на lua
Урок 11. Модули.
Урок 12. Окружения.
Lua в Worms:
Урок 13. Об интерпетаторе в Worms
Урок 14. Анализ действий Worms
Урок 15. Worms API
Урок 16*. Некоторые моды.

* - не уверен, будут ли они


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Итак, начинаем наше обучение=)
Для начала надо разобраться с тем, что такое lua, в чём его "сила", что даст его знание. Ну и как работать с lua.

Lua - это язык программирования. Его создали какие-то студенты или профессора, что-то такое. Эти студенты были португальцами, поэтому они назвали свой язык Lua, что переводится как "луна".
Но это никому интересно, поэтому сразу о том, что такое lua в плане применения. Lua - язык для написания скриптов. Под скриптом понимается небольшая программка, которая исполняется другой программой. При этом скрипт расширяет функции основной программы, делает её более гибкой и динамичной.

В нашем случае основная программа - Worms. Разработчики Worms(дядьки, постоянно глотающие пиво и сидящие в Team17) захотели, чтобы каждую карту можно было описывать не в коде самой игры, а отдельно. Зачем? Много причин:
1) для того чтобы получить программу, её нужно скомпилировать. Компиляция - анализ каждой строчки файла, проверка синтаксиса и создание большого exe файла. Конечно это очень долго, поэтому разумно отделить такие мелочи, как карты от основной игры.
2) возможность описывать уровни на более удобном языке. Ведь сама игра написана на C++, а это, хотя и мощный и быстрый язык, но не оч гибкий(все переменные имеют точный тип, при любой ошибке C++ оч сильно на неё ругается). Короче нужно что-то более податливое для быстрого описания уровней.

Поэтому эти дядьки(а они умные программисты, хотя и пьют много пива) зашли на сайт lua.org взяли код lua интерпретатора(а он бесплатен, доступен и открыт) и присобачили к своей игре.

Естественно lua есть не только в Worms. Поглядите список игр на википедии, и это не полный список!

По lua есть хороши описания, есть много разработок(я нашёл на нём даже сервер-kepler называется если что).

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

Мы будем пользоваться двумя интерпретаторами:
1) Стандартный интерпретатор Lua
2) Интерпрератор Worms

Стандартный интерпретатор Lua - это чёрное досовское окошко, в котором нет ничего лишнего, но есть всё что надо, поэтому он идеален для понимания lua. В нём мы будем пробовать всё, что изучаем. А поскольку язык один, то всё что мы научимся делать можно будет применять в worms(с некоторыми оговорками)

Теперь пару слов о том, что мы можем добиться от программы. Вообще, у всех часто возникают вопросы: "а можно ли?" "а это реально сделать?" - на такие вопросы сразу отвечаю - чудес не бывает. Поясню на таком маленьком диалоге(Васи и Пети):
Вася: Можно ли червя во время игры с помощью скрипта переместить в любую произвольную точку??
Петя: Нет
Вася: Почему??? Было бы классно!
Петя: Потому что интепретатор не даёт такой возможности
Вася: А если поковыряться в exe?
Петя: Ковыряйся!
Вася: Нууу!
Примерно то же я отвечу, если вы будете приставать ко мне с такими вопросами, поэтому объясняю сразу.
Интерпретатор-прослойка между игрой и скриптом. В игре можно многое. Т.е. там реально существует возможность переместить червя. НО! чтобы в скрипте была эта возможность интерпретатор должен её предоставить скрипту. Это означает, что ленивые дядьки, вовсю пьющие пиво в Team17 должны пошевелить ручками и добавить это в lua, НО! они ленивые и пьяные, поэтому:
1) чтобы сделать такую возможность надо было достаточно долго посидеть над кодом и они это не стали делать
2) если даже делать такую возможность, она может вызвать кучу ошибок, а ошибки это плохо
3) lua они добавили не для нас(людей, которые пытаются извращаться над игрой), а для себя- то есть чтобы быстро описывать карты и ничего кроме этого!

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

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

Кроме того скрипт может менять объекты в игре. К примеру он может взять и оживить червя, добавить ему здоровье, убрать у него оружие, кинуть ящик, ещё кучу всего.

Вот так.

Ну о червях достаточно, более детально поговорим ближе к концу обучения. Для того, чтобы всё это понять нам нужны базовые знания по луа, так что будем их получать!

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

А сейчас жду мнений и отзывов. Что непонятно?



[Список уроков]|[Следующий урок]


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Quote
тут на тебе и так точно было сказано что это C++ ... НЕПОНЯТНО =)

Верный признак C++ - dll-ки, которые используются игрой. Насколько я помню в папке есть msvcrt.dll - это библиотека исполнения языка C++. Ещё сам луа написан на чистом ANSI C. Вот все доказательства.

А про позицию червя - ты пробовал проверить тип контейнера-вектора?? т.е. вывести type(worm.position)? если нет, то скорее всего на экране будет userdata - это неизвестный для lua тип данных, который может использовать только внешняя программа, но ещё его может использовать скрипт, если внешняя программа через интерпретатор даёт функции для работы с ним.


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Приступим ко второму уроку. Сегодня рассмотрим, как настроить интерпретатор lua, как запускать скрипты(я вам покажу хороший текстовый редактор). Ну и в конце урока напишем первую программу=)

Итак, первое что надо для написания программ - текстовый редактор. Это может быть блокнот, но лучше использовать какие-то другие редакторы, ибо они умеют подсвечивать текст и к примеру выполнять программы. Обычно я пользуюсь редактором SciTE(сборка от RuBoard). Она даёт возможность:
1) гибких настроек
2) подсветку синтаксиса
3) хороший поиск
4) возможность запуска компилятора/интерпретатора с выводом в окно редактора

Скачать можно тут(самая свежая версия на момент написания статьи) сам адрес проекта scite-ru.googlecode.com, а все версии проекта в разделе Downlods.
При установке указываем папку, ждём распаковки, в следующем окне выбираем русский язык, и к строке txt;php;h;cpp;c дописываем txt;php;h;cpp;c;lua (ну и любые другие расширения файлов, которые вы хотите открывать этой прогой) После установки радуемся этому факту)

Теперь надо скачать интерпретатор lua. Самая новая версия луа на момент написания статьи - Lua 5.1.4. В Worms используется Lua 5.0.1, но это не так важно

Итак, качаем lua тут. Распаковываем lua в папку в надёжном месте, к примеру C:\lua. Для удобства переименуйте все exe файлы так, чтобы убрать суффикс "5.1", т.е. lua5.1.exe переименуйте в lua.exe (dll файлы не трогайте!)
Теперь попробуйте запустить файл lua.exe если не выйдет, то пишите в комментах, какими ругнулся Windows и я объясню, что надо сделать.

Настроим системные переменные(чтобы система и луа знали, где искать файлы). Щёлкаем правой мышкой на "Мой компьютер", потом в меню выбираем "Свойства". Потом в окне переходим на вкладку "Дополнительно" и щёлкаем по кнопке "Переменные среды". В этом окне во втором списке ищем Path и дважды щёлкаем по ней. К тексту во втором текстовом поле допишите ";C:\lua". Потом Ок. Теперь щёлкните "Создать" под вторым списком. В этом окне в первом текстовом поле введите LUA_DIR. Во втором поле введите C:\lua. Нажмите Ок. Аналогично создадите переменную LUA_PATH со значением "?.lua;%LUA_DIR%\?.lua;%LUA_DIR%\L_DIR\?.lua" и переменную LUA_CPATH со значением "?.dll;%LUA_DIR%\?.dll;%LUA_DIR%\C_DIR\?.dll"
LUA_DIR- папка, где находится lua
LUA_PATH - папки(точнее шаблоны), где ищутся lua файлы
LUA_CPATH - папки(точнее шаблоны), где ищутся dll файлы(модули)

Теперь настроим SciTE для работы с lua.

Откроем SciTE. В нём в меню найдём "Настройки" -> "Открыть lua.properties". Это файл с настроками lua. Сейчас настроем запуск lua файлов. Ищем строку, начинающуюся со слов command.compile.*.lua и заменяем её содержимое на:

Code
command.compile.*.lua=luac.exe -o "$(FileName).luc" "$(FilePath)"

Так же изменяем строку, начинающуюся со слов command.go.*.lua

Code
command.go.*.lua=lua.exe "$(FilePath)"

Сохраните этот файл.

Ура, всё настроили! Теперь напишем нашу первую программу. Будет она называться Hello World! Ну и задача у ней простая - вывести эту надпись на экран.

Создаём новый файл в SciTE Hello.lua и в нём пишем:

Code
print("Hello world!")

Теперь жмём F5 или выбираем в меню "Tools" -> "Выполнить" или зелёную стрелочку в панели под меню.
Внизу окна должна появиться панелька, к оторой будет примерно такой текст:
Code
>lua.exe "С:\Hello.lua"
Hello world!
>Exit code: 0    Time: 0.365

Exit code: 0 - значит всё ok. Если Exit code: 1(или любое другое число) - значит есть ошибка

Ну вот, поздравляю вас с вашем первым скриптом!

Если по уроку что-то непонятно попробуйте прочитать эту инструкцию



[Прошлый урок]|[Список уроков]|[Следующий урок]


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
1) ты SciTE обновил, или он старый?
2) если в файле нет настройки, попробуй её добавить - ничего страшного не произойдёт
3) в какой именно момент эта ошибка вылазит?

Кто ещё настроил lua? Мне нужны отчёты!


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Так, если в lua.properties вы нашли строку, которая начинается со слов:
Code
command.go.subsystem.*.lua=<тут что-то>

то допишите вначале #
Code
#command.go.subsystem.*.lua=<тут что-то>

Это всё исправит. (Добавил к тексту урока)


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Следующий урок будет завтра днём или вечером. Щас не хочу что-то рассказывать

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
То админы(в частности To hitman):
не бойтесь поправлять "дизайн" моих уроков=)
To krash(и to все):
не бойся задавать вопросы, где неясно, ибо:
1) ты поймёшь сам
2) я хочу организовать уроки именно в форме дискуссии
3) уроки станут своебразным faq

В этом уроке мы сделали вот что:
для запуска lua из консоли(а также из SciTE) добавили все пути в системную переменную PATH.
Сам Lua использует для поиска файлов свои пути - LUA_PATH и LUA_CPATH
LUA_PATH - директории, где лежат lua файлы
LUA_CPATH - где лежат dll файлы
луа ищет файлы, когда он загружает не встроенный в него модуль(с помощью функции require). сначала он просматривает lua файлы, потом dll.
Вы всё потом поймёте, когда я про модули расскажу


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
Это будет первым уроком, где мы что-то реальное будем писать.

Для начала небольшой трёп про то, что значит писать программу.
Небольшой вопрос: что такое программа, ну и вообще, что, по-вашему, значит написать программу?
Вот я считаю, что правильный ответ примерно такой:
Написать программу - значит объяснить компу, как решать какую-то задачу. Чтобы объяснить кому-то что-то, надо сначала представлять, как бы ты сам это делал. Таким образом, чтобы писать программу нужно продумать последовательность своих действий(алгоритм), а потом уже что-то программировать.

Для описания своего алгоритма часто требуется хранить что-то во время работы. Для этого существует такое понятие как переменная. Переменная - это некоторая область памяти в компьютере, которая имеет имя и значение, которое в ней хранится.

В lua переменную объявить очень легко. Вот так:

Code
имя переменной = значение

К примеру,
Code
a=10

При этом будет создана переменная с именем a, и значением 10

Переменные были бы бесполезными, если бы нельзя было бы узнать, что в ней находится. Поэтому имя переменной может участвовать в любых выражениях, к примеру математических:

Code
a=10
b=a+40

b теперь будет равна 50.

Вы наверно щас задаётесь вопросом: "где это попробовать??". Объясняю. Любой код, который я тут привожу для примеров надо написать в SciTE, сохранить как lua файл, а потом запустить нажатием F5 или другими способами(смотри урок 2). Внизу в консольке будет написано, что выводит программа.
Под "выводит программа" понимается вызов функции print:

Code
a=10
print(a)
b=a+40
print(b)

print - это функция(это понятие вы поймёте позже, сейчас запомните, что в функцию в скобки можно подставлять параметры, и она что-то с ними сделает), которая выводит на экран значение того, что в неё передали. В нашем примере на экран выведено:
Code
10
50

Итак с переменными более или менее ясно. Важно сказать, что у переменных кроме имени и значения есть ещё и тип. В lua 8 типов данных:
nil (неопределенный)
boolean (логический)
number (числовой)
string (строковый)
function (функция)
userdata (пользовательские данные)
thread (поток)
table (таблица)

Пробежимся по типам данных:
1. nil - буквально означает "ничего". Это одновременно и тип данных и значение. Попробуйте следующий код:

Code
print(c)

на экран будет выведено:
Code
nil

это означает, что нету переменной c - мы её не объявили(точнее не задали) с помощью оператора =
Главная задача nil значения - поиск ошибок. Если вы сделаете так:
Code
print(nil+2)

то получите, что lua на вас ругнётся(потому что нельзя прибавлять 2 к ничему!), а вы узнаете, что забыли задать переменную.

2. boolean - тип данных, который означает правду или неправду(true или false).
Он используется при сравнении. К примеру выражение 1>2 вернёт false, потому что 1 меньше двойки. выражение 9==9 вернёт true, потому что 9 равно 9.
Задать булеву переменную можно так:

Code
a=true
b=false
c=10<4 or 2==2
print(a,b,c)

Как видите, для булевых переменных можно писать операции or, а также and и not. Правила, по которым они действуют описаны ниже:
Quote
true and true = true
true and false = false
false and true = false
false and false = false

true or true = true
true or false = true
false or true = true
false or false = false

not true = false
not false = true

Также есть операции сравнения между числами:

Quote
num1 == num2
num1 ~= num2
num1 < num2
num1 > num2
num1 <= num2
num1 >= num2

!= - это неравенство
== - равенство

Для строк текста(смотри ниже тип string) работают операторы ~= и ==, к примеру

Code
print("Вася"=="Вася")
print("Вася"=="вася")
print("Вася"~="Петя")

выведет на экран:
Code
true
false
true

3. number - тип данных, который используется для хранения чисел. Числа записываются как обычно. Десятичные дроби записываются с разделителем ".". Примеры:

Code
a=20
b=42.234
c=-124.412

Для чисел определены математические операции:
+ сложение
- вычитание
* умножение
/ деление
% деление по модулю
^ возведение в степень
примеры:

Code
print(10+20)
print(10-20)
print(10*20)
print(10/20)
print(39%7)
print(2^5)

будет выведено:
Code
30
-10
200
0.5
4
32

Деление по модулю - это получение остатка от деления(вспомните школьное деление столбиком)
При возведении в степень первое число возводится в степень второго.

4. string - строка текста. Под ней понимается какая-то последовательность букв или символов. Обычно строка задаётся в кавычках

Code
name="Вася"
print(name)

На экране появится гордая надпись Вася=)
Строки можно объединять с помощью оператора ..("две точки", а официально называется конкатенация или склейка).
Code
boy="Вася"
girl="Жанна"
print(boy.."+"..girl.."=love")

Выведет на экран:
Code
Вася+Жанна=love

Часто надо вставить в текст специальный символ(перенос строки, кавычки, слэш). Для этого этот символ экранируют. То есть чтобы специальный символ ничего специального не значил перед ним ставят слэш.
Вот кратенький спискок самого нужного:
\n - вставка переноса на новую строку
\" - вставка кавычки
\\ - вставка слэша.
К примеру, чтобы записать текст C:\gerich\docs\ в lua надо писать так:

Code
path="C:\\gerich\\docs\\"

Чтобы вставить перенос строки:
Code
multiline="Я на первой строке\nА я на второй!"
print(multiline)

Код выведет на экран:
Code
Я на первой строке
А я на второй!

Надписи на разных строках.
Также можно многострочный текст можно писать внутри конструкции [[длинный-длинный текст]].
Вот так:
Code
multiline=[[BOX2D

Физический движок для создания rigidbody физики в 2D играх.
Движок-opensource, т.е. исходный код доступен каждому.
Исходный код на C++ уже портирован на несколько языков программирования: C#, Java, ActionScript, Python, Scala.
В основном применяется во флэш играх(в них используется ActionScript порт движка BOX2DFLASHAS3).
Для использования требуются умение программировать и знание языка.]]
print(multiline)

Этот код выведет этот текст.
5. function - особый тип данных. Он позволяет хранить в переменной не данные, а действие!
Подробней на этом типе данных мы остановимся в следующих уроках. А сейчас, чтобы вы хоть чуть-чуть поняли что это скажу: print- это функция, то есть это переменная типа function, в которой хранится действие(напечатать на экране то, что в неё передали).
6. userdata - Для lua этот тип данных - чёрный ящик. Это просто какие-то данные. Вы ничего не можете сделать с ними, кроме того, как передать эти данные в функцию или получить их и сохранить в переменной.
У вас возникает вопрос, зачем этот тип данных? Он нужен для внешней программы.

7. thread - ненужный для нас тип данных, позволяющий делать псевдо-потоки в lua

8. table - один из самых важных типов в lua. Почти всё в lua использует таблицы(даже все переменные хранятся в таблице). Таблица в lua не та, что в Excel'е - в ней всего две строчки: первая - заголовок, вторая - значения, но сколько уогдно колонок.
Про таблицы мы поговорим в следующих уроках гораздо подробнее, поэтому этот урок почти подходит к концу.

Напоследок напомню, что вам из этого урока надо запомнить:
1) как объявлять переменную
2) что такое тип данных
3) как работать с числами, логическими и строковыми значениями.

Ну и совсем на последок скажу ещё что такое оператор type. С его помощью можно узнать тип переменной, к примеру:

Code
a=1
b=true
c="Hello"
e=function(z)
       return z+1
     end
d=nil
e={}
print(type(a))
print(type(b))
print(type(c))
print(type(d))
print(type(e))

выведет
Code
number
boolean
string
function
nil
table



[Прошлый урок]|[Список уроков]|[Следующий урок]


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
во-первых число и строку сравнивать нельзя. Нельзя строку "Вася" сравнить с 10.
Но если точно уверен в том, что в строке число, то так:
Code
a = 11  
b = "13"  
c = a < tonumber(b)  
print(c)

К тому же можно сделать проверку:

Code
s = "13"  
n = tonumber(s)
if n then
   print("is number")
else
   print("can't convert")
end  

Ещё есть обратная функция tostring(). Хотя вот такая запись:

Code
print("Вася ростом "..210.."см")

работает


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Админы
Сообщений: 1240
Реп: 60 / Инв: 5
очередные лохотроны?))

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Поиск: