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

Прототипы мобов и объектов. Формат файлов прототипов.



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

Формат файла прототипа объекта:

<?xml version="1.0" encoding="UTF-8"?>
<object> 
  ...данные прототипа...
</object>

Формат файла прототипа моба:

<?xml version="1.0" encoding="UTF-8"?>
<mob> 
  ...данные прототипа...
</mob>

Форматы файлов различаются только именем корневой вершины. Формат самих данных идентичен:

<?xml version="1.0" encoding="UTF-8"?>
<mob(object)> 
  <strings>
    <string id="view">строка представления</string> 
    <string id="identify">строка идентификации</string> 
    <string id="equal">строка идентичности</string> 
  </strings>
  
  <tegs>
    <teg id="идентификатор тега">строка тега</teg> 
    ...
  </tegs>
  
  <scripts>
    <script id="oncreate"><![CDATA[
    ]]></script>
    <script id="ondestroy"><![CDATA[
    ]]></script>
  </scripts>
  
  <methods>
    <script id="method1"><![CDATA[
    ]]></script>
    <script id="method2"><![CDATA[
    ]]></script>
    ...
  </methods>
    
  <states>
    <state id="идентификатор стейта" value="значение стейта"/>
    <state id="идентификатор стейта2" value="значение стейта2"/>
    ...
  </states>
</mob(object)>

Файл прототипа состоит из нескольких блоков : strings, scripts, methods, states.

Раздел strings - содержит набор системных строк.
  • view - это строка представления объекта/моба в маде. Это фактически строка-скрипт динамического описания, используемая при описании комнаты, в котором находится этот объект/моб. О скриптах динамического описания читайте в соответствующей главе.
  • identify - это строка-список, в которой указываются стейты, используемые для идентификации объекта/моба, когда происходит его поиск в комнате. Допустимо несколько вариантов, для их разделения следует использовать запятую ','. Пример строки identify: 'name,color.name'. В этом случае при поиске будут учитываться или имя или цвет+имя. При поиске допустим Зеленой кочки, допустимы варианты от: 'к' и до 'зелен.кочка'. Промежуточные различные варианты : 'коч', 'з.кочка', 'зел.коч' и т.д.
  • equal - строка-список стейтов. Для разделения стейтов следует использовать запятую ','. Эти стейты используются для сравнения двух сущностей одного прототипа при группировке их в комнате. Значения этих стейтов должны совпадать, чтобы сущности сгруппировались в комнате. Если сторока entity пустая, то группировка будет происходить при любых значениях стейтов. Если тег остсутствует, то группировка будет происходить не будет.


  • Раздел tegs - набор текстовых строк (тегов). У каждой строки есть свой идентификатор - id. Используются при выводе информации о мобе, объекте или персонаже с использованием тегов динамического описания. О тегах можно почитать тут. Теги выводятся с помощью скриптов динамического описания.

    Раздел scripts - набор скриптов, запускаемых при системных событиях, таких как : создание или разрушение/гибель моба или объекта.
  • oncreate - запускается при создании
  • ondestroy - запускается при гибели


  • Раздел methods - скрипты методов воздействия на объект или моб. О скриптах методов читайте в соответствующей главе.

    Раздел states - список с начальными значения стейтов. Идентификаторы и значения должны быть корректными по отношению к известным стейтам и их типам.

    Идентификаторы мобов и объектов. Связь с именем файла прототипа.



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

    Имя идентификатора моба полностью совпадает с путем к файлу прототипа, только в пути все слеши заменены на точки. Например, для прототипа, чей файл, лежит по пути: home\rabbit\black.xml, идентификатор будет равен: 'home.rabbit.black'.

    Данная архитектура дает возможность простого ручного управления и поиска нужных прототипов. А также защищает от создания прототипов с одинаковым идентификатором.

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