07.07.2018, 05:48
Did you check all the code? That's an example of replacement of RemoveWorldObject to RemoveBuildingForPlayer, there are no just Checkpoints but Spawnpoints, objects and so. What I wanted to show you with the code is how I did the replacement but it didn't work in-game, I mean, it didn't remove the world objects when you play the race. Check this part of the code of the Gamemode:
As you can see, to make work PickUps, Spawnpoints, Objects and Checkpoints with MTA codes which are located inside the .map file, there's a script code right there to make em work, what is missing is the code for RemoveWorldObject. I hope you got my point now xd.
Код:
funcion LoadAutoRace(rName[]) { new File[128], Str[9][40], buf[50], count, obcount, picount, spawnco, mapname[64], time[12] ; format(File,128,"/RacesNew/%s/meta.xml",rName); if(!fexist(File))return printf("%s no existe!",File); new XML:Map = xml_open(File); xml_get_string(Map,"meta/info/@name",RaceName); xml_get_string(Map,"meta/map/@src",mapname); xml_get_string(Map,"meta/settings/setting[1]/@value",time); RaceWeather = xml_get_int(Map,"meta/settings/setting[2]/@value"); xml_close(Map); sscanf(time,"p<:>d",RaceHour); format(File,128,"/RacesNew/%s/%s",rName,mapname); if(!fexist(File))return printf("%s no existe!",File); Map = xml_open(File); new spawnp = xml_get_int(Map,"count(map/spawnpoint)"); new Objectp = xml_get_int(Map,"count(map/object)"); new Racepick = xml_get_int(Map,"count(map/racepickup)"); new Checkpo = xml_get_int(Map,"count(map/checkpoint)"); new Max1 = max(spawnp,Objectp); new Max2 = max(Checkpo,Racepick); new Max = max(Max1,Max2); for(new a=1,b=Max+1; a<b; a++) { if(Objectp != 0 && Objectp >= a) { for(new c=0; c<sizeof(ObjAttr); c++) { format(Str[c], sizeof(Str[]), "map/object[%d]/@%s",a,ObjAttr[c]); } rObje[obcount] = CreateDynamicMagObject(xml_get_int(Map,Str[0]),xml_get_float(Map,Str[1]),xml_get_float(Map,Str[2]),xml_get_float(Map,Str[3]),xml_get_float(Map,Str[4]),xml_get_float(Map,Str[5]),xml_get_float(Map,Str[6])); obcount++; if(obcount>=8000){ printf("%s/%s The number of the objects is too much",rName,mapname); return 0; } } if(spawnp != 0 && spawnp >=a) { for(new c=0; c<sizeof(spawnpoint); c++) { format(Str[c], sizeof(Str[]), "map/spawnpoint[%d]/@%s",a,spawnpoint[c]); } RaceVehCoords[spawnco][0] = xml_get_float(Map,Str[0]); RaceVehCoords[spawnco][1] = xml_get_float(Map,Str[1]); RaceVehCoords[spawnco][2] = xml_get_float(Map,Str[2]); RaceVehCoords[spawnco][3] = xml_get_float(Map,Str[3]); if(RaceVehCoords[spawnco][3] != RaceVehCoords[spawnco][3]){ format(Str[3], sizeof(Str[]), "map/spawnpoint[%d]/@rotZ",a); RaceVehCoords[spawnco][3] = xml_get_float(Map,Str[3]); } RaceVehicle = xml_get_int(Map,Str[4]); spawnco++; } if(Racepick != 0 && Racepick >=a) { for(new c=0; c<sizeof(PickAttr); c++) { format(Str[c], sizeof(Str[]), "map/racepickup[%d]/@%s",a,PickAttr[c]); } xml_get_string(Map,Str[3],buf); if(!strcmp(buf,"nitro",true)) { nospid[picount] = CreateRacePickup(picount,1010,23,xml_get_float(Map,Str[0]),xml_get_float(Map,Str[1]),xml_get_float(Map,Str[2])); vehchlabel[picount] = CreateDynamic3DTextLabel("{FFFFFF}10X {15FF00}Nitro",-1,xml_get_float(Map,Str[0]),xml_get_float(Map,Str[1]),xml_get_float(Map,Str[2])+0.7,100.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,10); Iter_Add(nosp,picount); }else if(!strcmp(buf,"repair",true)){ repid[picount] = CreateRacePickup(picount,3096,23,xml_get_float(Map,Str[0]),xml_get_float(Map,Str[1]),xml_get_float(Map,Str[2])); Iter_Add(rep,picount); }else{ vehch[picount] = CreateRacePickup(picount,2485,23,xml_get_float(Map,Str[0]),xml_get_float(Map,Str[1]),xml_get_float(Map,Str[2])); vehchcar[picount] = xml_get_int(Map,Str[4]); Iter_Add(vehp,picount); format(buf,50,"{FFFFFF}-- {D6A374}%s {FFFFFF}--",VehNames[vehchcar[picount]-400]); vehchlabel[picount] = CreateDynamic3DTextLabel(buf,-1,xml_get_float(Map,Str[0]),xml_get_float(Map,Str[1]),xml_get_float(Map,Str[2])+0.7,100.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,10); } picount++; } if(Checkpo != 0 && Checkpo >=a) { for(new c=0; c<sizeof(checkpoint); c++) { format(Str[c], sizeof(Str[]), "map/checkpoint[%d]/@%s",a,checkpoint[c]); } CPCoords[count][0] = xml_get_float(Map,Str[0]); CPCoords[count][1] = xml_get_float(Map,Str[1]); CPCoords[count][2] = xml_get_float(Map,Str[2]); count++; } } xml_close(Map); yarissiratimer = SetTimer("ccarreras",500,true); TotalCP = count; aralika1 = ((21.0)/(TotalCP)); aralika2 = (187.0/TotalCP); raceslot = spawnco; Position = 0; FinishCount = 0; JoinCount = 0; Loop(x, 2) PlayersCount[x] = 0; CountAmount = COUNT_DOWN_TILL_RACE_START; RaceTime = MAX_RACE_TIME; RaceBusy = 0x01; KillTimer(CountTimer); CountTimer = SetTimer("CountTillRace", 999, 1); Iter_Clear(racer); return 1; }