Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ================================================================================
- Phanto's Script
- ________________________________________________________________________________
- •Script: PRaceSystem •Scripter: Phanto90
- •Type: FS •File size: 60 Kb(.pwn) / 43 Kb(.amx)
- •Lines: 993 •Version: 1.3v
- ________________________________________________________________________________
- * Description *
- Tired of your server modes? No problem! Here it is a nice FS that allows you to
- play races on your server! Added also a in-game race editor!
- This is an update of PRaceSystem v1.2.1.
- System:
- •3 types of races: Circuit, Sprint & Chase.
- •You can build your own race in few minutes thanks to the powerful editor.
- •Different players can race on different tracks at the same time.
- •Functional & nice system
- Changelog
- >________________________________________________________<
- |-Version 1.1 |
- |•Fixed a bug /quitrace when race isn't started yet. |
- |•Added a nice ingame race editor |
- |-Version 1.2 |
- |•Added new race type "Chase" |
- |•Modified the Race Edior to build also Chase Races. |
- |-Version 1.2.1 |
- |•Fixed a serious bug in OnDialogResponse callback. |
- |-Version 1.3 |
- |•Rewrited checkpoint saving and loading system. Now |
- | there are no more limit to checkpoint due to the fact |
- | that does not save all in one line as previous version |
- |________________________________________________________|
- Very important: Old Check#.txt are no longer compatible. Change the races in
- scriptfiles with the new one.
- Credits: Phanto90 for PRaceSystem
- Y_Less for sscanf plugin and include
- Thanks for choosing Pawnoscripter!
- http://pawnoscripter.forumfree.it
- Phanto90
- ________________________________________________________________________________
- Do not remove credits.
- ================================================================================
- */
- #include <a_samp>
- #include <sscanf2>
- //===============MODIFICABILI
- #define TELEPORT_TO_START // Comment to disable teleport to the starting checkpoint
- #define MAX_GARE 20
- #define MAX_CHECKPOINT 40
- //===============COLORI
- #define ROSSO 0xFF3233FF
- #define BIANCO 0xFFFFFFFF
- #define VERDE 0x00FF00FF
- #define TURCHESE 0x3C93FFFF
- //================DIALOG
- #define DIALOGGARE 8016
- #define DIALOGINFO 8017
- #define DIALOGINFOCOSTRUTTORE 8018
- #define DIALOGNOMEGARA 8019
- #define DIALOGGIRIGARA 8020
- #define DIALOGCOSTOGARA 8021
- #define DIALOGINFOGARA2 8022
- #define DIALOGINSEGUIMENTO 8023
- //=========================FORWARD
- forward Tre(playerid);
- forward Due(playerid);
- forward Uno(playerid);
- forward Via(playerid);
- forward Secondo(playerid);
- forward Cronometro(playerid);
- //=========================VARIABILIGIOCATORE
- enum InfoGiocatore{IdGara,Tempo,Giro,Checkpoint,Pronto,Costruttore,GaraEditorId,AttivaCheck,Inseguitore,Punti};
- new Giocatore[MAX_PLAYERS][InfoGiocatore];
- new Float:XPosizione,Float:YPosizione,Float:ZPosizione;
- new nome[25];
- //==============VARIABILIGARE
- enum InfoGara{Nome[50],Giri,NumeroCheckpoint,Inseguimento,Costo,Partecipanti,PartecipantiPronti,Avviata,Record,GiocatoreRecord[25],Produttore[25],Podio};
- new Gara[MAX_GARE][InfoGara];
- enum CheckInfo{Float:CXPos,Float:CYPos,Float:CZPos};
- new CheckpointGara[MAX_GARE][MAX_CHECKPOINT][CheckInfo];
- new TimerPlayers[MAX_PLAYERS];
- new GareCaricate,GareEditor;
- //=============VARIABILI
- new stringa[1000],stringa2[500];
- new stringagara[500];
- //============TEXTDRAW
- new Text:sfondo,Text:sfondorosso,Text:sfondogiallo,Text:sfondoverde,Text:rossoacceso,Text:gialloacceso,Text:verdeacceso; //Textdraw semaforo
- new Text:TimerSfondo,Text:TimerText[MAX_PLAYERS]; //Timer textdraw
- new Text:TextGiriSfondo,Text:TextGiriContatore[MAX_PLAYERS]; //Textdraw laps
- new Text:TextSfondoInseguimento,Text:SfondoInseguimentoRosso,Text:SfondoInseguimentoGiallo,Text:SfondoInseguimentoVerde,Text:SfondoInseguimentoAzzurro,Text:TextInseguimento,Text:TextPessimo,Text:TextMediocre,Text:TextBuono,Text:TextOttimo,Text:TextPunti[MAX_PLAYERS];
- //====================================================================CARICAGARE
- stock CaricaGare()
- {
- for(new i=0;i<MAX_GARE;i++)
- {
- //==============CARICAMENTOINFOGARA
- format(stringa,sizeof(stringa),"Races/Race%d.txt",i);
- format(stringa2,sizeof(stringa2),"Race %d not found. This race cannot be loaded.",i);
- if(!fexist(stringa)) return printf(stringa2);
- new File:nomegara=fopen(stringa, io_read);
- fread(nomegara,stringagara);
- fclose(nomegara);
- sscanf(stringagara,"p<,>s[50]ddds[24]s[24]d",Gara[i][Nome],Gara[i][Giri],Gara[i][Costo],Gara[i][Record],Gara[i][GiocatoreRecord],Gara[i][Produttore],Gara[i][Inseguimento]);
- Gara[i][NumeroCheckpoint]=-1;
- format(stringa,sizeof(stringa),"%s,%d,%d$,%s,%s",Gara[i][Nome],Gara[i][Giri],Gara[i][Costo],Gara[i][GiocatoreRecord],Gara[i][Produttore]);
- printf(stringa);
- //================CARICAMENTOCHECKPOINT
- format(stringagara,sizeof(stringagara),"");
- format(stringa,sizeof(stringa),"Races/Check%d.txt",i);
- format(stringa2,sizeof(stringa2),"Checkpoint list for Race %d not found. This race cannot be loaded.",i);
- if(!fexist(stringa)) return printf(stringa2);
- nomegara=fopen(stringa, io_read);
- print("____________________________________");
- for(new j=0;j<MAX_CHECKPOINT;j++)
- {
- fread(nomegara,stringagara);
- sscanf(stringagara,"p<,>fff",CheckpointGara[i][j][CXPos],CheckpointGara[i][j][CYPos],CheckpointGara[i][j][CZPos]);
- if(CheckpointGara[i][j][CXPos]==0) {printf("%d checkpoints loaded for Race %d.",Gara[i][NumeroCheckpoint]+1,i);break;}
- Gara[i][NumeroCheckpoint]++;
- }
- fclose(nomegara);
- GareCaricate=i;
- GareEditor=i;
- print("____________________________________");
- }
- return 1;
- }
- //====================================================================SALVAGARE
- stock SalvaGare()
- {
- for(new i=0;i<GareCaricate;i++)
- {
- format(stringa,sizeof(stringa),"Races/Race%d.txt",i);
- format(stringa2,sizeof(stringa2),"Race %d not found. Failed to save this race.",i);
- if(!fexist(stringa)) return printf(stringa2);
- new File:nomegara=fopen(stringa, io_write);
- format(stringagara,sizeof(stringagara),"%s,%d,%d,%d,%s,%s,%d",Gara[i][Nome],Gara[i][Giri],Gara[i][Costo],Gara[i][Record],Gara[i][GiocatoreRecord],Gara[i][Produttore],Gara[i][Inseguimento]);
- fwrite(nomegara,stringagara);
- fclose(nomegara);
- }
- return 1;
- }
- //=====================================================================AVVIAGARA
- stock AvviaGara(idGara)
- {
- format(stringa,sizeof(stringa),"[RACE:] Race {446ED1}%s{FFFFFF} starts!",Gara[idGara][Nome]);
- SendClientMessageToAll(BIANCO,stringa);
- Gara[idGara][Avviata]=1;
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if(Giocatore[i][IdGara]==idGara)
- {
- TogglePlayerControllable(i,0);
- TextDrawShowForPlayer(i,sfondo);
- TextDrawShowForPlayer(i,sfondorosso);
- TextDrawShowForPlayer(i,sfondogiallo);
- TextDrawShowForPlayer(i,sfondoverde);
- TextDrawShowForPlayer(i,rossoacceso);
- if(Gara[Giocatore[i][IdGara]][Inseguimento])
- {
- TextDrawShowForPlayer(i,TextSfondoInseguimento);
- TextDrawShowForPlayer(i,SfondoInseguimentoRosso);
- TextDrawShowForPlayer(i,SfondoInseguimentoGiallo);
- TextDrawShowForPlayer(i,SfondoInseguimentoVerde);
- TextDrawShowForPlayer(i,SfondoInseguimentoAzzurro);
- TextDrawShowForPlayer(i,TextInseguimento);
- TextDrawShowForPlayer(i,TextPessimo);
- TextDrawShowForPlayer(i,TextMediocre);
- TextDrawShowForPlayer(i,TextBuono);
- TextDrawShowForPlayer(i,TextOttimo);
- TextDrawSetString(TextPunti[i],"Points: 0000");
- TextDrawShowForPlayer(i,TextPunti[i]);
- }
- SetTimerEx("Tre",1000,false,"idx",i);
- }
- }
- return 1;
- }
- //===========================================================================TRE
- public Tre(playerid)
- {
- GameTextForPlayer(playerid,"~r~3",1000,3);
- SuonoGiocatore(playerid,1056);
- Giocatore[playerid][Tempo]=0;
- Giocatore[playerid][Giro]=1;
- format(stringa,sizeof(stringa),"Laps: 1/%d",Gara[Giocatore[playerid][IdGara]][Giri]);
- TextDrawSetString(TextGiriContatore[playerid],stringa);
- TextDrawSetString(TimerText[playerid],"00:00");
- GetPlayerPos(playerid,XPosizione,YPosizione,ZPosizione);
- SetPlayerCameraPos(playerid,XPosizione+4,YPosizione+2,ZPosizione+3);
- SetPlayerCameraLookAt(playerid,XPosizione,YPosizione,ZPosizione);
- TextDrawShowForPlayer(playerid,TimerSfondo);
- TextDrawShowForPlayer(playerid,TimerText[playerid]);
- TextDrawShowForPlayer(playerid,TextGiriSfondo);
- TextDrawShowForPlayer(playerid,TextGiriContatore[playerid]);
- SetTimerEx("Due",1000,false,"idx",playerid);
- }
- //===========================================================================DUE
- public Due(playerid)
- {
- GameTextForPlayer(playerid,"~r~3~n~~y~2",1000,3);
- SuonoGiocatore(playerid,1056);
- GetPlayerPos(playerid,XPosizione,YPosizione,ZPosizione);
- SetPlayerCameraPos(playerid,XPosizione-4,YPosizione-2,ZPosizione+3);
- SetPlayerCameraLookAt(playerid,XPosizione,YPosizione,ZPosizione);
- SetTimerEx("Uno",1000,false,"idx",playerid);
- }
- //===========================================================================UNO
- public Uno(playerid)
- {
- GameTextForPlayer(playerid,"~r~3~n~~y~2~n~~g~~h~1",1000,3);
- SuonoGiocatore(playerid,1056);
- GetPlayerPos(playerid,XPosizione,YPosizione,ZPosizione);
- SetPlayerCameraPos(playerid,XPosizione+4,YPosizione-2,ZPosizione+3);
- SetPlayerCameraLookAt(playerid,XPosizione,YPosizione,ZPosizione);
- TextDrawShowForPlayer(playerid,gialloacceso);
- TextDrawHideForPlayer(playerid,rossoacceso);
- SetTimerEx("Via",1000,false,"idx",playerid);
- }
- //===========================================================================VIA
- public Via(playerid)
- {
- SetCameraBehindPlayer(playerid);
- GameTextForPlayer(playerid,"~w~Go!",3000,3);
- SuonoGiocatore(playerid,1057);
- TogglePlayerControllable(playerid,1);
- TextDrawShowForPlayer(playerid,verdeacceso);
- TextDrawHideForPlayer(playerid,gialloacceso);
- SetTimerEx("Secondo",1000,false,"idx",playerid);
- TimerPlayers[playerid]=SetTimerEx("Cronometro",1000,true,"idx",playerid);
- }
- //=======================================================================SECONDO
- public Secondo(playerid)
- {
- TextDrawHideForPlayer(playerid,sfondo);
- TextDrawHideForPlayer(playerid,sfondorosso);
- TextDrawHideForPlayer(playerid,sfondogiallo);
- TextDrawHideForPlayer(playerid,sfondoverde);
- TextDrawHideForPlayer(playerid,verdeacceso);
- return 1;
- }
- //===================================================================CONTROMETRO
- public Cronometro(playerid)
- {
- Giocatore[playerid][Tempo]++;
- new Minuti=floatround(Giocatore[playerid][Tempo]/60);
- new Secondi=Giocatore[playerid][Tempo]-(Minuti*60);
- if(Minuti>20)
- {
- SendClientMessage(playerid,ROSSO,"[RACE:] {FFFFFF}You quit automatically the race for excessive time (20 minutes)");
- LasciaGara(playerid);
- return 1;
- }
- new stringatempo[10];
- format(stringatempo,sizeof(stringatempo),"%02d:%02d",Minuti,Secondi);
- TextDrawSetString(TimerText[playerid],stringatempo);
- if(Gara[Giocatore[playerid][IdGara]][Inseguimento]==1)
- {
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if(Giocatore[i][IdGara]==Giocatore[playerid][IdGara] && i!=playerid)
- {
- GetPlayerPos(i,XPosizione,YPosizione,ZPosizione);
- break;
- }
- }
- TextDrawHideForPlayer(playerid,SfondoInseguimentoRosso);
- TextDrawHideForPlayer(playerid,SfondoInseguimentoGiallo);
- TextDrawHideForPlayer(playerid,SfondoInseguimentoVerde);
- TextDrawHideForPlayer(playerid,SfondoInseguimentoAzzurro);
- if(!Giocatore[playerid][Inseguitore])
- {
- if(IsPlayerInRangeOfPoint(playerid,15,XPosizione,YPosizione,ZPosizione)){
- Giocatore[playerid][Punti]+=3; TextDrawShowForPlayer(playerid,SfondoInseguimentoRosso);}
- else if (IsPlayerInRangeOfPoint(playerid,30,XPosizione,YPosizione,ZPosizione)){
- Giocatore[playerid][Punti]+=5; TextDrawShowForPlayer(playerid,SfondoInseguimentoGiallo);}
- else if(IsPlayerInRangeOfPoint(playerid,40,XPosizione,YPosizione,ZPosizione)){
- Giocatore[playerid][Punti]+=7; TextDrawShowForPlayer(playerid,SfondoInseguimentoVerde);}
- else{
- Giocatore[playerid][Punti]+=8; TextDrawShowForPlayer(playerid,SfondoInseguimentoAzzurro);}
- }
- else
- {
- if(IsPlayerInRangeOfPoint(playerid,15,XPosizione,YPosizione,ZPosizione)){
- Giocatore[playerid][Punti]+=8; TextDrawShowForPlayer(playerid,SfondoInseguimentoAzzurro);}
- else if (IsPlayerInRangeOfPoint(playerid,30,XPosizione,YPosizione,ZPosizione)){
- Giocatore[playerid][Punti]+=7; TextDrawShowForPlayer(playerid,SfondoInseguimentoVerde);}
- else if(IsPlayerInRangeOfPoint(playerid,40,XPosizione,YPosizione,ZPosizione)){
- Giocatore[playerid][Punti]+=5; TextDrawShowForPlayer(playerid,SfondoInseguimentoGiallo);}
- else{
- Giocatore[playerid][Punti]+=3; TextDrawShowForPlayer(playerid,SfondoInseguimentoRosso);}
- }
- format(stringa,sizeof(stringa),"Points: %d",Giocatore[playerid][Punti]);
- TextDrawSetString(TextPunti[playerid],stringa);
- }
- return 1;
- }
- //====================================================================LASCIAGARA
- stock LasciaGara(playerid)
- {
- if(Giocatore[playerid][IdGara]==-1) return 1;
- if(Gara[Giocatore[playerid][IdGara]][Avviata]==0)
- {
- if(Giocatore[playerid][Pronto]==1)
- Gara[Giocatore[playerid][IdGara]][PartecipantiPronti]--;
- }
- KillTimer(TimerPlayers[playerid]);
- Giocatore[playerid][Tempo]=0;
- GetPlayerName(playerid,nome,sizeof(nome));
- format(stringa,sizeof(stringa),"[RACE:] {8CE46C}%s {FFFFFF}quit the race.", nome);
- MandaMessaggioPartecipanti(Giocatore[playerid][IdGara],stringa);
- //==========TEXTBASE
- TextDrawHideForPlayer(playerid,sfondo);
- TextDrawHideForPlayer(playerid,TimerText[playerid]);
- TextDrawHideForPlayer(playerid,TimerSfondo);
- TextDrawHideForPlayer(playerid,sfondorosso);
- TextDrawHideForPlayer(playerid,sfondogiallo);
- TextDrawHideForPlayer(playerid,sfondoverde);
- TextDrawHideForPlayer(playerid,rossoacceso);
- TextDrawHideForPlayer(playerid,gialloacceso);
- TextDrawHideForPlayer(playerid,verdeacceso);
- TextDrawHideForPlayer(playerid,TextGiriSfondo);
- //==========TEXTINSEGUIMENTO
- TextDrawHideForPlayer(playerid,TextSfondoInseguimento);
- TextDrawHideForPlayer(playerid,SfondoInseguimentoRosso);
- TextDrawHideForPlayer(playerid,SfondoInseguimentoGiallo);
- TextDrawHideForPlayer(playerid,SfondoInseguimentoVerde);
- TextDrawHideForPlayer(playerid,SfondoInseguimentoAzzurro);
- TextDrawHideForPlayer(playerid,TextInseguimento);
- TextDrawHideForPlayer(playerid,TextPessimo);
- TextDrawHideForPlayer(playerid,TextMediocre);
- TextDrawHideForPlayer(playerid,TextBuono);
- TextDrawHideForPlayer(playerid,TextOttimo);
- TextDrawHideForPlayer(playerid,TextPunti[playerid]);
- TextDrawHideForPlayer(playerid,TextGiriContatore[playerid]);
- TextDrawSetString(TimerText[playerid],"00:00");
- Giocatore[playerid][Checkpoint]=0;
- Gara[Giocatore[playerid][IdGara]][Partecipanti]--;
- if(Gara[Giocatore[playerid][IdGara]][PartecipantiPronti]==Gara[Giocatore[playerid][IdGara]][Partecipanti] && Gara[Giocatore[playerid][IdGara]][Partecipanti]!=0 && Gara[Giocatore[playerid][IdGara]][Avviata]==0)
- AvviaGara(Giocatore[playerid][IdGara]);
- ChiudiGara(Giocatore[playerid][IdGara]);
- Giocatore[playerid][IdGara]=-1;
- Giocatore[playerid][Pronto]=0;
- Giocatore[playerid][Giro]=1;
- Giocatore[playerid][Inseguitore]=0;
- Giocatore[playerid][Punti]=0;
- DisablePlayerRaceCheckpoint(playerid);
- return 1;
- }
- //====================================================================CHIUDIGARA
- stock ChiudiGara(idGara)
- {
- if(Gara[idGara][Partecipanti]==0 && idGara!=-1)
- {
- format(stringa,sizeof(stringa),"[RACE:] {FFFFFF}Race {446ED1}%s{FFFFFF} finish.",Gara[idGara][Nome]);
- SendClientMessageToAll(BIANCO,stringa);
- Gara[idGara][Podio]=0;
- Gara[idGara][Avviata]=0;
- Gara[idGara][Partecipanti]=0;
- Gara[idGara][PartecipantiPronti]=0;
- }
- }
- //============================================================ONFILTERSCRIPTINIT
- public OnFilterScriptInit()
- {
- print("_______________________________________________");
- print(" PRaceSystem by Phanto90 loaded ");
- print(" Current version: 1.3v");
- print("_______________________________________________");
- CaricaGare();
- TextGiriSfondo = TextDrawCreate(541.000000, 189.000000, "1");
- TextDrawBackgroundColor(TextGiriSfondo, 0);
- TextDrawFont(TextGiriSfondo, 1);
- TextDrawLetterSize(TextGiriSfondo, 0.579999, 1.700000);
- TextDrawColor(TextGiriSfondo, 0);
- TextDrawSetOutline(TextGiriSfondo, 0);
- TextDrawSetProportional(TextGiriSfondo, 1);
- TextDrawSetShadow(TextGiriSfondo, 1);
- TextDrawUseBox(TextGiriSfondo, 1);
- TextDrawBoxColor(TextGiriSfondo, 1010580600);
- TextDrawTextSize(TextGiriSfondo, 613.000000, 0.000000);
- TimerSfondo = TextDrawCreate(620.000000, 160.000000, ".sfo");
- TextDrawBackgroundColor(TimerSfondo, 0);
- TextDrawFont(TimerSfondo, 1);
- TextDrawLetterSize(TimerSfondo, 0.500000, 2.499999);
- TextDrawColor(TimerSfondo, 0);
- TextDrawSetOutline(TimerSfondo, 0);
- TextDrawSetProportional(TimerSfondo, 1);
- TextDrawSetShadow(TimerSfondo, 1);
- TextDrawUseBox(TimerSfondo, 1);
- TextDrawBoxColor(TimerSfondo, 1010580580);
- TextDrawTextSize(TimerSfondo, 535.000000, 0.000000);
- sfondo = TextDrawCreate(265.000000, 40.000000, "sfondo");
- TextDrawBackgroundColor(sfondo, 0);
- TextDrawFont(sfondo, 1);
- TextDrawLetterSize(sfondo, 0.500000, 3.500000);
- TextDrawColor(sfondo, 0);
- TextDrawSetOutline(sfondo, 0);
- TextDrawSetProportional(sfondo, 1);
- TextDrawSetShadow(sfondo, 1);
- TextDrawUseBox(sfondo, 1);
- TextDrawBoxColor(sfondo, 338826495);
- TextDrawTextSize(sfondo, 384.000000, 0.000000);
- sfondorosso = TextDrawCreate(278.000000, 48.000000, "sfondorosso");
- TextDrawBackgroundColor(sfondorosso, 0);
- TextDrawFont(sfondorosso, 1);
- TextDrawLetterSize(sfondorosso, 0.500000, 1.800001);
- TextDrawColor(sfondorosso, 0);
- TextDrawSetOutline(sfondorosso, 0);
- TextDrawSetProportional(sfondorosso, 1);
- TextDrawSetShadow(sfondorosso, 1);
- TextDrawUseBox(sfondorosso, 1);
- TextDrawBoxColor(sfondorosso, 840176895);
- TextDrawTextSize(sfondorosso, 293.000000, 0.000000);
- sfondogiallo = TextDrawCreate(320.000000, 48.000000, "sfondoarancione");
- TextDrawBackgroundColor(sfondogiallo, 0);
- TextDrawFont(sfondogiallo, 1);
- TextDrawLetterSize(sfondogiallo, 0.500000, 1.800001);
- TextDrawColor(sfondogiallo, 0);
- TextDrawSetOutline(sfondogiallo, 0);
- TextDrawSetProportional(sfondogiallo, 1);
- TextDrawSetShadow(sfondogiallo, 1);
- TextDrawUseBox(sfondogiallo, 1);
- TextDrawBoxColor(sfondogiallo, 842142975);
- TextDrawTextSize(sfondogiallo, 334.000000, 0.000000);
- sfondoverde = TextDrawCreate(359.000000, 48.000000, "sfondoverde");
- TextDrawBackgroundColor(sfondoverde, 0);
- TextDrawFont(sfondoverde, 1);
- TextDrawLetterSize(sfondoverde, 0.500000, 1.800001);
- TextDrawColor(sfondoverde, 0);
- TextDrawSetOutline(sfondoverde, 0);
- TextDrawSetProportional(sfondoverde, 1);
- TextDrawSetShadow(sfondoverde, 1);
- TextDrawUseBox(sfondoverde, 1);
- TextDrawBoxColor(sfondoverde, 337515775);
- TextDrawTextSize(sfondoverde, 373.000000, 0.000000);
- rossoacceso = TextDrawCreate(281.000000, 51.000000, "sfondorossoacceso");
- TextDrawBackgroundColor(rossoacceso, 0);
- TextDrawFont(rossoacceso, 1);
- TextDrawLetterSize(rossoacceso, 0.500000, 1.100001);
- TextDrawColor(rossoacceso, 0);
- TextDrawSetOutline(rossoacceso, 0);
- TextDrawSetProportional(rossoacceso, 1);
- TextDrawSetShadow(rossoacceso, 1);
- TextDrawUseBox(rossoacceso, 1);
- TextDrawBoxColor(rossoacceso, -938208001);
- TextDrawTextSize(rossoacceso, 291.000000, 0.000000);
- gialloacceso = TextDrawCreate(322.000000, 51.000000, "sfondoarancioneacceso");
- TextDrawBackgroundColor(gialloacceso, 0);
- TextDrawFont(gialloacceso, 1);
- TextDrawLetterSize(gialloacceso, 0.500000, 1.100001);
- TextDrawColor(gialloacceso, 0);
- TextDrawSetOutline(gialloacceso, 0);
- TextDrawSetProportional(gialloacceso, 1);
- TextDrawSetShadow(gialloacceso, 1);
- TextDrawUseBox(gialloacceso, 1);
- TextDrawBoxColor(gialloacceso, -926411521);
- TextDrawTextSize(gialloacceso, 332.000000, 0.000000);
- verdeacceso = TextDrawCreate(362.000000, 51.000000, "sfondoverdeacceso");
- TextDrawBackgroundColor(verdeacceso, 0);
- TextDrawFont(verdeacceso, 1);
- TextDrawLetterSize(verdeacceso, 0.500000, 1.100001);
- TextDrawColor(verdeacceso, 0);
- TextDrawSetOutline(verdeacceso, 0);
- TextDrawSetProportional(verdeacceso, 1);
- TextDrawSetShadow(verdeacceso, 1);
- TextDrawUseBox(verdeacceso, 1);
- TextDrawBoxColor(verdeacceso, 348656895);
- TextDrawTextSize(verdeacceso, 370.000000, 0.000000);
- TextSfondoInseguimento = TextDrawCreate(170.000000, 362.000000, "box");
- TextDrawBackgroundColor(TextSfondoInseguimento, 0);
- TextDrawFont(TextSfondoInseguimento, 1);
- TextDrawLetterSize(TextSfondoInseguimento, 0.460000, 2.700011);
- TextDrawColor(TextSfondoInseguimento, 0);
- TextDrawSetOutline(TextSfondoInseguimento, 0);
- TextDrawSetProportional(TextSfondoInseguimento, 1);
- TextDrawSetShadow(TextSfondoInseguimento, 1);
- TextDrawUseBox(TextSfondoInseguimento, 1);
- TextDrawBoxColor(TextSfondoInseguimento, 505290340);
- TextDrawTextSize(TextSfondoInseguimento, 467.000000, 0.000000);
- SfondoInseguimentoRosso = TextDrawCreate(174.000000, 366.000000, "boxrosso");
- TextDrawBackgroundColor(SfondoInseguimentoRosso, 0);
- TextDrawFont(SfondoInseguimentoRosso, 1);
- TextDrawLetterSize(SfondoInseguimentoRosso, 0.460000, 1.600010);
- TextDrawColor(SfondoInseguimentoRosso, 0);
- TextDrawSetOutline(SfondoInseguimentoRosso, 0);
- TextDrawSetProportional(SfondoInseguimentoRosso, 1);
- TextDrawSetShadow(SfondoInseguimentoRosso, 1);
- TextDrawUseBox(SfondoInseguimentoRosso, 1);
- TextDrawBoxColor(SfondoInseguimentoRosso, -1776410956);
- TextDrawTextSize(SfondoInseguimentoRosso, 243.000000, 0.000000);
- SfondoInseguimentoGiallo = TextDrawCreate(249.000000, 366.000000, "boxgiallo");
- TextDrawBackgroundColor(SfondoInseguimentoGiallo, 0);
- TextDrawFont(SfondoInseguimentoGiallo, 1);
- TextDrawLetterSize(SfondoInseguimentoGiallo, 0.460000, 1.600010);
- TextDrawColor(SfondoInseguimentoGiallo, 0);
- TextDrawSetOutline(SfondoInseguimentoGiallo, 0);
- TextDrawSetProportional(SfondoInseguimentoGiallo, 1);
- TextDrawSetShadow(SfondoInseguimentoGiallo, 1);
- TextDrawUseBox(SfondoInseguimentoGiallo, 1);
- TextDrawBoxColor(SfondoInseguimentoGiallo, -1768546636);
- TextDrawTextSize(SfondoInseguimentoGiallo, 319.000000, 0.000000);
- SfondoInseguimentoVerde = TextDrawCreate(325.000000, 366.000000, "boxverde");
- TextDrawBackgroundColor(SfondoInseguimentoVerde, 0);
- TextDrawFont(SfondoInseguimentoVerde, 1);
- TextDrawLetterSize(SfondoInseguimentoVerde, 0.460000, 1.600010);
- TextDrawColor(SfondoInseguimentoVerde, 0);
- TextDrawSetOutline(SfondoInseguimentoVerde, 0);
- TextDrawSetProportional(SfondoInseguimentoVerde, 1);
- TextDrawSetShadow(SfondoInseguimentoVerde, 1);
- TextDrawUseBox(SfondoInseguimentoVerde, 1);
- TextDrawBoxColor(SfondoInseguimentoVerde, 513154740);
- TextDrawTextSize(SfondoInseguimentoVerde, 394.000000, 0.000000);
- SfondoInseguimentoAzzurro = TextDrawCreate(400.000000, 366.000000, "boxazzurro");
- TextDrawBackgroundColor(SfondoInseguimentoAzzurro, 0);
- TextDrawFont(SfondoInseguimentoAzzurro, 1);
- TextDrawLetterSize(SfondoInseguimentoAzzurro, 0.460000, 1.600010);
- TextDrawColor(SfondoInseguimentoAzzurro, 0);
- TextDrawSetOutline(SfondoInseguimentoAzzurro, 0);
- TextDrawSetProportional(SfondoInseguimentoAzzurro, 1);
- TextDrawSetShadow(SfondoInseguimentoAzzurro, 1);
- TextDrawUseBox(SfondoInseguimentoAzzurro, 1);
- TextDrawBoxColor(SfondoInseguimentoAzzurro, 513198260);
- TextDrawTextSize(SfondoInseguimentoAzzurro, 463.000000, 0.000000);
- TextInseguimento = TextDrawCreate(274.000000, 339.000000, " Chase");
- TextDrawBackgroundColor(TextInseguimento, 255);
- TextDrawFont(TextInseguimento, 0);
- TextDrawLetterSize(TextInseguimento, 0.629999, 2.599999);
- TextDrawColor(TextInseguimento, -1);
- TextDrawSetOutline(TextInseguimento, 0);
- TextDrawSetProportional(TextInseguimento, 1);
- TextDrawSetShadow(TextInseguimento, 1);
- TextPessimo = TextDrawCreate(188.000000, 363.000000, " Bad");
- TextDrawBackgroundColor(TextPessimo, 255);
- TextDrawFont(TextPessimo, 1);
- TextDrawLetterSize(TextPessimo, 0.339999, 2.000000);
- TextDrawColor(TextPessimo, -1);
- TextDrawSetOutline(TextPessimo, 0);
- TextDrawSetProportional(TextPessimo, 1);
- TextDrawSetShadow(TextPessimo, 1);
- TextMediocre = TextDrawCreate(258.000000, 363.000000, "Average");
- TextDrawBackgroundColor(TextMediocre, 255);
- TextDrawFont(TextMediocre, 1);
- TextDrawLetterSize(TextMediocre, 0.339999, 2.000000);
- TextDrawColor(TextMediocre, -1);
- TextDrawSetOutline(TextMediocre, 0);
- TextDrawSetProportional(TextMediocre, 1);
- TextDrawSetShadow(TextMediocre, 1);
- TextBuono = TextDrawCreate(344.000000, 363.000000, "Good");
- TextDrawBackgroundColor(TextBuono, 255);
- TextDrawFont(TextBuono, 1);
- TextDrawLetterSize(TextBuono, 0.339999, 2.000000);
- TextDrawColor(TextBuono, -1);
- TextDrawSetOutline(TextBuono, 0);
- TextDrawSetProportional(TextBuono, 1);
- TextDrawSetShadow(TextBuono, 1);
- TextOttimo = TextDrawCreate(410.000000, 363.000000, "Excellent");
- TextDrawBackgroundColor(TextOttimo, 255);
- TextDrawFont(TextOttimo, 1);
- TextDrawLetterSize(TextOttimo, 0.339999, 2.000000);
- TextDrawColor(TextOttimo, -1);
- TextDrawSetOutline(TextOttimo, 0);
- TextDrawSetProportional(TextOttimo, 1);
- TextDrawSetShadow(TextOttimo, 1);
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- Giocatore[i][IdGara]=-1;
- TextPunti[i] = TextDrawCreate(288.000000, 386.000000, "Points: 0000");
- TextDrawBackgroundColor(TextPunti[i], 255);
- TextDrawFont(TextPunti[i], 1);
- TextDrawLetterSize(TextPunti[i], 0.339999, 2.000000);
- TextDrawColor(TextPunti[i], -1);
- TextDrawSetOutline(TextPunti[i], 0);
- TextDrawSetProportional(TextPunti[i], 1);
- TextDrawSetShadow(TextPunti[i], 1);
- TimerText[i] = TextDrawCreate(542.000000, 150.000000, "00:00");
- TextDrawBackgroundColor(TimerText[i], 255);
- TextDrawFont(TimerText[i], 2);
- TextDrawLetterSize(TimerText[i], 0.610000, 4.099999);
- TextDrawColor(TimerText[i], TURCHESE);
- TextDrawSetOutline(TimerText[i], 0);
- TextDrawSetProportional(TimerText[i], 1);
- TextDrawSetShadow(TimerText[i], 1);
- TextGiriContatore[i] = TextDrawCreate(542.000000, 192.000000, "Laps: 1/3");
- TextDrawBackgroundColor(TextGiriContatore[i], 255);
- TextDrawFont(TextGiriContatore[i], 1);
- TextDrawLetterSize(TextGiriContatore[i], 0.460000, 1.000000);
- TextDrawColor(TextGiriContatore[i], -1);
- TextDrawSetOutline(TextGiriContatore[i], 0);
- TextDrawSetProportional(TextGiriContatore[i], 1);
- TextDrawSetShadow(TextGiriContatore[i], 1);
- }
- return 1;
- }
- //============================================================ONFILTERSCRIPTEXIT
- public OnFilterScriptExit()
- {
- SalvaGare();
- return 1;
- }
- //===============================================================ONPLAYERCONNECT
- public OnPlayerConnect(playerid)
- {
- return 1;
- }
- //============================================================ONPLAYERDISCONNECT
- public OnPlayerDisconnect(playerid, reason)
- {
- if(Gara[Giocatore[playerid][IdGara]][Inseguimento] && Gara[Giocatore[playerid][IdGara]][Avviata]==1)
- {
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if(Giocatore[i][IdGara]==Giocatore[playerid][IdGara] && i!=playerid)
- {
- GetPlayerName(i,nome,sizeof(nome));
- format(stringa,sizeof(stringa),"[RACE:] {8ECE46}%s{FFFFFF} wons the race because the opponent disconnected.",nome);
- SendClientMessageToAll(BIANCO,stringa);
- GivePlayerMoney(i,Gara[Giocatore[i][IdGara]][Costo]*2);
- LasciaGara(i);
- }
- }
- }
- LasciaGara(playerid);
- Giocatore[playerid][Costruttore]=0;
- return 1;
- }
- //===========================================================ONPLAYERCOMMANDTEXT
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- //=====================================GARE
- if(!strcmp(cmdtext,"/race",true))
- {
- if(Giocatore[playerid][Costruttore]==1) return SendClientMessage(playerid,ROSSO,"[ERROR:] {FFFFFF}You are in builder mode.");
- format(stringa,sizeof(stringa),"");
- for(new i=0;i<=GareCaricate; i++)
- {
- if(Gara[i][Giri]>1 && Gara[i][Inseguimento]==0)
- format(stringa2,sizeof(stringa2),"{F58C5B}Circuit-{FFFFFF}%s (%d laps)",Gara[i][Nome],Gara[i][Giri]);
- if(Gara[i][Giri]==1 && Gara[i][Inseguimento]==0)
- format(stringa2,sizeof(stringa2),"{97EA68}Sprint-{FFFFFF}%s",Gara[i][Nome]);
- if(Gara[i][Giri]>1 && Gara[i][Inseguimento]==1)
- format(stringa2,sizeof(stringa2),"{446ED1}Chase-{FFFFFF}%s (%d laps)",Gara[i][Nome],Gara[i][Giri]);
- if(Gara[i][Giri]==1 && Gara[i][Inseguimento]==1)
- format(stringa2,sizeof(stringa2),"{446ED1}Chase-{FFFFFF}%s",Gara[i][Nome]);
- strins(stringa,stringa2,strlen(stringa),sizeof(stringa));
- if(i!=GareCaricate)
- strins(stringa,"\n",strlen(stringa),sizeof(stringa));
- }
- ShowPlayerDialog(playerid,DIALOGGARE,DIALOG_STYLE_LIST,"Avaible races",stringa,"Join","Exit");
- return 1;
- }
- //=====================================LASCIAGARA
- if(!strcmp(cmdtext,"/quitrace",true))
- {
- if(Giocatore[playerid][IdGara]==-1) return SendClientMessage(playerid,ROSSO,"[ERROR:] {FFFFFF}You did not join any race.");
- if(Gara[Giocatore[playerid][IdGara]][Inseguimento] && Gara[Giocatore[playerid][IdGara]][Avviata]==1)
- {
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if(Giocatore[i][IdGara]==Giocatore[playerid][IdGara] && i!=playerid)
- {
- GetPlayerName(i,nome,sizeof(nome));
- format(stringa,sizeof(stringa),"[RACE:] {8ECE46}%s{FFFFFF} wons the race because the opponent quitted.",nome);
- SendClientMessageToAll(BIANCO,stringa);
- GivePlayerMoney(i,Gara[Giocatore[i][IdGara]][Costo]*2);
- LasciaGara(i);
- }
- }
- }
- LasciaGara(playerid);
- return 1;
- }
- //=====================================PRONTO
- if(!strcmp(cmdtext,"/ready",true))
- {
- if(Giocatore[playerid][IdGara]==-1) return SendClientMessage(playerid,ROSSO,"[ERROR:] {FFFFFF}You did not join any race.");
- if(Giocatore[playerid][Pronto]==1) return SendClientMessage(playerid,ROSSO,"[ERROR:] {FFFFFF} You are yet ready, wait opponents to be.");
- SendClientMessage(playerid,BIANCO,"[PRONTO:] Now you are ready, wait other players to be.");
- Gara[Giocatore[playerid][IdGara]][PartecipantiPronti]++;
- Giocatore[playerid][Pronto]=1;
- if(Gara[Giocatore[playerid][IdGara]][Partecipanti]==Gara[Giocatore[playerid][IdGara]][PartecipantiPronti] && Gara[Giocatore[playerid][IdGara]][Inseguimento]==0)
- AvviaGara(Giocatore[playerid][IdGara]);
- if(Gara[Giocatore[playerid][IdGara]][PartecipantiPronti]==2 && Gara[Giocatore[playerid][IdGara]][Inseguimento]==1)
- AvviaGara(Giocatore[playerid][IdGara]);
- return 1;
- }
- //=====================================COSTRUISCIGARA
- if(!strcmp(cmdtext,"/builder",true))
- {
- if(!IsPlayerAdmin(playerid)) return 1;
- if(Giocatore[playerid][IdGara]!=-1) return SendClientMessage(playerid,ROSSO,"[ERROR:]{FFFFFF} You cannot build races while racing.");
- ShowPlayerDialog(playerid,DIALOGINFOCOSTRUTTORE,0,"Info Builder","{FFFFFF}Welcome in the builder mode of {C14124}PRaceSystem{FFFFFF}.\nNow you have to inserit some race informations:\n•Race's Name\n•Laps\n•Cost\n•Creation of a checkpoint list\n\nNote: During the builder mode you cannot join races.","Proceed","");
- GareEditor++;
- Giocatore[playerid][GaraEditorId]=GareEditor;
- Giocatore[playerid][Costruttore]=1;
- format(stringa,sizeof(stringa),"Races/Race%d.txt",GareEditor);
- new File:nomegara=fopen(stringa, io_write);
- fwrite(nomegara,"Name,1,50,1000,Nobody,0");
- fclose(nomegara);
- return 1;
- }
- //======================================CHECK
- if (!strcmp("/check", cmdtext, true))
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,ROSSO,"[ERROR:] {FFFFFF}You are not logged as RCON Admin");
- if(Giocatore[playerid][Costruttore]==0) return SendClientMessage(playerid,ROSSO,"[ERROR:]{FFFFFF} You are not in builder mode.");
- if(Giocatore[playerid][AttivaCheck]==0) return SendClientMessage(playerid,ROSSO,"[ERROR:]{FFFFFF} Finish to inserit race information before creating a checkpoint list.");
- SendClientMessage(playerid,VERDE,"[CHECKPOINT:] {FFFFFF}Checkpoint saved.");
- format(stringa,sizeof(stringa),"Races/Check%d.txt",Giocatore[playerid][GaraEditorId]);
- new File:nomegara=fopen(stringa, io_append);
- GetPlayerPos(playerid,XPosizione,YPosizione,ZPosizione);
- format(stringagara,sizeof(stringagara),"%f,%f,%f,\r\n",XPosizione,YPosizione,ZPosizione);
- SetPlayerCheckpoint(playerid,XPosizione,YPosizione,ZPosizione,9);
- fwrite(nomegara,stringagara);
- fclose(nomegara);
- return 1;
- }
- //====================================FINECHECK
- if(!strcmp("/endcheck", cmdtext, true))
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,ROSSO,"[ERROR:] {FFFFFF}You are not logged as RCON Admin");
- if(Giocatore[playerid][Costruttore]==0) return SendClientMessage(playerid,ROSSO,"[ERROR:]{FFFFFF} You are not in builder mode.");
- if(Giocatore[playerid][AttivaCheck]==0) return SendClientMessage(playerid,ROSSO,"[ERROR:]{FFFFFF} To finish, create first a checkpoint list with /check");
- Giocatore[playerid][Costruttore]=0;
- Giocatore[playerid][AttivaCheck]=0;
- SendClientMessage(playerid,BIANCO,"[EDITOR:] You completed the race.");
- DisablePlayerCheckpoint(playerid);
- SalvaGare();
- for(new i=0;i<MAX_PLAYERS;i++){
- LasciaGara(i);}
- SendClientMessageToAll(BIANCO,"[ANNOUNCE:] Administrator has build a new race. In order to load all the other races have been forced to finish.");
- CaricaGare();
- return 1;
- }
- return 0;
- }
- //===================================================ONPLAYERENTERRACECHECKPOINT
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- if(Giocatore[playerid][IdGara]==-1) return 1;
- new g=Giocatore[playerid][IdGara];
- new c=Giocatore[playerid][Checkpoint];
- if(Gara[Giocatore[playerid][IdGara]][Avviata]==0) return 1;
- SuonoGiocatore(playerid,1138);
- //==============SECHECKPOINT==ULTIMO
- if(Giocatore[playerid][Checkpoint]==Gara[Giocatore[playerid][IdGara]][NumeroCheckpoint])
- {
- //===========SEGIRO=ULTIMO
- if(Giocatore[playerid][Giro]==Gara[Giocatore[playerid][IdGara]][Giri])
- {
- GetPlayerName(playerid,nome,sizeof(nome));
- Gara[Giocatore[playerid][IdGara]][Podio]++;
- if(Giocatore[playerid][Tempo]<Gara[Giocatore[playerid][IdGara]][Record])
- {
- new Minuti=floatround(Giocatore[playerid][Tempo]/60);
- new Secondi=Giocatore[playerid][Tempo]-(Minuti*60);
- format(stringa,sizeof(stringa),"[RECORD:] Player:{8ECE46}%s{FFFFFF} Track: {446ED1}%s{FFFFFF} Record: {C14124}%02d:%02d",nome,Gara[Giocatore[playerid][IdGara]][Nome],Minuti,Secondi);
- SendClientMessageToAll(BIANCO,stringa);
- Gara[Giocatore[playerid][IdGara]][Record]=Giocatore[playerid][Tempo];
- format(Gara[Giocatore[playerid][IdGara]][GiocatoreRecord],25,nome);
- }
- if(!Gara[Giocatore[playerid][IdGara]][Inseguimento])
- {
- format(stringa,sizeof(stringa),"[RACE:] {8ECE46}%s{FFFFFF} finish the race. Position: {C14124}%d",nome,Gara[Giocatore[playerid][IdGara]][Podio]);
- GivePlayerMoney(playerid,floatround(Gara[Giocatore[playerid][IdGara]][Costo]*Gara[Giocatore[playerid][IdGara]][PartecipantiPronti]/Gara[Giocatore[playerid][IdGara]][Podio]));
- SendClientMessageToAll(BIANCO,stringa);
- }
- if(Gara[Giocatore[playerid][IdGara]][Inseguimento])
- {
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if(Giocatore[i][IdGara]==Giocatore[playerid][IdGara] && i!=playerid)
- {
- if(Giocatore[playerid][Punti]>=Giocatore[i][Punti])
- {
- GetPlayerName(playerid,nome,sizeof(nome));
- format(stringa,sizeof(stringa),"[RACE:] {8ECE46}%s{FFFFFF} wons the chase race with {C14124}%d{FFFFFF} points.",nome,Giocatore[playerid][Punti]);
- SendClientMessageToAll(BIANCO,stringa);
- GivePlayerMoney(playerid,Gara[Giocatore[playerid][IdGara]][Costo]*2);
- }
- if(Giocatore[playerid][Punti]<Giocatore[i][Punti])
- {
- GetPlayerName(i,nome,sizeof(nome));
- format(stringa,sizeof(stringa),"[RACE:] {8ECE46}%s{FFFFFF} wons the chase race with {C14124}%d{FFFFFF} points.",nome,Giocatore[i][Punti]);
- SendClientMessageToAll(BIANCO,stringa);
- GivePlayerMoney(i,Gara[Giocatore[playerid][IdGara]][Costo]*2);
- }
- LasciaGara(i);
- }
- }
- }
- DisablePlayerRaceCheckpoint(playerid);
- LasciaGara(playerid);
- return 1;
- }
- //========SEGIRO!=ULTIMO
- else
- {
- Giocatore[playerid][Giro]++;
- SetPlayerRaceCheckpoint(playerid,0,CheckpointGara[g][0][CXPos],CheckpointGara[g][0][CYPos],CheckpointGara[g][0][CZPos],CheckpointGara[g][1][CXPos],CheckpointGara[g][1][CYPos],CheckpointGara[g][1][CZPos],9);
- Giocatore[playerid][Checkpoint]=0;
- format(stringa,sizeof(stringa),"Laps: %d/%d",Giocatore[playerid][Giro],Gara[Giocatore[playerid][IdGara]][Giri]);
- TextDrawSetString(TextGiriContatore[playerid],stringa);
- return 1;
- }
- }
- //=========SECHECKPOINTNORMALE
- if(Giocatore[playerid][Checkpoint]<Gara[Giocatore[playerid][IdGara]][NumeroCheckpoint]-1)
- {
- Giocatore[playerid][Checkpoint]++;
- c=Giocatore[playerid][Checkpoint];
- SetPlayerRaceCheckpoint(playerid,0,CheckpointGara[g][c][CXPos],CheckpointGara[g][c][CYPos],CheckpointGara[g][c][CZPos],CheckpointGara[g][c+1][CXPos],CheckpointGara[g][c+1][CYPos],CheckpointGara[g][c+1][CZPos],9);
- return 1;
- }
- //=========SECHECKPOINTFINALE
- else if(Giocatore[playerid][Checkpoint]==Gara[Giocatore[playerid][IdGara]][NumeroCheckpoint]-1)
- {
- Giocatore[playerid][Checkpoint]++;
- c=Giocatore[playerid][Checkpoint];
- SetPlayerRaceCheckpoint(playerid,1,CheckpointGara[g][c][CXPos],CheckpointGara[g][c][CYPos],CheckpointGara[g][c][CZPos],CheckpointGara[g][c+1][CXPos],CheckpointGara[g][c+1][CYPos],CheckpointGara[g][c+1][CZPos],9);
- return 1;
- }
- return 1;
- }
- //===================================================ONPLAYERLEAVERACECHECKPOINT
- public OnPlayerLeaveRaceCheckpoint(playerid)
- {
- OnPlayerEnterRaceCheckpoint(playerid);
- return 1;
- }
- //==============================================================ONDIALOGRESPONSE
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid==DIALOGINFOGARA2)
- {
- Giocatore[playerid][AttivaCheck]=1;
- return 1;
- }
- if(dialogid==DIALOGINSEGUIMENTO)
- {
- if(strcmp(inputtext,"Yes",true) && strcmp(inputtext,"No",true)) return ShowPlayerDialog(playerid,DIALOGINSEGUIMENTO,DIALOG_STYLE_INPUT,"Chase option","{FFFFFF}ERROR:\nType Yes or No\nDo you want this race to be a Chase type?\n(Type Yes or No)","Continue","");
- format(stringa,sizeof(stringa),"Races/Race%d.txt",Giocatore[playerid][GaraEditorId]);
- new File:nomegara=fopen(stringa, io_append);
- if(!strcmp(inputtext,"Yes",true))
- fwrite(nomegara,",1");
- if(!strcmp(inputtext,"No",true))
- fwrite(nomegara,",0");
- fclose(nomegara);
- ShowPlayerDialog(playerid,DIALOGINFOGARA2,0,"Race Info Menu","{FFFFFF}You created the race's info file.\nNow you need a checkpoint list.\nUse the command \"{C14124}/check{FFFFFF}\" to create checkpoint for your race.\nOnce you've finished, type \"{C14124}/endcheck{FFFFFF}\" to exit builder mode and load the new race.","Go","");
- return 1;
- }
- if(dialogid==DIALOGCOSTOGARA)
- {
- if(!strlen(inputtext) || !isNumeric(inputtext) || strval(inputtext)<=0) return ShowPlayerDialog(playerid,DIALOGCOSTOGARA,DIALOG_STYLE_INPUT,"Race's Cost","{FFFFFF}Type the cost to join your race (min 1):","Continue","");
- format(stringa,sizeof(stringa),"Races/Race%d.txt",Giocatore[playerid][GaraEditorId]);
- new File:nomegara=fopen(stringa, io_append);
- GetPlayerName(playerid,nome,sizeof(nome));
- format(stringa,sizeof(stringa),"%d,1000,Nobody,%s",strval(inputtext),nome);
- fwrite(nomegara,stringa);
- fclose(nomegara);
- ShowPlayerDialog(playerid,DIALOGINSEGUIMENTO,DIALOG_STYLE_INPUT,"Chase option","{FFFFFF}Do you want this race to be a Chase type?\n(Type Yes or No)","Continue","");
- return 1;
- }
- if(dialogid==DIALOGGIRIGARA)
- {
- if(!strlen(inputtext) || !isNumeric(inputtext) || strval(inputtext)<=0) return ShowPlayerDialog(playerid,DIALOGGIRIGARA,DIALOG_STYLE_INPUT,"Race's Laps","{FFFFFF}ERROR:\nType the number of laps for your races (1:sprint 2-more:circuit)","Continue","");
- format(stringa,sizeof(stringa),"Races/Race%d.txt",Giocatore[playerid][GaraEditorId]);
- new File:nomegara=fopen(stringa, io_append);
- format(stringa,sizeof(stringa),"%d,",strval(inputtext));
- fwrite(nomegara,stringa);
- fclose(nomegara);
- ShowPlayerDialog(playerid,DIALOGCOSTOGARA,DIALOG_STYLE_INPUT,"Race's Cost","{FFFFFF}Type the cost to join your race (min 1):","Continue","");
- return 1;
- }
- if(dialogid==DIALOGNOMEGARA)
- {
- if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOGNOMEGARA,DIALOG_STYLE_INPUT,"Race's Name","{FFFFFF}ERROR:\nType the name of your race:","Continua","");
- format(stringa,sizeof(stringa),"Races/Race%d.txt",Giocatore[playerid][GaraEditorId]);
- new File:nomegara=fopen(stringa, io_write);
- format(stringa,sizeof(stringa),"%s,",inputtext);
- fwrite(nomegara,stringa);
- fclose(nomegara);
- ShowPlayerDialog(playerid,DIALOGGIRIGARA,DIALOG_STYLE_INPUT,"Race's Laps","{FFFFFF}Type the number of laps for your races (1:sprint 2-more:circuit)","Continue","");
- return 1;
- }
- if(dialogid==DIALOGINFOCOSTRUTTORE)
- {
- ShowPlayerDialog(playerid,DIALOGNOMEGARA,DIALOG_STYLE_INPUT,"Race's Name","{FFFFFF}Type the name of you race:","Continue","");
- return 1;
- }
- if(dialogid==DIALOGINFO) return 1;
- if(dialogid==DIALOGGARE && response)
- {
- if(Giocatore[playerid][IdGara]!=-1) return SendClientMessage(playerid,ROSSO,"[ERROR:] {FFFFFF}You already joined another race.");
- if(Gara[listitem][Avviata]==1) return SendClientMessage(playerid,ROSSO,"[ERROR:] {FFFFFF}This race is already started. Wait its ending before joining.");
- if(Gara[listitem][Inseguimento]==1)
- {
- if(Gara[listitem][Partecipanti]==2) return SendClientMessage(playerid,ROSSO,"[ERROR:] {FFFFFF}There are already two player in this race (chase race limit)");
- if(Gara[listitem][Partecipanti]==0)
- {
- SendClientMessage(playerid,BIANCO,"[RACE:] You are the hunted. When the race starts, stay in front of your opponent and try to escape.");
- }
- if(Gara[listitem][Partecipanti]==1)
- {
- SendClientMessage(playerid,BIANCO,"[RACE:] You are the hunter. When the race starts, stay behind your opponent and chase him.");
- Giocatore[playerid][Inseguitore]=1;
- }
- }
- Giocatore[playerid][IdGara]=listitem;
- GetPlayerName(playerid,nome,sizeof(nome));
- format(stringa,sizeof(stringa),"{8CE46C}%s {FFFFFF}join the race.",nome);
- GivePlayerMoney(playerid,-Gara[listitem][Costo]);
- MandaMessaggioPartecipanti(listitem,stringa);
- #if defined TELEPORT_TO_START
- SetPlayerPos(playerid,CheckpointGara[listitem][0][CXPos],CheckpointGara[listitem][0][CYPos],CheckpointGara[listitem][0][CZPos]);
- SendClientMessage(playerid,BIANCO,"[RACE:] You join the race. Type \"{C14124}/Ready{FFFFFF}\" when you are ready.");
- #else
- SendClientMessage(playerid,BIANCO,"[RACE:] You join the race. Go to the checkpoint and type \"{C14124}/Ready{FFFFFF}\" when you are ready");
- #endif
- Gara[listitem][Partecipanti]++;
- SetPlayerRaceCheckpoint(playerid,0,CheckpointGara[listitem][0][CXPos],CheckpointGara[listitem][0][CYPos],CheckpointGara[listitem][0][CZPos],CheckpointGara[listitem][1][CXPos],CheckpointGara[listitem][1][CYPos],CheckpointGara[listitem][1][CZPos],9);
- new minuti=floatround(Gara[listitem][Record]/60);
- new secondi=Gara[listitem][Record]-(minuti*60);
- format(stringa,sizeof(stringa),"{FFFFFF}Track: {8CE46C}%s\n{FFFFFF}Laps: {8CE46C}%d\n{FFFFFF}Cost: {8CE46C}%d$\n{FFFFFF}Record: {8CE46C}%02d:%02d\n{FFFFFF}Player's Record: {8CE46C}%s\n{FFFFFF}Builder: {8CE46C}%s",Gara[listitem][Nome],Gara[listitem][Giri],Gara[listitem][Costo],minuti,secondi,Gara[listitem][GiocatoreRecord],Gara[listitem][Produttore]);
- ShowPlayerDialog(playerid,DIALOGINFO,0,"Race Info",stringa,"Quit","");
- return 1;
- }
- return 1;
- }
- //====================================================MANDAMESSAGGIOPARTECIPANTI
- stock MandaMessaggioPartecipanti(idGara,Messaggio[])
- {
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if(Giocatore[i][IdGara]==idGara)
- SendClientMessage(i,BIANCO,Messaggio);
- }
- }
- //================================================================SUONOGIOCATORE
- stock SuonoGiocatore(playerid,idsuono)
- {
- new Float:SPosX,Float:SPosY,Float:SPosZ;
- GetPlayerPos(playerid,SPosX,SPosY,SPosZ);
- PlayerPlaySound(playerid,idsuono,SPosX,SPosY,SPosZ);
- return 1;
- }
- //=====================================================================ISNUMERIC
- stock isNumeric(const string[]) {
- new length=strlen(string);
- if (length==0) return false;
- for (new i = 0; i < length; i++) {
- if (
- (string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+')
- || (string[i]=='-' && i!=0)
- || (string[i]=='+' && i!=0)
- ) return false;
- }
- if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement