stokdam

Mta .map loader

Jun 15th, 2014
688
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.33 KB | None | 0 0
  1. #pragma tabsize 0
  2.  
  3. #include <a_samp>
  4. #include <sscanf2>
  5. #include <streamer>
  6. #include <filemanager>
  7. #include <Vectoral_Multimap>
  8.  
  9. new oggetti;
  10. new veicoli;
  11.  
  12. #if defined FILTERSCRIPT
  13. public OnFilterScriptInit()
  14. {
  15. LoadMapLoader();
  16. return ML_OnFilterScriptInit();
  17. }
  18.  
  19.     #if defined _ALS_OnFilterScriptInit
  20.         #undef OnFilterScriptInit
  21.     #else
  22.         #define _ALS_OnOnFilterScriptInit
  23.     #endif
  24.     #define OnFilterScriptInit ML_OnFilterScriptInit
  25. forward ML_OnFilterScriptInit();
  26.  
  27. #else
  28. public OnGameModeInit()
  29. {
  30. LoadMapLoader();
  31. return ML_OnGameModeInit();
  32. }
  33.  
  34.     #if defined _ALS_OnGameModeInit
  35.         #undef OnGameModeInit
  36.     #else
  37.         #define _ALS_OnOnGameModeInit
  38.     #endif
  39.     #define OnGameModeInit ML_OnGameModeInit
  40. forward ML_OnGameModeInit();
  41. #endif
  42.  
  43.  
  44.  
  45.  
  46. stock LoadMapLoader()
  47. {
  48. if (!dir_exists("maps"))
  49.     dir_create("maps");
  50. oggetti = cmmap();
  51. veicoli = cmmap();
  52. }
  53.  
  54.  
  55. stock LoadMap(filename[],worldid=-1,Float:streamdistance=200.0,bool:loadvehicles=false)
  56. {
  57.     new tempo=GetTickCount();
  58.     new percorsoFile[128];
  59.     format(percorsoFile,sizeof(percorsoFile),"maps/%s",filename);
  60.     if (!file_exists(percorsoFile))
  61.     {
  62.         printf("Unable to load map %s",percorsoFile);
  63.         return 0;
  64.     }
  65.     new File:file = f_open(percorsoFile);
  66.     new Float:x, Float:y, Float:z;
  67.     new Float:rx, Float:ry, Float:rz;
  68.     new model, interior, paintjob, color1, color2;
  69.     new string[500], colori[20];
  70.     new countOggetti=0;
  71.     new countVeicoli=0;
  72.  
  73.     while(f_read(file, string))
  74.     {
  75.    
  76.         if(!sscanf(string,"p<\">'object''interior='i'model='i'posX='f'posY='f'posZ='f'rotX='f'rotY='f'rotZ='f",interior,model,x,y,z,rx,ry,rz))
  77.         {
  78.             cmmap_insert(oggetti, filename, CreateDynamicObject(model,x,y,z,rx,ry,rz,worldid,interior,-1,streamdistance));
  79.             countOggetti++;
  80.         }
  81.  
  82.         if (loadvehicles)
  83.         {
  84.             if(!sscanf(string,"p<\">'vehicle''paintjob='i'interior='i'model='i'posX='f'posY='f'posZ='f'rotZ='f",paintjob,interior,model,x,y,z,rz))
  85.             {
  86.                 sscanf(string, "p<\">'color='s[20]", colori);
  87.                 sscanf(colori, "p<,>ii", color1, color2);
  88.                 new veicolo = CreateVehicle(model,x,y,z,rz,color1,color2,-1);
  89.                 if (veicolo != INVALID_VEHICLE_ID)
  90.                 {
  91.                     ChangeVehiclePaintjob(veicolo, paintjob);
  92.                     LinkVehicleToInterior(veicolo, interior);
  93.                     SetVehicleVirtualWorld(veicolo, worldid);
  94.                     cmmap_insert(veicoli, filename, veicolo);
  95.                     countVeicoli++;
  96.                 }
  97.             }
  98.         }
  99.        
  100.     }
  101.     f_close(file);
  102.     printf("%d objects and %d vehicles loaded from %s in %d ms",countOggetti,countVeicoli,percorsoFile,GetTickCount()-tempo);
  103.  
  104. return 1;
  105. }
  106.  
  107. stock UnloadMap(filename[])
  108. {
  109.     if (!IsMapLoaded(filename))
  110.     {
  111.         printf("Map %s not found", filename);
  112.         return 0;
  113.     }
  114.  
  115.     if (cmmap_contains(oggetti, filename))
  116.     {
  117.     for (new i=0; i<cmmap_count(oggetti, filename); i++)
  118.         DestroyDynamicObject(cmmap_get(oggetti, filename, i));
  119.     cmmap_remove(oggetti, filename);
  120.     }
  121.    
  122.     if (cmmap_contains(veicoli, filename))
  123.     {
  124.     for (new i=0; i<cmmap_count(veicoli, filename); i++)
  125.         DestroyVehicle(cmmap_get(veicoli, filename, i));
  126.     cmmap_remove(veicoli, filename);
  127.     }
  128.  
  129.     return printf("Map %s has been unloaded", filename);
  130. }
  131.  
  132. stock IsMapLoaded(filename[])
  133. {
  134.     if (cmmap_contains(oggetti, filename) || cmmap_contains(veicoli, filename)) return true;
  135.     else return false;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment