Advertisement
FoxHound

Easy-Map-Including v2

Jun 19th, 2011
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 13.87 KB | None | 0 0
  1. /*              Easy Mapincluding
  2.  *       (c) Copyright 2011-2012 by FoxHound
  3.  *
  4.  * @author    : FoxHound aka PSPgamer_10
  5.  * @date      : 13 March 2011
  6.  * @version   : v1.0
  7.  *
  8.  * This file is provided as is (no warranties).
  9.  *           ___           ___
  10.  *          /\__\         /|  |
  11.  *         /:/ _/_       |:|  |
  12.  *        /:/ /\__\      |:|  |
  13.  *       /:/ /:/  /    __|:|__|
  14.  *      /:/_/:/  /    /::::\__\_____
  15.  *      \:\/:/  /     ~~~~\::::/___/
  16.  *       \::/__/          |:|~~|
  17.  *        \:\  \          |:|  |
  18.  *         \:\__\         |:|__|
  19.  *          \/__/         |/__/
  20.  *      +--+-+-+-+-+-+-+-+-+-+--+
  21.  *      | p r o d u c t i o n s |
  22.  *      +--+-+-+-+-+-+-+-+-+-+--+
  23.  *
  24.  */
  25.  
  26. #include <a_samp>
  27.  
  28. forward OnObjectDataLoad(modelid,Float:posX,Float:posY,Float:posZ,Float:rotX,Float:rotY,Float:rotZ,Float:drawdistance);
  29. forward OnVehicleDataLoad(vehicletype,Float:x,Float:y,Float:z,Float:rotation,interior,color1,color2,respawn_delay,paintjob,numberplate[]);
  30.  
  31. stock LoadMap(mapfile[]) {    //bY FoxHound
  32.     new readline[128];
  33.     format(readline,sizeof(readline),"maps/%s",mapfile);
  34.     if(!fexist(readline)) { return printf("Couldn't load Map File: '%s'",mapfile); }
  35.     new File:map = fopen(readline,io_readwrite);
  36.     for(new i[4]={0,...},Float:lmf_coords[7],lmf_model,Float:veh_coords[4],veh_color[2]; fread(map,readline); i[0]++) {
  37.         if(((strfind(readline,"Object",true)==-1) && (strfind(readline,"Vehicle",true)==-1)) || (strfind(readline,"//")!=-1)) { i[0]--; continue; }
  38.         else if((strfind(readline,"/*")!=-1)) { i[3]=1; }
  39.         else if((strfind(readline,"*/")!=-1)) { i[3]=0; }
  40.         if(i[3]) { i[0]--; continue; }
  41.      // OBJECTLOADER
  42.         if(strfind(readline,"Object",true)!=-1) {
  43.             lmf_model=strval(mi_fx_getPartOfString(readline,1,'(',','));
  44.             lmf_coords[0]=floatstr(mi_fx_getPartOfString(readline,1,','));
  45.             lmf_coords[1]=floatstr(mi_fx_getPartOfString(readline,2,','));
  46.             lmf_coords[2]=floatstr(mi_fx_getPartOfString(readline,3,','));
  47.             lmf_coords[3]=floatstr(mi_fx_getPartOfString(readline,4,','));
  48.             lmf_coords[4]=floatstr(mi_fx_getPartOfString(readline,5,','));
  49.             lmf_coords[5]=floatstr(mi_fx_getPartOfString(readline,6,','));
  50.             lmf_coords[6]=floatstr(mi_fx_getPartOfString(readline,7,',',')'));
  51.             lmf_coords[6] = (lmf_coords[6]) ? lmf_coords[6] : 150.0;
  52.             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]);
  53.             if(!funcFound) { CreateObject(lmf_model,lmf_coords[0],lmf_coords[1],lmf_coords[2],lmf_coords[3],lmf_coords[4],lmf_coords[5],lmf_coords[6]); }
  54.         }
  55.         if(strfind(readline,"Vehicle",true)!=-1) {
  56.          // VEHICLELOEADER
  57.             new veh_data[2]={0,0};
  58.             veh_data[0]=strval(mi_fx_getPartOfString(readline,1,'(',','));
  59.             veh_coords[0]=floatstr(mi_fx_getPartOfString(readline,1,','));
  60.             veh_coords[1]=floatstr(mi_fx_getPartOfString(readline,2,','));
  61.             veh_coords[2]=floatstr(mi_fx_getPartOfString(readline,3,','));
  62.             veh_coords[3]=floatstr(mi_fx_getPartOfString(readline,4,','));
  63.             veh_color[0]=strval(mi_fx_getPartOfString(readline,5,','));
  64.             veh_color[1]=strval(mi_fx_getPartOfString(readline,6,','));
  65.             veh_data[1]=strval(mi_fx_getPartOfString(readline,7,',',')'));
  66.             veh_data[1] = (!veh_data[1]) ? -1 : veh_data[1];
  67.             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");
  68.             if(!funcFound) { CreateVehicle(veh_model,veh_coords[0],veh_coords[1],veh_coords[2],veh_coords[3],veh_color[0],veh_color[1],veh_data[1]); }
  69.         } }
  70.     return fclose(map),printf("[MAP] Mapfile loaded: %s",mapfile),1; }
  71.  
  72. stock LoadMtaMap(mapfile[]) {    //bY FoxHound
  73.     new readline[256];
  74.     format(readline,sizeof(readline),"maps/%s",mapfile);
  75.     if(!fexist(readline)) { return printf("Couldn't load Map File: '%s'",mapfile); }
  76.     new File:map = fopen(readline,io_readwrite);
  77.     for(new i[4]={0,...},Float:lmf_coords[6],lmf_model,editedline[64]; fread(map,readline); i[0]++) {
  78.         if(((strfind(readline,"<object id=",true)==-1) && (strfind(readline,"<object name=",true)==-1) && (strfind(readline,"<vehicle id=",true)==-1)) || (strfind(readline,"//")!=-1)) { i[0]--; continue; }
  79.         else if((strfind(readline,"/*")!=-1)) { i[3]=1; }
  80.         else if((strfind(readline,"*/")!=-1)) { i[3]=0; }
  81.         if(i[3]) { i[0]--; continue; }
  82.         if((strfind(readline,"<object id=",true)!=-1) || (strfind(readline,"<object name=",true)!=-1)) {
  83.             if(strfind(readline,"<object id=",true)!=-1) {
  84.                 if(strfind(readline," doublesided=",true)!=-1) {
  85.                     i[1]=strfind(readline,"model="), i[2]=strfind(readline," interior=");
  86.                     strmid(editedline,readline,(i[1]+7),(i[2]-1));
  87.                     lmf_model=strval(editedline);
  88.                     i[1]=strfind(readline,"rotZ="), i[2]=strfind(readline,"/>");
  89.                     strmid(editedline,readline,(i[1]+6),(i[2]-2));
  90.                     lmf_coords[5]=floatstr(editedline); }
  91.                 else {
  92.                     i[1]=strfind(readline,"model="), i[2]=strfind(readline," posX");
  93.                     strmid(editedline,readline,(i[1]+7),(i[2]-1));
  94.                     lmf_model=strval(editedline);
  95.                     i[1]=strfind(readline,"rotZ="), i[2]=strfind(readline,"dimension=");
  96.                     strmid(editedline,readline,(i[1]+6),(i[2]-2));
  97.                     lmf_coords[5]=floatstr(editedline); } }
  98.             else if(strfind(readline,"<object name=",true)!=-1) { // Added for Delux Map Converter...
  99.                 i[1]=strfind(readline,"rotZ="), i[2]=strfind(readline," model=");
  100.                 strmid(editedline,readline,(i[1]+6),(i[2]-1));
  101.                 lmf_coords[5]=floatstr(editedline);
  102.                 i[1]=strfind(readline,"model="), i[2]=strfind(readline," />");
  103.                 strmid(editedline,readline,(i[1]+7),(i[2]-1));
  104.                 lmf_model=strval(editedline); }
  105.             i[1]=strfind(readline,"posX="), i[2]=strfind(readline," posY=");
  106.             strmid(editedline,readline,(i[1]+6),(i[2]-1));
  107.             lmf_coords[0]=floatstr(editedline);
  108.             i[1]=strfind(readline,"posY="), i[2]=strfind(readline," posZ=");
  109.             strmid(editedline,readline,(i[1]+6),(i[2]-1));
  110.             lmf_coords[1]=floatstr(editedline);
  111.             i[1]=strfind(readline,"posZ="), i[2]=strfind(readline,"rotX=");
  112.             strmid(editedline,readline,(i[1]+6),(i[2]-2));
  113.             lmf_coords[2]=floatstr(editedline);
  114.             i[1]=strfind(readline,"rotX="), i[2]=strfind(readline,"rotY=");
  115.             strmid(editedline,readline,(i[1]+6),(i[2]-2));
  116.             lmf_coords[3]=floatstr(editedline);
  117.             i[1]=strfind(readline,"rotY="), i[2]=strfind(readline,"rotZ=");
  118.             strmid(editedline,readline,(i[1]+6),(i[2]-2));
  119.             lmf_coords[4]=floatstr(editedline);
  120.             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);
  121.             if(!funcFound) { CreateObject(lmf_model,lmf_coords[0],lmf_coords[1],lmf_coords[2],lmf_coords[3],lmf_coords[4],lmf_coords[5],150.0); }
  122.         }
  123.         else if(strfind(readline,"<vehicle ",true)!=-1) {
  124.             new veh_data[3],veh_plate[16],Float:veh_coords[4],veh_color[2]={-1,-1};
  125.             i[1]=strfind(readline,"paintjob="), i[2]=strfind(readline," model=");
  126.             strmid(editedline,readline,(i[1]+10),(i[2]-1));
  127.             veh_data[0]=strval(editedline);
  128.             i[1]=strfind(readline,"model="), i[2]=strfind(readline," plate=");
  129.             strmid(editedline,readline,(i[1]+7),(i[2]-1));
  130.             veh_data[1]=strval(editedline);
  131.             i[1]=strfind(readline,"plate="), i[2]=strfind(readline," interior=");
  132.             strmid(veh_plate,readline,(i[1]+7),(i[2]-1));
  133.             i[1]=strfind(readline,"interior="), i[2]=strfind(readline," dimension=");
  134.             strmid(editedline,readline,(i[1]+10),(i[2]-1));
  135.             veh_data[2]=strval(editedline);
  136.             i[1]=strfind(readline,"posX="), i[2]=strfind(readline," posY=");
  137.             strmid(editedline,readline,(i[1]+6),(i[2]-1));
  138.             veh_coords[0]=floatstr(editedline);
  139.             i[1]=strfind(readline,"posY="), i[2]=strfind(readline," posZ=");
  140.             strmid(editedline,readline,(i[1]+6),(i[2]-1));
  141.             veh_coords[1]=floatstr(editedline);
  142.             i[1]=strfind(readline,"posZ="), i[2]=strfind(readline," rotX=");
  143.             strmid(editedline,readline,(i[1]+6),(i[2]-1));
  144.             veh_coords[2]=floatstr(editedline);
  145.             i[1]=strfind(readline,"rotZ="), i[2]=strfind(readline," />");
  146.             strmid(editedline,readline,(i[1]+6),(i[2]-1));
  147.             veh_coords[3]=floatstr(editedline);
  148.             funcFound=CallRemoteFunction("OnVehicleDataLoad","dffffddddds",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);
  149.             if(!funcFound) {
  150.                 new mi_fx_vehid;
  151.                 mi_fx_vehid = CreateVehicle(veh_model,veh_coords[0],veh_coords[1],veh_coords[2],veh_coords[3],veh_color[0],veh_color[1],veh_data[1]);
  152.                 ChangeVehiclePaintjob(mi_fx_vehid,veh_data[0]);
  153.                 mi_fx_quicksetvehiclenumplate(mi_fx_vehid,veh_plate);
  154.                 LinkVehicleToInterior(mi_fx_vehid,veh_data[2]); }
  155.         } }
  156.     return fclose(map),printf("[MAP] Mapfile loaded: %s",mapfile),1; }
  157.  
  158. stock LoadMtaRaceMap(mapfile[]) {    //bY FoxHound
  159.     new readline[196],funcFound=0;
  160.     format(readline,sizeof(readline),"maps/%s",mapfile);
  161.     if(!fexist(readline)) { return printf("Couldn't load Map File: '%s'",mapfile); }
  162.     new File:map = fopen(readline,io_readwrite);
  163.     for(new i[5]={0,...},Float:lmf_coords[6],lmf_model,veh_model,Float:veh_coords[4]; fread(map,readline); i[0]++) {
  164.         if(strfind(readline,"//")!=-1) { i[0]--; continue; }
  165.         else if((strfind(readline,"/*")!=-1)) { i[4]=1; }
  166.         if((strfind(readline,"*/")!=-1)) { i[4]=0; continue; }
  167.         if(i[4]) { i[0]--; continue; }
  168.         if(strfind(readline,"spawnpoint",true)!=-1)
  169.         {
  170.             new fxstr[48];
  171.             i[1]=strfind(readline,"<vehicle>"), i[2]=strfind(readline,"</vehicle>");
  172.             strmid(fxstr,readline,(i[1]+9),i[2]);
  173.             veh_model=strval(fxstr);
  174.             i[1]=strfind(readline,"<position>"), i[2]=strfind(readline,"</position>");
  175.             strmid(fxstr,readline,(i[1]+10),i[2]);
  176.             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));
  177.             i[1]=strfind(readline,"<rotation>"), i[2]=strfind(readline,"</rot");
  178.             strmid(fxstr,readline,(i[1]+10),i[2]);
  179.             veh_coords[3]=floatstr(mi_fx_getPartOfString(fxstr));
  180.             funcFound=CallRemoteFunction("OnVehicleDataLoad","dffffddddds",veh_model,veh_coords[0],veh_coords[1],veh_coords[2],veh_coords[3],0,-1,-1,-1,3,"FXGA-21");
  181.             if(!funcFound) { CreateVehicle(veh_model,veh_coords[0],veh_coords[1],veh_coords[2],veh_coords[3],-1,-1,-1); }
  182.         }
  183.         if(!i[3]) {
  184.             i[1]=strfind(readline,"<position>"), i[2]=strfind(readline,"</position>");
  185.             if((i[1]==-1) || (i[2]==-1)) { continue; }
  186.             strmid(readline,readline,(i[1]+10),i[2]);
  187.             lmf_coords[0]=floatstr(mi_fx_getPartOfString(readline)), lmf_coords[1]=floatstr(mi_fx_getPartOfString(readline,1)), lmf_coords[2]=floatstr(mi_fx_getPartOfString(readline,2));
  188.             i[3]=1; }
  189.         else if(i[3]==1) {
  190.             i[1]=strfind(readline,"<rotation>"), i[2]=strfind(readline,"</rotation>");
  191.             if((i[1]==-1) || (i[2]==-1)) { continue; }
  192.             strmid(readline,readline,(i[1]+10),i[2]);
  193.             lmf_coords[3]=(floatstr(mi_fx_getPartOfString(readline,2))*57.2958), lmf_coords[4]=(floatstr(mi_fx_getPartOfString(readline,1))*57.2958), lmf_coords[5]=(floatstr(mi_fx_getPartOfString(readline))*57.2958);
  194.             i[3]=2; }
  195.         else if(i[3]==2) {
  196.             i[1]=strfind(readline,"<model>"), i[2]=strfind(readline,"</model>");
  197.             if((i[1]==-1) || (i[2]==-1)) { continue; }
  198.             strmid(readline,readline,(i[1]+7),i[2]);
  199.             lmf_model=strval(readline);
  200.             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);
  201.             if(!funcFound) { CreateObject(lmf_model,lmf_coords[0],lmf_coords[1],lmf_coords[2],lmf_coords[3],lmf_coords[4],lmf_coords[5],150.0); }
  202.             i[3]=0; } }
  203.     return fclose(map),printf("[MAP] Mapfile loaded: %s",mapfile),1; }
  204.  
  205. stock QuickLoadMap(mapfile[]) {//EXTENSIONS: ".mtarace" - ".mtadm" - ".samp"
  206.     new string[16];
  207.     mi_fx_strpartEx(mapfile,string,'.');
  208.     if(!strcmp(string,"mtarace",true)) { return LoadMtaRaceMap(mapfile); }
  209.     else if(!strcmp(string,"mtadm",true)) { return LoadMtaMap(mapfile); }
  210.     else if(!strcmp(string,"samp",true)) { return LoadMap(mapfile); }
  211.     return printf("[MAP] * ERROR: Unable to read Dataextension (%s)!\n[MAP] * INFO: Please try to load the Map manually (Load(...)Map)!",mapfile); }
  212.  
  213. stock mi_fx_getPartOfString(const string[], strpos=0, sep=' ',secondsep=256) {  //by FoxHound
  214.     new delstr[256],count[2]={0,...}; secondsep = (secondsep!=256) ? secondsep : sep;
  215.     format(delstr,256,"%s",string);
  216.     for(new i[2]={0,...}; i[0]<strlen(delstr); i[0]++) {
  217.         if(delstr[i[0]]==sep) {
  218.             count[1]++;
  219.             if(((count[0]+1)==strpos) && !i[1]) { strdel(delstr,0,i[0]+1),i={0,1},sep=secondsep; continue; }
  220.             else if(i[1]) { strdel(delstr,i[0],strlen(delstr)); }
  221.             else { count[0]++; continue; } } }
  222.     if(count[1]<strpos) { delstr="\0"; }
  223.     return delstr; }
  224. stock mi_fx_strpartEx(const string[], dest[], seperator=' ', strpos=1) {    //by FoxHound
  225.     new i=0, delstr[128], len=strlen(string), posCount=0;
  226.     format(delstr,len+1,"%s",string);
  227.     if(strpos>0) {
  228.         for(; i<len; i++) {
  229.             if(delstr[i]==seperator) {
  230.                 if((posCount+1)==strpos) { strdel(delstr,0,(i+1)); break; }
  231.                 else { posCount++; continue; } } } }
  232.     return format(dest,sizeof(delstr),"%s",delstr); }
  233. stock mi_fx_quicksetvehiclenumplate(veh, string[]) {    //bY FoxHound
  234.     new i=0,Float:vPos[4],vDmg[4],carMod[16],seat[MAX_PLAYERS]={-1,...};
  235.     GetVehiclePos(veh,vPos[0],vPos[1],vPos[2]);
  236.     GetVehicleZAngle(veh,vPos[3]);
  237.     GetVehicleDamageStatus(veh,vDmg[0],vDmg[1],vDmg[2],vDmg[3]);
  238.     for(i=0; i<GetMaxPlayers(); i++) {
  239.         if(IsPlayerConnected(i) && IsPlayerInVehicle(i, veh)) {
  240.             seat[i]=GetPlayerVehicleSeat(i); RemovePlayerFromVehicle(i); } }
  241.     for(i=0; i<=13; i++) { carMod[i]=GetVehicleComponentInSlot(veh,i); }
  242. /**/SetVehicleNumberPlate(veh,string);
  243.     SetVehicleToRespawn(veh);
  244.     SetVehiclePos(veh,vPos[0],vPos[1],vPos[2]);
  245.     SetVehicleZAngle(veh,vPos[3]);
  246.     for(i=0; i<=13; i++) { AddVehicleComponent(veh,carMod[i]); }
  247.     UpdateVehicleDamageStatus(veh,vDmg[0],vDmg[1],vDmg[2],vDmg[3]);
  248.     for(i=0; i<GetMaxPlayers(); i++) {
  249.         if(IsPlayerConnected(i) && seat[i]!=-1) {
  250.             PutPlayerInVehicle(i,veh,seat[i]); } } }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement