Advertisement
Guest User

MA_LOAD.inc (SA:MP map loader)

a guest
Nov 3rd, 2015
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 15.12 KB | None | 0 0
  1. /*
  2. * Small fix by CraTzy
  3. * :)
  4. from line 226 replaced some shit !
  5. */
  6. /*
  7. * MTA maploader
  8. * By IPrototypeI
  9. */
  10.  
  11. /*
  12. * Native
  13. * native LoadMap(path[]);
  14. * native RestartRace();
  15. * native StartRace(time);
  16. */
  17. #if !defined _sscanf2_included
  18.     #include <sscanf2>
  19. #endif
  20.  
  21. #if !defined _streamer_included
  22.     #include <streamer>
  23. #endif
  24.  
  25. enum mapData {
  26.     pMmodelid,
  27.     pMcolorID,
  28.     pMtype[30],
  29.     Float:pMX,
  30.     Float:pMY,
  31.     Float:pMZ,
  32.     Float:pMRX,
  33.     Float:pMRY,
  34.     Float:pMRZ,
  35.     Float:pNMRZ
  36. };
  37. new mapValues[mapData];
  38.  
  39. native IsValidVehicle(vehicleid);
  40. forward OnPlayerFinishRace(playerid);
  41.  
  42. static const VehicleNames[212][20 char] = {
  43.     {!"Landstalker"},{!"Bravura"},{!"Buffalo"},{!"Linerunner"},{!"Perrenial"},{!"Sentinel"},{!"Dumper"},
  44.     {!"Firetruck"},{!"Trashmaster"},{!"Stretch"},{!"Manana"},{!"Infernus"},{!"Voodoo"},{!"Pony"},{!"Mule"},
  45.     {!"Cheetah"},{!"Ambulance"},{!"Leviathan"},{!"Moonbeam"},{!"Esperanto"},{!"Taxi"},{!"Washington"},
  46.     {!"Bobcat"},{!"Mr Whoopee"},{!"BF Injection"},{!"Hunter"},{!"Premier"},{!"Enforcer"},{!"Securicar"},
  47.     {!"Banshee"},{!"Predator"},{!"Bus"},{!"Rhino"},{!"Barracks"},{!"Hotknife"},{!"Trailer 1"},{!"Previon"},
  48.     {!"Coach"},{!"Cabbie"},{!"Stallion"},{!"Rumpo"},{!"RC Bandit"},{!"Romero"},{!"Packer"},{!"Monster"},
  49.     {!"Admiral"},{!"Squalo"},{!"Seasparrow"},{!"Pizzaboy"},{!"Tram"},{!"Trailer 2"},{!"Turismo"},
  50.     {!"Speeder"},{!"Reefer"},{!"Tropic"},{!"Flatbed"},{!"Yankee"},{!"Caddy"},{!"Solair"},{!"Berkley's RC Van"},
  51.     {!"Skimmer"},{!"PCJ-600"},{!"Faggio"},{!"Freeway"},{!"RC Baron"},{!"RC Raider"},{!"Glendale"},{!"Oceanic"},
  52.     {!"Sanchez"},{!"Sparrow"},{!"Patriot"},{!"Quad"},{!"Coastguard"},{!"Dinghy"},{!"Hermes"},{!"Sabre"},
  53.     {!"Rustler"},{!"ZR-350"},{!"Walton"},{!"Regina"},{!"Comet"},{!"BMX"},{!"Burrito"},{!"Camper"},{!"Marquis"},
  54.     {!"Baggage"},{!"Dozer"},{!"Maverick"},{!"News Chopper"},{!"Rancher"},{!"FBI Rancher"},{!"Virgo"},{!"Greenwood"},
  55.     {!"Jetmax"},{!"Hotring"},{!"Sandking"},{!"Blista Compact"},{!"Police Maverick"},{!"Boxville"},{!"Benson"},
  56.     {!"Mesa"},{!"RC Goblin"},{!"Hotring Racer A"},{!"Hotring Racer B"},{!"Bloodring Banger"},{!"Rancher"},
  57.     {!"Super GT"},{!"Elegant"},{!"Journey"},{!"Bike"},{!"Mountain Bike"},{!"Beagle"},{!"Cropdust"},{!"Stunt"},
  58.     {!"Tanker"}, {!"Roadtrain"},{!"Nebula"},{!"Majestic"},{!"Buccaneer"},{!"Shamal"},{!"Hydra"},{!"FCR-900"},
  59.     {!"NRG-500"},{!"HPV1000"},{!"Cement Truck"},{!"Tow Truck"},{!"Fortune"},{!"Cadrona"},{!"FBI Truck"},
  60.     {!"Willard"},{!"Forklift"},{!"Tractor"},{!"Combine"},{!"Feltzer"},{!"Remington"},{!"Slamvan"},
  61.     {!"Blade"},{!"Freight"},{!"Streak"},{!"Vortex"},{!"Vincent"},{!"Bullet"},{!"Clover"},{!"Sadler"},
  62.     {!"Firetruck LA"},{!"Hustler"},{!"Intruder"},{!"Primo"},{!"Cargobob"},{!"Tampa"},{!"Sunrise"},{!"Merit"},
  63.     {!"Utility"},{!"Nevada"},{!"Yosemite"},{!"Windsor"},{!"Monster A"},{!"Monster B"},{!"Uranus"},{!"Jester"},
  64.     {!"Sultan"},{!"Stratum"},{!"Elegy"},{!"Raindance"},{!"RC Tiger"},{!"Flash"},{!"Tahoma"},{!"Savanna"},
  65.     {!"Bandito"},{!"Freight Flat"},{!"Streak Carriage"},{!"Kart"},{!"Mower"},{!"Duneride"},{!"Sweeper"},
  66.     {!"Broadway"},{!"Tornado"},{!"AT-400"},{!"DFT-30"},{!"Huntley"},{!"Stafford"},{!"BF-400"},{!"Newsvan"},
  67.     {!"Tug"},{!"Trailer 3"},{!"Emperor"},{!"Wayfarer"},{!"Euros"},{!"Hotdog"},{!"Club"},{!"Freight Carriage"},
  68.     {!"Trailer 3"},{!"Andromada"},{!"Dodo"},{!"RC Cam"},{!"Launch"},{!"Police Car (LSPD)"},{!"Police Car (SFPD)"},
  69.     {!"Police Car (LVPD)"},{!"Police Ranger"},{!"Picador"},{!"S.W.A.T. Van"},{!"Alpha"},{!"Phoenix"},{!"Glendale"},
  70.     {!"Sadler"},{!"Luggage Trailer A"},{!"Luggage Trailer B"},{!"Stair Trailer"},{!"Boxville"},{!"Farm Plow"},
  71.     {!"Utility Trailer"}
  72. };
  73.  
  74.  
  75. #if !defined _ALS_
  76.     forward public _ALS_();
  77.     _ALS_()<_ALS_:unhooked>{}
  78.     _ALS_()<_ALS_:hooked>{}
  79.     _ALS_()<>{}
  80. #endif
  81.  
  82. public OnGameModeInit()
  83. {
  84.     state _ALS_:hooked;
  85.     Streamer_VisibleItems(STREAMER_TYPE_OBJECT,1000);
  86.     Streamer_SetTickRate(25);
  87.     return H_OnGameModeInit();
  88. }
  89. forward H_OnGameModeInit();
  90. #if defined _ALS_OnGameModeInit
  91.     #undef OnGameModeInit
  92. #else
  93.     #define _ALS_OnGameModeInit
  94. #endif
  95. public H_OnGameModeInit() <_ALS_:unhooked> return 1;
  96. public H_OnGameModeInit() <> return 1;
  97. #define OnGameModeInit(%0) H_OnGameModeInit(%0)<_ALS_:hooked>
  98. new mapN3[156];
  99.  
  100. public OnPlayerEnterDynamicArea(playerid, areaid)
  101. {
  102.     if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 0;
  103.     state _ALS_:hooked;
  104.     new kind = Streamer_GetIntData(STREAMER_TYPE_AREA, areaid, E_STREAMER_EXTRA_ID);
  105.     switch(kind){
  106.         case 1:AddVehicleComponent(GetPlayerVehicleID(playerid), 1010);
  107.         case 2:RepairVehicle(GetPlayerVehicleID(playerid));
  108.         default: {
  109.             new vehicle = GetPlayerVehicleID(playerid);
  110.             if(GetVehicleModel(vehicle) != kind && kind != 0){
  111.                 new Float:vData[7];
  112.                 GetVehiclePos(vehicle,vData[0],vData[1],vData[2]);
  113.                 GetVehicleZAngle(vehicle,vData[3]);
  114.                 GetVehicleVelocity(vehicle,vData[4],vData[5],vData[6]);
  115.                 DestroyVehicle(vehicle);
  116.                 vehicle = CreateVehicle(kind,vData[0],vData[1],vData[2],vData[3],random(255),random(255),-1);
  117.                 PutPlayerInVehicle(playerid,vehicle,0);
  118.                 SetVehicleVelocity(vehicle,vData[4],vData[5],vData[6]);
  119.                 if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 425)
  120.                 {
  121.                     SetVehicleVelocity(vehicle,vData[4],vData[5],vData[6]+2.0);
  122.                     OnPlayerFinishRace(playerid);
  123.                 }
  124.             }
  125.         }
  126.     }
  127.     return H_OnPlayerEnterDynamicArea(playerid, areaid);
  128. }
  129. forward H_OnPlayerEnterDynamicArea(playerid, areaid);
  130. #if defined _ALS_OnPlayerEnterDynamicArea
  131.     #undef OnPlayerEnterDynamicArea
  132. #else
  133.     #define _ALS_OnPlayerEnterDynamicArea
  134. #endif
  135. public H_OnPlayerEnterDynamicArea(playerid, areaid) <_ALS_:unhooked> return 1;
  136. public H_OnPlayerEnterDynamicArea(playerid, areaid) <> return 1;
  137. #define OnPlayerEnterDynamicArea(%0,%1) H_OnPlayerEnterDynamicArea(%0,%1)<_ALS_:hooked>
  138.  
  139. stock LoadMap(path[], Float:offZ=0.0){
  140.     if(UnloadMap()){
  141.         new loadstr[400],count;
  142.         if(!fexist(path))return 0;
  143.         new File:fhandle = fopen(path,io_read);
  144.         while(fread(fhandle, loadstr)){
  145.             if(!loadstr[0])continue;
  146.             if(!sscanf(loadstr, "p<\">'object''model='d'posX='f'posY='f'posZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ])){
  147.                 CreateDynamicObject(mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ],-1,-1,-1,300.0,300.0);
  148.             }else if(!sscanf(loadstr, "p<\">'racepickup''type='s[30]'vehicle='d'posX='f'posY='f'posZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pMtype],mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ])){
  149.                 if(strcmp(mapValues[pMtype],"nitro") == 0)CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ],1);
  150.                 else if(strcmp(mapValues[pMtype],"repair") == 0)CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ],2);
  151.                 else if(strcmp(mapValues[pMtype],"vehiclechange") == 0)CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ],3,mapValues[pMmodelid]);        
  152.             }else if(!sscanf(loadstr, "p<\">'spawnpoint''vehicle='d'posX='f'posY='f'posZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ])){
  153.                 ++count;
  154.                 CreateRaceSpawn(mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRZ],count);
  155.             }else if(!sscanf(loadstr, "p<\">'marker''color='s[10]'posX='f'posY='f'posZ='f",mapValues[pMtype],mapValues[pMX], mapValues[pMY], mapValues[pMZ])){
  156.                 mapValues[pMmodelid] = CreateDynamicObject(1559,mapValues[pMX], mapValues[pMY], mapValues[pMZ],0.0,0.0,0.0,-1,-1,-1,400.0,400.0);
  157.                 mapValues[pMcolorID] = ConvertStringToHex(mapValues[pMtype]);
  158.                 SetDynamicObjectMaterial(mapValues[pMmodelid], 0, 1231, "dynsigns", "white64", mapValues[pMcolorID]);      
  159.             }else if(!sscanf(loadstr, "p<\">'speedboost''posX='f'posY='f'posZ='f'veloX='f'veloY='f'veloZ='f", mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ])){
  160.                 CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ,4, 0 ,mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]);
  161.             } else if(!sscanf(loadstr, "p<\">'teleport''posX='f'posY='f'posZ='f'nposX='f'nposY='f'nposZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ],mapValues[pNMRZ],mapValues[pNMRZ],mapValues[pNMRZ])){
  162.                 CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ,5 , 0 ,mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]+offZ,mapValues[pNMRZ]);
  163.             }
  164.         }
  165.         fclose(fhandle);
  166.         if(!count) return 0;
  167.         LoadFromMeta(mapN3);
  168.     }
  169.     return 1;
  170. }
  171.  
  172. stock static LoadFromMeta(path[]) {
  173.     if(!fexist(path))return 0;
  174.     new File:fhandle = fopen(path,io_read),loadstr[400];
  175.     while(fread(fhandle, loadstr)){
  176.         if(strfind(loadstr,"#weather") != -1){
  177.             strmid(loadstr, loadstr, strfind(loadstr,"[")+1, strfind(loadstr,"]"));
  178.             SetWeather(strval(loadstr));
  179.             break;
  180.         }
  181.         if(strfind(loadstr,"#time") != -1){
  182.             strmid(loadstr, loadstr, strfind(loadstr,"[")+1, strfind(loadstr,"]"));
  183.             SetWorldTime(strval(loadstr));
  184.             break;
  185.         }
  186.     }
  187.     fclose(fhandle);
  188.     return 1;
  189. }
  190.  
  191. stock CreateRacePickup(Float:X, Float:Y, Float:Z, Kind, vehicleid = 0, Float:nX = 0.0, Float:nY = 0.0, Float:nZ = 0.0, Float:nRZ = 0.0) {
  192.     new savestr[40],id;
  193.     switch(Kind){
  194.         case 1:{
  195.             CreateDynamicObject(1010, X, Y, Z, 0.0, 0.0, 0.0,-1, -1, -1, 400.0, 400.0);
  196.             Streamer_SetIntData(STREAMER_TYPE_AREA, CreateDynamicSphere(X, Y, Z, 8.0), E_STREAMER_EXTRA_ID, 1);
  197.             CreateDynamic3DTextLabel("{bdf228}[ {ffffff}Nitro {bdf228}]", -1, X, Y, Z, 300.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 300.0);
  198.         }
  199.         case 2:{
  200.             CreateDynamicObject(3096, X, Y, Z, 0.0, 0.0, 0.0,-1, -1, -1, 400.0, 400.0);
  201.             Streamer_SetIntData(STREAMER_TYPE_AREA, CreateDynamicSphere(X, Y, Z, 8.0), E_STREAMER_EXTRA_ID, 2);
  202.             CreateDynamic3DTextLabel("{bdf228}[ {ffffff}Repair {bdf228}]", -1, X, Y, Z, 300.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 300.0);
  203.         }
  204.         case 3:{
  205.             CreateDynamicObject(1559, X, Y, Z, 0.0, 0.0, 0.0,-1, -1, -1, 400.0, 400.0);
  206.             Streamer_SetIntData(STREAMER_TYPE_AREA, CreateDynamicSphere(X, Y, Z, 8.0), E_STREAMER_EXTRA_ID, vehicleid);
  207.             new hstr[76];
  208.             format(hstr,sizeof hstr, "{bdf228}[ {ffffff}%s {bdf228}]", GetVehicleName(vehicleid));
  209.             CreateDynamic3DTextLabel(hstr, -1, X, Y, Z, 300.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 300.0);
  210.         }
  211.         case 4:{
  212.             format(savestr,40,"%f|%f|%f",nX,nY,nZ);
  213.             id = CreateDynamicSphere(X, Y, Z, 8.0);
  214.             setproperty(0, "", 1000000+id, savestr);
  215.             CreateDynamicObject(1252, X, Y, Z, 0.0, 0.0, 0.0, 10);
  216.             Streamer_SetIntData(STREAMER_TYPE_AREA, id, E_STREAMER_EXTRA_ID, 4);
  217.             CreateDynamic3DTextLabel("{bdf228}[ {ffffff}Speedboost {bdf228}]", -1, X, Y, Z, 300.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 300.0);
  218.         }
  219.         case 5:{
  220.             format(savestr,40,"%f|%f|%f|%f",nX,nY,nZ,nRZ);
  221.             id = CreateDynamicSphere(X, Y, Z, 8.0);
  222.             setproperty(0, "", 1000000+id, savestr);
  223.             CreateDynamicObject(1318, X, Y, Z, 0.0, 0.0, 0.0,-1, -1, -1, 400.0, 400.0);
  224.             Streamer_SetIntData(STREAMER_TYPE_AREA, id, E_STREAMER_EXTRA_ID, 5);
  225.             CreateDynamic3DTextLabel("{bdf228}[ {ffffff}Teleports {bdf228}]", -1, X, Y, Z+1.5, 300.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 10, -1, -1, -1, 300.0);
  226.         }
  227.     }
  228.     return 1;
  229. }
  230. stock InitializeRace() {
  231.     new pos = 10000 + 1, loadstr[64], vw, mapValues2[mapData];
  232.     for(new i; i != MAX_PLAYERS; ++i){
  233.         if(!IsPlayerConnected(i))continue;
  234.         switch(existproperty(0, "", pos)){
  235.             case true:{
  236.                 getproperty(0, "", pos, loadstr);
  237.                 strunpack(loadstr, loadstr, sizeof(loadstr));
  238.                 sscanf(loadstr,"p<|>e<i-i-s[30]fff-f-ff>",mapValues2);
  239.                 Streamer_UpdateEx(i, mapValues2[pMX],mapValues2[pMY],mapValues2[pMZ], vw, -1);
  240.                 mapValues2[pMmodelid] = CreateVehicle(mapValues2[pMmodelid],mapValues2[pMX],mapValues2[pMY],mapValues2[pMZ],mapValues2[pMRZ]+5,random(255),random(255),-1);
  241.                 SetVehicleVirtualWorld(mapValues2[pMmodelid],vw);
  242.                 TogglePlayerControllable(i,false);
  243.                 SetPlayerVirtualWorld(i,vw);
  244.                 PutPlayerInVehicle(i,mapValues2[pMmodelid],0);
  245.                 TextDrawShowForPlayer(i, Waiting0);
  246.                 TextDrawShowForPlayer(i, Waiting1);
  247.                 TextDrawShowForPlayer(i, Waiting2);
  248.                 TextDrawShowForPlayer(i, Waiting3);
  249.                 TextDrawShowForPlayer(i, Waiting4);
  250.                 TextDrawShowForPlayer(i, Waiting5);
  251.             }
  252.             case false:{
  253.                 pos = 10000 + 1;
  254.                 ++vw;
  255.                 getproperty(0, "", pos, loadstr);
  256.                 strunpack(loadstr, loadstr, sizeof(loadstr));
  257.                 sscanf(loadstr,"p<|>e<i-i-s[30]fff-f-ff>",mapValues2);
  258.                 Streamer_UpdateEx(i, mapValues2[pMX],mapValues2[pMY],mapValues2[pMZ], vw, -1);
  259.                 mapValues2[pMmodelid] = CreateVehicle(mapValues2[pMmodelid],mapValues2[pMX],mapValues2[pMY],mapValues2[pMZ],mapValues2[pMRZ]+5,random(255),random(255),-1);
  260.                 SetVehicleVirtualWorld(mapValues2[pMmodelid],vw);
  261.                 TogglePlayerControllable(i,false);
  262.                 SetPlayerVirtualWorld(i,vw);
  263.                 PutPlayerInVehicle(i,mapValues2[pMmodelid],0);
  264.                 TextDrawShowForPlayer(i, Waiting0);
  265.                 TextDrawShowForPlayer(i, Waiting1);
  266.                 TextDrawShowForPlayer(i, Waiting2);
  267.                 TextDrawShowForPlayer(i, Waiting3);
  268.                 TextDrawShowForPlayer(i, Waiting4);
  269.                 TextDrawShowForPlayer(i, Waiting5);            
  270.             }
  271.         }
  272.         ++pos; 
  273.     }
  274.     return 1;
  275. }
  276. stock RestartRace() {
  277.     if(RemoveVehicles())StartRace(getproperty(0, "CountdownTime"));
  278.     return 1;
  279. }
  280.  
  281. stock StartRace(time){
  282.     if(InitializeRace()){
  283.         setproperty(.name = "CountdownTime", .value = time);
  284.         return SetTimerEx("@Countdown",1000,false,"i",time);
  285.     }
  286.     return 1;
  287. }
  288.  
  289. forward @Countdown(time);
  290. @Countdown(time){
  291.     new str[5];
  292.     valstr(str,time/1000);
  293.     time -= 1000;
  294.     if(!time) {
  295.         for(new i; i != MAX_PLAYERS; ++i)if(IsPlayerConnected(i))PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0),progressMap=false,ServerData[Started] = true, GameTextForPlayer(i, "~b~~h~~h~Go!", 500, 4),TogglePlayerControllable(i,true);
  296.     } else {
  297.         for(new i; i != MAX_PLAYERS; ++i) if(IsPlayerConnected(i))PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0),GameTextForPlayer(i, str, 500, 4);
  298.         return SetTimerEx("@Countdown",1000,false,"i",time);
  299.     }
  300.     return 1;
  301. }
  302. stock static UnloadMap(){
  303.     new i = 10000+1;
  304.     while(existproperty(0, "", i)){
  305.         deleteproperty(0, "", i);
  306.         ++i;
  307.     }
  308.     Streamer_DestroyAllItems(STREAMER_TYPE_OBJECT , true);
  309.     RemoveVehicles();
  310.     return 1;
  311. }
  312.  
  313. stock static ConvertStringToHex(string[],size = sizeof(string)){
  314.     new stringR[10];
  315.     strmid(stringR,string,7,strlen(string));
  316.     strdel(string,7,strlen(string));
  317.     strdel(string,0,1);
  318.     strins(string,"0x",0,size);
  319.     strins(string,stringR,2,size);
  320.     new i, cur=1,res=0;
  321.     for (i=strlen(string);i>0;i--) {
  322.         if (string[i-1]<58) res=res+cur*(string[i-1]-48); else res=res+cur*(string[i-1]-65+10);
  323.         cur=cur*16;
  324.     }
  325.     return res;
  326. }
  327. stock static GetVehicleName(modelid)
  328. {
  329.     static vehName[30];
  330.     strunpack(vehName, VehicleNames[modelid - 400]);
  331.     return vehName;
  332. }
  333. stock RemoveVehicles(){
  334.     for(new i; i != MAX_VEHICLES; ++i)DestroyVehicle(i);
  335.     return 1;
  336. }
  337. stock static CreateRaceSpawn(Modelid, Float:X, Float:Y, Float:Z, Float:rZ, count) {
  338.     new savestr[64];
  339.     format(savestr,64,"%d|%f|%f|%f|%f",Modelid,X,Y,Z,rZ);
  340.     setproperty(0, "", 10000+count, savestr);
  341.     return 1;
  342. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement