Advertisement
FoxHound

Easy Map Including v4

Jun 20th, 2015
461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 24.00 KB | None | 0 0
  1. /*              Easy Mapincluding
  2.  *       (c) Copyright 2015 by FoxHound
  3.  *
  4.  * @author      : FoxHound
  5.  * @date        : 20 June 2015
  6.  * @version     : v4.0
  7.  *
  8.  * @specialthx  : • 'Meta' for the Idea to convert the Maps.
  9.  *                • For the Users who use this and support me.
  10.  *
  11.  *           ___           ___
  12.  *          /\__\         /|  |
  13.  *         /:/ _/_       |:|  |
  14.  *        /:/ /\__\      |:|  |
  15.  *       /:/ /:/  /    __|:|__|
  16.  *      /:/_/:/  /    /::::\__\_____
  17.  *      \:\/:/  /     ~~~~\::::/___/
  18.  *       \::/__/          |:|~~|
  19.  *        \:\  \          |:|  |
  20.  *         \:\__\         |:|__|
  21.  *          \/__/         |/__/
  22.  *      +--+-+-+-+-+-+-+-+-+-+--+
  23.  *      | p r o d u c t i o n s |
  24.  *      +--+-+-+-+-+-+-+-+-+-+--+
  25.  *
  26.  */
  27.  
  28. #if !defined MAX_MAPS
  29.     #define MAX_MAPS 80 //Maximal maps you can load. Increase it, if you want to load more than 80 maps
  30. #endif
  31. #if !defined MAX_OBJECT_PER_MAP
  32.     #define MAX_OBJECT_PER_MAP 800 //Mapcount + Vehiclecount + pickupcount.
  33. #endif
  34. #if !defined MAX_OBJECTS_REMOVED
  35.     #define MAX_OBJECTS_REMOVED 500 //max WORLD objects you removed on the map
  36. #endif
  37.  
  38. forward OnObjectDataLoad(modelid,Float:posX,Float:posY,Float:posZ,Float:rotX,Float:rotY,Float:rotZ,Float:drawdistance);
  39. forward OnVehicleDataLoad(vehicletype,Float:x,Float:y,Float:z,Float:rotation,interior,color1,color2,respawn_delay,paintjob,numberplate[],vcomp1,vcomp2,vcomp3,vcomp4,vcomp5,vcomp6,vcomp7,vcomp8,vcomp9,vcomp10,vcomp11,vcomp12,vcomp13,vcomp14);
  40. forward OnPickupDataLoad(modelid,Float:posX,Float:posY,Float:posZ,virtualworld);
  41. forward OnActorDataLoad(actorid,modelid,Float:posX,Float:posY,Float:posZ,Float:angle);
  42.  
  43. new mID[MAX_MAPS][MAX_OBJECT_PER_MAP];
  44. new ObjectCount[MAX_MAPS]={0,...};
  45. new VehicleCount[MAX_MAPS]={0,...};
  46. new PickupCount[MAX_MAPS]={0,...};
  47. new PedCount[MAX_MAPS]={0,...};
  48. new mapIdCount,mifx_str[256],firstload=1,mname[MAX_MAPS][36],idofmap[MAX_MAPS]={-1,...};
  49.  
  50. enum e_wO2d { wo2dmodel, wo2did[32], Float:wo2dpos[4] }
  51. new wO2d[MAX_OBJECTS_REMOVED][e_wO2d],wO2dcount=0;
  52.  
  53. stock RGBAToHex(r, g, b, a) { return (r<<24 | g<<16 | b<<8 | a); } //By Betamaster
  54.  
  55.  
  56. stock LoadMap(mapfile[],cnvrt=0) {    //bY FoxHound
  57.     if(mapIdCount>=MAX_MAPS) { return printf("[MAP] * ERROR: Couldn't load Map: '%s.map'\n[MAP] * INFO: Please increase the Amount of 'MAX_MAPS' in 'mapincluding.inc'...\n[MAP] * INFO: ...to load more maps.",mifx_str); }
  58.     new flnm[48],funcFound=0,mapmode=0,File:nMapFile,mifxstrfnd=strfind(mapfile,".map",true),loadingMapID=mapIdCount,
  59.     Float:veh_coords[4],lmf_model,lmf_id[32],veh_id[32],veh_data[3]={0,...},fxstr[64],veh_color[2]={-1,-1},veh_plate[16],Float:lmf_coords[7],i[5]={0,...};
  60.     if(mifxstrfnd>-1) { strdel(mapfile,mifxstrfnd,mifxstrfnd+4); }
  61.     if(firstload && fexist(" ")) {
  62.         fremove(" ");
  63.         firstload=0; }
  64.     for(new gg=0;gg<MAX_MAPS;gg++) {
  65.         if(ObjectCount[gg]==-1) { loadingMapID=gg; ObjectCount[gg]=0; break; } }
  66.     format(mname[loadingMapID],64,"%s",mapfile);
  67.     idofmap[loadingMapID]=loadingMapID;
  68.     format(mifx_str,sizeof(mifx_str),"maps/%s.map",mname[loadingMapID]);
  69.     if(!fexist(mifx_str)) { return printf("[MAP] * ERROR: Couldn't load Map: '%s' <File Not Found>",mifx_str); }
  70.     if(!cnvrt) {
  71.         new mi_fx_mpnmfnd=-1,File:tmpfile, mi_fx_lolstr[64];
  72.         format(mi_fx_lolstr,sizeof(mi_fx_lolstr),"(%s-",mapfile);
  73.         tmpfile=fopen(" ",io_readwrite);
  74.         do {
  75.             mi_fx_mpnmfnd=strfind(mifx_str,mi_fx_lolstr,true);
  76.             if(mi_fx_mpnmfnd>-1) { break; } }
  77.         while(fread(tmpfile,mifx_str));
  78.         if(mi_fx_mpnmfnd==-1) { format(mifx_str,sizeof(mifx_str),"(%s-%d)\r\n",mapfile,loadingMapID),fwrite(tmpfile,mifx_str); }
  79.         else { return printf("[MAP] * ERROR: Couldn't load Map: '%s.map' <Already Loaded>",mname[loadingMapID]),fclose(tmpfile); }
  80.         fclose(tmpfile); }
  81.     format(flnm,sizeof(flnm),"maps/OUT_%s.map",mname[loadingMapID]);
  82.     format(mifx_str,sizeof(mifx_str),"maps/%s.map",mname[loadingMapID]);
  83.     new File:map = fopen(mifx_str,io_readwrite);
  84.     while(fread(map,mifx_str)) {
  85.         if(strfind(mifx_str,");",true)!=-1) {
  86.             if(cnvrt) {
  87.                 return printf("[MAP] * ERROR: The Map \"%s\" is already a SA-MP Map.\n[MAP] * INFO: Convertion aborted.",mapfile),0; }
  88.             break; }
  89.         else if(strfind(mifx_str,"\"race\"",true)!=-1) { mapmode=1; break; }
  90.         else if(strfind(mifx_str,"\"editor_main\"",true)!=-1) { mapmode=2; break; } }
  91.     if(cnvrt) {  nMapFile=fopen(flnm,io_write); }
  92.     if(!mapmode) {
  93.         do {
  94.             if(((strfind(mifx_str,"Object",true)==-1) && (strfind(mifx_str,"Vehicle",true)==-1)) || (strfind(mifx_str,"//")==0)) { print("hähä"); i[0]--; continue; }
  95.             if(i[3]) { i[0]--; continue; }
  96.          // OBJECTLOADER
  97.             if(strfind(mifx_str,"Object",true)!=-1) {
  98.                 lmf_model=strval(mi_fx_getPartOfString(mifx_str,1,'(',','));
  99.                 lmf_coords[0]=floatstr(mi_fx_getPartOfString(mifx_str,1,','));
  100.                 lmf_coords[1]=floatstr(mi_fx_getPartOfString(mifx_str,2,','));
  101.                 lmf_coords[2]=floatstr(mi_fx_getPartOfString(mifx_str,3,','));
  102.                 lmf_coords[3]=floatstr(mi_fx_getPartOfString(mifx_str,4,','));
  103.                 lmf_coords[4]=floatstr(mi_fx_getPartOfString(mifx_str,5,','));
  104.                 lmf_coords[5]=floatstr(mi_fx_getPartOfString(mifx_str,6,','));
  105.                 lmf_coords[6]=floatstr(mi_fx_getPartOfString(mifx_str,7,',',')'));
  106.                 lmf_coords[6] = (lmf_coords[6]) ? lmf_coords[6] : 150.0;
  107.                 funcFound=CallRemoteFunction("OnObjectDataLoad","dfffffff",lmf_model,lmf_coords[0],lmf_coords[1],lmf_coords[2],lmf_coords[3],lmf_coords[4],lmf_coords[5],lmf_coords[6]);
  108.                 if(!funcFound) { mID[loadingMapID][ObjectCount[loadingMapID]+(VehicleCount[loadingMapID])]=CreateObject(lmf_model,lmf_coords[0],lmf_coords[1],lmf_coords[2],lmf_coords[3],lmf_coords[4],lmf_coords[5],lmf_coords[6]); ObjectCount[loadingMapID]++; }
  109.             }
  110.             if(strfind(mifx_str,"Vehicle",true)!=-1) {
  111.              // VEHICLELOEADER
  112.                 veh_data[0]=strval(mi_fx_getPartOfString(mifx_str,1,'(',','));
  113.                 veh_coords[0]=floatstr(mi_fx_getPartOfString(mifx_str,1,','));
  114.                 veh_coords[1]=floatstr(mi_fx_getPartOfString(mifx_str,2,','));
  115.                 veh_coords[2]=floatstr(mi_fx_getPartOfString(mifx_str,3,','));
  116.                 veh_coords[3]=floatstr(mi_fx_getPartOfString(mifx_str,4,','));
  117.                 veh_color[0]=strval(mi_fx_getPartOfString(mifx_str,5,','));
  118.                 veh_color[1]=strval(mi_fx_getPartOfString(mifx_str,6,','));
  119.                 veh_data[1]=strval(mi_fx_getPartOfString(mifx_str,7,',',')'));
  120.                 veh_data[1] = (!veh_data[1]) ? -1 : veh_data[1];
  121.                 funcFound=CallRemoteFunction("OnVehicleDataLoad","dffffddddds",veh_data[0],veh_coords[0],veh_coords[1],veh_coords[2],veh_coords[3],0,veh_color[0],veh_color[1],veh_data[1],3,"FX-GA 21");
  122.                 if(!funcFound) { mID[loadingMapID][VehicleCount[loadingMapID]+(ObjectCount[loadingMapID+1])]=CreateVehicle(veh_data[0],veh_coords[0],veh_coords[1],veh_coords[2],veh_coords[3],veh_color[0],veh_color[1],veh_data[1]); VehicleCount[loadingMapID]++; }
  123.             } } while(fread(map,mifx_str)); }
  124.     else if(mapmode==1) {
  125.         for(; fread(map,mifx_str); i[0]++) {
  126.         if(strfind(mifx_str,"//")==0) { i[0]--; continue; }
  127.         if(i[4]) { i[0]--; continue; }
  128.         if(strfind(mifx_str,"spawnpoint",true)!=-1)
  129.         {
  130.             i[1]=strfind(mifx_str,"<vehicle>"), i[2]=strfind(mifx_str,"</vehicle>");
  131.             strmid(fxstr,mifx_str,(i[1]+9),i[2]);
  132.             veh_data[0]=strval(fxstr);
  133.             i[1]=strfind(mifx_str,"<position>"), i[2]=strfind(mifx_str,"</position>");
  134.             strmid(fxstr,mifx_str,(i[1]+10),i[2]);
  135.             veh_coords[0]=floatstr(mi_fx_getPartOfString(fxstr)), veh_coords[1]=floatstr(mi_fx_getPartOfString(fxstr,1)), veh_coords[2]=floatstr(mi_fx_getPartOfString(fxstr,2));
  136.             i[1]=strfind(mifx_str,"<rotation>"), i[2]=strfind(mifx_str,"</rot");
  137.             strmid(fxstr,mifx_str,(i[1]+10),i[2]);
  138.             veh_coords[3]=floatstr(mi_fx_getPartOfString(fxstr));
  139.             if(!cnvrt) {
  140.                 funcFound=CallRemoteFunction("OnVehicleDataLoad","dffffddddds",veh_data[0],veh_coords[0],veh_coords[1],veh_coords[2],veh_coords[3],0,-1,-1,-1,3,"FOXHOUND");
  141.                 if(!funcFound) { mID[loadingMapID][VehicleCount[loadingMapID]+(ObjectCount[loadingMapID+1])]=CreateVehicle(veh_data[0],veh_coords[0],veh_coords[1],veh_coords[2],veh_coords[3],-1,-1,-1); VehicleCount[loadingMapID]++; } }
  142.             else {
  143.                 format(mifx_str,sizeof(mifx_str),"CreateVehicle(%d,%f,%f,%f,%f,-1,-1,-1);\r\n",veh_data[0],veh_coords[0],veh_coords[1],veh_coords[2],veh_coords[3]); fwrite(nMapFile,mifx_str); }
  144.         }
  145.         if(!i[3]) {
  146.             i[1]=strfind(mifx_str,"<position>"), i[2]=strfind(mifx_str,"</position>");
  147.             if((i[1]==-1) || (i[2]==-1)) { continue; }
  148.             strmid(mifx_str,mifx_str,(i[1]+10),i[2]);
  149.             lmf_coords[0]=floatstr(mi_fx_getPartOfString(mifx_str)), lmf_coords[1]=floatstr(mi_fx_getPartOfString(mifx_str,1)), lmf_coords[2]=floatstr(mi_fx_getPartOfString(mifx_str,2));
  150.             i[3]=1; }
  151.         else if(i[3]==1) {
  152.             i[1]=strfind(mifx_str,"<rotation>"), i[2]=strfind(mifx_str,"</rotation>");
  153.             if((i[1]==-1) || (i[2]==-1)) { continue; }
  154.             strmid(mifx_str,mifx_str,(i[1]+10),i[2]);
  155.             lmf_coords[3]=(floatstr(mi_fx_getPartOfString(mifx_str,2))*57.2958), lmf_coords[4]=(floatstr(mi_fx_getPartOfString(mifx_str,1))*57.2958), lmf_coords[5]=(floatstr(mi_fx_getPartOfString(mifx_str))*57.2958);
  156.             i[3]=2; }
  157.         else if(i[3]==2) {
  158.             i[1]=strfind(mifx_str,"<model>"), i[2]=strfind(mifx_str,"</model>");
  159.             if((i[1]==-1) || (i[2]==-1)) { continue; }
  160.             strmid(mifx_str,mifx_str,(i[1]+7),i[2]);
  161.             lmf_model=strval(mifx_str);
  162.             if(!cnvrt) {
  163.                 funcFound=CallRemoteFunction("OnObjectDataLoad","dfffffff",lmf_model,lmf_coords[0],lmf_coords[1],lmf_coords[2],lmf_coords[3],lmf_coords[4],lmf_coords[5],150.0);
  164.                 if(!funcFound) { mID[loadingMapID][ObjectCount[loadingMapID]+(VehicleCount[loadingMapID])]=CreateObject(lmf_model,lmf_coords[0],lmf_coords[1],lmf_coords[2],lmf_coords[3],lmf_coords[4],lmf_coords[5],150.0); ObjectCount[loadingMapID]++; } }
  165.             else {
  166.                 format(mifx_str,sizeof(mifx_str),"CreateObject(%d,%f,%f,%f,%f,%f,%f,150.0);\r\n",lmf_model,lmf_coords[0],lmf_coords[1],lmf_coords[2],lmf_coords[3],lmf_coords[4],lmf_coords[5]); fwrite(nMapFile,mifx_str); }
  167.             i[3]=0; } } }
  168.     else if(mapmode==2) {
  169.         for(; fread(map,mifx_str); i[0]++) {
  170.         if(((strfind(mifx_str,"<object id=",true)==-1) && (strfind(mifx_str,"<object name=",true)==-1) && (strfind(mifx_str,"<vehicle id=",true)==-1) && (strfind(mifx_str,"<removeWorldObject id=",true)==-1) && (strfind(mifx_str,"<pickup id=",true)==-1)) || (strfind(mifx_str,"//")!=-1)) { i[0]--; continue; }
  171.         if(i[3]) { i[0]--; continue; }
  172.         if((strfind(mifx_str,"<object id=",true)!=-1) || (strfind(mifx_str,"<object name=",true)!=-1)) {
  173.             if(strfind(mifx_str,"<object id=",true)!=-1) {
  174.                 i[1]=strfind(mifx_str,"object id="), i[2]=strfind(mifx_str," breakable=");
  175.                 strmid(lmf_id,mifx_str,(i[1]+11),(i[2]-1));
  176.                 i[1]=strfind(mifx_str,"model="), i[2]=strfind(mifx_str," doublesided=");
  177.                 strmid(fxstr,mifx_str,(i[1]+7),(i[2]-1));
  178.                 lmf_model=strval(fxstr);
  179.                 i[1]=strfind(mifx_str,"rotZ="), i[2]=strfind(mifx_str,"></object>");
  180.                 strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  181.                 lmf_coords[5]=floatstr(fxstr); }
  182.             else if(strfind(mifx_str,"<object name=",true)!=-1) { // Added for Delux Map Converter...
  183.                 i[1]=strfind(mifx_str,"object name="), i[2]=strfind(mifx_str," breakable=");
  184.                 strmid(lmf_id,mifx_str,(i[1]+13),(i[2]-1));
  185.                 i[1]=strfind(mifx_str,"rotZ="), i[2]=strfind(mifx_str," model=");
  186.                 strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  187.                 lmf_coords[5]=floatstr(fxstr);
  188.                 i[1]=strfind(mifx_str,"model="), i[2]=strfind(mifx_str," />");
  189.                 strmid(fxstr,mifx_str,(i[1]+7),(i[2]-1));
  190.                 lmf_model=strval(fxstr); }
  191.             i[1]=strfind(mifx_str,"posX="), i[2]=strfind(mifx_str," posY=");
  192.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  193.             lmf_coords[0]=floatstr(fxstr);
  194.             i[1]=strfind(mifx_str,"posY="), i[2]=strfind(mifx_str," posZ=");
  195.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  196.             lmf_coords[1]=floatstr(fxstr);
  197.             i[1]=strfind(mifx_str,"posZ="), i[2]=strfind(mifx_str,"rotX=");
  198.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-2));
  199.             lmf_coords[2]=floatstr(fxstr);
  200.             i[1]=strfind(mifx_str,"rotX="), i[2]=strfind(mifx_str,"rotY=");
  201.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-2));
  202.             lmf_coords[3]=floatstr(fxstr);
  203.             i[1]=strfind(mifx_str,"rotY="), i[2]=strfind(mifx_str,"rotZ=");
  204.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-2));
  205.             lmf_coords[4]=floatstr(fxstr);
  206.             if(!cnvrt) {
  207.                 funcFound=CallRemoteFunction("OnObjectDataLoad","dfffffff",lmf_model,lmf_coords[0],lmf_coords[1],lmf_coords[2],lmf_coords[3],lmf_coords[4],lmf_coords[5],150.0);
  208.                 if(!funcFound) { mID[loadingMapID][ObjectCount[loadingMapID]+(VehicleCount[loadingMapID])]=CreateObject(lmf_model,lmf_coords[0],lmf_coords[1],lmf_coords[2],lmf_coords[3],lmf_coords[4],lmf_coords[5],150.0); ObjectCount[loadingMapID]++; } }
  209.             else {
  210.                 format(mifx_str,sizeof(mifx_str),"CreateObject(%d,%f,%f,%f,%f,%f,%f,150.0); //%s\r\n",lmf_model,lmf_coords[0],lmf_coords[1],lmf_coords[2],lmf_coords[3],lmf_coords[4],lmf_coords[5],lmf_id); fwrite(nMapFile,mifx_str); } }
  211.         else if(strfind(mifx_str,"<vehicle ",true)!=-1) {
  212.             new vc[14];
  213.             i[1]=strfind(mifx_str,"vehicle id="), i[2]=strfind(mifx_str," paintjob=");
  214.             strmid(veh_id,mifx_str,(i[1]+12),(i[2]-1));
  215.             i[1]=strfind(mifx_str,"paintjob="), i[2]=strfind(mifx_str," model=");
  216.             strmid(fxstr,mifx_str,(i[1]+10),(i[2]-1));
  217.             veh_data[0]=strval(fxstr);
  218.             i[1]=strfind(mifx_str,"model="), i[2]=strfind(mifx_str," plate=");
  219.             strmid(fxstr,mifx_str,(i[1]+7),(i[2]-1));
  220.             veh_data[1]=strval(fxstr);
  221.             i[1]=strfind(mifx_str,"plate="), i[2]=strfind(mifx_str," interior=");
  222.             strmid(veh_plate,mifx_str,(i[1]+7),(i[2]-1));
  223.             i[1]=strfind(mifx_str,"interior="), i[2]=strfind(mifx_str," dimension=");
  224.             strmid(fxstr,mifx_str,(i[1]+10),(i[2]-1));
  225.             veh_data[2]=strval(fxstr);
  226.             i[1]=strfind(mifx_str,"posX="), i[2]=strfind(mifx_str," posY=");
  227.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  228.             veh_coords[0]=floatstr(fxstr);
  229.             i[1]=strfind(mifx_str,"posY="), i[2]=strfind(mifx_str," posZ=");
  230.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  231.             veh_coords[1]=floatstr(fxstr);
  232.             i[1]=strfind(mifx_str,"posZ="), i[2]=strfind(mifx_str," rotX=");
  233.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  234.             veh_coords[2]=floatstr(fxstr);
  235.             i[1]=strfind(mifx_str,"rotZ="), i[2]=strfind(mifx_str," upgrades=");
  236.             if(i[2]>-1)
  237.             {
  238.                 new var[2];
  239.                 var[0]=i[2];
  240.                 var[1]=strfind(mifx_str," color=");
  241.                 if(var[1]==-1) var[1]=strfind(mifx_str,"></vehicle>");
  242.                 strmid(fxstr,mifx_str,(var[0]+11),(var[1]-1));
  243.                 for(new d=0;d<sizeof(vc);d++) {
  244.                     vc[d]=strval(mi_fx_getPartOfString(fxstr,d,','));
  245.                     if((vc[d] < 1000) || (vc[d]>1193)) {
  246.                         vc[d]=0; } } }
  247.             else { i[2]=strfind(mifx_str," color="); }
  248.             if(i[2]==-1) { i[2]=strfind(mifx_str,"></vehicle>"); }
  249.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  250.             veh_coords[3]=floatstr(fxstr);
  251.             if(!cnvrt) {
  252.                 funcFound=CallRemoteFunction("OnVehicleDataLoad","dffffdddddsdddddddddddddd",veh_data[1],veh_coords[0],veh_coords[1],veh_coords[2],veh_coords[3],veh_data[2],veh_color[0],veh_color[1],-1,veh_data[0],veh_plate,vc[0],vc[1],vc[2],vc[3],vc[4],vc[5],vc[6],vc[7],vc[8],vc[9],vc[10],vc[11],vc[12],vc[13]);
  253.                 if(!funcFound) {//[FX]
  254.                     mID[loadingMapID][VehicleCount[loadingMapID]+(ObjectCount[loadingMapID+1])]=CreateVehicle(veh_data[1],veh_coords[0],veh_coords[1],veh_coords[2],veh_coords[3],veh_color[0],veh_color[1],3600);
  255.                     ChangeVehiclePaintjob(mID[loadingMapID][VehicleCount[loadingMapID]+(ObjectCount[loadingMapID+1])],veh_data[0]);
  256.                     mi_fx_quicksetvehiclenumplate(mID[loadingMapID][VehicleCount[loadingMapID]+(ObjectCount[loadingMapID+1])],veh_plate);
  257.                     for(new d=0;d<sizeof(vc);d++) {
  258.                         if(!vc[d]) continue;
  259.                         AddVehicleComponent(mID[loadingMapID][VehicleCount[loadingMapID]+(ObjectCount[loadingMapID+1])],vc[d]); }
  260.                     LinkVehicleToInterior(mID[loadingMapID][VehicleCount[loadingMapID]+(ObjectCount[loadingMapID+1])],veh_data[2]);
  261.                     VehicleCount[loadingMapID]++; } }
  262.             else {
  263.                 format(mifx_str,sizeof(mifx_str),"CreateVehicle(%d,%f,%f,%f,%f,%d,%d,%d); //%s\r\n",veh_data[1],veh_coords[0],veh_coords[1],veh_coords[2],veh_coords[3],veh_color[0],veh_color[1],veh_data[1],veh_id); fwrite(nMapFile,mifx_str); } }
  264.         else if(strfind(mifx_str,"<pickup ",true)!=-1) {
  265.             enum e_pudata { pumodel, puid[32], Float:pupos[3] }
  266.             new pudata[e_pudata];
  267.             i[1]=strfind(mifx_str,"pickup id="), i[2]=strfind(mifx_str," type=");
  268.             strmid(pudata[puid],mifx_str,(i[1]+11),(i[2]-1));
  269.             i[1]=strfind(mifx_str,"type="), i[2]=strfind(mifx_str," interior=");
  270.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  271.             pudata[pumodel]=strval(fxstr);
  272.             if(!strcmp(fxstr,"health",true)) pudata[pumodel]=1240;
  273.             else if (!strcmp(fxstr,"armor",true)) pudata[pumodel]=1242;
  274.             else {
  275.                 switch (pudata[pumodel]) {
  276.                     case 1: pudata[pumodel]=331;
  277.                     case 2: pudata[pumodel]=333;
  278.                     case 3: pudata[pumodel]=334;
  279.                     case 4: pudata[pumodel]=335;
  280.                     case 5: pudata[pumodel]=336;
  281.                     case 6: pudata[pumodel]=337;
  282.                     case 7: pudata[pumodel]=338;
  283.                     case 8: pudata[pumodel]=339;
  284.                     case 9: pudata[pumodel]=341;
  285.                     case 10: pudata[pumodel]=321;
  286.                     case 11: pudata[pumodel]=322;
  287.                     case 12: pudata[pumodel]=323;
  288.                     case 13: pudata[pumodel]=324;
  289.                     case 14: pudata[pumodel]=325;
  290.                     case 15: pudata[pumodel]=326;
  291.                     case 16: pudata[pumodel]=342;
  292.                     case 17: pudata[pumodel]=343;
  293.                     case 18: pudata[pumodel]=344;
  294.                     case 22: pudata[pumodel]=346;
  295.                     case 23: pudata[pumodel]=347;
  296.                     case 24: pudata[pumodel]=348;
  297.                     case 25: pudata[pumodel]=349;
  298.                     case 26: pudata[pumodel]=350;
  299.                     case 27: pudata[pumodel]=351;
  300.                     case 28: pudata[pumodel]=352;
  301.                     case 29: pudata[pumodel]=353;
  302.                     case 30: pudata[pumodel]=355;
  303.                     case 31: pudata[pumodel]=356;
  304.                     case 32: pudata[pumodel]=372;
  305.                     case 33: pudata[pumodel]=357;
  306.                     case 34: pudata[pumodel]=358;
  307.                     case 35: pudata[pumodel]=359;
  308.                     case 36: pudata[pumodel]=360;
  309.                     case 37: pudata[pumodel]=361;
  310.                     case 38: pudata[pumodel]=362;
  311.                     case 39: pudata[pumodel]=363;
  312.                     case 40: pudata[pumodel]=364;
  313.                     case 41: pudata[pumodel]=365;
  314.                     case 42: pudata[pumodel]=366;
  315.                     case 43: pudata[pumodel]=367;
  316.                     case 44: pudata[pumodel]=368;
  317.                     case 45: pudata[pumodel]=369;
  318.                     case 46: pudata[pumodel]=371; } }
  319.             i[1]=strfind(mifx_str,"posX="), i[2]=strfind(mifx_str," posY=");
  320.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  321.             pudata[pupos][0]=floatstr(fxstr);
  322.             i[1]=strfind(mifx_str,"posY="), i[2]=strfind(mifx_str," posZ=");
  323.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  324.             pudata[pupos][1]=floatstr(fxstr);
  325.             i[1]=strfind(mifx_str,"posZ="), i[2]=strfind(mifx_str," rotX=");
  326.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  327.             pudata[pupos][2]=floatstr(fxstr);
  328.             if(!cnvrt) {
  329.                 funcFound=CallRemoteFunction("OnPickupDataLoad","dfff",pudata[pumodel],pudata[pupos][0],pudata[pupos][1],pudata[pupos][2]);
  330.                 if(!funcFound) {//[FX]
  331.                     mID[loadingMapID][PickupCount[loadingMapID]+(PickupCount[loadingMapID+1])]=CreatePickup(pudata[pumodel],2,pudata[pupos][0],pudata[pupos][1],pudata[pupos][2],-1);
  332.                     PickupCount[loadingMapID]++; } }
  333.             else {
  334.                 format(mifx_str,sizeof(mifx_str),"CreatePickup(%d,2,%f,%f,%f,-1); //%s\r\n",pudata[pumodel],pudata[pupos][0],pudata[pupos][1],pudata[pupos][2],pudata[puid]); fwrite(nMapFile,mifx_str); } }
  335.         else if(strfind(mifx_str,"<ped id=",true)!=-1) {
  336.             enum e_peddata { pedmodel, pedidname[32], Float:pedpos[4] }
  337.             new peddata[e_peddata];
  338.             i[1]=strfind(mifx_str,"ped id="), i[2]=strfind(mifx_str," dimension=");
  339.             strmid(peddata[pedidname],mifx_str,(i[1]+8),(i[2]-1));
  340.             i[1]=strfind(mifx_str,"model="), i[2]=strfind(mifx_str," interior=");
  341.             strmid(fxstr,mifx_str,(i[1]+7),(i[2]-1));
  342.             peddata[pedmodel]=strval(fxstr);
  343.             i[1]=strfind(mifx_str,"rotZ="), i[2]=strfind(mifx_str," frozen=");
  344.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  345.             peddata[pedpos][3]=floatstr(fxstr);
  346.             i[1]=strfind(mifx_str,"posX="), i[2]=strfind(mifx_str," posY=");
  347.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  348.             peddata[pedpos][0]=floatstr(fxstr);
  349.             i[1]=strfind(mifx_str,"posY="), i[2]=strfind(mifx_str," posZ=");
  350.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  351.             peddata[pedpos][1]=floatstr(fxstr);
  352.             i[1]=strfind(mifx_str,"posZ="), i[2]=strfind(mifx_str," rotX=");
  353.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  354.             peddata[pedpos][2]=floatstr(fxstr);
  355.             mID[loadingMapID][PedCount[loadingMapID]+(PedCount[loadingMapID+1])]=CreateActor(peddata[pedmodel],peddata[pedpos][0],peddata[pedpos][1],peddata[pedpos][2],peddata[pedpos][3]);
  356.             PedCount[loadingMapID]++;
  357.             if(!cnvrt) {
  358.                 funcFound=CallRemoteFunction("OnActorDataLoad","idffff",mID[loadingMapID][PedCount[loadingMapID]+(PedCount[loadingMapID+1])],peddata[pedmodel],peddata[pedpos][0],peddata[pedpos][1],peddata[pedpos][2],peddata[pedpos][3]); }
  359.             else {
  360.                 format(mifx_str,sizeof(mifx_str),"CreateActor(%d,%f,%f,%f,%f); //%s\r\n",peddata[pedmodel],peddata[pedpos][0],peddata[pedpos][1],peddata[pedpos][2],peddata[pedpos][3], peddata[pedidname]); fwrite(nMapFile,mifx_str); } }
  361.         else if(strfind(mifx_str,"<removeWorldObject id",true)!=-1) {
  362.             i[1]=strfind(mifx_str,"WorldObject id="), i[2]=strfind(mifx_str," radius=");
  363.             strmid(wO2d[wO2dcount][wo2did],mifx_str,(i[1]+16),(i[2]-1));
  364.             i[1]=strfind(mifx_str,"radius="), i[2]=strfind(mifx_str," interior=");
  365.             strmid(fxstr,mifx_str,(i[1]+8),(i[2]-1));
  366.             wO2d[wO2dcount][wo2dpos][3]=floatstr(fxstr);
  367.             i[1]=strfind(mifx_str,"model="), i[2]=strfind(mifx_str," lodModel=");
  368.             strmid(fxstr,mifx_str,(i[1]+7),(i[2]-1));
  369.             wO2d[wO2dcount][wo2dmodel]=strval(fxstr);
  370.             i[1]=strfind(mifx_str,"posX="), i[2]=strfind(mifx_str," posY=");
  371.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  372.             wO2d[wO2dcount][wo2dpos][0]=floatstr(fxstr);
  373.             i[1]=strfind(mifx_str,"posY="), i[2]=strfind(mifx_str," posZ=");
  374.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  375.             wO2d[wO2dcount][wo2dpos][1]=floatstr(fxstr);
  376.             i[1]=strfind(mifx_str,"posZ="), i[2]=strfind(mifx_str," rotX=");
  377.             strmid(fxstr,mifx_str,(i[1]+6),(i[2]-1));
  378.             wO2d[wO2dcount][wo2dpos][2]=floatstr(fxstr);
  379.             if(!cnvrt) { wO2dcount++; }
  380.             else { format(mifx_str,sizeof(mifx_str),"RemoveBuildingForPlayer(playerid,%d,%f,%f,%f,%f); //\r\n",wO2d[wO2dcount][wo2dmodel],wO2d[wO2dcount][wo2dpos][0],wO2d[wO2dcount][wo2dpos][1],wO2d[wO2dcount][wo2dpos][2],wO2d[wO2dcount][wo2dpos][3],wO2d[wO2dcount][wo2did]); fwrite(nMapFile,mifx_str); }
  381.         } } }
  382.     if(cnvrt) { fclose(nMapFile), printf("[MAP] Mapfile converted: '%s'",mapfile); }
  383.     else { printf("[MAP] Mapfile loaded: '%s'",mapfile); if(loadingMapID==mapIdCount) { mapIdCount++; } }
  384.     return fclose(map),loadingMapID; }
  385.  
  386. #define RemoveWorldObjects(%0); for(new i;i<wO2dcount;i++) { RemoveBuildingForPlayer(%0,wO2d[i][wo2dmodel],wO2d[i][wo2dpos][0],wO2d[i][wo2dpos][1],wO2d[i][wo2dpos][2],wO2d[i][wo2dpos][3]+0.01); }
  387. #define ConvertMap(%0) LoadMap(%0,1)
  388.  
  389. stock mi_fx_getPartOfString(const string[], strpos=0, sep=' ',secondsep=256) {  //by FoxHound
  390.     new delstr[256],i[4]={0,...}; secondsep = (secondsep!=256) ? secondsep : sep;
  391.     format(delstr,256,"%s",string);
  392.     for(; i[0]<strlen(delstr); i[0]++) {
  393.         if(delstr[i[0]]==sep) {
  394.             i[3]++;
  395.             if(((i[2]+1)==strpos) && !i[1]) { strdel(delstr,0,i[0]+1),i[0]=0,i[1]=1,sep=secondsep; continue; }
  396.             else if(i[1]) { strdel(delstr,i[0],strlen(delstr)); }
  397.             else { i[2]++; continue; } } }
  398.     if(i[3]<strpos) { delstr="\0"; }
  399.     return delstr; }
  400. stock mi_fx_quicksetvehiclenumplate(veh, string[]) {    //bY FoxHound
  401.     new i=0,Float:vPos[4],vDmg[4],carMod[16],seat[MAX_PLAYERS]={-1,...};
  402.     GetVehiclePos(veh,vPos[0],vPos[1],vPos[2]); GetVehicleZAngle(veh,vPos[3]); GetVehicleDamageStatus(veh,vDmg[0],vDmg[1],vDmg[2],vDmg[3]);
  403.     for(i=0; i<GetMaxPlayers(); i++) {
  404.         if(IsPlayerConnected(i) && IsPlayerInVehicle(i, veh)) {
  405.             seat[i]=GetPlayerVehicleSeat(i); RemovePlayerFromVehicle(i); } }
  406.     for(i=0; i<=13; i++) { carMod[i]=GetVehicleComponentInSlot(veh,i); }
  407.     SetVehicleNumberPlate(veh,string);
  408.     SetVehicleToRespawn(veh); SetVehiclePos(veh,vPos[0],vPos[1],vPos[2]); SetVehicleZAngle(veh,vPos[3]);
  409.     for(i=0; i<=13; i++) { AddVehicleComponent(veh,carMod[i]); }
  410.     UpdateVehicleDamageStatus(veh,vDmg[0],vDmg[1],vDmg[2],vDmg[3]);
  411.     for(i=0; i<GetMaxPlayers(); i++) {
  412.         if(IsPlayerConnected(i) && seat[i]!=-1) {
  413.             PutPlayerInVehicle(i,veh,seat[i]); } } }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement