All pastes #1355200 Raw Edit

Mobs on transport

public diff v1 · immutable
#1355200 ·published 2009-03-07 12:45 UTC
rendered paste body
diff --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