Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // If i use /loadrace manually, a race will load. However, race rotation wont do anything.
- // gamemodeinit SetTimer("RaceRotation",RRotationDelay,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 LoadRace(tmp[])
- {
- new race_name[32],templine[172];
- format(CRaceName,sizeof(CRaceName), "%s",tmp);
- format(race_name,sizeof(race_name), "%s.yr",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 startrace()
- {
- format(ystring,100,"** Race %s is about to start, type /join to join!",CRaceName);
- SendClientMessageToAll(COLOR_AMSG,ystring);
- format(ystring,100,"~g~Race ~y~%s ~g~is about to start, type ~h~/join ~g~to join!",CRaceName);
- TextDrawSetString(Textdrawrace,ystring);
- TextDrawShowForAll(Textdrawrace);
- format(ystring,100,"Race %s is about to start, type /join to join!",CRaceName);
- PlaySoundForAll(1057);
- GameTextForAll("~g~Its Race Time!",2500,3);
- SetTimer("CloseRaceTextdraw",5000,0);
- SendClientMessageToAll(COLOR_AMSG,ystring);
- if(TopRacerTimes[0] != 0)
- {
- format(ystring,100,"** Total Laps: %d - Best Race By: %s (%d Seconds)",ORacelaps,TopRacers[0],BeHuman(TopRacerTimes[0]));
- SendClientMessageToAll(COLOR_AMSG,ystring);
- }
- else
- {
- format(ystring,100,"** Total Laps: %d",ORacelaps);
- SendClientMessageToAll(COLOR_AMSG,ystring);
- }
- format(ystring,sizeof ystring," 0,3Race %s Starting Soon. [Laps: %d] (Created by %s)",CRaceName,ORacelaps,CBuilder);
- IrcSay(ystring);
- RaceStart=0;
- RaceActive=1;
- ScoreChange=0;
- Ranking=1;
- PrizeMP=3;
- SetTimer("RaceStartTimer",RaceStartTime*1000,false);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement