darkspear
-
Posts
2 -
Joined
-
Last visited
Never -
Donations
0.00 GBP
Content Type
Profiles
Bug Tracker
Wiki
Release Notes
Forums
Downloads
Blogs
Events
Posts posted by darkspear
-
-
dear all:
I pretent to compile a version of mangos for my client 3.3.5(13930)version. while using the ad.exe to exact the dbc/maps i encounter a lot of problem. first is the fatal error:Invalid component.wow-zhCN.txt file format , I slove it by using mpqeditor to modify the component.wow-zhcn.txt to component.wow-zhCN.txt ,but while exacting maps it told me that the Invalid map.dbc file format.
I check the source code of ad.exe. i foud the problem
- if(header[0]!='W' || header[1]!='D' || header[2]!='B' || header[3]!='C')
- return false;
then i check the dbc file exact from trinitycore, the first four characters is truly WDBC,but my dbc file is ? character.
i know my the mpq patch-zhCN-3.MPQ is strange it has only 32k byte. did the ad.exe will exact the map.dbc from this file(this file has no DBC file exist inside)?
and when i trace the source, i was confused at some place.
in mpq_libmpq.cpp
- MPQFile::MPQFile(const char* filename):
- eof(false),
- buffer(0),
- pointer(0),
- size(0)
- {
- for(ArchiveSet::iterator i=gOpenArchives.begin(); i!=gOpenArchives.end();++i)
- {
- mpq_archive &mpq_a = (*i)->mpq_a;
- mpq_hash hash = (*i)->GetHashEntry(filename);
- uint32 blockindex = hash.blockindex;
- if (blockindex == 0xFFFFFFFF)
- continue; //file not found
- uint32 fileno = blockindex;
- //int fileno = libmpq_file_number(&mpq_a, filename);
- //if(fileno == LIBMPQ_EFILE_NOT_FOUND)
- // continue;
- // Found!
- size = libmpq_file_info(&mpq_a, LIBMPQ_FILE_UNCOMPRESSED_SIZE, fileno);
- // HACK: in patch.mpq some files don't want to open and give 1 for filesize
- if (size<=1) {
- eof = true;
- buffer = 0;
- return;
- }
- buffer = new char;
-
//libmpq_file_getdata
-
libmpq_file_getdata(&mpq_a, hash, fileno, (unsigned char*)buffer);
-
return;
-
}
-
eof = true;
-
buffer = 0;
-
}
the buffer in the line31 seems not free very well(it was newed many times) was i right?
in the realse mode it works but in the debug mode, it told me that the heap was not release.
can anyone help me on this? thank you very much.
- if(header[0]!='W' || header[1]!='D' || header[2]!='B' || header[3]!='C')
need some help on exacting dbc and the ad's source code
in OldGeneral support
Posted
thanks,maybe nobody see it. i solve it by using tw's client.maybe some day i'll try to modify the exactor to fix my client when i finish reading the source code.