DBC Viewer
Вложений: 1
Утилита для просмотра DBC файлов клиента. Изначально планировалась поддержка только DBC формата, но позже была также добавлена поддержка форматов DB2 ('WDB2', клиент 4.х+), ADB ('WCH2', клиент 4.х+) и WDB.
Для открытия файла требуется указать его структуру в файле dbclayout.xml. В данный момент имеются структуры лишь для небольшого числа dbc файлов. Имеется возможность экспорта в sql, а так же интерфейс для написания плагинов экспорта в другие форматы (csv, xml и т.д.) Для примера можно посмотреть исходник экспортера в sql. Репозиторий тут (github mirror тут). Бинарники можно взять тут. Для запуска утилиты требуется Microsoft .NET Framework 4.0. |
В классе WDBReader есть такой участок кода, но при количестве записей == 0, он будет выдавать ошибку, потому что reader.BaseStream.Position будет на 4 байта меньше чем reader.BaseStream.Length :
Код:
if (entry == 0 && size == 0 && reader.BaseStream.Position == reader.BaseStream.Length) Код:
if ((entry == 0 && size == 0) || reader.BaseStream.Position == reader.BaseStream.Length) |
можно ли добавить в программу поддержку dbc-файлов с форматом PTCH ?
отличается ли чем-то файл Cache\ADB\ruRU\Item-sparse.adb от locale-ruRU.MPQ\DBFilesClient\Item-sparse.db2 (по структуре) ? этот вопрос к тому, что первый файл открывается корректно программой, а со вторым файлом проблемы: все поля типа string заполнены текстом: Цитата:
|
Цитата:
|
Цитата:
P.S. Исправил, теперь и старые db2 файлы должны открываться нормально. Т.к. точного номера билда, в котором хидер изменили я не помню, сделал просто build > 12880... |
Кстати, для получения обновленных файлов я использую свою тулзу Blizzard.Patcher. Для работы требуется файл предыдущей версии и PTCH файл-обновление. Все обновления применяются последовательно.
|
Небольшой апдейт: с выходом патча 4.1 оказалось, что структура DB2 файлов была некорректна, что было исправлено, при этом было выяснено назначение двух неизвестных полей в хидере файлов.
|
У меня есть идея к проекту, но времени сейчас нету ее реализовать, так что напишу тут и может кто соберется.
Идея в следующем: насколько я вижу в DBC файлах поля всегда по 4 байта и имеют один из 3х типов - int, float, string. Соответственно мы могли бы добавить автоматичнское распознавание типов колонок в DBC, например как это делает MyDbcEditor. Это упростило бы просмотр файлов с неопределенным форматом и также упростило бы создание форматов т.к. им останется включать только имена колонок, а типы уже в редких случаях. Я немного пореверсил MyDbcEditor, чтобы понять как он с этим справляется и вот результат. Для различения float/int рассматриваются первые 1000 записей в колонке с int значением > 1. Затем Код:
if ( count <= 0 || AvgAbs <= 50000000 || AvgBitsSet <= 4.0 ) Однако сейчас DBC Viewer проходит по содержимому файла только 1 раз, что придется изменить (или сделать отдельную копию в памяти) для предварительного сбора статистики перед выводом содержимого. |
поля не всегда по 4 байта.
|
Поля не всегда 4 байта, бывают и 1 байт и 8 байт.
|
Цитата:
Так что в большинстве случаев идея все равно работает. А для специальных случаев можно по-прежнему задать тип вручную. |
Текущее время: 08:17. Часовой пояс GMT +3. |
ru-mangos.ru - Русское сообщество MaNGOS