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

Группы, формат файлов групп



Группы - это понятия, которые предназначены для работы с набором (списком, коллекцией) сущностей. Группы - это по сути массив, но при этом обладает дополнительным функционалом, специально предназначенным и необходимым для группы - это скрипты по событиям. Каждая группа - это отдельный файл. Каталог, в которых хранятся группы задается в настройках мира.

Формат файла группы такой :

<?xml version="1.0" encoding="UTF-8"?>
<group type="тип группы">
  ... скрипты группы ...
</group>

Всего существует 2 типа групп - 'owner' и 'member'.
  • owner - группа, которая является владельцем сущности. Т.е. каждая игровая сущность может находиться только внутри одной группы 'owner'. При добавлении сущности в группу owner, она убирается из предыдущей группы оwner. Комната сама по себе является абстрактной группой owner. При добавлении сущности в комнату, она автоматически убирается из текущей группы owner, в которой находится сущность. И наоборот, при добавлении сущности в группу owner, сущность убирается из комнаты.
  • member - группа, в которой сущность является ее участником. Количество групп member, в которых может находится сущность неограничена.

    Каждая группа имеет следующий набор скриптов:
    
    <script id="canadd"><![CDATA[
     ...
     return true | false
    ]]></script>
    
    <script id="candelete"><![CDATA[
     ...
     return true | false
    </script>
    
    <script id="onadd"><![CDATA[
    ]]></script>
    
    <script id="ondelete"><![CDATA[
    ]]></script>
    

    Скрипты 'canadd' и 'candelete' выполняются перед добавлением или удалением сущности из группы. Их основная задача - разрешать или запрещать операцию добавления в группу или удаления из группы. Эти скрипты должны возвращать булевское значение - можно или нельзя проводить соответствующую операцию. По умолчанию, если эти скрипты не объявлены(т.е. их нет в файле групп), действия по добавлению и удалению разрешены.

    Скрипты onadd, ondelete выполняются после добавления или удаления сущности из группы. Может использоваться для дополнительных действий.

    О Lua-методах группы более подробно можно почитать тут.

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