Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma tabsize 0
- #include <a_samp>
- #include <sscanf2>
- #include <streamer>
- #include <filemanager>
- #include <Vectoral_Multimap>
- new oggetti;
- new veicoli;
- #if defined FILTERSCRIPT
- public OnFilterScriptInit()
- {
- LoadMapLoader();
- return ML_OnFilterScriptInit();
- }
- #if defined _ALS_OnFilterScriptInit
- #undef OnFilterScriptInit
- #else
- #define _ALS_OnOnFilterScriptInit
- #endif
- #define OnFilterScriptInit ML_OnFilterScriptInit
- forward ML_OnFilterScriptInit();
- #else
- public OnGameModeInit()
- {
- LoadMapLoader();
- return ML_OnGameModeInit();
- }
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #else
- #define _ALS_OnOnGameModeInit
- #endif
- #define OnGameModeInit ML_OnGameModeInit
- forward ML_OnGameModeInit();
- #endif
- stock LoadMapLoader()
- {
- if (!dir_exists("maps"))
- dir_create("maps");
- oggetti = cmmap();
- veicoli = cmmap();
- }
- stock LoadMap(filename[],worldid=-1,Float:streamdistance=200.0,bool:loadvehicles=false)
- {
- new tempo=GetTickCount();
- new percorsoFile[128];
- format(percorsoFile,sizeof(percorsoFile),"maps/%s",filename);
- if (!file_exists(percorsoFile))
- {
- printf("Unable to load map %s",percorsoFile);
- return 0;
- }
- new File:file = f_open(percorsoFile);
- new Float:x, Float:y, Float:z;
- new Float:rx, Float:ry, Float:rz;
- new model, interior, paintjob, color1, color2;
- new string[500], colori[20];
- new countOggetti=0;
- new countVeicoli=0;
- while(f_read(file, string))
- {
- 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))
- {
- cmmap_insert(oggetti, filename, CreateDynamicObject(model,x,y,z,rx,ry,rz,worldid,interior,-1,streamdistance));
- countOggetti++;
- }
- if (loadvehicles)
- {
- 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))
- {
- sscanf(string, "p<\">'color='s[20]", colori);
- sscanf(colori, "p<,>ii", color1, color2);
- new veicolo = CreateVehicle(model,x,y,z,rz,color1,color2,-1);
- if (veicolo != INVALID_VEHICLE_ID)
- {
- ChangeVehiclePaintjob(veicolo, paintjob);
- LinkVehicleToInterior(veicolo, interior);
- SetVehicleVirtualWorld(veicolo, worldid);
- cmmap_insert(veicoli, filename, veicolo);
- countVeicoli++;
- }
- }
- }
- }
- f_close(file);
- printf("%d objects and %d vehicles loaded from %s in %d ms",countOggetti,countVeicoli,percorsoFile,GetTickCount()-tempo);
- return 1;
- }
- stock UnloadMap(filename[])
- {
- if (!IsMapLoaded(filename))
- {
- printf("Map %s not found", filename);
- return 0;
- }
- if (cmmap_contains(oggetti, filename))
- {
- for (new i=0; i<cmmap_count(oggetti, filename); i++)
- DestroyDynamicObject(cmmap_get(oggetti, filename, i));
- cmmap_remove(oggetti, filename);
- }
- if (cmmap_contains(veicoli, filename))
- {
- for (new i=0; i<cmmap_count(veicoli, filename); i++)
- DestroyVehicle(cmmap_get(veicoli, filename, i));
- cmmap_remove(veicoli, filename);
- }
- return printf("Map %s has been unloaded", filename);
- }
- stock IsMapLoaded(filename[])
- {
- if (cmmap_contains(oggetti, filename) || cmmap_contains(veicoli, filename)) return true;
- else return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment