Парсер, читает
wdb, adb, dbc, db2
Для того, чтобы парсер корректно читал файлы, в файле
definitions.xml надо описать структуру.
небольшая справка по
definitions.xml:
XmlElement
field может сожержать такие аттрибуты:
name - имя поля (строка)
key - Указывает, является ли поле ключевым,
необходим для автоматической генерации sql структуры базы,
принимает значения true | false
max - максимальное значение в поля, только для типа данных uint,
если значение больше - парсер генерирует ошибку.
bit - Определяет чтение данных из потока по количеству бит,
поддерживается для типов: byte sbyte short ushort int uint
type - принимает следующие значения:
Код:
byte - беззнаковое 8 бит
sbyte - со знаком 8 бит
short - со знаком 16 бит
ushort - беззнаковое 16 бит
int - со знаком 32 бит
uint - беззнаковое 32 бит
float - с плавающецй запятой 32 бит
double - с плавающей запятой 64 бит
long - со знаком 64 бит
ulong - беззнаковое 64 бит
string - обычная строка
pstring - строка, с длинной в начале, так же имеет обязаетельный аттрибут bit
list - тип для чтения в цикле:
при использовании этого типа, есть обязательные аттрибуты:
maxcount - максимальное количество елементов
counttype- определяет, что сначала надо прочитать количество елементов
принимает значения: byte, short, int
пример чтения статического списка:
Код:
<field type="list" maxcount="4">
<field type="int" name="ReqSourceId" />
<field type="int" name="ReqSourceCount" />
</field>
пример чтения динамического списка:
Код:
<field type="list" name="condition_count" counttype="byte" maxcount="10">
<field type="int" name="condition_unk1" />
<field type="byte" name="condition" />
<field type="int" name="ReqCreatureOrGOId" />
<field type="int" name="ReqCreatureOrGOCount" />
<field type="int" name="condition_unk5" />
<field type="string" name="ObjectiveText" />
<field type="byte" name="condition_unk6" />
<field type="list" name="unk_count" counttype="byte" maxcount="10">
<field type="int" name="condition_unk8" />
</field>
</field>
type="pstring" name="Text" bit="12" - что это означает:
pstring - строка имеет в данных длинну
bit="12" - изначает что длина строки записана в 12 битах.
немножко про
bitstream:
пример структуры чтения книжек:
Код:
<pagetextcache tablename="page_text">
<field type="uint" name="entry" key="true"/>
<field type="uint" name="doubleEntry"/>
<field type="uint" name="next_page"/>
<field type="pstring" name="Text" bit="12"/>
</pagetextcache>
в структуре можно описывать чтение по битам, тоесть
побитово можно считать такие типы:
byte, int, uint
пример:
Код:
<field type="byte" name="name1" bit="5"/>
<field type="int" name="name1" bit="12"/>
<field type="uint" name="name1" bit="11"/>