1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Туториал [Lua] Учимся вместе или "Хэппи Луа"

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем konfyciu98, 31 окт 2013.

?

Продолжать или не стоит этого делать?

  1. Да, давай!

    64 голосов
    81,0%
  2. Не, не надо!

    4 голосов
    5,1%
  3. Ну можно еще попробовать, а дальше посмотрим...

    11 голосов
    13,9%
  1. Автор темы
    konfyciu98

    konfyciu98 Старожил Пользователь

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Всем привет! Это будет серия уроков\туторов, в которой мы будем вместе учиться программировать на ЯП Lua. Я не великий писатель, и если вам будет что-то не понятно, то пишите, я помогу! Ну окей, начнем!

    Немного о Lua

    Lua ([луа], порт. «луна») — интерпретируемый язык программирования, разработанный подразделением Tecgraf Католического университета Рио-де-Жанейро.
    По возможностям, идеологии и реализации язык ближе всего к JavaScript, однако Lua отличается более мощными и гораздо более гибкими конструкциями. Хотя Lua не содержит понятия класса и объекта в явном виде, механизмы ООП, включая множественное наследование, легко реализуются с использованием метатаблиц.

    Язык широко используется для создания тиражируемого программного обеспечения (
    на нём написан графический интерфейс пакета Adobe Lightroom). Также получил известность как язык программирования уровней и расширений во многих играх (например, World of Warcraft) из-за удобства встраивания, скорости исполнения кода и лёгкости обучения.
    Спасибо википедии :D
    Что нам потребуется?
    • Настроение, желание
    • Среда разработки. Я буду использовать Eclipse от Koneki(не пугайтесь, это версия для Lua). Вы же можете использовать то, что вам по вкусу.
    • Хорошая музыка, чтоб не скучать!
    Урока первый. Входим в Lua.

    В Lua есть восемь основных типов данных:
    1. nil (неопределенный)
    2. boolean (логический)
    3. number (числовой)
    4. string (строковой)
    5. function (функция)
    6. userdata (пользовательские данные)
    7. thread (поток)
    8. table (таблица)
    Тип table(таблица) - таблицы являются самым важным типом данных в Lua и являются фундаментом для пользовательских типов данных, таких как структуры, массивы, списки, множества. Таблица в Lua представляет собой набор пар — (Ключ, Значение). Ключом может выступать значение любого типа, кроме nil.

    Обозначение переменных.
    В Луа переменные обозначаются следующим образом:

    Код:
    a = "Hi, guys"
    b = 3
    c = 2.5
    d = true
    Как вы могли заметить, то в обозначении переменной не пишется тип данных(если не так, то исправьте меня, буду только рад!). Ещё вы могли заметить, что после строки не ставилась точка с запятой[;]. Вы можете ей ставить, а можете и не ставить, разницы никакой не будет. Но лучше ставить, потому что при переходе на другой язык программирования вам придется ставить её обязательно!


    А теперь "Hello, world"!

    Для начала создадим проект в Eclipse
    first.PNG

    second.PNG

    У меня ошибка, так как такой проект уже создан, у вас все должно быть нормально, название проекта любое. Не забудьте поменять API 5.1 на 5.2!
    Далее нажимаем Finish и готово! В итоге у вас должно получиться такое


    hellofirst.PNG

    Теперь между local function main() и end пишем:
    Код:
    print("Hello, world!");
    hellosecond.PNG

    Жмем на зеленую стрелочку или нажимаем F5

    comp.PNG

    yes.PNG

    И вуаля! В консоли появилась строка "Hello, world!".

    finish.PNG


    На этом я хочу закончить этот урок, потренируйтесь в выводе строк, найдите музыку к следующему уроку и схомячьте пару печенек! До встречи!
     
    Последнее редактирование: 31 окт 2013
    MegaFlary, fromgate, Explorer_1991 и 8 другим нравится это.
  2. Автор темы
    konfyciu98

    konfyciu98 Старожил Пользователь

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Урок второй. Комментарии.

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

    Во всех языках программирования есть комментарии, которые позволяю оставлять для себя "метки". Эти "метки" компилятор пропускает, поэтому пользователь их никогда и не увидит, если только не заглянет в исходный код.

    В Lua есть два вида комментариев: однострочный и многострочный. Первый подходит для кратких
    "меток" и его чаще всего используют.

    Как же выглядят комментарии?

    Все очень просто! Вот однострочный:
    Код:
    -- Простой пример однострочного комментария
    Открывается такой комментарий при помощь двойного тире "--", закрывать его ничем не надо, главное запомнить, что такой комментарий всегда должен располагаться на одной строке.

    А вот так выглядит многострочный комментарий:
    Код:
    --[[Это многострочный комментарий!
    И поэтому я
    могу писать
    где угодно в пределах квадратных
    скобок]]
    Многострочный комментарий открывается при помощи двойного тире и двух квадратных скобок "--[[", а закрывается тоже при помощи квадратных скобок, но только направленных обратно "]]"

    Домашняя работа.
    Для закрепления данного материала попробуйте у себя составить вот такой рисунок, и скомпилируйте код. --F5 или зеленая стрелочка, если кто забыл ;)
    Если вы сделали все правильно, то у вас в консоли не будет ошибок и никакого текста не появится!
    comments.PNG
     
  3. Onny

    Onny Старожил Пользователь

    Баллы:
    153
    Skype:
    onny_404
    Имя в Minecraft:
    voiceiselectric
    Когда закончишь всю "серию" уроков?)
     
  4. Автор темы
    konfyciu98

    konfyciu98 Старожил Пользователь

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Я не знаю, а тебе зачем?
     
  5. Onny

    Onny Старожил Пользователь

    Баллы:
    153
    Skype:
    onny_404
    Имя в Minecraft:
    voiceiselectric
    Сам то как думаешь?)
     
    DavidShabaev нравится это.
  6. Автор темы
    konfyciu98

    konfyciu98 Старожил Пользователь

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Ты хочешь до этого времени не заходить на РБ, а когда наступит момент, зайти и сразу прочитать все. Я так это понял.
     
  7. Onny

    Onny Старожил Пользователь

    Баллы:
    153
    Skype:
    onny_404
    Имя в Minecraft:
    voiceiselectric
    Нет,Просто всем удобней читать готовый материал,чем ждать определенных частей.На РБ я заходить то все равно буду)
     
  8. Автор темы
    konfyciu98

    konfyciu98 Старожил Пользователь

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Я не знаю, моим фантазиям нет предела:)
     
    МиднайтЖелаетВамДобра и Onny нравится это.
  9. Onny

    Onny Старожил Пользователь

    Баллы:
    153
    Skype:
    onny_404
    Имя в Minecraft:
    voiceiselectric
    Тогда ждем-с :)
     
  10. Автор темы
    konfyciu98

    konfyciu98 Старожил Пользователь

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Переменные.

    Как я уже говорил, в Lua обозначать тип переменной не обязательно, он как и в PHP определяется автоматически.

    Несколько примеров:

    Код:
    
    a = “build”; --переменная a является типом String
    
    food = 3; -- пeременная food является типом number
    
    z = true; -- переменная z является типом boolean
    
    
    Вы уже догадались, как объявляются переменные.

    Имя переменной = значение;
    Код:
    Cooler = “cooler”;
    
    Значения для типов переменных.

    Тип string:
    Код:
    a = “Привет”; b = ‘Пока’; -- значение переменных для типа Stringпрописываются в двойных или одинарных кавычках
    
    Тип number:
    Код:
    a = 3; b = 4.6; -- в значение переменных типа Numberпрописывается либо целое число, либо число с плавающей точкой (5.6 и т.п)
    
    Тип boolean:
    Код:
    a = true; b = false; -- значение переменных типа Booleanпринимает значение либо true, либо false
    
    Тип nil:
    Код:
    a = nil;
    
    Это означает, что переменная только объявлена, но значение ей не присвоено!

    Тип table:

    Тип table– это самые обыкновенные массивы. Этому типу мы отдельно посвятим урок, а сейчас кратко.
    Код:
    a = {2,5,true,”zero”};
    b = {x=5,y=true, qwerty= “12345”};
    
    Тип function:

    Тип function– это самая обыкновенная функция. Этому типу мы тоже посвятим отдельный урок, а сейчас кратенько.
    Код:
    main = function()
    print(“Up & Down”);
    end
    
    Так-с, объявлять переменные научились, со значениями разобрались.

    Теперь зарезервированные названия, которые НЕЛЬЗЯ использовать в качестве названия переменной!
    • and
    • end
    • in
    • repeat
    • break
    • false
    • local
    • return
    • do
    • for
    • nil
    • then
    • else
    • function
    • not
    • true
    • elseif
    • if
    • or
    • until
    • while
    Сейчас маленькое дополнение...

    Как можно узнать тип переменной? Очень легко!
    Код:
    x = "number";
    y = 4.5;
    print(type(x)..type(y));
    
    Благодаря функции type(), мы можем узнать тип переменной! Круто, да?

    Домашнее задание.
    Создайте 2 переменные с любым название и с любым значением. Дополнительно создайте еще две переменные: у первой должно быть название in, а у другой значение nil.
    Теперь выведите каждую переменную отдельно на экран функцией print();
    Подсказка: чтобы разделить строки, используйте \n.
    Пример:
    Код:
    print("Привет!\nА это уже на другой строке");
    print(firstvar.."\n");
    
    Вопрос: возникли ли у вас ошибки при исполнении кода? Если да, то что это были за обишки и как вы с ними справились? А если нет, то просто отправьте веселый смайлик мне в лс :)
     
    DavidShabaev, Eskander и Dereku нравится это.
  11. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Действительно, стоящая тема. Только интересно, почему она в оффтопе - на некоторых ядах серверов применяется язык lua для написания плагинов - будет вполне удобно прочесть эту тему именно в мануалах, а не в оффтопике на предпоследней странице.
     
    МиднайтЖелаетВамДобра и Onny нравится это.
  12. wOnt

    wOnt Старожил Пользователь

    Баллы:
    173
    Skype:
    jeffries_
    Имя в Minecraft:
    wOnt_
    Сразу вопрос. Лаунчер на нём написать реально?
     
    slavik123123123 нравится это.
  13. Автор темы
    konfyciu98

    konfyciu98 Старожил Пользователь

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Я не хотел рисковать и поэтому написал в офф.топ.
    Да, наверное.
    Я видел, что само ядро писали на JavaScript! А Lua такой же скриптовой язык + к нему можно подключать библиотеки C. Тогда и на Lua можно написать лаунчер, ядро?
    Конкатенация и спец. символы.

    Код:
    u = 4;
    print("Это "..u.." урок!"); -- Выводом такого кода будет являться «Это 4 урок!»
    
    Код:
    s = 15;
    me = "Мне";
    print(me..s.."лет"); -- Выводом такого кода будет являться «Мне 15 лет»
    
    Так что же такое конкатенация? Если сказать по-простому, то это сложение строк, добавление к строке вывод переменной и т.д.

    Если вы раньше имели дело с Java, то вам будет понятно после вот такого примера:
    Код:
    Int b = 15;
    System.out.println("Мне " + b + " лет");
    
    В Lua конкатенация осуществляется при помощи двух точек (..).

    Я думаю, что вам уже все стало понятно! Теперь перейдем к следующему…

    Специальные символы

    В Lua есть ряд специальных символов(они есть в каждом ЯП). Специальные символы служат для таких целей, как:
    • Переход на новую строку
    • Табуляция
    • Вертикальная табуляция
    • Вывод в строке таких символов, как : \ ' " []
    • Вписываются спец. символы обратным слэшем и символом. Вот так вот: \n
    \ - обратный слэш
    n– символ

    Какие же есть спец символы?
    • \n – новая строка
    • \v – вертикальная табуляция
    • \t – горизонтальная табуляция
    • \\ - вывод \, + подумайте, почему так надо? Почему нельзя просто взять и вывести \?
    • \" – вывод "
    • \[,\] – вывод [ или ]
    • \' – вывод '

    Примеры:
    Код:
    print("Привет!\nЯ литл пони"); -- Выведет «Я литл пони» на новой строке
    print("Привет!\tХай!") –сделает табуляцию перед «Хай!»
    ch = "Чип?";
    dl = "Дейл!";
    print(ch.."\n"..dl); --Выведет переменную dl на новой строке.
    
    Потренируйтесь, перепишите это к себе, придумайте свои примеры, главное уловить суть!

    Домашнее задание.
    Создайте 3 переменные типа string. Выведите их в одном print() и после первой переменной сделайте вертикальную табуляция, а после второй выведите обратный слэш.
    Если кому-то непонятно, то пишите в лс! Просто мои задания и объяснение материала могут быть настолько запутанными, что понять это могу я, ибо моя сила рассказа такова...
     
    Последнее редактирование: 3 ноя 2013
    Aeou, Hephest и wOnt нравится это.
  14. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Кто не рискует, тот не пьёт лимонад.
    А разве lua может работать с графикой? Максимум можно на нём батник сделать... Да и не делался он для таких задач.
    Ядро на lua написать можно.
     
  15. Автор темы
    konfyciu98

    konfyciu98 Старожил Пользователь

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Pacman сойдет за пример графики?
     
    Последнее редактирование: 3 ноя 2013
    BleaZzZ нравится это.
  16. Tyzun

    Tyzun Старожил

    Баллы:
    153
    Skype:
    tyzun1997
    Имя в Minecraft:
    _Tyzun_
    Помню у меня был простой сервачок в МТА(кто незнает, это клиент для игры GTA San Andreas по сети) так вот, там скрипты на lua писались, хотя я сам не умел. Сечас планирую опять сделать там серв, уже получше и с хостингом, так что жду еще уроков)))
     
  17. Автор темы
    konfyciu98

    konfyciu98 Старожил Пользователь

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    А ты попробуй сейчас делать домашнее задание и просто практиковаться на скриптах и загружать их! Так у тебя в дальнейшем будет лучше получаться!
     
  18. Lemz0_

    Lemz0_ Новичок Заблокирован

    Баллы:
    23
    Пишите лаунчер на Lua :)
     
  19. Автор темы
    konfyciu98

    konfyciu98 Старожил Пользователь

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Меня @Dereku ввел в заблуждение! Действительно, может Lua и не сможет справится с графикой? Ведь ему присуще дополнения, не зря это встраиваемый язык!
     
  20. Lemz0_

    Lemz0_ Новичок Заблокирован

    Баллы:
    23
    Вроде бы Stalker на lua написан
     

Поделиться этой страницей