Показано с 1 по 7 из 7

Тема: [Wiki] Начинаем учить Lua после PAWN

  1. #1
    Активный пользователь Аватар для Rock and Roll
    Регистрация
    23.09.2011
    Адрес
    Деревня
    Возраст
    28
    Сообщений
    282
    Репутация: 55

    Звание: скоро придёт к известности

    [Wiki] Начинаем учить Lua после PAWN

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


    Вначале, я скажу пару слов о Lua:

    Lua — интерпретируемый язык программирования. Является свободным языком, с открытыми исходными текстами на языке Си. Что это значит? Это значит, что официального компилятора, как для P-кода, тут нет. Код можно писать в такой программе как блокнот либо Notepad++(советую) или непосредственно в самой МТА.

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

    PHP код:
    Основные типы:

    nil (неопределенный)
    boolean (логический)
    number (числовой)
    string (строковый)
    function (
    функция)
    userdata (пользовательские данные)
    thread (поток)
    table (таблица

    В нашем первой ознакомительном уроке, я не буду касаться каждого типа. Мы рассмотрим 1,2,3,4 и 5 типы данных.

    Пару слов о переменных:
    Переменные в Lua(так же как и в pawn) бывают числовые, логические и строковые. Они делятся на 2 группы: Локальные и глобальные. Локальная переменная - это переменная внутри функции, которая будет использоваться только в ней. И глобальная - это переменная для всех функций.

    Примеры:

    PHP код:
    //Глобальные переменные

    new a;//Простая переменная
    new a[100];//Строковая переменная
    new 10;//Числовая переменная
    new bool:a;//Логическая переменная
    //Локальные переменные
    main
    {
            new 
    bool:a;


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

    Примеры переменных Lua

    PHP код:
    //Глобальные

    nil//Пустой тип переменной
    10//Значение переменной равно 10
    2.56//Числовое значение Float
    'String'//Строка
    "String"//Строка
    true//Логический тип
    //Локальная

    function Give(thePlayer)
        
    local id
    end 


    Если сравнивать Lua и P-код, то тут явно выигрывает Lua, так как она легче. Примеры с переменными я вам показал, теперь перейдём к функциям.

    В P-коде, функция обозначается stock'ом или public'ом. В Lua же это function. Все довольно легко:

    PHP код:
    stock mes()
    {
        new 
    10,8x+y,result;
        if(
    >= x*y)
        {
            
    printf("%d",z);
        }
        else
        {
            
    result -7;
            
    printf("%d",result);
        }
    }
    OnPlayerConnect(playerid)
    {
        
    stock mes()



    Думаю тут все понятно. Функция мес выведется при коннкте игрока. Элементарная арифметика. А теперь, напишем точно такой же код, но на Lua:

    PHP код:
    function joinHandler() 
         
    local x 10 
         local y 

         local z 
    x+
         local result 
    nil 
         
    if(>= x*y)then 
             
    print(y
         else 
             
    result -
             
    print(result
         
    end 
    end 
    addEventHandler
    ("onPlayerJoin"getRootElement(), joinHandler)//Это значит, что данная функция onPlayerJoin будет при коннекте 

    Как мы видим, Lua код более интересный, но P-код удобный в читаемости. Кому как удобнее.

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

    Итак, теперь сама команда. Возьмем команду создания оружки для игрока:


    PHP код:
    function GivePlayerWeapon(thePlayer,command,id,ammo)--Это название и константы функцииНазвание произвольноеа нативы такиеthePlayer playerid(функция для игрокаcommand это значитчто это командаid Это id оружияammo количество патронов
            local id
    ,ammo giveWeapon(thePlayer,tonumber(id),tonumber(ammo))--объявим 2 переменные оружки и патронов и приравняем их к функции дать оружиепри этом,tonumber это порядок ввода переменныхТо есть thePlayer это функция для игрокаеё мы не обозначаем как числовое значениеА к переменной id оружия присвоим первое значение tonumberЗначит когда игрок введет команду и введет ид оружиясработает tonumbers и обозначитчто оружие обозначается первымТоже самое и с патронамино они обозначены вторыми в спискезначит и вводить паторны нужна после ида оружия :D
            
    if(id == falsethen--Ставим условие на точто если игрок ввел не правильный id оружия
                    outputChatBox
    ("Неправильный синтаксис функции. Вы неправильно обозначили id оружия",thePlayer)--Отправим сообщение игроку
            end
    --объявим конец условию
            
    if(ammo == falsethen//Поставим условие на то, если игрок ввел не правильное количество патронов
                    
    outputChatBox("Неправильный синтаксис функции.Вы неправильно обозначили количество патронов",thePlayer)--Отправим сообщение игроку
            end
    --объявим конец условию
            
    end
    --Объявляем конец всей функции


    И теперь обозначим эту функцию командой:

    addCommandHandler("weap", GivePlayerWeapon)--В конец


    Все! Теперь константа этой команды /weap id ammo.

    Если писать эту же команду на P-коде, то там бы вышло в 2 раза больше строк(учитывай что здесь в мта стоит начальный командный процессор, а в P-коде это стрток. НЕ КАСАЮСЬ ZCMD и SSCANF)

    Вот и весь урок на сегодня. Будем продолжать.


    Авторские права:
    Урок by ARHI[V]IRUS

    Отдельное спасибо CoolDark





  2. #2
    Potato Аватар для SDraw
    Регистрация
    10.04.2011
    Сообщений
    1,327
    Репутация: 390

    Звание: - очень-очень хороший человек

    Re: Начинаем учить lua после pawn

    end...end...eeeend...PASCAL! ГЫ! xD
    Неплохо, но останусь на Pawn

  3. #3
    Активный пользователь Аватар для Rock and Roll
    Регистрация
    23.09.2011
    Адрес
    Деревня
    Возраст
    28
    Сообщений
    282
    Репутация: 55

    Звание: скоро придёт к известности

    Re: Начинаем учить lua после pawn

    Цитата Сообщение от SDraw Посмотреть сообщение
    end...end...eeeend...PASCAL! ГЫ! xD
    Неплохо, но останусь на Pawn
    Не царское это дело, менять языки





  4. #4
    Диванный критик
    Регистрация
    03.07.2011
    Адрес
    Вологда
    Возраст
    28
    Сообщений
    2,107
    Репутация: 269

    Звание: как роза среди колючек

    Re: Начинаем учить lua после pawn

    Ты в скайпе был оффлайн, поэтому пишу тут.
    Код:
    function joinHandler() 
            local x = 10 
            local y = 8 
            local z = x+y 
            local result = nil 
            if(z >= x*y)then 
            print(y) 
            else 
            result = z -7 
            print(result) 
            end 
    end 
    addEventHandler("onPlayerJoin", getRootElement(), joinHandler)//Это значит, что данная функция onPlayerJoin будет при коннекте

    Замени на это ( ты забыл стабуировать)
    Код:
    function joinHandler() 
         local x = 10 
         local y = 8 
         local z = x+y 
         local result = nil 
         if(z >= x*y)then 
             print(y) 
         else 
             result = z -7 
             print(result) 
         end 
    end 
    addEventHandler("onPlayerJoin", getRootElement(), joinHandler)//Это значит, что данная функция onPlayerJoin будет при коннекте

  5. #5
    Активный пользователь
    Регистрация
    27.09.2012
    Возраст
    28
    Сообщений
    153
    Репутация: 3

    Звание: пока не определено

    Re: [Wiki] Начинаем учить Lua после PAWN

    Да интересный и лёгкий по себе язык.

  6. #6
    кабанчик :3
    Регистрация
    20.01.2012
    Сообщений
    1,513
    Репутация: 231

    Звание: - весьма и весьма положительная личность

    Re: [Wiki] Начинаем учить Lua после PAWN

    Может возьмусь изучать , попробую точнее
    ...

  7. #7
    Пользователь Аватар для Defence_
    Регистрация
    20.07.2013
    Адрес
    Тольятти (163 Rus).
    Возраст
    25
    Сообщений
    36
    Репутация: 6

    Звание: пока не определено

    Re: [Wiki] Начинаем учить Lua после PAWN

    Попробую начать.

Похожие темы

  1. Продам БД Pawn-wiki.ru
    от Wentworth в разделе Беседка
    Ответов: 8
    Последнее сообщение: 24.08.2012, 16:36
  2. [Ищу] Оффлайн Pawn Wiki
    от Exactly в разделе Ищу скрипт/мод/функцию/программу/плагин...
    Ответов: 3
    Последнее сообщение: 01.08.2012, 13:39
  3. Начинаем писать мод!
    от Miaka в разделе Вопросы по скриптингу
    Ответов: 9
    Последнее сообщение: 22.08.2011, 17:50
  4. начинаем обучение html`у:)
    от Death в разделе HTML, JavaScript
    Ответов: 5
    Последнее сообщение: 17.07.2011, 08:34
  5. С чего начать учить?
    от Jokey в разделе HTML, JavaScript
    Ответов: 9
    Последнее сообщение: 05.07.2011, 00:00

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •