rendered paste bodydiff --git a/contrib/vmap_extractor_v2/vmapextract/vmapexport.cpp b/contrib/vmap_extractor_v2/vmapextract/vmapexport.cppindex 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<std::string>& 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<std::string>& pArchiveNames) { int m = cpy[i]; if(isdigit(m))- p++; + p++; } } if(p != 3)@@ -189,12 +189,12 @@ int ExtractWmo(const std::vector<std::string>& 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; i<map_count; i++)- {- sprintf(fn,"World\\Maps\\%s\\%s.wdt", map_ids[i].name, map_ids[i].name);- WDTFile WDT(fn,map_ids[i].name);- if(WDT.init())- {- for (int x=0; x<64; x++)- {- for (int y=0; y<64; y++) - {- if (ADTFile*ADT = WDT.GetMap(x,y))- {- ADT->init();- 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)<argc) { hasInputPathParam = true; strcpy(input_path, argv[i+1]);@@ -468,10 +500,10 @@ bool processArgv(int argc, char ** argv, char*versionString) } else { result = false; }- } else if(strcmp("-?",argv[1]) == 0) {+ } else if(strcmp("-?",argv[1]) == 0) { result = false;- } else if(strcmp("-l",argv[i]) == 0) {- preciseVectorData = true;+ } else if(strcmp("-l",argv[i]) == 0) {+ preciseVectorData = true; } else { result = false; break;@@ -554,7 +586,7 @@ int main(int argc, char ** argv) { map_ids[x].id=dbc->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.cppindex 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.hindex 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