Dude I don't know which one is it as I downloaded the script. I don't know scripting or I would have done it myself.
Код:
#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;
}