02.11.2010, 13:17 | #1 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
DBC Viewer
Утилита для просмотра DBC файлов клиента. Изначально планировалась поддержка только DBC формата, но позже была также добавлена поддержка форматов DB2 ('WDB2', клиент 4.х+), ADB ('WCH2', клиент 4.х+) и WDB.
Для открытия файла требуется указать его структуру в файле dbclayout.xml. В данный момент имеются структуры лишь для небольшого числа dbc файлов. Имеется возможность экспорта в sql, а так же интерфейс для написания плагинов экспорта в другие форматы (csv, xml и т.д.) Для примера можно посмотреть исходник экспортера в sql. Репозиторий тут (github mirror тут). Бинарники можно взять тут. Для запуска утилиты требуется Microsoft .NET Framework 4.0. Последний раз редактировалось TOM_RUS; 02.11.2010 в 15:23. |
16 пользователя(ей) сказали cпасибо: |
25.11.2010, 13:13 | #2 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
В классе WDBReader есть такой участок кода, но при количестве записей == 0, он будет выдавать ошибку, потому что reader.BaseStream.Position будет на 4 байта меньше чем reader.BaseStream.Length :
Код:
if (entry == 0 && size == 0 && reader.BaseStream.Position == reader.BaseStream.Length) break; Код:
if ((entry == 0 && size == 0) || reader.BaseStream.Position == reader.BaseStream.Length) break; Последний раз редактировалось Konctantin; 25.11.2010 в 13:22. |
01.12.2010, 11:12 | #3 | |
Пользователь
Регистрация: 07.03.2010
Сообщений: 46
Сказал(а) спасибо: 15
Поблагодарили 53 раз(а) в 14 сообщениях
|
можно ли добавить в программу поддержку dbc-файлов с форматом PTCH ?
отличается ли чем-то файл Cache\ADB\ruRU\Item-sparse.adb от locale-ruRU.MPQ\DBFilesClient\Item-sparse.db2 (по структуре) ? этот вопрос к тому, что первый файл открывается корректно программой, а со вторым файлом проблемы: все поля типа string заполнены текстом: Цитата:
Последний раз редактировалось SergiK_KilleR; 01.12.2010 в 11:25. |
|
01.12.2010, 11:34 | #4 |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
Нет. Это не DBC, а патч файл.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
01.12.2010, 14:04 | #5 | |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
P.S. Исправил, теперь и старые db2 файлы должны открываться нормально. Т.к. точного номера билда, в котором хидер изменили я не помню, сделал просто build > 12880... Последний раз редактировалось TOM_RUS; 01.12.2010 в 22:32. |
|
Пользователь сказал cпасибо: | SergiK_KilleR (02.12.2010) |
02.12.2010, 20:41 | #6 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Кстати, для получения обновленных файлов я использую свою тулзу Blizzard.Patcher. Для работы требуется файл предыдущей версии и PTCH файл-обновление. Все обновления применяются последовательно.
|
2 пользователя(ей) сказали cпасибо: | evilstar (02.12.2010), SergiK_KilleR (03.12.2010) |
09.04.2011, 20:22 | #7 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Небольшой апдейт: с выходом патча 4.1 оказалось, что структура DB2 файлов была некорректна, что было исправлено, при этом было выяснено назначение двух неизвестных полей в хидере файлов.
Последний раз редактировалось TOM_RUS; 09.04.2011 в 20:24. |
Пользователь сказал cпасибо: | evilstar (10.04.2011) |
05.08.2011, 09:30 | #8 |
Новичок
Регистрация: 04.03.2011
Сообщений: 29
Сказал(а) спасибо: 12
Поблагодарили 9 раз(а) в 7 сообщениях
|
У меня есть идея к проекту, но времени сейчас нету ее реализовать, так что напишу тут и может кто соберется.
Идея в следующем: насколько я вижу в DBC файлах поля всегда по 4 байта и имеют один из 3х типов - int, float, string. Соответственно мы могли бы добавить автоматичнское распознавание типов колонок в DBC, например как это делает MyDbcEditor. Это упростило бы просмотр файлов с неопределенным форматом и также упростило бы создание форматов т.к. им останется включать только имена колонок, а типы уже в редких случаях. Я немного пореверсил MyDbcEditor, чтобы понять как он с этим справляется и вот результат. Для различения float/int рассматриваются первые 1000 записей в колонке с int значением > 1. Затем Код:
if ( count <= 0 || AvgAbs <= 50000000 || AvgBitsSet <= 4.0 ) // INT else // FLOAT Однако сейчас DBC Viewer проходит по содержимому файла только 1 раз, что придется изменить (или сделать отдельную копию в памяти) для предварительного сбора статистики перед выводом содержимого. |
05.08.2011, 10:25 | #9 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
поля не всегда по 4 байта.
|
05.08.2011, 10:25 | #10 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Поля не всегда 4 байта, бывают и 1 байт и 8 байт.
|
05.08.2011, 11:11 | #11 |
Новичок
Регистрация: 04.03.2011
Сообщений: 29
Сказал(а) спасибо: 12
Поблагодарили 9 раз(а) в 7 сообщениях
|
Посмотрев на дамп DBC структур из 4.0.0 я нашел только 4 файла из 255, которые имеют поля byte.
Так что в большинстве случаев идея все равно работает. А для специальных случаев можно по-прежнему задать тип вручную. Последний раз редактировалось Chameleon; 05.08.2011 в 11:15. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C#, DBC Viewer и компания | LordJZ | Флудильня | 13 | 02.11.2010 11:44 |