XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Pozitron

offline
Опыт: 736
Активность:
Использование MPQ-архива в программе
Я хочу написать прогу для распаковки MPQ архива. Так как я не знаю как происходит его упаковка и т.д. я не могу написать необходимые фунуции. Как я знаю есть библиотека SFMPQ.dll кажется. Я достал названия функций которые она экспортирует но не знаю какие аргументы она требует и какого они типа (моя прога не дает етой информации). Напишите пожалуиста (или дайте ссылку) про устройство MPQ или библиотеку SFMPQ.

Pozitron добавил:
Вот все функции SFMPQ только без аргументов. В принципе некоторые можно угадать.
Только вот дизассеблировать чтобы узнать все оставшиеся мне не очень хочется ((
Прикрепленные файлы
Тип файла: rar sfmpq.rar (73 байт, 41 просмотров )

Отредактировано Pozitron, 06.12.2006 в 07:38.
Старый 05.12.2006, 13:28
NETRAT

offline
Опыт: 83,712
Активность:
Хм, лол, вместе с библиотекой обычно поставляются хидеры, позволяющие ее использовать, естественно, они у меня есть(и для SF и для STORM), но сишные
Кажется, я отсюда брал http://shadowflare.samods.org/dwnload.html
Старый 05.12.2006, 15:12
Pozitron

offline
Опыт: 736
Активность:
Спасибо, NETRAT. Я в принципе уже нашел нужную информацию и ссылку на сайт. Только вот нигде нет описания MPQ. Придется копатся в исходниках. А то что все на С написино то мне всё равно, я могу и на С написать.

Pozitron добавил:
(Просто я не особо дружу с английским и на лажу на англоязычные сайты поэтому и решил спросить)
Старый 06.12.2006, 06:38
zibada

offline
Опыт: отключен
Цитата:
Только вот нигде нет описания MPQ.


http://zohar.devklog.net:47805/projects/mpqkit/wiki/MoPaQ_Format
http://zezula.net/

ну и хедеры к sfmpq.

этого, по-моему, вполне достаточно.
Старый 06.12.2006, 10:52
NETRAT

offline
Опыт: 83,712
Активность:
Вполне, правда, я уже упоминал что разные библиотеки работают с разными форматами MPQ, то есть что не может открыться при помощи WinMPQ, открывается при помощи MPQ Master. Хотя, с storm.lib и sfmpq.lib я такого не замечал
Старый 06.12.2006, 12:10
Pozitron

offline
Опыт: 736
Активность:
Ещё один вопрос:
В описанний MPQ написано что в 4 байтах по нужному смещению (непомню какому точно) хранится размер архива(int32). Как можно перевести это число из Hex в int32 ??? Я пробовал но у меня получается полная фигня.
Старый 16.12.2006, 10:02
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Конвертирование Hex => Int элементарное (Delphi syntax):
Код:
var
  I: Integer;
  S: String;
...
I := StrToInt('$' + S);
Старый 16.12.2006, 14:38
Pozitron

offline
Опыт: 736
Активность:
Спасибо ShadoW DaemoN только меня интересовало немного другое - почему число полученное переводом из Hex в int32 (За ето отвечают 4 байта с 9 по 12 от начала архива) не совпадает с размером архива, вот и твоим способом получается такое же число... Ппц.
Старый 19.12.2006, 09:08
zibada

offline
Опыт: отключен
потому что обычно int32 хранятся как little endian, т.е. с переставленным задом наперед порядком байт.
это общепринятый формат, на C например, это читается обычным fread как надо.
ну если ты хочешь, глядя на hex dump, посчитать что-то руками на калькуляторе, то это стоит учесть.
Старый 19.12.2006, 09:28
ScorpioN

offline
Опыт: 15,028
Активность:
гм, гуд тема, я ближе к лету для ЛОТРмап буду писать прогу которая будет закидывать файло в вар3з.мпку так что хотелось бы знать, мне придёца самому изучать дебри Мпку или есть готовые длл для ИМПОРТИРОВАНИЯ файлов в готовый архив...
Старый 19.12.2006, 09:35
Pozitron

offline
Опыт: 736
Активность:
Готовые dll уже есть, но я сам хочу написать свою dll и прогу, поэтому я стал разбиратся с устройством MPQ. Описание MoPaQ формата есть только на английском так что вот приходится переводить и уточнять некоторые детали на форуме. (Только если ты хочешь закидывать файлы в war3.mpq то лучше этого не делать а создать патч с новым архивом так как цифровая подпись архива war3.mpq не будет работать)
Старый 20.12.2006, 09:07
NETRAT

offline
Опыт: 83,712
Активность:
Pozitron это самоубийство - слишком много придется писать. Ты себе представляешь вообще что такое алгоритмы сжатия, как они работают и сколько их есть?!
У меня где-то валялись исходники базового формата mpq (то есть не полного, а только с конкретным сжатием)
Цифровую подпись ты подделать вряд ли сможешь, ибо там вырожденное преобразование
Старый 20.12.2006, 09:56
Pozitron

offline
Опыт: 736
Активность:
Ну я знаю что писать надо много так что ещё подумаю,может просто напишу нормальную прогу для работы с MPQ используя sfMPQ, а то что алгоритмов сжатия очень много я тоже знаю. Только я не совсем понял одну вещь - MPQ поддерживает все архивные форматы или как?
Старый 20.12.2006, 10:11
NETRAT

offline
Опыт: 83,712
Активность:
Pozitron тут петрушка хитрая
1. Версий sfmpq много
2. Такой, которая поддерживает все форматы, я не встречал =\
Как я уже говорил, возможен такой вариант что WinMPQ распаковывать карту не будет, а MPQ Master - будет. При попытке распаковки sfmpq просто возврашает ошибку. Обычно не открываются 5% карт - это карты обработанные оптимизаторами на хитрожопых настройках формата сжатия
Старый 20.12.2006, 10:18
Pozitron

offline
Опыт: 736
Активность:
Но тогда получается что storm.dll поддерживает все форматы если Warcraft открывает эти карты.
Только я спрашивал какие примерно форматы знает War например 7z, zip,rar,arj и т.п. Я слышал немного про формат zlib и PKWare а больше ничего.

Отредактировано Pozitron, 20.12.2006 в 10:30.
Старый 20.12.2006, 10:22
Pozitron

offline
Опыт: 736
Активность:
NETRAT у меня появилась такая идея: если не все sfmpq.dll нормально открывают разные архивы, а storm.dll открывает все и так же storm находит файлы только по имени, то попробовать написать библиотеку которая будет работать с MPQ, а сжатие и распаковку осуществлять с помощью функций storm.dll. Будет намного проще так как не придется писать громоздкий код архивирования, и решится проблема поддержки разных типов сжатия.
Старый 20.12.2006, 15:39
NETRAT

offline
Опыт: 83,712
Активность:
Имеющиеся хидеры к storm.dll не подходят, если брать старые библиотеки, к которым хидеры подходят - то они тоже не распаковывают. Следует попробовать исправить хидер к storm.dll, но лично у меня сейчас времени на это нет
Старый 21.12.2006, 11:51
Pozitron

offline
Опыт: 736
Активность:
У меня в общем сейчас тоже на это времени нет, всетаки скоро экзамены. Я потом собираюсь этим занятся. А ты имеешь ввиду storm.dll не близзардовские? Просто я думал использовать варовскую библиотеку storm.
Старый 21.12.2006, 12:03
NETRAT

offline
Опыт: 83,712
Активность:
Не близзардовских нет
Есть близзардовские из Дьяблы, из Старкрафта, из Варкрафта - и все они разные
Старый 21.12.2006, 12:10
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 18:48.