Тема: WoW Packet Viewer
Показать сообщение отдельно
Старый 18.05.2011, 16:47   #1
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию WoW Packet Viewer

Т.к. моя утилита по моему мнению недостаточно популярна, я решил создать данную тему

Проэкт на github (googlecode).

Скриншот:
http://ru-mangos.ru/attachment.php?a...3&d=1305724957

Возможности:
- парсинг пакетов любой сложности;
- возможность динамической компиляции парсеров / подгрузка уже скомпилированных сборок;
- простейший поиск по названию опкода;
- экспорт в текстовый формат (hexlike или распарсенный текст);
- ручной парсинг варден пакетов (только расшифрованных);

Пример простейшего парсера:
Код:
using WowTools.Core;

[Parser(OpCodes.SMSG_MOTD)]
class SMSG_MOTD : Parser
{
    public override void Parse()
    {
        For(ReadInt32("Lines count: {0}"), i => ReadCString("Line {0} text: {1}", i));
    }
}
Что-то более сложное:
Код:
using WowTools.Core;

[Parser(OpCodes.SMSG_CHAR_ENUM)]
class SMSG_CHAR_ENUM : Parser
{
    public override void Parse()
    {
        const int INVENTORY_SLOT_BAG_END = 23;

        For(ReadUInt8("Characters count: {0}"), i =>
            {
                ReadUInt64("Character {0} GUID: {1:X16}", i);
                ReadCString("Character {0} Name: {1}", i);
                ReadUInt8("Character {0} Race: {1}", i);
                ReadUInt8("Character {0} Class: {1}", i);
                ReadUInt8("Character {0} Gender: {1}", i);
                ReadUInt8("Character {0} Skin: {1}", i);
                ReadUInt8("Character {0} Face: {1}", i);
                ReadUInt8("Character {0} Hair Style: {1}", i);
                ReadUInt8("Character {0} Hair Color: {1}", i);
                ReadUInt8("Character {0} Facial Hair: {1}", i);
                ReadUInt8("Character {0} Level: {1}", i);
                ReadUInt32("Character {0} Zone: {1}", i);
                ReadUInt32("Character {0} Map: {1}", i);
                ReadSingle("Character {0} X: {1}", i);
                ReadSingle("Character {0} Y: {1}", i);
                ReadSingle("Character {0} Z: {1}", i);
                ReadUInt32("Character {0} Guild Id: {1}", i);
                ReadUInt32("Character {0} Flags: 0x{1:X8}", i);
                ReadUInt32("Character {0} Customize Flags: 0x{1:X8}", i);
                ReadUInt8("Character {0} First Login?: {1}", i);
                ReadUInt32("Character {0} Pet Display Id: {1}", i);
                ReadUInt32("Character {0} Pet Level: {1}", i);
                ReadUInt32("Character {0} Pet Family: {1}", i);

                For(INVENTORY_SLOT_BAG_END, j =>
                    {
                        ReadUInt32("Character {0} Item {1} Display Id: {2}", i, j);
                        ReadUInt8("Character {0} Item {1} Inventory Type: {2}", i, j);
                        ReadUInt32("Character {0} Item {1} Enchant Aura: {2}", i, j);
                    });
            });
    }
}
Для запуска требуется Microsoft .NET Framework 4.0.
Миниатюры
Нажмите на изображение для увеличения
Название: pv3.jpg
Просмотров: 1256
Размер:	406.6 Кб
ID:	983  
Вложения
Тип файла: rar wpv.rar (477.4 Кб, 580 просмотров)

Последний раз редактировалось TOM_RUS; 18.05.2011 в 22:22.
TOM_RUS вне форума   Ответить с цитированием
14 пользователя(ей) сказали cпасибо:
ANTOMA (30.05.2011), Chameleon (14.07.2011), Den (20.05.2011), Dragon (20.05.2011), Fedia22 (18.05.2011), HuntsMan (22.05.2011), KiriX (18.05.2011), Konctantin (18.05.2011), partizanes (05.06.2013), Ranger (25.08.2011), SeT (18.05.2011), srv38 (18.05.2011), sven (19.05.2011)