Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- fffffffffff RRRRRRRRRRRRRRRRR AAAAAAAAAAAAAAAAA CCCCCCCCCCCC EEEEEEEEEEEEE
- fffff ffff RRRRR RRRRRR AAAAAAAAAAAAAAAAA CCCCCCCCCCCC EEEEEEEEEEEEE
- fffff RRRRR RRRRRR AAAAA AAAAA CCCCCC EEEEE
- fffffffff RRRRR RRRRRR AAAAA AAAAA CCCCCC EEEEE
- fffff RRRRRRRRRRRRRRRRR AAAAAAAAAAAAAAAAA CCCCCC EEEEEEEEEEEEE
- fffff RRRRRRRRRR AAAAAAAAAAAAAAAAA CCCCCC EEEEEEEEEEEEE
- fffff RRRRR RRRRR AAAAA AAAAA CCCCCC EEEEE
- fffff RRRRR RRRRRR AAAAA AAAAA CCCCCCCCCCCC EEEEEEEEEEEEE
- fffffffff RRRRR RRRRRR AAAAA AAAAA CCCCCCCCCCCC EEEEEEEEEEEEE
- fRace, FuSion Race v2.0
- Base: Yagu's Race
- Created by: FuSion
- For fCreations & GTAonline & GTAeaster
- */
- #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
- #include <a_samp>
- #include <float>
- #include <file>
- #include <Dini>
- #define MAX_RACECHECKPOINTS 99// Nombre MAX de CP
- #define MAX_BUILDERS 4
- #define RACEFILE_VERSION 2 // !!! DO NOT CHANGE !!! NE PAS CHANGER
- #define MENU0 80
- #define MENU1 81
- #define MENU2 82
- #define MENU3 83
- // Variables
- new RRotation = -1;
- new RRotationDelay = 300000;
- new BuildAdmin = 1;
- new RaceAdmin = 1;
- new PrizeMode=0;
- new Prize=30000;
- new DynaMP=1;
- new JoinFee=1; //Prix de course
- new RVehicule[MAX_PLAYERS];
- new voiture[97] =
- {
- 400,401,402,404,405,410,411,415,418,419,420,421,422,424,426,429,434,436,438,439,
- 445,451,458,466,467,470,474,475,477,478,479,480,489,490,491,492,494,495,496,500,
- 502,503,504,505,506,507,516,517,518,525,526,527,528,529,533,534,535,356,540,541,
- 542,543,545,546,547,549,550,551,552,554,555,558,559,560,561,562,565,566,567,568,
- 575,576,579,580,585,587,589,596,597,598,599,600,601,602,603,604,605
- };
- new moto[10] =
- {
- 448,461,462,463,468,521,522,523,581,586
- };
- new bateaux[12] =
- {
- 430,446,452,453,454,472,473,484,493,539,595,539
- };
- new sandking[1] =
- {
- 495
- };
- new avions[20] =
- {
- 460,464,476,511,512,513,519,520,577,592,593,417,525,447,469,487,488,497,548,563
- };
- //################################################//
- #define COLOR_GREEN 0x33AA33AA
- #define COLOR_RED 0xAA3333AA
- #define COLOR_YELLOW 0xFFFF00AA
- #define COLOR_WHITE 0xFFFFFFAA
- new CNumero[128], CType[64];
- new GCourse; // Genre de la course
- new gPlayerProgress[MAX_PLAYERS];
- new gRacePosition[MAX_PLAYERS];
- new Float:esplarg,Float:esphaut;
- new Float:X1[MAX_PLAYERS], Float:Y1[MAX_PLAYERS], Float:Z1[MAX_PLAYERS], Float:Angle1[MAX_PLAYERS];
- forward Pol1(playerid);
- forward Pol2(playerid);
- forward Pol3(playerid);
- forward Pol4(playerid);
- forward Pol5(playerid);
- forward Pol6(playerid);
- forward Pol7(playerid);
- forward Pol8(playerid);
- forward Pol9(playerid);
- forward Pol10(playerid);
- forward Pol11(playerid);
- forward Pol12(playerid);
- forward Pol13(playerid);
- forward Pol14(playerid);
- forward Pol15(playerid);
- forward Pol16(playerid);
- forward Pol17(playerid);
- forward Pol18(playerid);
- forward Pol19(playerid);
- forward Pol20(playerid);
- forward Pol21(playerid);
- forward Pol22(playerid);
- forward Pol23(playerid);
- forward Pol24(playerid);
- forward Pol25(playerid);
- forward Pol26(playerid);
- forward Pol27(playerid);
- forward Pol28(playerid);
- forward RaceRotation();
- forward LockRacers();
- forward UnlockRacers();
- forward SaveScores(); // After race, if new best times have been made, saves them.
- forward GetRaceTick(playerid); // Gets amount of ticks the player was racing
- forward GetLapTick(playerid); // Gets amount of ticks the player spend on the lap
- forward ReadyRefresh(); // Check the /ready status of players and start the race when ready
- forward RaceSound(playerid,sound); // Plays <sound> for <playerid>
- forward BActiveCP(playerid,sele); // Gives the player selected checkpoint
- forward endrace(); // Ends the race, whether it ended normally or by /endrace. Cleans the variables.
- forward countdown(); // Handles the countdown
- forward mscountdown(); //Majority Start countdown handler
- forward strtok(const string[],&index);
- forward SetNextCheckpoint(playerid); // Gives the next checkpoint for the player during race
- forward CheckBestLap(playerid, laptime); // Check if <laptime> is better than any of the ones in highscore list, and update.
- forward CheckBestRace(playerid,racetime); // Check if <racetime> is better than any of the ones in highscore list, and update.
- forward ChangeLap(playerid); // Change player's lap, print out time and stuff.
- forward SetRaceCheckpoint(playerid,target,next); // Race-mode checkpoint setter
- forward SetBRaceCheckpoint(playerid,target,next); // Builder-mode checkpoint setter
- forward LoadTimes(playerid,timemode,tmp[]); // bestlap and bestrace-parameter race loader
- forward IsNotAdmin(playerid); // Is the player admin, if no, return 1 with an error message.
- forward GetBuilderSlot(playerid); // Get next free builderslot, return 0 if none available
- forward b(playerid); // Quick and dirty fix for the BuilderSlots
- forward Float:Distance(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2);
- forward clearrace(playerid);
- forward startrace();
- forward LoadRace(tmp[]);
- // General variables
- new RotationTimer;
- new ystring[128]; // ystring
- new CBuilder[MAX_PLAYER_NAME], CFile[64], CRaceName[128]; //Creator of the race and the filename, for score changing purposes.
- // Racing-related variables
- new Pot=0; //Join fees go here
- new Ranking; //Finishing order for prizes
- new Countdown; //Countdown timer
- new cd; //Countdown time
- new MajStart=0; //Status of the Majority Start timer
- new MajStartTimer; //Majority Start timer
- new mscd; //Majority Start time
- new RaceActive; //Is a race active?
- new RaceStart; //Has race started?
- new Float:RaceCheckpoints[MAX_RACECHECKPOINTS][4]; //Current race CP array
- new LCurrentCheckpoint; //Current race array pointer
- new CurrentCheckpoint[MAX_PLAYERS]; //Current race array pointer array :V
- new CurrentLap[MAX_PLAYERS]; //Current lap array
- new RaceParticipant[MAX_PLAYERS]; //Has the player /joined the race
- // \_values: 0 - not in race, 1 - joined, 2 - arrived to start CP, 3 - /ready, 4 - racing, 5 - Last CP
- new Participants; //Amount of participants
- new PlayerVehicles[MAX_PLAYERS]; //For slapping the player back in their vehicle.
- new ORacelaps, ORacemode; //Saves the laps/mode from file in case they aren't changed
- new OAirrace, Float:OCPsize;
- new Racelaps, Racemode; //If mode/laps has been changed, the new scores won't be saved.
- new ScoreChange; //Flag for new best times, so they are saved.
- new RaceTick; //Startime of the race
- new LastLapTick[MAX_PLAYERS]; //Array that stores the times when players started the lap
- new TopRacers[6][MAX_PLAYER_NAME]; // Stores 5 top scores, 6th isn't
- new TopRacerTimes[6]; // saved to file, used to simplify
- new TopLappers[6][MAX_PLAYER_NAME];// for() loops on CheckBestLap and
- new TopLapTimes[6]; // CheckBestRace.
- new Float:CPsize; // Checkpoint size for the race
- new Airrace; // Is the race airrace?
- new Float:RLenght, Float:LLenght; //Lap lenght and race lenght
- // Building-related variables
- new BCurrentCheckpoints[MAX_BUILDERS]; //Buildrace array pointers
- new BSelectedCheckpoint[MAX_BUILDERS]; //Selected checkpoint during building
- new RaceBuilders[MAX_PLAYERS]; //Who is building a race?
- new BuilderSlots[MAX_BUILDERS]; //Stores the racebuilder pids
- new Float:BRaceCheckpoints[MAX_BUILDERS][MAX_RACECHECKPOINTS][3]; //Buildrace CP array
- new Bracemode[MAX_BUILDERS];
- new Blaps[MAX_BUILDERS];
- new Float:BCPsize[MAX_BUILDERS];
- new BAirrace[MAX_BUILDERS];
- //-------------------------------------------------------------------------
- new p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28;
- new pplayer[MAX_PLAYERS];
- new Float:xr[MAX_PLAYERS],Float:yr[MAX_PLAYERS],Float:zr[MAX_PLAYERS];
- new Float:Angle;
- new Float:a;
- public OnFilterScriptInit()
- {
- print("\n+--------------------------------+");
- print("| Yagu's Race Filterscript v0.4a |");
- print("+--------------Loool------------+\n");
- RaceActive=0;
- Ranking=1;
- LCurrentCheckpoint=0;
- Participants=0;
- for(new i;i<MAX_BUILDERS;i++)
- {
- BuilderSlots[i]=MAX_PLAYERS+1;
- }
- if(RRotation != -1) SetTimer("RaceRotation",RRotationDelay,1);
- return 1;
- }
- public OnFilterScriptExit()
- {
- print("\n+--------------------------------+");
- print("| Yagu's Race Filterscript v0.4a |");
- print("+------------UNLOADED------------+\n");
- return 1;
- }
- stock SaveCP(playerid)
- {
- X1[playerid] = RaceCheckpoints[CurrentCheckpoint[playerid]-1][0];
- Y1[playerid] = RaceCheckpoints[CurrentCheckpoint[playerid]-1][1];
- Z1[playerid] = RaceCheckpoints[CurrentCheckpoint[playerid]-1][2];
- new Float:NormeAB;
- new Float:SinAngle;
- new Float:Angle3;
- NormeAB = floatsqroot ((RaceCheckpoints[CurrentCheckpoint[playerid]][0]-RaceCheckpoints[CurrentCheckpoint[playerid]-1][0])*(RaceCheckpoints[CurrentCheckpoint[playerid]][0]-RaceCheckpoints[CurrentCheckpoint[playerid]-1][0]) + (RaceCheckpoints[CurrentCheckpoint[playerid]][1]-RaceCheckpoints[CurrentCheckpoint[playerid]-1][1])*(RaceCheckpoints[CurrentCheckpoint[playerid]][1]-RaceCheckpoints[CurrentCheckpoint[playerid]][1]));
- SinAngle = ((RaceCheckpoints[CurrentCheckpoint[playerid]][1]-RaceCheckpoints[CurrentCheckpoint[playerid]][1])/NormeAB);
- Angle3 = asin(SinAngle);
- if (RaceCheckpoints[CurrentCheckpoint[playerid]-1][0] > RaceCheckpoints[CurrentCheckpoint[playerid]][0])
- {
- Angle3 = 90.0 - Angle3;
- }
- else
- {
- Angle3 = Angle3 - 90.0;
- }
- Angle1[playerid]=Angle3+90;
- return 1;
- }
- stock Save1(playerid)
- {
- if(IsPlayerInAnyVehicle(playerid))
- {
- new vehicleid = GetPlayerVehicleID(playerid);
- GetVehicleZAngle(vehicleid, Angle1[playerid]);
- SendClientMessage(playerid, COLOR_GREEN, "Position 0 sauvegardée.");
- GetVehiclePos(vehicleid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- SendClientMessage(playerid, COLOR_GREEN, "Position 0 sauvegardée.");
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- stock Telep1(playerid)
- {
- if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
- {
- new vehicleid = GetPlayerVehicleID(playerid);
- SetVehicleZAngle(vehicleid, Angle1[playerid]);
- SetVehiclePos(vehicleid, X1[playerid], Y1[playerid], Z1[playerid]);
- SendClientMessage(playerid, COLOR_GREEN, "Position 0 restaurée.");
- }
- else
- {
- SetPlayerFacingAngle(playerid, Angle1[playerid]);
- SetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- SendClientMessage(playerid, COLOR_GREEN, "Position 0 restaurée.");
- }
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- dcmd(racehelp,8,cmdtext); // Aide pour les courses
- dcmd(buildhelp,9,cmdtext); // Aide pour la construction
- dcmd(buildrace,9,cmdtext); // Construire une course
- dcmd(cp,2,cmdtext); // Ajouter un CP
- dcmd(scp,3,cmdtext); // Selectionner un CP
- dcmd(rcp,3,cmdtext); // Remplacer le dernier CP
- dcmd(dcp,3,cmdtext); // Supprimer le CP
- dcmd(clearrace,9,cmdtext); // Suprimmer la course
- dcmd(editrace,8,cmdtext); // Editer la course
- dcmd(saverace,8,cmdtext); // Sauvegarder la course
- dcmd(loadrace,8,cmdtext); // Charger la course
- dcmd(join,4,cmdtext); // Rejoindre la course
- dcmd(leave,5,cmdtext); // Quitter la course
- dcmd(endrace,7,cmdtext); // Finir la course
- dcmd(deleterace,10,cmdtext);// Supprimer la course
- if (strcmp("/ready", cmdtext, true) == 0)
- {
- if(BuildAdmin == 1 && IsNotAdmin(playerid)) return 1;
- SendClientMessage(playerid,COLOR_GREEN,"Vous avez lancé la course !");
- ReadyRefresh();
- return 1;
- }
- if (strcmp(cmdtext, "/s", true)==0)
- {
- if(RaceParticipant[playerid] > 0)
- {
- Save1(playerid);
- }
- return 1;
- }
- if (strcmp(cmdtext, "/r", true)==0)
- {
- if(RaceParticipant[playerid] > 0)
- {
- Telep1(playerid);
- RaceSound(playerid,1138);
- }
- return 1;
- }
- return 0;
- }
- dcmd_racehelp(playerid, params[])
- {
- #pragma unused params
- SendClientMessage(playerid, COLOR_GREEN, "fRace, FuSion Race: Aide général:");
- SendClientMessage(playerid, COLOR_WHITE, "/loadrace pour charger une course. Utilisez /join pour la rejoindre");
- SendClientMessage(playerid, COLOR_WHITE, "quand celle ci commence. /leave pour quitter la course.");
- SendClientMessage(playerid, COLOR_WHITE, "/endrace pour annuler la course. /bestrace pour voir les meilleurs temps");
- SendClientMessage(playerid, COLOR_WHITE, "vous pouvez aussi voir les temps spécifié pour une course.");
- SendClientMessage(playerid, COLOR_WHITE, "Pour plus d'informations conçernant la construction, tapez /racebuild");
- return 1;
- }
- dcmd_buildhelp(playerid, params[])
- {
- #pragma unused params
- SendClientMessage(playerid, COLOR_GREEN, "fRace, FuSion Race: Aide pour la construction:");
- SendClientMessage(playerid, COLOR_WHITE, "/buildrace pour construire une course. /cp pour poser un CP, /scp en selectionner un");
- SendClientMessage(playerid, COLOR_WHITE, "/dcp pour le supprimer, /rcp pour en mettre un nouveau.");
- SendClientMessage(playerid, COLOR_WHITE, "/editrace pour en editer une. /saverace pour sauvegarder la course.");
- SendClientMessage(playerid, COLOR_WHITE, "Pour plus d'info, tapez /racehelp.");
- return 1;
- }
- dcmd_buildrace(playerid, params[])
- {
- #pragma unused params
- if(BuildAdmin == 1 && IsNotAdmin(playerid)) return 1;
- if(RaceBuilders[playerid] != 0)
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Vous construisez déjà une course !");
- }
- else if(RaceParticipant[playerid]>0)
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Action impossible, vous êtes en course.");
- }
- else
- {
- new slot;
- slot=GetBuilderSlot(playerid);
- if(slot == 0)
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Pas de slots disponible!");
- return 1;
- }
- format(ystring,sizeof(ystring),"Vous êtes entrain de construire une course ! (Slot: %d)",slot);
- SendClientMessage(playerid, COLOR_GREEN, ystring);
- RaceBuilders[playerid]=slot;
- BCurrentCheckpoints[b(playerid)]=0;
- Bracemode[b(playerid)]=0;
- Blaps[b(playerid)]=0;
- BAirrace[b(playerid)] = 0;
- BCPsize[b(playerid)] = 8.0;
- }
- return 1;
- }
- dcmd_cp(playerid, params[])
- {
- #pragma unused params
- if(RaceBuilders[playerid] != 0 && BCurrentCheckpoints[b(playerid)] < MAX_RACECHECKPOINTS)
- {
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid,x,y,z);
- format(ystring,sizeof(ystring),"Checkpoint %d crée: %f,%f,%f.",BCurrentCheckpoints[b(playerid)],x,y,z);
- SendClientMessage(playerid, COLOR_GREEN, ystring);
- BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][0]=x;
- BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][1]=y;
- BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][2]=z;
- BSelectedCheckpoint[b(playerid)]=BCurrentCheckpoints[b(playerid)];
- SetBRaceCheckpoint(playerid,BCurrentCheckpoints[b(playerid)],-1);
- BCurrentCheckpoints[b(playerid)]++;
- if(IsPlayerInAnyVehicle(playerid))
- {
- new vehicleid = GetPlayerVehicleID(playerid);
- GetVehicleZAngle(vehicleid, Angle1[playerid]);
- GetVehiclePos(vehicleid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- }
- else if(RaceBuilders[playerid] != 0 && BCurrentCheckpoints[b(playerid)] == MAX_RACECHECKPOINTS)
- {
- format(ystring,sizeof(ystring),"Desolé, vous aviez atteint le maximum de CP. (%d).",MAX_RACECHECKPOINTS);
- SendClientMessage(playerid, COLOR_YELLOW, ystring);
- }
- else
- {
- SendClientMessage(playerid, COLOR_RED, "Vous ne construisez pas une course !");
- }
- return 1;
- }
- dcmd_scp(playerid, params[])
- {
- new sele, tmp[256], idx;
- tmp = strtok(params, idx);
- if(!strlen(tmp)) {
- SendClientMessage(playerid, COLOR_WHITE, "USAGE: /scp [checkpoint]");
- return 1;
- }
- sele = strval(tmp);
- if(RaceBuilders[playerid] != 0)
- {
- if(sele>BCurrentCheckpoints[b(playerid)]-1 || BCurrentCheckpoints[b(playerid)] < 1 || sele < 0)
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Checkpoint invalide !");
- return 1;
- }
- format(ystring,sizeof(ystring),"Checkpoint séléctionné: %d.",sele);
- SendClientMessage(playerid, COLOR_GREEN, ystring);
- BActiveCP(playerid,sele);
- BSelectedCheckpoint[b(playerid)]=sele;
- }
- else
- {
- SendClientMessage(playerid, COLOR_RED, "Vous ne construisez pas une course !");
- }
- return 1;
- }
- dcmd_rcp(playerid, params[])
- {
- #pragma unused params
- if(RaceBuilders[playerid] == 0)
- {
- SendClientMessage(playerid, COLOR_RED, "Vous ne construisez pas une course !");
- return 1;
- }
- else if(BCurrentCheckpoints[b(playerid)] < 1)
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Pas de Checkpoint a remplcer");
- return 1;
- }
- new Float:x,Float:y,Float:z;
- GetPlayerPos(playerid,x,y,z);
- format(ystring,sizeof(ystring),"Checkpoint %d remplacé: %f,%f,%f.",BSelectedCheckpoint[b(playerid)],x,y,z);
- SendClientMessage(playerid, COLOR_GREEN, ystring);
- BRaceCheckpoints[b(playerid)][BSelectedCheckpoint[b(playerid)]][0]=x;
- BRaceCheckpoints[b(playerid)][BSelectedCheckpoint[b(playerid)]][1]=y;
- BRaceCheckpoints[b(playerid)][BSelectedCheckpoint[b(playerid)]][2]=z;
- BActiveCP(playerid,BSelectedCheckpoint[b(playerid)]);
- return 1;
- }
- dcmd_dcp(playerid, params[])
- {
- #pragma unused params
- if(RaceBuilders[playerid] == 0)
- {
- SendClientMessage(playerid, COLOR_RED, "Vous ne construisez pas une course !");
- return 1;
- }
- else if(BCurrentCheckpoints[b(playerid)] < 1)
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Pas de checkpoint a supprimé");
- return 1;
- }
- for(new i=BSelectedCheckpoint[b(playerid)];i<BCurrentCheckpoints[b(playerid)];i++)
- {
- BRaceCheckpoints[b(playerid)][i][0]=BRaceCheckpoints[b(playerid)][i+1][0];
- BRaceCheckpoints[b(playerid)][i][1]=BRaceCheckpoints[b(playerid)][i+1][1];
- BRaceCheckpoints[b(playerid)][i][2]=BRaceCheckpoints[b(playerid)][i+1][2];
- }
- BCurrentCheckpoints[b(playerid)]--;
- BSelectedCheckpoint[b(playerid)]--;
- if(BCurrentCheckpoints[b(playerid)] < 1)
- {
- DisablePlayerRaceCheckpoint(playerid);
- BSelectedCheckpoint[b(playerid)]=0;
- return 1;
- }
- else if(BSelectedCheckpoint[b(playerid)] < 0)
- {
- BSelectedCheckpoint[b(playerid)]=0;
- }
- BActiveCP(playerid,BSelectedCheckpoint[b(playerid)]);
- SendClientMessage(playerid,COLOR_GREEN,"Checkpoint supprimé !");
- return 1;
- }
- dcmd_clearrace(playerid,params[])
- {
- #pragma unused params
- if(RaceBuilders[playerid] != 0) clearrace(playerid);
- else SendClientMessage(playerid, COLOR_RED, "Vous ne construisez pas une course !");
- return 1;
- }
- dcmd_editrace(playerid,params[])
- {
- if(RaceBuilders[playerid] == 0)
- {
- SendClientMessage(playerid, COLOR_RED, "Vous ne construisez pas une course !");
- return 1;
- }
- if(BCurrentCheckpoints[b(playerid)]>0) //Clear the old race if there is such.
- {
- for(new i=0;i<BCurrentCheckpoints[b(playerid)];i++)
- {
- BRaceCheckpoints[b(playerid)][i][0]=0.0;
- BRaceCheckpoints[b(playerid)][i][1]=0.0;
- BRaceCheckpoints[b(playerid)][i][2]=0.0;
- }
- BCurrentCheckpoints[b(playerid)]=0;
- }
- new tmp[256],idx;
- tmp = strtok(params, idx);
- if(!strlen(tmp))
- {
- SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editrace [name]");
- return 1;
- }
- new race_name[32],templine[42];
- format(race_name,sizeof(race_name), "/fRace/%s.frace",tmp);
- if(!fexist(race_name))
- {
- format(ystring,sizeof(ystring), "La course \"%s\" n'existe pas.",tmp);
- SendClientMessage(playerid, COLOR_RED, ystring);
- return 1;
- }
- BCurrentCheckpoints[b(playerid)]=-1;
- new File:f, i;
- f = fopen(race_name, io_read);
- fread(f,templine,sizeof(templine));
- if(templine[0] == 'Y') //Checking if the racefile is v0.2+
- {
- new fileversion;
- strtok(templine,i); // read off YRACE
- fileversion = strval(strtok(templine,i)); // read off the file version
- if(fileversion > RACEFILE_VERSION) // Check if the race is made with a newer version of the racefile format
- {
- format(ystring,128,"Race \'%s\' is created with a newer version of YRACE, unable to load.",tmp);
- SendClientMessage(playerid,COLOR_RED,ystring);
- return 1;
- }
- strtok(templine,i); // read off RACEBUILDER
- Bracemode[b(playerid)] = strval(strtok(templine,i)); // read off racemode
- Blaps[b(playerid)] = strval(strtok(templine,i)); // read off amount of laps
- if(fileversion >= 2)
- {
- BAirrace[b(playerid)] = strval(strtok(templine,i));
- BCPsize[b(playerid)] = floatstr(strtok(templine,i));
- }
- else
- {
- BAirrace[b(playerid)] = 0;
- BCPsize[b(playerid)] = 8.0;
- }
- fread(f,templine,sizeof(templine)); // read off best race times, not saved due to editing the track
- fread(f,templine,sizeof(templine)); // read off best lap times, -||-
- }
- else //Otherwise add the lines as checkpoints, the file is made with v0.1 (or older) version of the script.
- {
- BCurrentCheckpoints[b(playerid)]++;
- BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][0] = floatstr(strtok(templine,i));
- BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][1] = floatstr(strtok(templine,i));
- BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][2] = floatstr(strtok(templine,i));
- }
- while(fread(f,templine,sizeof(templine),false))
- {
- BCurrentCheckpoints[b(playerid)]++;
- i=0;
- BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][0] = floatstr(strtok(templine,i));
- BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][1] = floatstr(strtok(templine,i));
- BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][2] = floatstr(strtok(templine,i));
- }
- fclose(f);
- BCurrentCheckpoints[b(playerid)]++; // # of next CP to be created
- format(ystring,sizeof(ystring),"La course \"%s\" a été chargé avec succès! (%d checkpoints)",tmp,BCurrentCheckpoints[b(playerid)]);
- SendClientMessage(playerid, COLOR_GREEN,ystring);
- return 1;
- }
- dcmd_saverace(playerid, params[])
- {
- #pragma unused params
- if(RaceBuilders[playerid] != 0)
- {
- if(BCurrentCheckpoints[b(playerid)] < 2)
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Vous devez avoir au moins 2 CP's");
- return 1;
- }
- ShowPlayerDialog(playerid, MENU3, DIALOG_STYLE_LIST, "Type de la course", "Course voiture\nCourse moto\nCourse bateau\nCourse Sandking\nCourse aerienne\nAutres","Sauvegarde", "Annuler");
- }
- else
- {
- SendClientMessage(playerid, COLOR_RED, "Vous ne construisez pas une course !");
- }
- return 1;
- }
- dcmd_loadrace(playerid, params[])
- {
- #pragma unused params
- if(RaceAdmin == 1 && IsNotAdmin(playerid)) return 1;
- Racemode = 0;
- format(ystring, sizeof(ystring), "Type de la course: %s\nNuméro de la course: %s\nLancer la course !",CType,CNumero);
- ShowPlayerDialog(playerid, MENU0, DIALOG_STYLE_LIST, "Options de la course:", ystring, "Executer", "Annuler");
- p1=0;
- p2=0;
- p3=0;
- p4=0;
- p5=0;
- p6=0;
- p7=0;
- p8=0;
- p9=0;
- p10=0;
- p11=0;
- p12=0;
- p13=0;
- p14=0;
- p15=0;
- p16=0;
- p17=0;
- p18=0;
- p19=0;
- p20=0;
- p21=0;
- p22=0;
- p23=0;
- p24=0;
- p25=0;
- p26=0;
- p27=0;
- p28=0;
- for(new i=0;i<MAX_PLAYERS;i++) {
- if(IsPlayerConnected(i)) {
- pplayer[i]=0;
- }
- }
- if(LCurrentCheckpoint<2 && Racemode == 2)
- {
- Racemode = 1; // Racemode 2 doesn't work well with only 2CPs, and mode 1 is just the same when playing with 2 CPs.
- } // Setting racemode 2 is prevented from racebuilder so this shouldn't happen anyways.
- return 1;
- }
- dcmd_deleterace(playerid, params[])
- {
- if((RaceAdmin == 1 || BuildAdmin == 1) && IsNotAdmin(playerid)) return 1;
- new filename[128], idx;
- filename = strtok(params,idx);
- if(!(strlen(filename)))
- {
- SendClientMessage(playerid, COLOR_WHITE, "USAGE: /deleterace [race]");
- return 1;
- }
- format(filename,sizeof(filename),"/fRace/%s.frace",filename);
- if(!fexist(filename))
- {
- format(ystring,sizeof(ystring), "La course n'existe pas.",filename);
- SendClientMessage(playerid, COLOR_RED, ystring);
- return 1;
- }
- fremove(filename);
- format(ystring,sizeof(ystring), "La course a été supprimé.",filename);
- SendClientMessage(playerid, COLOR_GREEN, ystring);
- return 1;
- }
- dcmd_join(playerid,params[])
- {
- #pragma unused params
- if(RaceBuilders[playerid] != 0)
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Vous êtes en train de construire une course !");
- return 1;
- }
- if(RaceParticipant[playerid]>0)
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Vous êtes dejà en course !");
- return 1;
- }
- if(RaceActive==0)
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Aucune course en cours.");
- return 1;
- }
- else if(RaceActive==1 && RaceStart==0)
- {
- Vehicule(playerid);
- if(RVehicule[playerid] == 1)return 1;
- if(PrizeMode >= 2 && GetPlayerMoney(playerid) < JoinFee)
- {
- format(ystring,sizeof(ystring),"Vous n'aviez pas l'argent nécessaire! (Prix d'entrée: %d$)",JoinFee);
- SendClientMessage(playerid, COLOR_YELLOW, ystring);
- return 1;
- }
- else if (PrizeMode >= 2)
- {
- new tempval;
- tempval=(-1)*JoinFee;
- GivePlayerMoney(playerid,tempval);
- Pot+=JoinFee;
- }
- CurrentCheckpoint[playerid]=0;
- SetRaceCheckpoint(playerid,0,1);
- RaceParticipant[playerid]=1;
- SendClientMessage(playerid, COLOR_GREEN, "Vous avez rejoins la course !");
- Participants++;
- TogglePlayerControllable(playerid,false);
- new Float:NormeAB;
- new Float:SinAngle;
- NormeAB = floatsqroot ((RaceCheckpoints[1][0]-RaceCheckpoints[0][0])*(RaceCheckpoints[1][0]-RaceCheckpoints[0][0]) + (RaceCheckpoints[1][1]-RaceCheckpoints[0][1])*(RaceCheckpoints[1][1]-RaceCheckpoints[0][1])); SinAngle = ((RaceCheckpoints[1][1]-RaceCheckpoints[0][1])/NormeAB);
- Angle = asin(SinAngle);
- if (RaceCheckpoints[0][0] > RaceCheckpoints[1][0])
- {
- Angle = 90.0 - Angle;
- }
- else
- {
- Angle = Angle - 90.0;
- }
- a=Angle+90;
- if(p1==0 && pplayer[playerid]==0) Pol1(playerid);
- if(p2==0 && pplayer[playerid]==0) Pol2(playerid);
- if(p3==0 && pplayer[playerid]==0) Pol3(playerid);
- if(p4==0 && pplayer[playerid]==0) Pol4(playerid);
- if(p5==0 && pplayer[playerid]==0) Pol5(playerid);
- if(p6==0 && pplayer[playerid]==0) Pol6(playerid);
- if(p7==0 && pplayer[playerid]==0) Pol7(playerid);
- if(p8==0 && pplayer[playerid]==0) Pol8(playerid);
- if(p9==0 && pplayer[playerid]==0) Pol9(playerid);
- if(p10==0 && pplayer[playerid]==0) Pol10(playerid);
- if(p11==0 && pplayer[playerid]==0) Pol11(playerid);
- if(p12==0 && pplayer[playerid]==0) Pol12(playerid);
- if(p13==0 && pplayer[playerid]==0) Pol13(playerid);
- if(p14==0 && pplayer[playerid]==0) Pol14(playerid);
- if(p15==0 && pplayer[playerid]==0) Pol15(playerid);
- if(p16==0 && pplayer[playerid]==0) Pol16(playerid);
- if(p17==0 && pplayer[playerid]==0) Pol17(playerid);
- if(p18==0 && pplayer[playerid]==0) Pol18(playerid);
- if(p19==0 && pplayer[playerid]==0) Pol19(playerid);
- if(p20==0 && pplayer[playerid]==0) Pol20(playerid);
- if(p21==0 && pplayer[playerid]==0) Pol21(playerid);
- if(p22==0 && pplayer[playerid]==0) Pol22(playerid);
- if(p23==0 && pplayer[playerid]==0) Pol23(playerid);
- if(p24==0 && pplayer[playerid]==0) Pol24(playerid);
- if(p25==0 && pplayer[playerid]==0) Pol25(playerid);
- if(p26==0 && pplayer[playerid]==0) Pol26(playerid);
- if(p27==0 && pplayer[playerid]==0) Pol27(playerid);
- if(p28==0 && pplayer[playerid]==0) Pol28(playerid);
- if(p28==1 && pplayer[playerid]==0) SendClientMessage(playerid,COLOR_RED,"La course a atteint son nombre maximum de concurrents, participation impossible.");
- return 1;
- }
- else if(RaceActive==1 && RaceStart==1)
- {
- SendClientMessage(playerid, COLOR_YELLOW, "La course a déjà commencé.");
- return 1;
- }
- return 1;
- }
- dcmd_leave(playerid,params[])
- {
- #pragma unused params
- if(RaceParticipant[playerid] > 0)
- {
- DisablePlayerRaceCheckpoint(playerid);
- RaceParticipant[playerid]=0;
- Participants--;
- SendClientMessage(playerid,COLOR_YELLOW,"Vous avez quitté la course.");
- if(pplayer[playerid]==1) p1=0;
- if(pplayer[playerid]==2) p2=0;
- if(pplayer[playerid]==3) p3=0;
- if(pplayer[playerid]==4) p4=0;
- if(pplayer[playerid]==5) p5=0;
- if(pplayer[playerid]==6) p6=0;
- if(pplayer[playerid]==7) p7=0;
- if(pplayer[playerid]==8) p8=0;
- if(pplayer[playerid]==9) p9=0;
- if(pplayer[playerid]==10) p10=0;
- if(pplayer[playerid]==11) p11=0;
- if(pplayer[playerid]==12) p12=0;
- if(pplayer[playerid]==13) p13=0;
- if(pplayer[playerid]==14) p14=0;
- if(pplayer[playerid]==15) p15=0;
- if(pplayer[playerid]==16) p16=0;
- if(pplayer[playerid]==17) p17=0;
- if(pplayer[playerid]==18) p18=0;
- if(pplayer[playerid]==19) p19=0;
- if(pplayer[playerid]==20) p20=0;
- if(pplayer[playerid]==21) p21=0;
- if(pplayer[playerid]==22) p22=0;
- if(pplayer[playerid]==23) p23=0;
- if(pplayer[playerid]==24) p24=0;
- if(pplayer[playerid]==25) p25=0;
- if(pplayer[playerid]==26) p26=0;
- if(pplayer[playerid]==27) p27=0;
- if(pplayer[playerid]==28) p28=0;
- pplayer[playerid]=0;
- if(PrizeMode >= 2 && RaceStart == 0)
- {
- GivePlayerMoney(playerid,JoinFee/2);
- Pot-=JoinFee/2;
- }
- }
- else SendClientMessage(playerid, COLOR_YELLOW, "Vous n'êtes pas en course !");
- return 1;
- }
- dcmd_endrace(playerid, params[])
- {
- #pragma unused params
- if(RaceAdmin == 1 && IsNotAdmin(playerid)) return 1;
- if(RaceActive==0)
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Il n'y a pas de course en cours !");
- return 1;
- }
- endrace();
- return 1;
- }
- public OnPlayerDisconnect(playerid,reason)
- {
- if(RaceParticipant[playerid]>=1)
- {
- if(Participants==1) //Last participant leaving, ending race.
- {
- endrace();
- }
- if(RaceParticipant[playerid] < 3 && RaceStart == 0 && !(RaceParticipant[playerid]==3 && RaceStart == 1))
- { //Doing readycheck since someone left, but not if they disconnected during countdown.
- ReadyRefresh();
- }
- Participants--;
- RaceParticipant[playerid]=0;
- DisablePlayerRaceCheckpoint(playerid);
- }
- if(RaceBuilders[playerid] != 0)
- {
- DisablePlayerRaceCheckpoint(playerid);
- for(new i;i<BCurrentCheckpoints[b(playerid)];i++)
- {
- BRaceCheckpoints[b(playerid)][i][0]=0.0;
- BRaceCheckpoints[b(playerid)][i][1]=0.0;
- BRaceCheckpoints[b(playerid)][i][2]=0.0;
- }
- BuilderSlots[b(playerid)] = MAX_PLAYERS+1;
- RaceBuilders[playerid] = 0;
- }
- return 1;
- }
- public OnPlayerDeath(playerid,killerid,reason)
- {
- if(RaceParticipant[playerid]>=1)
- {
- if(Participants==1) //Last participant leaving, ending race.
- {
- endrace();
- }
- if(RaceParticipant[playerid] < 3 && RaceStart == 0 && !(RaceParticipant[playerid]==3 && RaceStart == 1))
- { //Doing readycheck since someone left, but not if they disconnected during countdown.
- ReadyRefresh();
- }
- Participants--;
- RaceParticipant[playerid]=0;
- DisablePlayerRaceCheckpoint(playerid);
- }
- if(RaceBuilders[playerid] != 0)
- {
- DisablePlayerRaceCheckpoint(playerid);
- for(new i;i<BCurrentCheckpoints[b(playerid)];i++)
- {
- BRaceCheckpoints[b(playerid)][i][0]=0.0;
- BRaceCheckpoints[b(playerid)][i][1]=0.0;
- BRaceCheckpoints[b(playerid)][i][2]=0.0;
- }
- BuilderSlots[b(playerid)] = MAX_PLAYERS+1;
- RaceBuilders[playerid] = 0;
- }
- return 1;
- }
- strtok(const string[], &index)
- {
- new length = strlen(string);
- while ((index < length) && (string[index] <= ' '))
- {
- index++;
- }
- new offset = index;
- new result[20];
- while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
- {
- result[index - offset] = string[index];
- index++;
- }
- result[index - offset] = EOS;
- return result;
- }
- public LockRacers()
- {
- for(new i;i<MAX_PLAYERS;i++)
- {
- if(RaceParticipant[i] != 0)
- {
- TogglePlayerControllable(i,0);
- if(IsPlayerInAnyVehicle(i)) PlayerVehicles[i]=GetPlayerVehicleID(i);
- else PlayerVehicles[i]=0;
- }
- }
- }
- public UnlockRacers()
- {
- for(new i;i<MAX_PLAYERS;i++)
- {
- if(RaceParticipant[i]>0)
- {
- TogglePlayerControllable(i,1);
- if(PlayerVehicles[i] != 0)
- {
- PutPlayerInVehicle(i,PlayerVehicles[i],0);
- PlayerVehicles[i]=0;
- }
- }
- }
- }
- public countdown() {
- if(RaceStart == 0) // Locking players, setting the reward and
- {
- RaceStart=1;
- LockRacers();
- new tmpprize, OPot;
- OPot=Pot;
- if(PrizeMode == 1 || PrizeMode == 4)
- {
- if(Racemode == 0 || Racemode == 3) tmpprize = floatround(RLenght);
- else if(Racemode == 1) tmpprize = floatround(LLenght * Racelaps);
- else if(Racemode == 2) tmpprize = floatround(RLenght * 2 * Racelaps);
- }
- tmpprize *= DynaMP;
- if(PrizeMode == 0 || PrizeMode == 3) Pot += Prize;
- else if(PrizeMode == 1 || PrizeMode == 4) Pot += tmpprize;
- if(Participants == 1) Pot=OPot; // Only 1 racer, force reward to entrance fees.
- }
- if(cd>0)
- {
- if(cd==10) {
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if(RaceParticipant[i]>1)
- {
- format(ystring,sizeof(ystring),"~b~%s ~w~par ~r~%s",CRaceName,CBuilder);
- GameTextForPlayer(i,ystring,3000,5);
- }
- }
- }
- if(cd==7) {
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if(RaceParticipant[i]>1)
- {
- format(ystring,sizeof(ystring),"~w~Meilleur temps: ~g~%f~n~~w~par ~r~%s",CRaceName,CBuilder);
- GameTextForPlayer(i,ystring,3000,5);
- }
- }
- }
- if(cd<=5) {
- format(ystring, sizeof(ystring), "%d...",cd);
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if(RaceParticipant[i]>1)
- {
- RaceSound(i,1056);
- GameTextForPlayer(i,ystring,1000,3);
- }
- }
- }
- }
- else if(cd == 0)
- {
- format(ystring, sizeof(ystring), "~g~GO!",cd);
- KillTimer(Countdown);
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if(RaceParticipant[i]>1)
- {
- RaceSound(i,1057);
- GameTextForPlayer(i,ystring,3000,3);
- RaceParticipant[i]=4;
- CurrentLap[i]=1;
- if(Racemode == 3) SetRaceCheckpoint(i,LCurrentCheckpoint,LCurrentCheckpoint-1);
- else SetRaceCheckpoint(i,0,1);
- }
- }
- UnlockRacers();
- RaceTick=tickcount();
- }
- cd--;
- }
- public SetNextCheckpoint(playerid)
- {
- if(Racemode == 0) // Default Mode
- {
- CurrentCheckpoint[playerid]++;
- if(CurrentCheckpoint[playerid] == LCurrentCheckpoint)
- {
- SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],-1);
- RaceParticipant[playerid]=6;
- }
- else SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],CurrentCheckpoint[playerid]+1);
- }
- else if(Racemode == 1) // Ring Mode
- {
- CurrentCheckpoint[playerid]++;
- if(CurrentCheckpoint[playerid] == LCurrentCheckpoint+1 && CurrentLap[playerid] == Racelaps)
- {
- SetRaceCheckpoint(playerid,0,-1);
- RaceParticipant[playerid]=6;
- }
- else if (CurrentCheckpoint[playerid] == LCurrentCheckpoint+1 && CurrentLap[playerid] != Racelaps)
- {
- CurrentCheckpoint[playerid]=0;
- SetRaceCheckpoint(playerid,0,1);
- RaceParticipant[playerid]=5;
- }
- else if(CurrentCheckpoint[playerid] == 1 && RaceParticipant[playerid]==5)
- {
- ChangeLap(playerid);
- if(LCurrentCheckpoint==1)
- {
- SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],0);
- }
- else
- {
- SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],2);
- }
- RaceParticipant[playerid]=4;
- }
- else
- {
- if(LCurrentCheckpoint==1 || CurrentCheckpoint[playerid] == LCurrentCheckpoint) SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],0);
- else SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],CurrentCheckpoint[playerid]+1);
- }
- }
- else if(Racemode == 2) // Yoyo-mode
- {
- if(RaceParticipant[playerid]==4)
- {
- if(CurrentCheckpoint[playerid] == LCurrentCheckpoint) // @ Last CP, trigger last-1
- {
- RaceParticipant[playerid]=5;
- CurrentCheckpoint[playerid]=LCurrentCheckpoint-1;
- SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],CurrentCheckpoint[playerid]-1);
- }
- else if(CurrentCheckpoint[playerid] == LCurrentCheckpoint-1) // Second last CP, set next accordingly
- {
- CurrentCheckpoint[playerid]++;
- SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],CurrentCheckpoint[playerid]-1);
- }
- else
- {
- CurrentCheckpoint[playerid]++;
- SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],CurrentCheckpoint[playerid]+1);
- }
- }
- else if(RaceParticipant[playerid]==5)
- {
- if(CurrentCheckpoint[playerid] == 1 && CurrentLap[playerid] == Racelaps) //Set the finish line
- {
- SetRaceCheckpoint(playerid,0,-1);
- RaceParticipant[playerid]=6;
- }
- else if(CurrentCheckpoint[playerid] == 0) //At finish line, change lap.
- {
- ChangeLap(playerid);
- if(LCurrentCheckpoint==1)
- {
- SetRaceCheckpoint(playerid,1,0);
- }
- else
- {
- SetRaceCheckpoint(playerid,1,2);
- }
- RaceParticipant[playerid]=4;
- }
- else if(CurrentCheckpoint[playerid] == 1)
- {
- CurrentCheckpoint[playerid]--;
- SetRaceCheckpoint(playerid,0,1);
- }
- else
- {
- CurrentCheckpoint[playerid]--;
- SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],CurrentCheckpoint[playerid]-1);
- }
- }
- }
- else if(Racemode == 3) // Mirror Mode
- {
- CurrentCheckpoint[playerid]--;
- if(CurrentCheckpoint[playerid] == 0)
- {
- SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],-1);
- RaceParticipant[playerid]=6;
- }
- else
- {
- SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],CurrentCheckpoint[playerid]-1);
- }
- }
- }
- public SetRaceCheckpoint(playerid,target,next)
- {
- if(next == -1 && Airrace == 0) SetPlayerRaceCheckpoint(playerid,1,RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2],0.0,0.0,0.0,CPsize);
- else if(next == 1 && Airrace == 0) SetPlayerRaceCheckpoint(playerid,1,RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2],0.0,0.0,0.0,10000.00);
- else if(next == -1 && Airrace == 1) SetPlayerRaceCheckpoint(playerid,4,RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2],0.0,0.0,0.0,CPsize);
- else if(Airrace == 1) SetPlayerRaceCheckpoint(playerid,3,RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2],RaceCheckpoints[next][0],
- RaceCheckpoints[next][1],RaceCheckpoints[next][2],CPsize);
- else SetPlayerRaceCheckpoint(playerid,0,RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2],RaceCheckpoints[next][0],RaceCheckpoints[next][1],
- RaceCheckpoints[next][2],CPsize);
- }
- public SetBRaceCheckpoint(playerid,target,next)
- {
- new ar = BAirrace[b(playerid)];
- if(next == -1 && ar == 0) SetPlayerRaceCheckpoint(playerid,1,BRaceCheckpoints[b(playerid)][target][0],BRaceCheckpoints[b(playerid)][target][1],
- BRaceCheckpoints[b(playerid)][target][2],0.0,0.0,0.0,BCPsize[b(playerid)]);
- else if(next == -1 && ar == 1) SetPlayerRaceCheckpoint(playerid,4,BRaceCheckpoints[b(playerid)][target][0],
- BRaceCheckpoints[b(playerid)][target][1],BRaceCheckpoints[b(playerid)][target][2],0.0,0.0,0.0,
- BCPsize[b(playerid)]);
- else if(ar == 1) SetPlayerRaceCheckpoint(playerid,3,BRaceCheckpoints[b(playerid)][target][0],BRaceCheckpoints[b(playerid)][target][1],BRaceCheckpoints[b(playerid)][target][2],
- BRaceCheckpoints[b(playerid)][next][0],BRaceCheckpoints[b(playerid)][next][1],BRaceCheckpoints[b(playerid)][next][2],BCPsize[b(playerid)]);
- else SetPlayerRaceCheckpoint(playerid,0,BRaceCheckpoints[b(playerid)][target][0],BRaceCheckpoints[b(playerid)][target][1],BRaceCheckpoints[b(playerid)][target][2],
- BRaceCheckpoints[b(playerid)][next][0],BRaceCheckpoints[b(playerid)][next][1],BRaceCheckpoints[b(playerid)][next][2],BCPsize[b(playerid)]);
- }
- public GetLapTick(playerid)
- {
- new tick, lap;
- tick=tickcount();
- if(CurrentLap[playerid]==1)
- {
- lap=tick-RaceTick;
- LastLapTick[playerid]=tick;
- }
- else
- {
- lap=tick-LastLapTick[playerid];
- LastLapTick[playerid]=tick;
- }
- return lap;
- }
- public GetRaceTick(playerid)
- {
- new tick, race;
- tick=tickcount();
- race=tick-RaceTick;
- return race;
- }
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- if(RaceParticipant[playerid]>=1) // See if the player is participating in a race, allows race builders to do their stuff in peace.
- {
- if(RaceParticipant[playerid] == 6) // Player reaches the checkered flag.
- {
- new name[MAX_PLAYER_NAME], LapTime, RaceTime, RaceString[64];
- LapTime=GetLapTick(playerid);
- RaceTime=GetRaceTick(playerid);
- RaceString=BeHuman(RaceTime);
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- RaceParticipant[playerid]=0;
- RaceSound(playerid,1139);
- format(ystring,sizeof(ystring),"%s a fini la course en %d position en: %s.",name,Ranking,RaceString);
- if (Ranking < 4) SendClientMessageToAll(COLOR_GREEN,ystring);
- else SendClientMessage(playerid,COLOR_GREEN,ystring);
- if(Racemode == ORacemode && ORacelaps == Racelaps)
- {
- new LapString[64], laprank, racerank;
- LapString=BeHuman(LapTime);
- RaceString=BeHuman(RaceTime);
- format(ystring,sizeof(ystring),"~w~Temps: %s",RaceString);
- if(ORacemode!=0) format(ystring,sizeof(ystring),"%s~n~Laptime: %s",ystring,LapString);
- laprank=CheckBestLap(playerid,LapTime);
- if(laprank == 1)
- {
- format(ystring,sizeof(ystring),"%s~n~~y~LAP RECORD!",ystring);
- }
- racerank=CheckBestRace(playerid,RaceTime);
- if(racerank == 1)
- {
- format(ystring,sizeof(ystring),"%s~n~~y~RECORD DE LA COURSE!",ystring);
- }
- GameTextForPlayer(playerid,ystring,13000,3);
- }
- Ranking++;
- Participants--;
- DisablePlayerRaceCheckpoint(playerid);
- if(Participants == 0)
- {
- endrace();
- }
- }
- else if (RaceStart == 0 && RaceParticipant[playerid]==1) // Player arrives to the start CP for 1st time
- {
- //SendClientMessage(playerid,COLOR_YELLOW,"Type /ready when you are ready to start.");
- SendClientMessage(playerid,COLOR_YELLOW,"NOTE: Vos contrôles sont bloqués, attendez le départ.");
- RaceParticipant[playerid]=2;
- }
- else if (RaceStart==1) // Otherwise switch to the next race CP.
- {
- SetNextCheckpoint(playerid);
- RaceSound(playerid,1138);
- SaveCP(playerid);
- gPlayerProgress[playerid]++;
- RaceCheckpoints[gPlayerProgress[playerid]][3]++;
- gRacePosition[playerid]=floatround(RaceCheckpoints[gPlayerProgress[playerid]][3],floatround_floor);
- format(ystring,sizeof(ystring),"~n~~n~~n~~n~~n~~n~~r~Pos :~w~ %d / %d ~n~~g~Cp : ~w~%d / %d ~n~ ~b~Temps :~n~ ~w~ %s ~n~",gRacePosition[playerid], Participants, gPlayerProgress[playerid]-1, LCurrentCheckpoint,BeHuman(GetRaceTick(playerid)));
- GameTextForPlayer(playerid,ystring,2000,3);
- }
- }
- return 1;
- }
- public endrace()
- {
- SaveScores(); //If the race had already started, and mode & laps are as originally, save the lapscores and racescores.
- for(new i=0;i<LCurrentCheckpoint;i++)
- {
- RaceCheckpoints[i][0]=0.0;
- RaceCheckpoints[i][1]=0.0;
- RaceCheckpoints[i][2]=0.0;
- }
- LCurrentCheckpoint=0;
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- LastLapTick[i]=0;
- DisablePlayerRaceCheckpoint(i);
- if(RaceParticipant[i]==3) //Player was still /ready-locked, unlocking.
- {
- TogglePlayerControllable(i,1);
- if(PlayerVehicles[i] != 0)
- {
- PutPlayerInVehicle(i,PlayerVehicles[i],0);
- PlayerVehicles[i]=0;
- }
- }
- RaceParticipant[i]=0;
- gPlayerProgress[i]=0;
- }
- RaceActive=0;
- RaceStart=0;
- Participants=0;
- Pot = 0;
- format(ystring,sizeof(ystring),"%s par %s - Meilleurs temps:",CRaceName,CBuilder);//BUG
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if(IsPlayerConnected(i))
- {
- SendClientMessage(i,COLOR_YELLOW,ystring);
- }
- }
- for(new i;i<5;i++)
- {
- if(TopRacerTimes[i] == 0)
- {
- format(ystring,sizeof(ystring),"%d. Inconnu",i+1);
- }
- else
- {
- format(ystring,sizeof(ystring),"%d. %s - %s",i+1,BeHuman(TopRacerTimes[i]),TopRacers[i]);//PB
- }
- for(new p=0;p<MAX_PLAYERS;p++)
- {
- if(IsPlayerConnected(p))
- {
- SendClientMessage(p,COLOR_YELLOW,ystring);
- }
- }
- }
- SendClientMessageToAll(COLOR_YELLOW, "La course est terminée.");
- for(new i=0;i<MAX_PLAYERS;i++) {
- if(IsPlayerConnected(i)) {
- if(pplayer[i]==1) p1=0;
- if(pplayer[i]==2) p2=0;
- if(pplayer[i]==3) p3=0;
- if(pplayer[i]==4) p4=0;
- if(pplayer[i]==5) p5=0;
- if(pplayer[i]==6) p6=0;
- if(pplayer[i]==7) p7=0;
- if(pplayer[i]==8) p8=0;
- if(pplayer[i]==9) p9=0;
- if(pplayer[i]==10) p10=0;
- if(pplayer[i]==11) p11=0;
- if(pplayer[i]==12) p12=0;
- if(pplayer[i]==13) p13=0;
- if(pplayer[i]==14) p14=0;
- if(pplayer[i]==15) p15=0;
- if(pplayer[i]==16) p16=0;
- if(pplayer[i]==17) p17=0;
- if(pplayer[i]==18) p18=0;
- if(pplayer[i]==19) p19=0;
- if(pplayer[i]==20) p20=0;
- if(pplayer[i]==21) p21=0;
- if(pplayer[i]==22) p22=0;
- if(pplayer[i]==23) p23=0;
- if(pplayer[i]==24) p24=0;
- if(pplayer[i]==25) p25=0;
- if(pplayer[i]==26) p26=0;
- if(pplayer[i]==27) p27=0;
- if(pplayer[i]==28) p28=0;
- pplayer[i]=0;
- }
- }
- }
- public BActiveCP(playerid,sele)
- {
- if(BCurrentCheckpoints[b(playerid)]-1 == sele) SetBRaceCheckpoint(playerid,sele,-1);
- else SetBRaceCheckpoint(playerid,sele,sele+1);
- }
- public RaceSound(playerid,sound)
- {
- new Float:x,Float:y,Float:z;
- GetPlayerPos(playerid,x,y,z);
- PlayerPlaySound(playerid,sound,x,y,z);
- }
- public ReadyRefresh()
- {
- SendClientMessageToAll(COLOR_GREEN,"La course est lancé, bonne chance au concurrent !");
- cd=5;
- Countdown = SetTimer("countdown",1000,1);
- }
- public mscountdown()
- {
- if(RaceStart == 1 || MajStart == 0)
- {
- MajStart=0;
- KillTimer(MajStartTimer);
- }
- else
- {
- mscd-=10;
- if(mscd <= 0)
- {
- for(new i;i<MAX_PLAYERS;i++)
- {
- if(RaceParticipant[i] != 3 && RaceParticipant[i] != 0)
- {
- GameTextForPlayer(i,"~r~You didn't make it in time!",6000,3);
- DisablePlayerRaceCheckpoint(i);
- RaceParticipant[i]=0;
- Participants--;
- }
- else if (RaceParticipant[i]!=0) SendClientMessage(i,COLOR_GREEN,"Pre-race countdown done, the race beings!");
- }
- KillTimer(MajStartTimer);
- cd=5;
- Countdown = SetTimer("countdown",1000,1);
- }
- else
- {
- new hurry_string[64];
- format(ystring,sizeof(ystring),"~y~Race starting in ~w~%d~y~ seconds!",mscd);
- format(hurry_string,sizeof(hurry_string),"%s~n~~r~HURRY UP AND /READY",ystring);
- for(new i;i<MAX_PLAYERS;i++)
- {
- if(RaceParticipant[i] < 3 && mscd < 31) GameTextForPlayer(i,hurry_string,6000,3);
- else if(RaceParticipant[i] > 0) GameTextForPlayer(i,ystring,6000,3);
- }
- }
- }
- }
- public CheckBestLap(playerid,laptime)
- {
- if(TopLapTimes[4]<laptime && TopLapTimes[4] != 0 || Racemode == 0)
- {
- return 0; // If the laptime is more than the previous 5th on the top list, skip to end
- } // Or the race is gamemode 0 where laps don't really apply
- for(new i;i<5;i++)
- {
- if(TopLapTimes[i] == 0)
- {
- new playername[MAX_PLAYER_NAME];
- GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
- TopLappers[i]=playername;
- TopLapTimes[i]=laptime;
- ScoreChange=1;
- return i+1;
- }
- else if(TopLapTimes[i] > laptime)
- {
- for(new j=4;j>=i;j--)
- {
- TopLapTimes[j+1]=TopLapTimes[j];
- TopLappers[j+1]=TopLappers[j];
- }
- new playername[MAX_PLAYER_NAME];
- GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
- TopLapTimes[i]=laptime;
- TopLappers[i]=playername;
- ScoreChange=1;
- return i+1;
- }
- }
- return -1; //Shouldn't get here.
- }
- public CheckBestRace(playerid,racetime)
- {
- if(TopRacerTimes[4]<racetime && TopRacerTimes[4] != 0) return 0;
- for(new i;i<5;i++)
- {
- if(TopRacerTimes[i] == 0)
- {
- new playername[MAX_PLAYER_NAME];
- GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
- TopRacers[i]=playername;
- TopRacerTimes[i]=racetime;
- ScoreChange=1;
- return i+1;
- }
- else if(TopRacerTimes[i] > racetime)
- {
- for(new j=4;j>=i;j--)
- {
- TopRacerTimes[j+1]=TopRacerTimes[j];
- TopRacers[j+1]=TopRacers[j];
- }
- new playername[MAX_PLAYER_NAME];
- GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
- TopRacerTimes[i]=racetime;
- TopRacers[i]=playername;
- ScoreChange=1;
- return i+1;
- }
- }
- return -1; //Shouldn't get here.
- }
- public SaveScores()
- {
- if(ScoreChange == 1)
- {
- fremove(CFile);
- new File:f,Float:x,Float:y,Float:z, templine[512];
- f = fopen(CFile,io_write);
- format(templine,sizeof(templine),"YRACE %d %s %d %d %d %f\n", RACEFILE_VERSION, CBuilder, ORacemode, ORacelaps, OAirrace, OCPsize);
- fwrite(f,templine);
- format(templine,sizeof(templine),"%s %d %s %d %s %d %s %d %s %d\n",
- TopRacers[0],TopRacerTimes[0],TopRacers[1], TopRacerTimes[1], TopRacers[2],TopRacerTimes[2],
- TopRacers[3],TopRacerTimes[3],TopRacers[4], TopRacerTimes[4]);
- fwrite(f,templine);
- format(templine,sizeof(templine),"%s %d %s %d %s %d %s %d %s %d\n",
- TopLappers[0],TopLapTimes[0],TopLappers[1], TopLapTimes[1], TopLappers[2],TopLapTimes[2],
- TopLappers[3],TopLapTimes[3],TopLappers[4], TopLapTimes[4]);
- fwrite(f,templine);
- for(new i = 0; i < LCurrentCheckpoint+1;i++)
- {
- x=RaceCheckpoints[i][0];
- y=RaceCheckpoints[i][1];
- z=RaceCheckpoints[i][2];
- format(templine,sizeof(templine),"%f %f %f\n",x,y,z);
- fwrite(f,templine);
- }
- fclose(f);
- }
- ScoreChange=0;
- }
- public ChangeLap(playerid)
- {
- new LapTime, TimeString[64], checklap;
- LapTime=GetLapTick(playerid);
- TimeString=BeHuman(LapTime);
- format(ystring,sizeof(ystring),"~w~Lap %d/%d - time: %s", CurrentLap[playerid], Racelaps, TimeString);
- if(Racemode == ORacemode && ORacelaps == Racelaps)
- {
- checklap=CheckBestLap(playerid,LapTime);
- if(checklap==1) format(ystring,sizeof(ystring),"%s~n~~y~LAP RECORD!",ystring);
- }
- CurrentLap[playerid]++;
- if(CurrentLap[playerid] == Racelaps) format(ystring,sizeof(ystring),"%s~n~~g~Final lap!",ystring);
- GameTextForPlayer(playerid,ystring,6000,3);
- }
- BeHuman(ticks)
- {
- new HumanTime[64], minutes, seconds, secstring[64], minstring[64];
- minutes=ticks/60000;
- ticks=ticks-(minutes*60000);
- seconds=ticks/1000;
- ticks=ticks-(seconds*1000);
- if(minutes <10) format(minstring,sizeof(minstring),"0%d",minutes);
- if(seconds <10) format(secstring,sizeof(secstring),"0%d",seconds);
- else format(secstring,sizeof(secstring),"%d",seconds);
- format(HumanTime,sizeof(HumanTime),"%d:%s",minutes,secstring);
- format(HumanTime,sizeof(HumanTime),"%s",HumanTime);
- return HumanTime;
- }
- public LoadTimes(playerid,timemode,tmp[])
- {
- new temprace[67], idx;
- format(temprace,sizeof(temprace),"/fRace/%s.frace",tmp);
- if(strlen(tmp))
- {
- if(!fexist(temprace))
- {
- format(ystring,sizeof(ystring),"Race \'%s\' doesn't exist!",tmp);
- SendClientMessage(playerid,COLOR_YELLOW,ystring);
- return 1;
- }
- else
- {
- new File:f, templine[256], TBuilder[MAX_PLAYER_NAME], TempLapper[MAX_PLAYER_NAME], TempLap;
- idx=0;
- f = fopen(temprace, io_read);
- fread(f,templine,sizeof(templine)); // Read header-line
- if(templine[0] == 'Y') //Checking if the racefile is v0.2+
- {
- new fileversion;
- strtok(templine,idx); // read off YRACE
- fileversion = strval(strtok(templine,idx)); // read off the file version
- if(fileversion > RACEFILE_VERSION) // Check if the race is made with a newer version of the racefile format
- {
- format(ystring,sizeof(ystring),"Race \'%s\' is created with a newer version of YRACE, unable to load.",tmp);
- SendClientMessage(playerid,COLOR_RED,ystring);
- return 1;
- }
- TBuilder=strtok(templine,idx); // read off RACEBUILDER
- fread(f,templine,sizeof(templine)); // read off best race times
- if(timemode ==1) fread(f,templine,sizeof(templine)); // read off best lap times
- idx=0;
- if(timemode == 0) format(ystring,sizeof(ystring),"%s by %s - Meilleurs temps:",tmp,TBuilder);
- else if(timemode == 1) format(ystring,sizeof(ystring),"%s by %s - Best laps:",tmp,TBuilder);
- else return 1;
- SendClientMessage(playerid,COLOR_GREEN,ystring);
- for(new i=0;i<5;i++)
- {
- TempLapper=strtok(templine,idx);
- TempLap=strval(strtok(templine,idx));
- if(TempLap == 0)
- {
- format(ystring,sizeof(ystring),"%d. None yet",i+1);
- i=6;
- }
- else format(ystring,sizeof(ystring),"%d. %s - %s",i+1,BeHuman(TempLap),TempLapper);
- SendClientMessage(playerid,COLOR_GREEN,ystring);
- }
- return 1;
- }
- else
- {
- format(ystring,sizeof(ystring),"Race \'%s\' doesn't contain any time data.",tmp);
- SendClientMessage(playerid,COLOR_GREEN,ystring);
- return 1;
- }
- }
- }
- return 0;
- }
- public IsNotAdmin(playerid)
- {
- if (!IsPlayerAdmin(playerid))
- {
- SendClientMessage(playerid, COLOR_RED, "Tu dois être admin pour avoir droit a cet commande!");
- return 1;
- }
- return 0;
- }
- public GetBuilderSlot(playerid)
- {
- for(new i;i < MAX_BUILDERS; i++)
- {
- if(!(BuilderSlots[i] < MAX_PLAYERS+1))
- {
- BuilderSlots[i] = playerid;
- RaceBuilders[playerid] = i+1;
- return i+1;
- }
- }
- return 0;
- }
- public b(playerid) return RaceBuilders[playerid]-1;
- public Float:Distance(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2)
- {
- new Float:temp=floatsqroot((x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) + (z1-z2) * (z1-z2));
- if(temp < 0) temp=temp*(-1);
- return temp;
- }
- public clearrace(playerid)
- {
- for(new i=0;i<BCurrentCheckpoints[b(playerid)];i++)
- {
- BRaceCheckpoints[b(playerid)][i][0]=0.0;
- BRaceCheckpoints[b(playerid)][i][1]=0.0;
- BRaceCheckpoints[b(playerid)][i][2]=0.0;
- }
- BCurrentCheckpoints[b(playerid)]=0;
- DisablePlayerRaceCheckpoint(playerid);
- SendClientMessage(playerid, COLOR_GREEN, "La course est supprimée !");
- BuilderSlots[b(playerid)] = MAX_PLAYERS+1;
- RaceBuilders[playerid]=0;
- }
- public startrace()
- {
- if(GCourse == 1)
- {
- SendClientMessageToAll(COLOR_GREEN,"Une course en voitures va commencer, tapez /join pour la rejoindre !");
- esplarg = 3.5;
- esphaut = 10;
- CPsize = 14;
- }
- else if(GCourse == 2)
- {
- SendClientMessageToAll(COLOR_GREEN,"Une course en motos va commencer, tapez /join pour la rejoindre !");
- esplarg = 3;
- esphaut = 5;
- CPsize = 7;
- }
- else if(GCourse == 3)
- {
- SendClientMessageToAll(COLOR_GREEN,"Une course en bateaux va commencer, tapez /join pour la rejoindre !");
- esplarg = 6;
- esphaut = 15;
- CPsize = 30;
- }
- else if(GCourse == 4)
- {
- SendClientMessageToAll(COLOR_GREEN,"Une course en sandking va commencer, tapez /join pour la rejoindre !");
- esplarg = 3.5;
- esphaut = 10;
- CPsize = 14;
- }
- else if(GCourse == 5)
- {
- SendClientMessageToAll(COLOR_GREEN,"Une course aerienne va commencer, tapez /join pour la rejoindre !");
- esplarg = 15;
- esphaut = 20;
- Airrace = 1;
- CPsize = 15;
- }
- else if(GCourse > 5)
- {
- SendClientMessageToAll(COLOR_GREEN,"Une course va commencer, tapez /join pour la rejoindre !");
- esplarg = 5;
- esphaut = 10;
- CPsize = 14;
- }
- RaceStart=0;
- RaceActive=1;
- ScoreChange=0;
- Ranking=1;
- }
- public LoadRace(tmp[])
- {
- new race_name[32],templine[512];
- format(CRaceName,sizeof(CRaceName), "%s",tmp);
- format(race_name,sizeof(race_name), "/fRace/%s.frace",tmp);
- if(!fexist(race_name)) return -1; // File doesn't exist
- CFile=race_name;
- LCurrentCheckpoint=-1; RLenght=0; RLenght=0;
- new File:f, i;
- f = fopen(race_name, io_read);
- fread(f,templine,sizeof(templine));
- if(templine[0] == 'Y') //Checking if the racefile is v0.2+
- {
- new fileversion;
- strtok(templine,i); // read off YRACE
- fileversion = strval(strtok(templine,i)); // read off the file version
- if(fileversion > RACEFILE_VERSION) return -2; // Check if the race is made with a newer version of the racefile format
- CBuilder=strtok(templine,i); // read off RACEBUILDER
- ORacemode = strval(strtok(templine,i)); // read off racemode
- ORacelaps = strval(strtok(templine,i)); // read off amount of laps
- if(fileversion > 1)
- {
- Airrace = strval(strtok(templine,i)); // read off airrace
- CPsize = floatstr(strtok(templine,i)); // read off CP size
- }
- else // v1 file format, set to default
- {
- Airrace = 0;
- CPsize = 8.0;
- }
- OAirrace = Airrace;
- OCPsize = CPsize;
- Racemode=ORacemode; Racelaps=ORacelaps; //Allows changing the modes, but disables highscores if they've been changed.
- fread(f,templine,sizeof(templine)); // read off best race times
- i=0;
- for(new j=0;j<5;j++)
- {
- TopRacers[j]=strtok(templine,i);
- TopRacerTimes[j]=strval(strtok(templine,i));
- }
- fread(f,templine,sizeof(templine)); // read off best lap times
- i=0;
- for(new j=0;j<5;j++)
- {
- TopLappers[j]=strtok(templine,i);
- TopLapTimes[j]=strval(strtok(templine,i));
- }
- }
- else //Otherwise add the lines as checkpoints, the file is made with v0.1 (or older) version of the script.
- {
- LCurrentCheckpoint++;
- RaceCheckpoints[LCurrentCheckpoint][0] = floatstr(strtok(templine,i));
- RaceCheckpoints[LCurrentCheckpoint][1] = floatstr(strtok(templine,i));
- RaceCheckpoints[LCurrentCheckpoint][2] = floatstr(strtok(templine,i));
- Racemode=0; ORacemode=0; Racelaps=0; ORacelaps=0; //Enables converting old files to new versions
- CPsize = 8.0; Airrace = 0; // v2 additions
- OCPsize = CPsize; OAirrace = Airrace; // v2 additions
- CBuilder="UNKNOWN";
- for(new j;j<5;j++)
- {
- TopLappers[j]="A"; TopLapTimes[j]=0; TopRacers[j]="A"; TopRacerTimes[j]=0;
- }
- }
- while(fread(f,templine,sizeof(templine),false))
- {
- LCurrentCheckpoint++;
- i=0;
- RaceCheckpoints[LCurrentCheckpoint][0] = floatstr(strtok(templine,i));
- RaceCheckpoints[LCurrentCheckpoint][1] = floatstr(strtok(templine,i));
- RaceCheckpoints[LCurrentCheckpoint][2] = floatstr(strtok(templine,i));
- if(LCurrentCheckpoint >= 1)
- {
- RLenght+=Distance(RaceCheckpoints[LCurrentCheckpoint][0],RaceCheckpoints[LCurrentCheckpoint][1],
- RaceCheckpoints[LCurrentCheckpoint][2],RaceCheckpoints[LCurrentCheckpoint-1][0],
- RaceCheckpoints[LCurrentCheckpoint-1][1],RaceCheckpoints[LCurrentCheckpoint-1][2]);
- }
- }
- LLenght = RLenght + Distance(RaceCheckpoints[LCurrentCheckpoint][0],RaceCheckpoints[LCurrentCheckpoint][1],
- RaceCheckpoints[LCurrentCheckpoint][2],RaceCheckpoints[0][0],RaceCheckpoints[0][1],
- RaceCheckpoints[0][2]);
- fclose(f);
- return 1;
- }
- public RaceRotation()
- {
- if(!fexist("yrace.rr"))
- {
- printf("ERROR in YRACE's Race Rotation (yrace.rr): yrace.rr doesn't exist!");
- return -1;
- }
- if(RRotation == -1)
- {
- KillTimer(RotationTimer);
- return -1; // RRotation has been disabled
- }
- if(Participants > 0) return 1; // A race is still active.
- new File:f, templine[32], rotfile[]="yrace.rr", rraces=-1, rracenames[32][32], idx, fback;
- f = fopen(rotfile, io_read);
- while(fread(f,templine,sizeof(templine),false))
- {
- idx = 0;
- rraces++;
- rracenames[rraces]=strtok(templine,idx);
- }
- fclose(f);
- RRotation++;
- if(RRotation > rraces) RRotation = 0;
- fback = LoadRace(rracenames[RRotation]);
- if(fback == -1) printf("ERROR in YRACE's Race Rotation (yrace.rr): Race \'%s\' doesn't exist!",rracenames[RRotation]);
- else if (fback == -2) printf("ERROR in YRACE's Race Rotation (yrace.rr): Race \'%s\' is created with a newer version of YRACE",rracenames[RRotation]);
- else startrace();
- return 1;
- }
- public Pol1(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p1=1;
- pplayer[playerid]=1;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol2(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] += ((esplarg*1) * floatsin(-a, degrees));
- yr[playerid] += ((esplarg*1) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p2=1;
- pplayer[playerid]=2;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol3(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esplarg*1) * floatsin(-a, degrees));
- yr[playerid] -= ((esplarg*1) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p3=1;
- pplayer[playerid]=3;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol4(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] += ((esplarg*2) * floatsin(-a, degrees));
- yr[playerid] += ((esplarg*2) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p4=1;
- pplayer[playerid]=4;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol5(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esplarg*2) * floatsin(-a, degrees));
- yr[playerid] -= ((esplarg*2) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p5=1;
- pplayer[playerid]=5;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol6(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] += ((esplarg*3) * floatsin(-a, degrees));
- yr[playerid] += ((esplarg*3) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p6=1;
- pplayer[playerid]=6;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol7(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esplarg*3) * floatsin(-a, degrees));
- yr[playerid] -= ((esplarg*3) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p7=1;
- pplayer[playerid]=7;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol8(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*1) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*1) * floatcos(-Angle, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p8=1;
- pplayer[playerid]=8;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol9(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*1) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*1) * floatcos(-Angle, degrees));
- xr[playerid] += ((esplarg*1) * floatsin(-a, degrees));
- yr[playerid] += ((esplarg*1) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p9=1;
- pplayer[playerid]=9;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol10(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*1) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*1) * floatcos(-Angle, degrees));
- xr[playerid] -= ((esplarg*1) * floatsin(-a, degrees));
- yr[playerid] -= ((esplarg*1) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p10=1;
- pplayer[playerid]=10;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol11(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*1) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*1) * floatcos(-Angle, degrees));
- xr[playerid] += ((esplarg*2) * floatsin(-a, degrees));
- yr[playerid] += ((esplarg*2) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p11=1;
- pplayer[playerid]=11;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol12(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*1) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*1) * floatcos(-Angle, degrees));
- xr[playerid] -= ((esplarg*2) * floatsin(-a, degrees));
- yr[playerid] -= ((esplarg*2) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p12=1;
- pplayer[playerid]=12;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol13(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*1) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*1) * floatcos(-Angle, degrees));
- xr[playerid] += ((esplarg*3) * floatsin(-a, degrees));
- yr[playerid] += ((esplarg*3) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p13=1;
- pplayer[playerid]=13;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol14(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*1) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*1) * floatcos(-Angle, degrees));
- xr[playerid] -= ((esplarg*3) * floatsin(-a, degrees));
- yr[playerid] -= ((esplarg*3) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p14=1;
- pplayer[playerid]=14;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol15(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*2) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*2) * floatcos(-Angle, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p15=1;
- pplayer[playerid]=15;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol16(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*2) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*2) * floatcos(-Angle, degrees));
- xr[playerid] += ((esplarg*1) * floatsin(-a, degrees));
- yr[playerid] += ((esplarg*1) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p16=1;
- pplayer[playerid]=16;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol17(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*2) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*2) * floatcos(-Angle, degrees));
- xr[playerid] -= ((esplarg*1) * floatsin(-a, degrees));
- yr[playerid] -= ((esplarg*1) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p17=1;
- pplayer[playerid]=17;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol18(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*2) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*2) * floatcos(-Angle, degrees));
- xr[playerid] += ((esplarg*2) * floatsin(-a, degrees));
- yr[playerid] += ((esplarg*2) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p18=1;
- pplayer[playerid]=18;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol19(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*2) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*2) * floatcos(-Angle, degrees));
- xr[playerid] -= ((esplarg*2) * floatsin(-a, degrees));
- yr[playerid] -= ((esplarg*2) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p19=1;
- pplayer[playerid]=19;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol20(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*2) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*2) * floatcos(-Angle, degrees));
- xr[playerid] += ((esplarg*3) * floatsin(-a, degrees));
- yr[playerid] += ((esplarg*3) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p20=1;
- pplayer[playerid]=20;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol21(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*2) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*2) * floatcos(-Angle, degrees));
- xr[playerid] -= ((esplarg*3) * floatsin(-a, degrees));
- yr[playerid] -= ((esplarg*3) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p21=1;
- pplayer[playerid]=21;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol22(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*3) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*3) * floatcos(-Angle, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p22=1;
- pplayer[playerid]=22;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol23(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*3) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*3) * floatcos(-Angle, degrees));
- xr[playerid] += ((esplarg*1) * floatsin(-a, degrees));
- yr[playerid] += ((esplarg*1) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p23=1;
- pplayer[playerid]=23;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol24(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*3) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*3) * floatcos(-Angle, degrees));
- xr[playerid] -= ((esplarg*1) * floatsin(-a, degrees));
- yr[playerid] -= ((esplarg*1) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p24=1;
- pplayer[playerid]=24;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol25(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*3) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*3) * floatcos(-Angle, degrees));
- xr[playerid] += ((esplarg*2) * floatsin(-a, degrees));
- yr[playerid] += ((esplarg*2) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p25=1;
- pplayer[playerid]=25;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol26(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*3) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*3) * floatcos(-Angle, degrees));
- xr[playerid] -= ((esplarg*2) * floatsin(-a, degrees));
- yr[playerid] -= ((esplarg*2) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p26=1;
- pplayer[playerid]=26;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol27(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*3) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*3) * floatcos(-Angle, degrees));
- xr[playerid] += ((esplarg*3) * floatsin(-a, degrees));
- yr[playerid] += ((esplarg*3) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p27=1;
- pplayer[playerid]=27;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public Pol28(playerid)
- {
- xr[playerid]=RaceCheckpoints[0][0];
- yr[playerid]=RaceCheckpoints[0][1];
- zr[playerid]=RaceCheckpoints[0][2]+5;
- xr[playerid] -= ((esphaut*3) * floatsin(-Angle, degrees));
- yr[playerid] -= ((esphaut*3) * floatcos(-Angle, degrees));
- xr[playerid] -= ((esplarg*3) * floatsin(-a, degrees));
- yr[playerid] -= ((esplarg*3) * floatcos(-a, degrees));
- if(IsPlayerInAnyVehicle(playerid)) {
- new vehicleid=GetPlayerVehicleID(playerid);
- SetVehiclePos(vehicleid,xr[playerid],yr[playerid],zr[playerid]);
- SetVehicleZAngle(vehicleid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- else {
- SetPlayerPos(playerid,zr[playerid],yr[playerid],zr[playerid]);
- SetPlayerFacingAngle(playerid,Angle);
- SetCameraBehindPlayer(playerid);
- }
- p28=1;
- pplayer[playerid]=28;
- if(IsPlayerInAnyVehicle(playerid))
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle1[playerid]);
- GetVehiclePos(GetPlayerVehicleID(playerid), X1[playerid], Y1[playerid], Z1[playerid]);
- }
- else
- {
- GetPlayerFacingAngle(playerid, Angle1[playerid]);
- GetPlayerPos(playerid, X1[playerid], Y1[playerid], Z1[playerid]);
- }
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == MENU0)
- {
- if(response)
- {
- if(listitem == 0)
- {
- ShowPlayerDialog(playerid, MENU1, DIALOG_STYLE_LIST, "Véhicule de la course", "Voiture\nMoto\nBateau\nSandking\nAerienne\nAutres","Sauvegarde", "Annuler");
- }
- if(listitem == 1)
- {
- ShowPlayerDialog(playerid, MENU2, DIALOG_STYLE_INPUT, "Numéro de la course", "Veuillez entrer le numéro de la course \nN.B: Le chiffre doit contenir 3chiifre(exemple: 001)","Sauvegarde", "Annuler");
- return 1;
- }
- if(listitem == 2)
- {
- new tmp[256], fback;
- format(tmp,sizeof(tmp),"%s%s",CType,CNumero);
- fback=LoadRace(tmp);
- if(fback == -1)
- {
- format(ystring,sizeof(ystring),"La course %s n'existe pas !",tmp);
- SendClientMessage(playerid,COLOR_RED,ystring);
- return 1;
- }
- startrace();
- return 1;
- }
- }
- }
- if(dialogid == MENU1)
- {
- if(response)
- {
- if(listitem == 0)
- {
- format(CType,sizeof(CType),"Voiture");
- format(ystring, sizeof(ystring), "Type de la course: %s\nNuméro de la course: %s\nLancer la course !",CType,CNumero);
- ShowPlayerDialog(playerid, MENU0, DIALOG_STYLE_LIST, "Options de la course:", ystring, "Executer", "Annuler");
- GCourse = 1;
- }
- if(listitem == 1)
- {
- format(CType,sizeof(CType),"Moto");
- format(ystring, sizeof(ystring), "Type de la course: %s\nNuméro de la course: %s\nLancer la course !",CType,CNumero);
- ShowPlayerDialog(playerid, MENU0, DIALOG_STYLE_LIST, "Options de la course:", ystring, "Executer", "Annuler");
- GCourse = 2;
- }
- if(listitem == 2)
- {
- format(CType,sizeof(CType),"Bateau");
- format(ystring, sizeof(ystring), "Type de la course: %s\nNuméro de la course: %s\nLancer la course !",CType,CNumero);
- ShowPlayerDialog(playerid, MENU0, DIALOG_STYLE_LIST, "Options de la course:", ystring, "Executer", "Annuler");
- GCourse = 3;
- }
- if(listitem == 3)
- {
- format(CType,sizeof(CType),"Sandking");
- format(ystring, sizeof(ystring), "Type de la course: %s\nNuméro de la course: %s\nLancer la course !",CType,CNumero);
- ShowPlayerDialog(playerid, MENU0, DIALOG_STYLE_LIST, "Options de la course:", ystring, "Executer", "Annuler");
- GCourse = 4;
- }
- if(listitem == 4)
- {
- format(CType,sizeof(CType),"Aerienne");
- format(ystring, sizeof(ystring), "Type de la course: %s\nNuméro de la course: %s\nLancer la course !",CType,CNumero);
- ShowPlayerDialog(playerid, MENU0, DIALOG_STYLE_LIST, "Options de la course:", ystring, "Executer", "Annuler");
- GCourse = 5;
- }
- if(listitem == 5)
- {
- format(CType,sizeof(CType),"Autres");
- format(ystring, sizeof(ystring), "Type de la course: %s\nNuméro de la course: %s\nLancer la course !",CType,CNumero);
- ShowPlayerDialog(playerid, MENU0, DIALOG_STYLE_LIST, "Options de la course:", ystring, "Executer", "Annuler");
- GCourse = 6;
- return 1;
- }
- }
- }
- if(dialogid == MENU2)
- {
- if(response)
- {
- format(CNumero,sizeof(CNumero),"%s",inputtext);
- format(ystring, sizeof(ystring), "Type de la course: %s\nNuméro de la course: %s\nLancer la course !",CType,CNumero);
- ShowPlayerDialog(playerid, MENU0, DIALOG_STYLE_LIST, "Options de la course:", ystring, "Executer", "Annuler");
- }
- }
- if(dialogid == MENU3)
- {
- if(response)
- {
- if(listitem == 0)
- {
- new tmp[128], e = 0, Save;
- do
- {
- e++;
- format(tmp, sizeof(tmp), "/fRace/Voiture%03d.frace",e);
- }
- while(fexist(tmp));
- e -=1;
- e++;
- Save = e++;
- format(ystring,sizeof(ystring),"/fRace/Voiture%03d.frace",Save);
- new File:f,Float:x,Float:y,Float:z, Bcreator[MAX_PLAYER_NAME], templine[42];
- GetPlayerName(playerid, Bcreator, MAX_PLAYER_NAME);
- f = fopen(ystring,io_write);
- format(templine,sizeof(templine),"YRACE %d %s %d %d %d %f\n", RACEFILE_VERSION, Bcreator, Bracemode[b(playerid)], Blaps[b(playerid)], BAirrace[b(playerid)], BCPsize[b(playerid)]);
- fwrite(f,templine);
- format(templine,sizeof(templine),"A 0 A 0 A 0 A 0 A 0\n"); //Best complete race times
- fwrite(f,templine);
- format(templine,sizeof(templine),"A 0 A 0 A 0 A 0 A 0\n"); //Best lap times
- fwrite(f,templine);
- for(new i = 0; i < BCurrentCheckpoints[b(playerid)];i++)
- {
- x=BRaceCheckpoints[b(playerid)][i][0];
- y=BRaceCheckpoints[b(playerid)][i][1];
- z=BRaceCheckpoints[b(playerid)][i][2];
- format(templine,sizeof(templine),"%f %f %f\n",x,y,z);
- fwrite(f,templine);
- }
- fclose(f);
- format(tmp,sizeof(tmp),"La course a été sauvegardé !",ystring);
- SendClientMessage(playerid,COLOR_GREEN,tmp);
- RaceBuilders[playerid] = 0;//NOUVEAU
- SendClientMessage(playerid,COLOR_GREEN,"Vous avez quitté le mode constructeur");
- }
- if(listitem == 1)
- {
- new tmp[128], e = 0, Save;
- do
- {
- e++;
- format(tmp, sizeof(tmp), "/fRace/Moto%03d.frace",e);
- }
- while(fexist(tmp));
- e -=1;
- e++;
- Save = e++;
- format(ystring,sizeof(ystring),"/fRace/Moto%03d.frace",Save);
- new File:f,Float:x,Float:y,Float:z, Bcreator[MAX_PLAYER_NAME], templine[42];
- GetPlayerName(playerid, Bcreator, MAX_PLAYER_NAME);
- f = fopen(ystring,io_write);
- format(templine,sizeof(templine),"YRACE %d %s %d %d %d %f\n", RACEFILE_VERSION, Bcreator, Bracemode[b(playerid)], Blaps[b(playerid)], BAirrace[b(playerid)], BCPsize[b(playerid)]);
- fwrite(f,templine);
- format(templine,sizeof(templine),"A 0 A 0 A 0 A 0 A 0\n"); //Best complete race times
- fwrite(f,templine);
- format(templine,sizeof(templine),"A 0 A 0 A 0 A 0 A 0\n"); //Best lap times
- fwrite(f,templine);
- for(new i = 0; i < BCurrentCheckpoints[b(playerid)];i++)
- {
- x=BRaceCheckpoints[b(playerid)][i][0];
- y=BRaceCheckpoints[b(playerid)][i][1];
- z=BRaceCheckpoints[b(playerid)][i][2];
- format(templine,sizeof(templine),"%f %f %f\n",x,y,z);
- fwrite(f,templine);
- }
- fclose(f);
- format(tmp,sizeof(tmp),"La course a été sauvegardé !",ystring);
- SendClientMessage(playerid,COLOR_GREEN,tmp);
- }
- if(listitem == 2)
- {
- new tmp[128], e = 0, Save;
- do
- {
- e++;
- format(tmp, sizeof(tmp), "/fRace/Bateau%03d.frace",e);
- }
- while(fexist(tmp));
- e -=1;
- e++;
- Save = e++;
- format(ystring,sizeof(ystring),"/fRace/Bateau%03d.frace",Save);
- new File:f,Float:x,Float:y,Float:z, Bcreator[MAX_PLAYER_NAME], templine[42];
- GetPlayerName(playerid, Bcreator, MAX_PLAYER_NAME);
- f = fopen(ystring,io_write);
- format(templine,sizeof(templine),"YRACE %d %s %d %d %d %f\n", RACEFILE_VERSION, Bcreator, Bracemode[b(playerid)], Blaps[b(playerid)], BAirrace[b(playerid)], BCPsize[b(playerid)]);
- fwrite(f,templine);
- format(templine,sizeof(templine),"A 0 A 0 A 0 A 0 A 0\n"); //Best complete race times
- fwrite(f,templine);
- format(templine,sizeof(templine),"A 0 A 0 A 0 A 0 A 0\n"); //Best lap times
- fwrite(f,templine);
- for(new i = 0; i < BCurrentCheckpoints[b(playerid)];i++)
- {
- x=BRaceCheckpoints[b(playerid)][i][0];
- y=BRaceCheckpoints[b(playerid)][i][1];
- z=BRaceCheckpoints[b(playerid)][i][2];
- format(templine,sizeof(templine),"%f %f %f\n",x,y,z);
- fwrite(f,templine);
- }
- fclose(f);
- format(tmp,sizeof(tmp),"La course a été sauvegardé !",ystring);
- SendClientMessage(playerid,COLOR_GREEN,tmp);
- }
- if(listitem == 3)
- {
- new tmp[128], e = 0, Save;
- do
- {
- e++;
- format(tmp, sizeof(tmp), "/fRace/Sandking%03d.frace",e);
- }
- while(fexist(tmp));
- e -=1;
- e++;
- Save = e++;
- format(ystring,sizeof(ystring),"/fRace/Sandking%03d.frace",Save);
- new File:f,Float:x,Float:y,Float:z, Bcreator[MAX_PLAYER_NAME], templine[42];
- GetPlayerName(playerid, Bcreator, MAX_PLAYER_NAME);
- f = fopen(ystring,io_write);
- format(templine,sizeof(templine),"YRACE %d %s %d %d %d %f\n", RACEFILE_VERSION, Bcreator, Bracemode[b(playerid)], Blaps[b(playerid)], BAirrace[b(playerid)], BCPsize[b(playerid)]);
- fwrite(f,templine);
- format(templine,sizeof(templine),"A 0 A 0 A 0 A 0 A 0\n"); //Best complete race times
- fwrite(f,templine);
- format(templine,sizeof(templine),"A 0 A 0 A 0 A 0 A 0\n"); //Best lap times
- fwrite(f,templine);
- for(new i = 0; i < BCurrentCheckpoints[b(playerid)];i++)
- {
- x=BRaceCheckpoints[b(playerid)][i][0];
- y=BRaceCheckpoints[b(playerid)][i][1];
- z=BRaceCheckpoints[b(playerid)][i][2];
- format(templine,sizeof(templine),"%f %f %f\n",x,y,z);
- fwrite(f,templine);
- }
- fclose(f);
- format(tmp,sizeof(tmp),"La course a été sauvegardé !",ystring);
- SendClientMessage(playerid,COLOR_GREEN,tmp);
- }
- if(listitem == 4)
- {
- new tmp[128], e = 0, Save;
- do
- {
- e++;
- format(tmp, sizeof(tmp), "/fRace/Aerienne%03d.frace",e);
- }
- while(fexist(tmp));
- e -=1;
- e++;
- Save = e++;
- format(ystring,sizeof(ystring),"/fRace/Aerienne%03d.frace",Save);
- new File:f,Float:x,Float:y,Float:z, Bcreator[MAX_PLAYER_NAME], templine[42];
- GetPlayerName(playerid, Bcreator, MAX_PLAYER_NAME);
- f = fopen(ystring,io_write);
- format(templine,sizeof(templine),"YRACE %d %s %d %d %d %f\n", RACEFILE_VERSION, Bcreator, Bracemode[b(playerid)], Blaps[b(playerid)], BAirrace[b(playerid)], BCPsize[b(playerid)]);
- fwrite(f,templine);
- format(templine,sizeof(templine),"A 0 A 0 A 0 A 0 A 0\n"); //Best complete race times
- fwrite(f,templine);
- format(templine,sizeof(templine),"A 0 A 0 A 0 A 0 A 0\n"); //Best lap times
- fwrite(f,templine);
- for(new i = 0; i < BCurrentCheckpoints[b(playerid)];i++)
- {
- x=BRaceCheckpoints[b(playerid)][i][0];
- y=BRaceCheckpoints[b(playerid)][i][1];
- z=BRaceCheckpoints[b(playerid)][i][2];
- format(templine,sizeof(templine),"%f %f %f\n",x,y,z);
- fwrite(f,templine);
- }
- fclose(f);
- format(tmp,sizeof(tmp),"La course a été sauvegardé !",ystring);
- SendClientMessage(playerid,COLOR_GREEN,tmp);
- }
- if(listitem == 5)
- {
- new tmp[128], e = 0, Save;
- do
- {
- e++;
- format(ystring,sizeof(ystring),"/fRace/Autres%03d.frace",e);
- }
- while(fexist(tmp));
- e -=1;
- e++;
- Save = e++;
- format(ystring,sizeof(ystring),"/fRace/Autres%03d.frace",Save);
- new File:f,Float:x,Float:y,Float:z, Bcreator[MAX_PLAYER_NAME], templine[42];
- GetPlayerName(playerid, Bcreator, MAX_PLAYER_NAME);
- f = fopen(ystring,io_write);
- format(templine,sizeof(templine),"YRACE %d %s %d %d %d %f\n", RACEFILE_VERSION, Bcreator, Bracemode[b(playerid)], Blaps[b(playerid)], BAirrace[b(playerid)], BCPsize[b(playerid)]);
- fwrite(f,templine);
- format(templine,sizeof(templine),"A 0 A 0 A 0 A 0 A 0\n"); //Best complete race times
- fwrite(f,templine);
- format(templine,sizeof(templine),"A 0 A 0 A 0 A 0 A 0\n"); //Best lap times
- fwrite(f,templine);
- for(new i = 0; i < BCurrentCheckpoints[b(playerid)];i++)
- {
- x=BRaceCheckpoints[b(playerid)][i][0];
- y=BRaceCheckpoints[b(playerid)][i][1];
- z=BRaceCheckpoints[b(playerid)][i][2];
- format(templine,sizeof(templine),"%f %f %f\n",x,y,z);
- fwrite(f,templine);
- }
- fclose(f);
- format(tmp,sizeof(tmp),"La course a été sauvegardé sous le nom de: %s",ystring);
- SendClientMessage(playerid,COLOR_GREEN,tmp);
- }
- }
- }
- return 1;
- }
- stock IsPlayerInCar(playerid)
- {
- new vehicleid = GetPlayerVehicleID(playerid);
- if(IsPlayerInAnyVehicle(playerid))
- {
- for(new i = 0; i < 97; i++)
- {
- if(GetVehicleModel(vehicleid) == voiture[i])
- {
- return true;
- }
- }
- }
- return false;
- }
- stock IsPlayerInBike(playerid)
- {
- new vehicleid = GetPlayerVehicleID(playerid);
- if(IsPlayerInAnyVehicle(playerid))
- {
- for(new i = 0; i < 10; i++)
- {
- if(GetVehicleModel(vehicleid) == moto[i])
- {
- return true;
- }
- }
- }
- return false;
- }
- stock IsPlayerInBoats(playerid)
- {
- new vehicleid = GetPlayerVehicleID(playerid);
- if(IsPlayerInAnyVehicle(playerid))
- {
- for(new i = 0; i < 12; i++)
- {
- if(GetVehicleModel(vehicleid) == bateaux[i])
- {
- return true;
- }
- }
- }
- return false;
- }
- stock IsPlayerInSand(playerid)
- {
- new vehicleid = GetPlayerVehicleID(playerid);
- if(IsPlayerInAnyVehicle(playerid))
- {
- for(new i = 0; i < 1; i++)
- {
- if(GetVehicleModel(vehicleid) == sandking[i])
- {
- return true;
- }
- }
- }
- return false;
- }
- stock IsPlayerInAir(playerid)
- {
- new vehicleid = GetPlayerVehicleID(playerid);
- if(IsPlayerInAnyVehicle(playerid))
- {
- for(new i = 0; i < 20; i++)
- {
- if(GetVehicleModel(vehicleid) == avions[i])
- {
- return true;
- }
- }
- }
- return false;
- }
- Vehicule(playerid)
- {
- if(GCourse == 1)
- {
- if(!IsPlayerInCar(playerid))
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Vous n'êtes pas équipé du bon véhicule ! (Voiture)");
- RVehicule[playerid] = 1;
- return 1;
- }
- else
- {
- RVehicule[playerid] = 0;
- return 1;
- }
- }
- else if(GCourse == 2)
- {
- if(!IsPlayerInBike(playerid))
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Vous n'êtes pas équipé du bon véhicule ! (Deux roues)");
- RVehicule[playerid] = 1;
- return 1;
- }
- else
- {
- RVehicule[playerid] = 0;
- return 1;
- }
- }
- else if(GCourse == 3)
- {
- if(!IsPlayerInBoats(playerid))
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Vous n'êtes pas équipé du bon véhicule ! (Bateau)");
- RVehicule[playerid] = 1;
- return 1;
- }
- else
- {
- RVehicule[playerid] = 0;
- return 1;
- }
- }
- else if(GCourse == 4)
- {
- if(!IsPlayerInSand(playerid))
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Vous n'êtes pas équipé du bon véhicule ! (Sandking)");
- RVehicule[playerid] = 1;
- return 1;
- }
- else
- {
- RVehicule[playerid] = 0;
- return 1;
- }
- }
- else if(GCourse == 5)
- {
- if(!IsPlayerInAir(playerid))
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Vous n'êtes pas équipé du bon véhicule ! (Véhicule aérien)");
- RVehicule[playerid] = 1;
- return 1;
- }
- else
- {
- RVehicule[playerid] = 0;
- return 1;
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement