PDA

Показать полную графическую версию : mpq архивы


Malfatto
01-01-2009, 04:08
Игры blizzard используют архивы mpq. Как я знаю, для распаковки используется библиотека storm.dll. Как с ней работать в delphi и где её взять (а то, возможно, у меня в папке с вариком старая версия)?

Delirium
08-01-2009, 03:23
Ну а если попробовать подключить эту библиотеку в проект?

DedAlex
08-01-2009, 10:44
Хамяг, есть StormLib (http://www.zezula.net/en/mpq/stormlib.html), там правда на С, но есть описание всех функций storm.dll.

Malfatto
12-01-2009, 04:06
Delirium, это я и хотел. Но как я от туда возьму функции, не зная, как их использовать?

DedAlex, читал на сайте автора, но так и не разобрался, ибо С не знаю,

Delirium
12-01-2009, 04:22
Хамяг, чет я не понимаю, на ссылке в 3 посте дано описание всех функций. Какая разница какой там язык, смысл то функции все равно одинаков. Пример с ссылки:
SFileCloseArchive
Ordinal number for Diablo 1.00 : 63 (0x03F)
Ordinal number for StarCraft : 252 (0x0FC)

Function SFileCloseArchive closes an open archive. - закрываем открытый архив
BOOL WINAPI SFileOpenArchive(
HANDLE hMPQ // Handle of open archive - указатель открытого архива
);
Parameters
hMPQ
[in] Handle of open archive. Must be a handle obtained by a call of SFileOpenArchive or SFileCreateArchiveEx. - указатель, берется вызовом функции SFileOpenArchive.
Return value - возвращаемое значение

When the function succeeds, it returns nonzero and the arhive is closed. If fails, function returns FALSE. More informations about the error can be obtained from return value of GetLastError().
Remarks

If the archive was modified since it was open, the function implemented in StormLib also updates the MPQ header, hash table and block table. - если архив был изменен после открытия, функция обновит заголовок MPQ, хеш таблицу и таблицу блокировок
Вам надо подключить библиотеку в проект(не знаю как в Делфи, а в .NET добавляется reference на объект и вперед), и пользоваться функциями, прочитав их описание на странице.

pva
12-01-2009, 14:47
в делфи надо создать заголовочный файл *.pas, в котором в секции interface прописаны функции и указано, в какой они библиотеке. Пример:

unit Azimuth;

interface

uses Windows;

// Открытие (Инициализация) библиотеки
function OpenDLL(OpName : PChar; // Имя кассира
Psw : PChar; // Пароль передачи данных
DevName : PChar; // имя последовательного порта
FlagOEM : Integer) : Integer; stdcall; // 0 - есть перекодировка, 1- нет

function OpenDLL; external 'AZIMUTH.DLL';

implementation

end.

Malfatto
12-01-2009, 15:10
Спасибо, буду пробовать :) Потом доложу




© OSzone.net 2001-2012