Forum > Level Design
[QUESTION] Extracting Vmaps from custom ADTs
(1/3) > >>
björn:
Howdy,
So I've been trying to extract vmaps from my own maps for quite some time now, but without any real success.
My maps consist of a WDL, a WDT and the ADTs of course. My patch is named patch-enUS-4.MPQ and is located in DataenUS...
I'm using the 4.1 vmap extractor, and yes I have extracted the maps without any issues. The vmap extractor finishes without any errors, but once in-game there is no LoS at all, not M2s, WMOs or even the terrain.
I tried copying a few blizzard ADTs and put them on one of my own maps. When I do this I get a little bit of LoS working, but only on WMOs. It's still not working with M2s or with the terrain.
Any help or pointers would be deeply appreciated since I've been stuck with this problem for far too long.
Thanks in advance!
stoneharry:
--- Quote from: "björn" ---Howdy,
So I've been trying to extract vmaps from my own maps for quite some time now, but without any real success.
My maps consist of a WDL, a WDT and the ADTs of course. My patch is named patch-enUS-4.MPQ and is located in DataenUS...
I'm using the 4.1 vmap extractor, and yes I have extracted the maps without any issues. The vmap extractor finishes without any errors, but once in-game there is no LoS at all, not M2s, WMOs or even the terrain.
I tried copying a few blizzard ADTs and put them on one of my own maps. When I do this I get a little bit of LoS working, but only on WMOs. It's still not working with M2s or with the terrain.
Any help or pointers would be deeply appreciated since I've been stuck with this problem for far too long.
Thanks in advance! --- End quote ---
From memory, the tool looks for:
"DataenUSpatch-x-enUS.mpq"
Where x increments by 1 until it doesn't exist. The DBC files must be in here.
Then it looks in:
"Datapatch-x.mpq"
Where x increments from 1 until it doesn't exist. The map data must be in here.
You must extract maps, then vmaps, then assemble mmaps if you use them from those two.
If it still doesn't work, check which maps are being found and which files are produced.
It is possible that TrinityCore's version of maps/vmaps can no longer process Noggit data.
björn:
--- Quote ---From memory, the tool looks for:
"DataenUSpatch-x-enUS.mpq"
Where x increments by 1 until it doesn't exist. The DBC files must be in here.
Then it looks in:
"Datapatch-x.mpq"
Where x increments from 1 until it doesn't exist. The map data must be in here.
You must extract maps, then vmaps, then assemble mmaps if you use them from those two.
If it still doesn't work, check which maps are being found and which files are produced.
It is possible that TrinityCore's version of maps/vmaps can no longer process Noggit data. --- End quote ---
So the DBCs and the mapfiles has to be in separate patches? Alright, I'll try that.
Oh also, each ADT is found and processed. The files are only 1-2kb though, not sure if this is normal or not.
EDIT: Tried extracting again with the dbc/mapfiles in separate patches, nothing changed.
stoneharry:
Here is the code for reference:
--- Code: ---bool fillArchiveNameVector(std::vector<std::string>& pArchiveNames) { if(!hasInputPathParam) getGamePath();
printf("nGame path: %sn", input_path);
char path[512]; string in_path(input_path); std::vector<std::string> locales, searchLocales;
searchLocales.push_back("enGB"); searchLocales.push_back("enUS"); searchLocales.push_back("deDE"); searchLocales.push_back("esES"); searchLocales.push_back("frFR"); searchLocales.push_back("koKR"); searchLocales.push_back("zhCN"); searchLocales.push_back("zhTW"); searchLocales.push_back("enCN"); searchLocales.push_back("enTW"); searchLocales.push_back("esMX"); searchLocales.push_back("ruRU");
for (std::vector<std::string>::iterator i = searchLocales.begin(); i != searchLocales.end(); ++i) { std::string localePath = in_path + *i; // check if locale exists: struct stat status; if (stat(localePath.c_str(), &status)) continue; if ((status.st_mode & S_IFDIR) == 0) continue; printf("Found locale '%s'n", i->c_str()); locales.push_back(*i); } printf("n");
// open locale expansion and common files printf("Adding data files from locale directories.n"); for (std::vector<std::string>::iterator i = locales.begin(); i != locales.end(); ++i) { pArchiveNames.push_back(in_path + *i + "/locale-" + *i + ".MPQ"); pArchiveNames.push_back(in_path + *i + "/expansion-locale-" + *i + ".MPQ"); pArchiveNames.push_back(in_path + *i + "/lichking-locale-" + *i + ".MPQ"); }
// open expansion and common files pArchiveNames.push_back(input_path + string("common.MPQ")); pArchiveNames.push_back(input_path + string("common-2.MPQ")); pArchiveNames.push_back(input_path + string("expansion.MPQ")); pArchiveNames.push_back(input_path + string("lichking.MPQ"));
// now, scan for the patch levels in the core dir printf("Scanning patch levels from data directory.n"); sprintf(path, "%spatch", input_path); if (!scan_patches(path, pArchiveNames)) return(false);
// now, scan for the patch levels in locale dirs printf("Scanning patch levels from locale directories.n"); bool foundOne = false; for (std::vector<std::string>::iterator i = locales.begin(); i != locales.end(); ++i) { printf("Locale: %sn", i->c_str()); sprintf(path, "%s%s/patch-%s", input_path, i->c_str(), i->c_str()); if(scan_patches(path, pArchiveNames)) foundOne = true; }
printf("n");
if(!foundOne) { printf("no locale foundn"); return false; }
return true; }
--- End code ---
It should be printing the archives found. Does it print your MPQs?
björn:
--- Quote from: "stoneharry" ---Here is the code for reference:
--- Code: ---...
--- End code ---
It should be printing the archives found. Does it print your MPQs? --- End quote ---
Yeah, it does.
--- Quote ---Oh also, each ADT is found and processed. The files are only 1-2kb though, not sure if this is normal or not. --- End quote ---
Navigation
[0] Message Index
[#] Next page
|