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

Формат файлов зон



Все зоны мира хранятся в отдельном каталоге. Имя каталога определяется в главном конфигурационном файле мира. Структура каталога зон следующая :
  • В корне каталога зон лежат файлы - каталоги. Они хранят информацию о зонах мира (ее создатель, имя, на каких персонажей она расчитана, и т.д.)
  • Подкаталоги корня каталога зон хранят уже сами файлы зон (подзон - частей определенной зоны).


  • Формат файлов-каталогов зон:
    
    <?xml version="1.0" encoding="UTF-8"?>
    <zones>
      <zone id="идентификатор зоны" dir="имя каталога файлов зоны">
        <name>Название зоны</name>
        <description>Описание зоны</description>
        <author>Имя автора зоны</author>  
      </zone>
      ...
      <zone id=...
      </zone>
    </zones>
    

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

    Дополнительные параметры, такие как name, description, author не обязательны, но желательны.

    Ядро при запуске читает все файлы в корне каталога зон и далее загружает все те зоны, на которые есть ссылки в файлах-каталогах.

    В подкаталогах располагаются так называемые файлы подзон. Сами зоны предствляют каталог таких подзон, в файлах подзон хранятся данные комнат. Т.е. адресация комнат в ядре сделана по принципу : zone.subzone.room - идентификатор зоны, подзоны и комнаты, разделенных точками.

    Формат файлов подзон:
    
    <?xml version="1.0" encoding="UTF-8"?>
    <rooms id="идентификатор подзоны">
     <room id="идентификатор комнаты">
      <name>Название(имя) комнаты</name>
      <description>Описание комнаты</description>
      <exit dir="направление выхода" to="комната назначения"/>
      <exit dir="направление выхода2" to="комната назначения"/>
      <respawn>идентификаторы точек респауна</respawn>
     </room>
     ...
     <room id="идентификатор комнаты2">
     ...
     </room>
      
     <respawn id="идентификатор точки респауна" status="on|off">
       <script id="init"><![CDATA[
       ... тело скрипта ...
       ]]></script>
       <script id="game"><![CDATA[
       ... тело скрипта ...
       ]]></script>
     <respawn>
     <respawn id="идентификатор точки респауна2" status=...>
     ...
     <respawn>
    </rooms>
    
    Файл начинается с корневой вершины rooms, у которой есть обязательный атрибут - id. Это идентификатор подзоны. В качестве подузлов выступают списки узлов - room и respawn.

    Узел room - это данные комнаты данной подзоны. У нее также есть обязательный атрибут id - ее идентификатор. Далее идут подузлы:
  • name (имя комнаты)
  • description (описание)
  • список подузлов exit - по одному узлу на один выход. Атрибут dir - это идентификатор направления выхода. Список возможных идентификаторов определяется в главном конфигурационном файле мира (узел directions). Атрибут to - комната назначения (ее идентификатор). Выходы можно строить не только в рамках текущей подзоны, но и в другие подзоны и зоны. Для этого необходимо указать адрес комнаты. Адрес комнаты, как было уже сказано, состоит из 3 идентификаторов, но указывать можно и один и два. Один идентификатор указывает на комнату в тойже подзоне, что и текущая комната. Два идентификатора - указывает на комнату другой подзоны той же зоны, что и текущая комната. Три идентфикатора - указатель на комнату в другой зоне.
  • respawn - это список идентфикаторов(если идентификаторов несколько используется разделитель-запятая ',') точек респауна. Респаун - это механизм появления чего-либо в мире, например мобов или объектов. К каждой комнате может привязыватся одна и больше точек. Каждая такая точка, привязанная к комнате будет отвечать за рождение чего-либо в этой комнате. О точках респауна читайте ниже.


  • Узел respawn - это данные точки респауна подзоны. У нее есть атрибуты id - идентфикатор и status - статус точки (два возможных значения - on или off). У нее также есть 2 необязательных скрипта - init и game. Скрипт init запускается при запуске сервера. Он предназначен для начальной инициализайции содержимого комнат. Скрипт game запускается переодически, период следующего запуска определяется числом, которое было возращено из скрипта init или game в предыдущем запуске. Если скрипта init нет, то на этапе запуска сервера запускается скрипт game.

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