Содержание   <<< Назад   Далее >>>

Lua скрипты игрового режима



Вся игровая механика ядра работает на Lua-скриптах. Это обработчики, методы воздействия, различные условия, респаун (рождение) мобов и объектов в мире, изменения условий, и т.д. - все это доступно билдеру. Все это создается из Lua-скриптов.

В системе Lua-скриптов также, как и в системе динамического описания, существует понятие сцены. В сцену собираются все сущности, которые могут учавствовать в работе скрипта. Это : персонаж, моб, объект, мир, цель (персонаж, моб, объект) и т.д. Благодаря сцене, в системе скриптов ядра существуют несколько глобальных объектов :
  • account - связан с текущим аккаунтом игрока, находящимся в сцене (методы)
  • actor - связан с текущим персонажем (методы)
  • room - текущая комната (методы)
  • mob - моб (методы)
  • object - объект (методы)
  • prototype - прототип (методы)
  • world - мир (методы)
  • group - группа (методы)


  • Следует заметить, что не все глобальные объекты доступны в любом игровом скрипте. Что и где будет доступно, будет сказано. Необходимость в ограничении доступа связана с безопасностью и надежностью ядра.

    Синтаксис Lua-скриптов, для работы со стейтами(свойствами) и методами сущностей такой:
    
    actor.state = actor.state2
    actor:Send("текст")
    
    Обращение к стейту(свойству) идет через точку, вызов метода через двоеточие.

    Обозначения :
  • "параметр в кавычках" - обозначает строковый параметр
  • параметр без кавычек - обозначает числовой параметр
  • параметр, обрамленный '*' - обозначает любой параметр, как строку, так и число


  • Возвращаемые значения :
  • void - метод не возвращает какие-либо значения
  • bool - метод возвращает значения логического типа: true - истина, false - ложь.
  • string - метод возвращает строковое значение(строку)
  • int - метод возвращает целочисленное значение.
  • actor, object, mob, и т.д. - сложные типы 'значений', которые представляют собой сложные объекты(сущности) со своими методами и функциями. О всех таких значениях смотрите далее. (Ньюанс !!! Функции, вместо типов, возвращающих 'сложные значения', могут возращать значение nil, что означает отсутствие значения. Это происходит при ошибках в параметрах методов (обычно - по количеству параметров)).
  • [...] - метод возвращает массив значений/сущностей. Тип возвращаемых значений обрамлен квадратными скобками.
  • any - метод обязательно возвращает значение любого типа. Это может быть nil, bool, string, int, actor, object, mob, и т.д.


  • Работа с массивами:
    В Lua-скриптах встречаются методы и функции, которые возвращают или оперируют со списком значений/сущностей/объектов и т.д. В Lua-скриптах они названы массивами (что они собственно и представляют). Работа с массивами идет через метод индексации - [] (квадратные скобки). В скобках указывается индекс интересующего значения. Размер массива можно получить с помощью метода GetSize. Индекс считается от 1.

    массив

    any|nil [index]
    Назначение:
    Возвращает значение из массива по заданному индексу. Индекс может принимать значение от 1 до размера массива (см GetSize).
    Параметры:
    index - индекс интересующего значения
    Возвращаемые значения:
    any - значение по заданному индексу.
    nil - если значение индекса некорректно.


    int GetSize()
    Назначение:
    Возвращает количество значений в массиве.
    Параметры:
    Нет параметров.
    Возвращаемые значения:
    int - число, количество значений в массиве (максимально возможный индекс).


    Пример использования:
    
    local al = [actor] - функция, возвращающая массив персонажей
    local ac = al:GetSize()
    actor:Send("Список персонажей:~")
    for i= 1,ac do
       actor:SendEx(al[i], "[name]~")      
    end
    


    bool IsEmpty()
    Назначение:
    Возвращает истину, если массив пуст (в нем отсутствуют элементы).
    Параметры:
    Нет параметров.
    Возвращаемые значения:
    true - если в массиве нет элементов (размер массива равен 0).
    false - в случае, если в массиве есть элементы (размер массива больше 0).


    bool Add(actor|object|mob|string|int)
    Назначение:
    Добавляет в массив сущность, строку, число.
    Параметры:
    actor|object|mob|string|int - сущность, строка или число, которое необходимо добавить в массив.
    Возвращаемые значения:
    true - если сущность, строка или число была успешно добавлена в массив.
    false - в случае ошибки и параметр не был добавлен в массив.


    bool Delete(index)
    Назначение:
    Удаляет из массива сущность по заданному индексу.
    Параметры:
    index - число, обозначающая индекс элемента массива, который необходимо удалить.
    Возвращаемые значения:
    true - в случае успешного удаления элемента массива.
    false - в случае ошибки (неверный индекс удаляемого элемента).




    Общие функции и методы по работе с типами

    bool isMob(parameter)
    Назначение:
    Осуществляет проверку параметра - является ли он мобом.
    Параметры:
    parameter - проверяемая сущность.
    Возвращаемые значения:
    true - если параметр моб.
    false - если параметр мобом не является.


    bool isMobPrototype(parameter)
    Назначение:
    Осуществляет проверку параметра - является ли он прототипом моба.
    Параметры:
    parameter - проверяемая сущность.
    Возвращаемые значения:
    true - если параметр прототип моба.
    false - если параметр прототипом моба не является.


    bool isObject(parameter)
    Назначение:
    Осуществляет проверку параметра - является ли он объектом.
    Параметры:
    parameter - проверяемая сущность.
    Возвращаемые значения:
    true - если параметр объект.
    false - если параметр объектом не является.


    bool isObjectPrototype(parameter)
    Назначение:
    Осуществляет проверку параметра - является ли он прототипом объекта.
    Параметры:
    parameter - проверяемая сущность.
    Возвращаемые значения:
    true - если параметр прототип объекта.
    false - если параметр прототипом объекта не является.


    bool isRoom(parameter)
    Назначение:
    Осуществляет проверку параметра - является ли он комнатой.
    Параметры:
    parameter - проверяемая сущность.
    Возвращаемые значения:
    true - если параметр комната.
    false - если параметр комнатой не является.


    bool isArray(parameter)
    Назначение:
    Осуществляет проверку параметра - является ли он массивом сущностей.
    Параметры:
    parameter - проверяемая сущность.
    Возвращаемые значения:
    true - если параметр массив сущностей.
    false - если параметр массивом не является.


    bool isString(parameter)
    Назначение:
    Осуществляет проверку параметра - является ли он строкой.
    Параметры:
    parameter - проверяемая сущность.
    Возвращаемые значения:
    true - если параметр является строкой.
    false - если параметр строкой не является.


    bool isNumber(parameter)
    Назначение:
    Осуществляет проверку параметра - является ли он числом.
    Параметры:
    parameter - проверяемая сущность.
    Возвращаемые значения:
    true - если параметр является числом.
    false - если параметр строкой не числом.




    Специальные функции и методы

    object|mob|nil get_active()
    Назначение:
    Возвращает указатель на объект или моба, который является 'операндом' в работе скрипта, т.е. с относительно его и происходит сейчас работа. Этот метод используется в скриптах, которые вызываются из других скриптов, для получения сущности, с которой надо работать. Пример таких скриптов - скрипты групп или методов.
    Параметры:
    Нет параметров
    Возвращаемые значения:
    mob|object|nil - моб или объект, обрабатываемы в скриптах. Возможно возращение значения nil, если нет сущности для работы.


    group|nil get_group()
    Назначение:
    Возвращает группу, с которой работает скрипт. Этот метод используется в скриптах групп. В других скриптах метод возвращает nil.
    Параметры:
    Нет параметров
    Возвращаемые значения:
    group|nil - группа, владелец скрипта или nil, если скрипт не является скриптом группы.




    Функции и методы по работе со строками

    bool sym("проверяемая строка", "набор символов")
    Назначение:
    Проверяет, что в проверяемой строке используются только символы из заданного набора.
    Параметры:
    "проверяемая строка" - строка, которую нужно проверить
    "набор символов" - символы, наличие которых проверяется
    Возвращаемые значения:
    true - в проверяемой строке есть только символы из заданного набора
    false - в проверяемой строке есть символы, которых нет в заданном наборе


    bool ssym("проверяемая строка", "набор символов")
    Назначение:
    Проверяет, что в проверяемой строке обязательно есть символы из заданного набора.
    Параметры:
    "проверяемая строка" - строка, которую нужно проверить
    "набор символов" - символы, наличие которых проверяется
    Возвращаемые значения:
    true - все символы из набора есть в проверяемой строке
    false - не все символы из набора есть в проверяемой строке


    bool strstr("проверяемая строка", "набор строк")
    Назначение:
    Проверяет, что проверяемая строка входит в заданный набор строк.
    Параметры:
    "проверяемая строка" - строка, которую нужно проверить
    "набор строк" - строки, которые проверяются на совпадение с проверяемой. Отдельные строки разделяются запятой- ','
    Возвращаемые значения:
    true - проверяемая строка есть в наборе строк
    false - проверяемая строка в наборе строк отсутствует


    bool strcmp("строка1", "строка2")
    Назначение:
    Проверяет две проверяемые строки на совпадение.
    Параметры:
    "строка1", "строка2" - строки, которые нужно проверить на совпадение
    Возвращаемые значения:
    true - проверяемые строки идентичны
    false - проверяемые строки различаются между собой


    bool lstrcmp("строка1", "строка2")
    Назначение:
    Проверяет две проверяемые строки на совпадение без учета регистра символов.
    Параметры:
    "строка1", "строка2" - строки, которые нужно проверить на совпадение
    Возвращаемые значения:
    true - проверяемые строки идентичны, независимо от регистра символов
    false - проверяемые строки различаются между собой




    Общие функции и методы

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

    int rnd(min, max)
    Назначение:
    Возвращает случайное число со значением от min до max, включая границы.
    Параметры:
    min - минимальное значение для случайного числа
    max - максимальное значение для случайного числа


    int dice(dice_count, dice_max)
    Назначение:
    Возвращает случайное число, которое является суммой значений броска dice_count кубиков с dice_max гранями.
    Параметры:
    dice_count - количество кубиков, которое нужно бросить.
    dice_max - количество граней у кубика.


    bool chance(percents)
    Назначение:
    Генератор случайных чисел. Используется при необходимости рассчитать шанс какого-нибудь события в процентах.
    Параметры:
    percents - величина шанса в процентах от 0 до 100.
    Возвращаемые значения:
    true - если шанс события выпал удачно и событие наступило.
    false - если шанс события невыпал, событие не наступило


    void print(*информация*)
    Назначение:
    Выводит содержимое параметра в консоль ядра.
    Параметры:
    Тип параметра неважен. print работает как с строками, так и с числами, а также со составными данными.


    Функции и методы по работе со строкой ввода (обработка команд)



    bool case(*проверяемое значение*)
    Назначение:
    Осуществляет проверку значения параметра на совпадение со значением, находящимся в строке-ввода.
    Параметры:
    *проверяемое значение* - один или несколько значений, которые будут проверятся на совпадение с строкой-ввода. Для разделения нескольких значений в параметре, используется знак ','
    Возвращаемые значения:
    true - если значение в строке-ввода совпадает со значением в параметре
    false - если значение в строке-ввода не совпадает со значением в параметре


    bool case("")
    Назначение:
    Осуществляет проверку что в строке-ввода ничего нет (пустая строка).
    Параметры:
    Параметром является пустая строка : ""
    Возвращаемые значения:
    true - если строка-ввода пустая
    false - если строка-ввода что-то содержит


    string case()
    Назначение:
    Возвращает содержимое строки-ввода.
    Параметры:
    Нет параметров
    Возвращаемые значения:
    string - содержимое строки ввода


    bool lcase(*проверяемое значение*)
    Назначение:
    Осуществляет проверку значения параметра на совпадение со значением, находящимся в строке-ввода без учета регистра символов.
    Параметры:
    *проверяемое значение* - один или несколько значений, которые будут проверятся на совпадение с строкой-ввода. Для разделения нескольких значений в параметре, используется знак ','
    Возвращаемые значения:
    true - если значение в строке-ввода совпадает со значением в параметре
    false - если значение в строке-ввода не совпадает со значением в параметре


    bool caseint(min, max)
    Назначение:
    Проверка значения строки-ввода на целое числовое значение, попадающее в заданный интервал.
    Параметры:
    min, max - числа, в пределах их интервала будет проверятся значение в строке ввода
    Возвращаемые значения:
    true - в строке-ввода находится число и оно попадает в заданный интервал, включая границы
    false - в строке-ввода находится не число или число, которое не попадает в заданный интервал


    int caseint()
    Назначение:
    Возвращает значение числа в строке-ввода. В случае любого нечислового значения возращается 0.
    Параметры:
    Нет параметров
    Возвращаемые значения:
    число - значение строки-ввода
    0 - в случае ошибки


    string casename()
    Назначение:
    Возвращает содержимое строки-ввода в формате Имени, т.е. первая буква заглавная, остальные маленькие.
    Параметры:
    Нет параметров
    Возвращаемые значения:
    строка - содежримое строки ввода в формате Имени.


    string casefrom(index)
    Назначение:
    Возвращает содержимое строки-ввода единой строкой, начиная с аргумента index.
    Параметры:
    index - Номер параметра, начиная с которого необходимо вернуть содержимое строки ввода.
    Возвращаемые значения:
    string - cодержимое строки ввода, начиная с заданного параметра


    int args()
    Назначение:
    Возвращает количество аргументов у команды в строке ввода. Сюда не входит сама команда, т.е. первое слово (если используется в скриптах игровых команд). В обычных обработчиках же, доступны все слова, т.к. как таковой игровой команды нет.
    Параметры:
    Нет параметров
    Возвращаемые значения:
    число - количество аругментов


    string arg(index)
    Назначение:
    Возвращает аругмент команды в строке ввода по заданному индексу.
    Параметры:
    index - число, индекс аргумента, который необходимо вернуть. Индекс начинается с 1. Максимально допустимое значение можно получить с помощью метода args().
    Возвращаемые значения:
    string - строка, аргумент команды по заданному индексу.
    "" - пустая строка, если индекс некорректный.




    Дополнительные команды

    int params()
    Назначение:
    Возвращает количество параметров у метода. Используется в скриптах методов.
    Параметры:
    Нет параметров
    Возвращаемые значения:
    число - количество параметров.


    any param(index)
    Назначение:
    Возвращает значение параметра метода по заданному индексу.
    Параметры:
    index - число, индекс параметра, который необходимо вернуть. Индекс начинается с 1. Максимально допустимое значение можно получить с помощью метода params().
    Возвращаемые значения:
    actor|room|object|mob|string - сущность или строка - параметр команды по заданному индексу.
    nil - если индекс параметра некорректный.



    Содержание   <<< Назад   Далее >>>