diff --git a/contrib/vmap_extractor_v2/vmapextract/vmapexport.cpp b/contrib/vmap_extractor_v2/vmapextract/vmapexport.cpp index 0d2b39f..9f0e3d8 100644 --- a/contrib/vmap_extractor_v2/vmapextract/vmapexport.cpp +++ b/contrib/vmap_extractor_v2/vmapextract/vmapexport.cpp @@ -58,7 +58,7 @@ char input_path[1024]="."; bool hasInputPathParam = false; char tmp[512]; bool preciseVectorData = false; -//char gamepath[1024]; +//char gamepath[1024]; //Convert function //bool ConvertADT(char*,char*); @@ -128,7 +128,7 @@ int ExtractWmo(const std::vector& pArchiveNames) // Copy files from archive if(nError == ERROR_SUCCESS) - { + { SFILE_FIND_DATA wf; HANDLE hFind = SFileFindFirstFile(hMpq,"*.wmo*", &wf, szListFile); bResult = TRUE; @@ -153,7 +153,7 @@ int ExtractWmo(const std::vector& pArchiveNames) { int m = cpy[i]; if(isdigit(m)) - p++; + p++; } } if(p != 3) @@ -189,12 +189,12 @@ int ExtractWmo(const std::vector& pArchiveNames) bResult = SFileFindNextFile(hFind, &wf); break; } - Wmo_nVertices += fgroup->ConvertToVMAPGroupWmo(output, preciseVectorData); + Wmo_nVertices += fgroup->ConvertToVMAPGroupWmo(output, preciseVectorData); } } fseek(output, 8, SEEK_SET); // store the correct no of vertices fwrite(&Wmo_nVertices,sizeof(int),1,output); - fclose(output); + fclose(output); } } else { fclose(n); @@ -227,6 +227,44 @@ void ExtractMapsFromMpq() { } + +void SetMapWmo(char *WmoInstName, char *MapName) +{ + char tempname[512]; + const char dirname[] = "buildings\\dir"; + + sprintf(tempname, "buildings\\%s", WmoInstName); + FILE *input; + input = fopen(tempname, "r+b"); + if(!input) + { + return; + } + fseek(input, 8, SEEK_SET); // get the correct no of vertices + int nVertices; + fread(&nVertices, sizeof (int), 1, input); + fclose(input); + if(nVertices == 0) + { + return; + } + + FILE *dirfile; + dirfile = fopen(dirname, "ab"); + if(!dirfile) + { + printf("Can't open dirfile!'%s'\n"); + return; + } + + fprintf(dirfile,"65 65 %s/%s 17066.666016,0.000000,17066.666016_0.000000,0.000000,0.000000 1.0 %d 0 0,0 0\n", + MapName, + WmoInstName, + nVertices + ); + fclose(dirfile); +} + //----------------------------------------------------------------------------- void ParsMapFiles() { @@ -255,34 +293,28 @@ void ParsMapFiles() } } } + printf("Processing Transports...\n"); + SetMapWmo("Transportship_Ne.wmo","582"); + SetMapWmo("Transportship.wmo","584"); + SetMapWmo("Transportship_Ne.wmo","586"); + SetMapWmo("Transportship_Ne.wmo","587"); + SetMapWmo("Transportship.wmo","588"); + SetMapWmo("Transport_Zeppelin.wmo","589"); + SetMapWmo("Transport_Zeppelin.wmo","590"); + SetMapWmo("Transport_Zeppelin.wmo","591"); + SetMapWmo("Transport_Zeppelin.wmo","592"); + SetMapWmo("Transportship.wmo","593"); + SetMapWmo("Transport_Pirate_Ship.wmo","594"); + SetMapWmo("Transport_Horde_Zeppelin.wmo","610"); + SetMapWmo("Transport_Icebreaker_Ship.wmo","612"); + SetMapWmo("Transport_Horde_Zeppelin.wmo","613"); + SetMapWmo("Transport_Icebreaker_Ship.wmo","614"); + SetMapWmo("Transport_Tuskarr_Ship.wmo","620"); + SetMapWmo("Transport_Tuskarr_Ship.wmo","621"); + SetMapWmo("Nd_Hordegunship.wmo","622"); + SetMapWmo("Nd_Alliancegunship.wmo","623"); } -#if 0 -void ParsMapFiles() -{ - - char fn[512]; - for (unsigned int i=0; iinit(); - delete ADT; - } - } - } - } - } -} -#endif //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx void getGamePath() @@ -297,10 +329,10 @@ void getGamePath() //l = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Blizzard Entertainment\\Burning Crusade Closed Beta",0,KEY_QUERY_VALUE,&key); l = RegQueryValueEx(key,"InstallPath",0,&t,(LPBYTE)input_path,&s); RegCloseKey(key); - if (strlen(input_path) > 0) - { - if (input_path[strlen(input_path) - 1] != '\\') strcat(input_path, "\\"); - } + if (strlen(input_path) > 0) + { + if (input_path[strlen(input_path) - 1] != '\\') strcat(input_path, "\\"); + } strcat(input_path,"Data\\"); #else strcpy(input_path,"data/"); @@ -456,9 +488,9 @@ bool processArgv(int argc, char ** argv, char*versionString) bool preciseVectorData = false; for(int i=1; i< argc; ++i) { - if(strcmp("-s",argv[i]) == 0) { - preciseVectorData = false; - } else if(strcmp("-d",argv[i]) == 0) { + if(strcmp("-s",argv[i]) == 0) { + preciseVectorData = false; + } else if(strcmp("-d",argv[i]) == 0) { if((i+1)getRecord (x).getUInt(0); strcpy(map_ids[x].name,dbc->getRecord(x).getString(1)); - printf("Map - %s\n",map_ids[x].name); + printf("Map - %s\n",map_ids[x].name); } delete dbc; diff --git a/src/game/Transports.cpp b/src/game/Transports.cpp index 6f61786..7176cf8 100644 --- a/src/game/Transports.cpp +++ b/src/game/Transports.cpp @@ -29,7 +29,7 @@ void MapManager::LoadTransports() { - QueryResult *result = WorldDatabase.Query("SELECT entry, name, period FROM transports"); + QueryResult *result = WorldDatabase.Query("SELECT entry, name, period, map FROM transports"); uint32 count = 0; @@ -56,6 +56,7 @@ void MapManager::LoadTransports() uint32 entry = fields[0].GetUInt32(); std::string name = fields[1].GetCppString(); t->m_period = fields[2].GetUInt32(); + t->m_vmap = fields[3].GetUInt16(); const GameObjectInfo *goinfo = objmgr.GetGameObjectInfo(entry); diff --git a/src/game/Transports.h b/src/game/Transports.h index 4d58a80..bb45d72 100644 --- a/src/game/Transports.h +++ b/src/game/Transports.h @@ -107,6 +107,7 @@ class Transport : private GameObject WayPointMap m_WayPoints; uint32 m_nextNodeTime; uint32 m_period; + uint16 m_vmap; private: void TeleportTransport(uint32 newMapid, float x, float y, float z); diff --git a/win/VC80/mangosd.vcproj b/win/VC80/mangosd.vcproj