void LoadLocaleMPQFiles(int const locale) { char filename[512]; //Locale-xxXX.MPQ sprintf(filename,"%s/Data/%s/locale-%s.MPQ", input_path, langs[locale], langs[locale]); printf("Loading %s\n", filename); if (!SFileOpenArchive(filename, 0, MPQ_OPEN_READ_ONLY, &localeMPQ[0])) { printf("%i\n", GetLastError()); assert(false && "\nLoad of MPQ failed"); } for(int i = 0; i < PATCH_REV_COUNT; ++i) { char ext[7] = ""; sprintf(ext, "-%i", patchRev[i]); sprintf(filename,"%s/Data/wow-update%s.MPQ", input_path, ext); if (!SFileOpenPatchArchive(localeMPQ[0], filename, langs[locale], MPQ_OPEN_READ_ONLY)) { printf("%i\n", GetLastError()); assert(false && "Load of MPQ patch failed"); } } if (!SFileIsPatchedArchive(localeMPQ[0])) assert(false && "An error occured"); //Others for(int i = 0; i < PATCH_REV_COUNT; ++i) { char ext[7] = ""; sprintf(ext, "-%i", patchRev[i]); sprintf(filename,"%s/Data/wow-update%s.MPQ", input_path, ext); printf("Loading %s\n", filename); if (!SFileOpenArchive(filename, 0, MPQ_OPEN_READ_ONLY, &localeMPQ[i+1])) { printf("%i\n", GetLastError()); assert(false && "Load of MPQ failed"); } for(int j = i; j < PATCH_REV_COUNT; ++j) { char ext[7] = ""; sprintf(ext, "-%i", patchRev[j]); sprintf(filename,"%s/Data/wow-update%s.MPQ", input_path, ext); if (!SFileOpenPatchArchive(localeMPQ[i+1], filename, langs[locale], MPQ_OPEN_READ_ONLY)) { printf("%i\n", GetLastError()); assert(false && "Load of MPQ patch failed"); } } if (!SFileIsPatchedArchive(localeMPQ[i+1])) assert(false && "An error occured"); } }
void LoadCommonMPQFiles(uint32 build) { TCHAR filename[512]; _stprintf(filename, _T("%s/Data/world.MPQ"), input_path); if (!SFileOpenArchive(filename, 0, MPQ_OPEN_READ_ONLY, &WorldMpq)) { if (GetLastError() != ERROR_PATH_NOT_FOUND) _tprintf(_T("Cannot open archive %s\n"), filename); return; } int count = sizeof(CONF_mpq_list) / sizeof(char*); for (int i = 1; i < count; ++i) { if (build < 15211 && !strcmp("world2.MPQ", CONF_mpq_list[i])) // 4.3.2 and higher MPQ continue; _stprintf(filename, _T("%s/Data/%s"), input_path, CONF_mpq_list[i]); if (!SFileOpenPatchArchive(WorldMpq, filename, "", 0)) { if (GetLastError() != ERROR_PATH_NOT_FOUND) _tprintf(_T("Cannot open archive %s\n"), filename); else _tprintf(_T("Not found %s\n"), filename); } else _tprintf(_T("Loaded %s\n"), filename); } char const* prefix = NULL; for (int i = 0; Builds[i] && Builds[i] <= CONF_TargetBuild; ++i) { memset(filename, 0, sizeof(filename)); if (Builds[i] > LAST_DBC_IN_DATA_BUILD) { prefix = ""; _stprintf(filename, _T("%s/Data/wow-update-base-%u.MPQ"), input_path, Builds[i]); } else { prefix = "base"; _stprintf(filename, _T("%s/Data/wow-update-%u.MPQ"), input_path, Builds[i]); } if (!SFileOpenPatchArchive(WorldMpq, filename, prefix, 0)) { if (GetLastError() != ERROR_PATH_NOT_FOUND) _tprintf(_T("Cannot open patch archive %s\n"), filename); else _tprintf(_T("Not found %s\n"), filename); continue; } else _tprintf(_T("Loaded %s\n"), filename); } }
void LoadCommonMPQFiles(uint32 build) { TCHAR filename[512]; _stprintf(filename, _T("%s/Data/world.MPQ"), input_path); _tprintf(_T("Loading common MPQ files\n")); if (!SFileOpenArchive(filename, 0, MPQ_OPEN_READ_ONLY, &WorldMpq)) { if (GetLastError() != ERROR_PATH_NOT_FOUND) _tprintf(_T("Cannot open archive %s\n"), filename); return; } int count = sizeof(CONF_mpq_list) / sizeof(char*); for (int i = 1; i < count; ++i) { _stprintf(filename, _T("%s/Data/%s"), input_path, CONF_mpq_list[i]); if (!SFileOpenPatchArchive(WorldMpq, filename, "", 0)) { if (GetLastError() != ERROR_PATH_NOT_FOUND) _tprintf(_T("Cannot open archive %s\n"), filename); else _tprintf(_T("Not found %s\n"), filename); } else _tprintf(_T("Loaded %s\n"), filename); } for (int i = 0; Builds[i] && Builds[i] <= CONF_TargetBuild; ++i) { // Do not attempt to read older MPQ patch archives past this build, they were merged with base // and trying to read them together with new base will not end well if (CONF_TargetBuild >= NEW_BASE_SET_BUILD && Builds[i] < NEW_BASE_SET_BUILD) continue; memset(filename, 0, sizeof(filename)); _stprintf(filename, _T("%s/Data/wow-update-base-%u.MPQ"), input_path, Builds[i]); if (!SFileOpenPatchArchive(WorldMpq, filename, "base", 0)) { if (GetLastError() != ERROR_PATH_NOT_FOUND) _tprintf(_T("Cannot open patch archive %s\n"), filename); else _tprintf(_T("Not found %s\n"), filename); continue; } else _tprintf(_T("Loaded %s\n"), filename); } printf("\n"); }
void LoadLocaleMPQFiles(int const locale) { char filename[512]; // first base old version of dbc files sprintf(filename, "%s/Data/%s/locale-%s.MPQ", input_path, langs[locale], langs[locale]); HANDLE localeMpqHandle; if (!OpenArchive(filename, &localeMpqHandle)) { printf("Error open archive: %s\n\n", filename); return; } // prepare sorted list patches in locale dir and Data root Updates updates; // now update to newer view, locale AppendPatchMPQFilesToList(langs[locale], langs[locale], NULL, updates); // now update to newer view, root AppendPatchMPQFilesToList(NULL, NULL, langs[locale], updates); for (Updates::const_iterator itr = updates.begin(); itr != updates.end(); ++itr) { if (!itr->second.second) sprintf(filename, "%s/Data/%s/%s", input_path, langs[locale], itr->second.first.c_str()); else sprintf(filename, "%s/Data/%s", input_path, itr->second.first.c_str()); //if (!OpenArchive(filename)) if (!SFileOpenPatchArchive(localeMpqHandle, filename, itr->second.second ? itr->second.second : "", 0)) printf("Error open patch archive: %s\n\n", filename); } }
bool LoadLocaleMPQFile(int locale) { TCHAR buff[512]; memset(buff, 0, sizeof(buff)); _stprintf(buff, _T("%s/Data/%s/locale-%s.MPQ"), input_path, LocalesT[locale], LocalesT[locale]); if (!SFileOpenArchive(buff, 0, MPQ_OPEN_READ_ONLY, &LocaleMpq)) { if (GetLastError() != ERROR_PATH_NOT_FOUND) { _tprintf(_T("\nLoading %s locale MPQs\n"), LocalesT[locale]); _tprintf(_T("Cannot open archive %s\n"), buff); } return false; } _tprintf(_T("\nLoading %s locale MPQs\n"), LocalesT[locale]); char const* prefix = NULL; for (int i = 0; Builds[i] && Builds[i] <= CONF_TargetBuild; ++i) { // Do not attempt to read older MPQ patch archives past this build, they were merged with base // and trying to read them together with new base will not end well if (CONF_TargetBuild >= NEW_BASE_SET_BUILD && Builds[i] < NEW_BASE_SET_BUILD) continue; memset(buff, 0, sizeof(buff)); if (Builds[i] > LAST_DBC_IN_DATA_BUILD) { prefix = ""; _stprintf(buff, _T("%s/Data/%s/wow-update-%s-%u.MPQ"), input_path, LocalesT[locale], LocalesT[locale], Builds[i]); } else { prefix = Locales[locale]; _stprintf(buff, _T("%s/Data/wow-update-%u.MPQ"), input_path, Builds[i]); } if (!SFileOpenPatchArchive(LocaleMpq, buff, prefix, 0)) { if (GetLastError() != ERROR_FILE_NOT_FOUND) _tprintf(_T("Cannot open patch archive %s\n"), buff); continue; } else _tprintf(_T("Loaded %s\n"), buff); } printf("\n"); return true; }
bool LoadLocaleMPQFile(int locale) { TCHAR buff[512]; memset(buff, 0, sizeof(buff)); _stprintf(buff, _T("%s/Data/%s/locale-%s.MPQ"), input_path, LocalesT[locale], LocalesT[locale]); if (!SFileOpenArchive(buff, 0, MPQ_OPEN_READ_ONLY, &LocaleMpq)) { if (GetLastError() != ERROR_PATH_NOT_FOUND) _tprintf(_T("Cannot open archive %s\n"), buff); return false; } char const* prefix = NULL; for (int i = 0; Builds[i] && Builds[i] <= CONF_TargetBuild; ++i) { memset(buff, 0, sizeof(buff)); if (Builds[i] > LAST_DBC_IN_DATA_BUILD) { prefix = ""; _stprintf(buff, _T("%s/Data/%s/wow-update-%s-%u.MPQ"), input_path, LocalesT[locale], LocalesT[locale], Builds[i]); } else { prefix = Locales[locale]; _stprintf(buff, _T("%s/Data/wow-update-%u.MPQ"), input_path, Builds[i]); } if (!SFileOpenPatchArchive(LocaleMpq, buff, prefix, 0)) { if (GetLastError() != ERROR_FILE_NOT_FOUND) _tprintf(_T("Cannot open patch archive %s\n"), buff); continue; } } return true; }
void LoadCommonMPQFiles(uint32 build) { TCHAR filename[512]; _stprintf(filename, _T("%sworld.MPQ"), input_path); if (!SFileOpenArchive(filename, 0, MPQ_OPEN_READ_ONLY, &WorldMpq)) { if (GetLastError() != ERROR_FILE_NOT_FOUND) _tprintf(_T("Cannot open archive %s\n"), filename); return; } int count = sizeof(CONF_mpq_list) / sizeof(char*); for (int i = 1; i < count; ++i) { if (build < 15211 && !strcmp("world2.MPQ", CONF_mpq_list[i])) // 4.3.2 and higher MPQ continue; _stprintf(filename, _T("%s%s"), input_path, CONF_mpq_list[i]); if (!SFileOpenPatchArchive(WorldMpq, filename, "", 0)) { if (GetLastError() != ERROR_FILE_NOT_FOUND) _tprintf(_T("Cannot open archive %s\n"), filename); else _tprintf(_T("Not found %s\n"), filename); } else { _tprintf(_T("Loaded %s\n"), filename); bool found = false; int count = 0; SFILE_FIND_DATA data; HANDLE find = SFileFindFirstFile(WorldMpq, "*.*", &data, NULL); if (find != NULL) { do { ++count; if (data.dwFileFlags & MPQ_FILE_PATCH_FILE) { found = true; break; } } while (SFileFindNextFile(find, &data)); } SFileFindClose(find); printf("Scanned %d files, found patch = %d\n", count, found); } } char const* prefix = NULL; for (int i = 0; Builds[i] && Builds[i] <= CONF_TargetBuild; ++i) { memset(filename, 0, sizeof(filename)); if (Builds[i] > LAST_DBC_IN_DATA_BUILD) { prefix = ""; _stprintf(filename, _T("%swow-update-base-%u.MPQ"), input_path, Builds[i]); } else { prefix = "base"; _stprintf(filename, _T("%swow-update-%u.MPQ"), input_path, Builds[i]); } if (!SFileOpenPatchArchive(WorldMpq, filename, prefix, 0)) { if (GetLastError() != ERROR_FILE_NOT_FOUND) _tprintf(_T("Cannot open patch archive %s\n"), filename); else _tprintf(_T("Not found %s\n"), filename); continue; } else { _tprintf(_T("Loaded %s\n"), filename); bool found = false; int count = 0; SFILE_FIND_DATA data; HANDLE find = SFileFindFirstFile(WorldMpq, "*.*", &data, NULL); if (find != NULL) { do { ++count; if (data.dwFileFlags & MPQ_FILE_PATCH_FILE) { found = true; break; } } while (SFileFindNextFile(find, &data)); } SFileFindClose(find); printf("Scanned %d files, found patch = %d\n", count, found); } } }
void LoadMapMPQFiles() { char filename[512]; //Locale-xxXX.MPQ sprintf(filename,"%s/Data/world.MPQ", input_path); printf("Loading %s\n", filename); if (!SFileOpenArchive(filename, 0, MPQ_OPEN_READ_ONLY, &WorldMPQ)) { printf("%i\n", GetLastError()); assert(false && "\nLoad of MPQ failed"); } for(int i = 0; i < PATCH_REV_COUNT; ++i) { char ext[7] = ""; sprintf(ext, "-%i", patchRev[i]); sprintf(filename,"%s/Data/wow-update%s.MPQ", input_path, ext); printf(" -%i\n", patchRev[i]); if (!SFileOpenPatchArchive(WorldMPQ, filename, "base", MPQ_OPEN_READ_ONLY)) { printf("%i\n", GetLastError()); assert(false && "Load of MPQ patch failed"); } } if (!SFileIsPatchedArchive(WorldMPQ)) assert(false && "An error occured"); for(int j = 0; j < 3; j++) { sprintf(filename, "%s/Data/expansion%u.MPQ", input_path, j+1); printf("Loading %s\n", filename); if (!SFileOpenArchive(filename, 0, MPQ_OPEN_READ_ONLY, &ExpansionsMPQ[j])) { printf("%i\n", GetLastError()); assert(false && "\nLoad of MPQ failed"); } if (!IsValidMpqHandle((TMPQArchive*)ExpansionsMPQ[j])) { printf("Load of Expansion%u.MPQ Failed!\n", j+1); printf("\nPlease verify you downloaded all the MPQs. You should replace\n'SET accountType \"xx\"'\nin your WTF/config.wtf and WTF/launcher.wtf by\n'SET accountType \"CT\"'\nand then restart your launcher\n"); exit(1); } for(int i = 0; i < PATCH_REV_COUNT; ++i) { char ext[7] = ""; sprintf(ext, "-%i", patchRev[i]); sprintf(filename,"%s/Data/wow-update%s.MPQ", input_path, ext); printf(" -%i\n", patchRev[i]); if (!SFileOpenPatchArchive(ExpansionsMPQ[j], filename, "base", MPQ_OPEN_READ_ONLY)) { printf("%i\n", GetLastError()); assert(false && "Load of MPQ patch failed"); } } } }
void LoadLocaleMPQFiles(int const locale) { char filename[512]; //Locale-xxXX.MPQ sprintf(filename,"%s/Data/%s/locale-%s.MPQ", input_path, langs[locale], langs[locale]); printf("Loading %s\n", filename); if(!SFileOpenArchive(filename, 0, MPQ_OPEN_READ_ONLY, &localeMPQ[0])) { printf("%i\n", GetLastError()); assert(false && "\nLoad of MPQ failed"); } for(int i = 0; i < PATCH_REV_COUNT; ++i) { bool result; if(patchRev[i] >= 13914) { GetMPQFileName(filename, patchRev[i], input_path, langs[locale]); result = SFileOpenPatchArchive(localeMPQ[0], filename, NULL, MPQ_OPEN_READ_ONLY); } else { GetMPQFileName(filename, patchRev[i], input_path); result = SFileOpenPatchArchive(localeMPQ[0], filename, langs[locale], MPQ_OPEN_READ_ONLY); } if(!result) { printf("%i\n", GetLastError()); assert(false && "Load of MPQ patch failed"); } } if(!SFileIsPatchedArchive(localeMPQ[0])) assert(false && "An error occured"); //Others for(int i = 0; i < PATCH_REV_COUNT; ++i) { GetMPQFileName(filename, patchRev[i], input_path, langs[locale]); printf("Loading %s\n", filename); if(!SFileOpenArchive(filename, 0, MPQ_OPEN_READ_ONLY, &localeMPQ[i+1])) { printf("%i\n", GetLastError()); assert(false && "Load of MPQ failed"); } for(int j = i + 1; j < PATCH_REV_COUNT; ++j) { bool result; if(patchRev[j] >= 13914) { GetMPQFileName(filename, patchRev[j], input_path, langs[locale]); result = SFileOpenPatchArchive(localeMPQ[i+1], filename, NULL, MPQ_OPEN_READ_ONLY); } else { GetMPQFileName(filename, patchRev[j], input_path); result = SFileOpenPatchArchive(localeMPQ[i+1], filename, langs[locale], MPQ_OPEN_READ_ONLY); } if(!result) { printf("%j\n", GetLastError()); assert(false && "Load of MPQ patch failed"); } } if(!SFileIsPatchedArchive(localeMPQ[i+1]) && i != PATCH_REV_COUNT - 1) assert(false && "An error occured"); } }