Тема: Сниффы
Показать сообщение отдельно
Старый 09.07.2013, 09:11   #21
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 591
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

Парсер, читает 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"/>
Вложения
Тип файла: rar parser.rar (19.5 Кб, 14 просмотров)
__________________

Последний раз редактировалось Konctantin; 09.07.2013 в 09:21.
Konctantin вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
RomanRom2 (09.07.2013), ZGN (09.07.2013)