[Ajuda] Bug
#1

Ola,galera,boa noite Baixei esse FS que e baseado no FS do ryder rrace so que esse e traduzido

ele funcionou normal mas quando estou construindo corrida acontecem varios bugs com ele um deles e se tiver outro administrador logado na rcon enquanto eu construo a corrida ele simplesmente manda uma dialog para o outro administrador falando para ele salvar e encerrar a corrida tipo essa dialog era pra aparecer pra mim quando eu terminasse de construir mas aparece depois de alguns segundos para o outro admin

PHP код:
/*
Postado pela equipe Play Evolution SA-MP
Creditos reservados ao criador...
Site: www.PlayEvolutionSamp.net
Suporte: suporte@playevolution.net
---------------------------------------------------------------------------------------------
-            Play EvolutioN ™ - Tudo que vocк quiser para seu servidor SA-MP!               -
---------------------------------------------------------------------------------------------
-                           ******** **       ******** **    **                             -
-                           **    ** **       **    **  **  **                              -
-                           *******  **       ********   * *                                -
-                           **       **       **    **   ***                                -
-                           **       ******** **    **   ***                                -
---------------------------------------------------------------------------------------------
- ******** **        **   *******   **        **    **  *********  **   *******   **    *** -
- **        **      **   **     **  **        **    **      *      **  **     **  **   * ** -
- *******    **    **    **     **  **        **    **      *      **  **     **  **  *  ** -
- **          **  **     **     **  **        **    **      *      **  **     **  ** *   ** -
- ********     ****       *******   ********   ******       *      **   *******   ***    ** -
---------------------------------------------------------------------------------------------
*/
#include < a_samp >
#include < dof2   >
#include < zcmd   >
#define ForEach(%0,%1) \
for(new %0; %!= %1; %0++) if(IsPlayerConnected(%0) && !IsPlayerNPC(%0))
#define Loop(%0,%1) \
for(new %0; %!= %1; %0++)
#define IsOdd(%1) \
((%1) & 1)
#define ConvertTime(%0,%1,%2,%3,%4) \
new \
Float: %floatdiv(%160000) \
;\
%
floatround(%0floatround_tozero); \
%
floatround(floatmul(%- %260), floatround_tozero); \
%
floatround(floatmul(floatmul(%- %260) - %31000), floatround_tozero)
#define function%0(%1) \
forward%0(%1); public%0(%1)
#define DIRETORIO_CORRIDAS          "/Corridas/%s.ini"
#define DIRETORIO_NOME_CORRIDAS     "/Corridas/NomeCorridas/%s.txt"
#define DEBUG_CORRIDA               0
#define TAMANHO_CHECKPOINTS         8
#define CONTAGEM_START              60
#define MAX_CHECKPOINTS             800
#define MAX_CORRIDAS                500
#define MAX_CORRIDA_TEMPO           1000
#define CINZA                       0xAFAFAFAA
#define VERDE                       0x9FFF00FF
#define VERMELHO                    0xE60000FF
#define AMARELO                     0xFFFF00AA
#define BRANCO                      0xFFFFFFAA
new
vNames[212][] =
{
    {
        
"Landstalker"},
    {
        
"Bravura"},
    {
        
"Buffalo"},
    {
        
"Linerunner"},
    {
        
"Perrenial"},
    {
        
"Sentinel"},
    {
        
"Dumper"},
    {
        
"Firetruck"},
    {
        
"Trashmaster"},
    {
        
"Stretch"},
    {
        
"Manana"},
    {
        
"Infernus"},
    {
        
"Voodoo"},
    {
        
"Pony"},
    {
        
"Mule"},
    {
        
"Cheetah"},
    {
        
"Ambulance"},
    {
        
"Leviathan"},
    {
        
"Moonbeam"},
    {
        
"Esperanto"},
    {
        
"Taxi"},
    {
        
"Washington"},
    {
        
"Bobcat"},
    {
        
"Mr Whoopee"},
    {
        
"BF Injection"},
    {
        
"Hunter"},
    {
        
"Premier"},
    {
        
"Enforcer"},
    {
        
"Securicar"},
    {
        
"Banshee"},
    {
        
"Predator"},
    {
        
"Bus"},
    {
        
"Rhino"},
    {
        
"Barracks"},
    {
        
"Hotknife"},
    {
        
"Trailer 1"},
    {
        
"Previon"},
    {
        
"Coach"},
    {
        
"Cabbie"},
    {
        
"Stallion"},
    {
        
"Rumpo"},
    {
        
"RC Bandit"},
    {
        
"Romero"},
    {
        
"Packer"},
    {
        
"Monster"},
    {
        
"Admiral"},
    {
        
"Squalo"},
    {
        
"Seasparrow"},
    {
        
"Pizzaboy"},
    {
        
"Tram"},
    {
        
"Trailer 2"},
    {
        
"Turismo"},
    {
        
"Speeder"},
    {
        
"Reefer"},
    {
        
"Tropic"},
    {
        
"Flatbed"},
    {
        
"Yankee"},
    {
        
"Caddy"},
    {
        
"Solair"},
    {
        
"Berkley's RC Van"},
    {
        
"Skimmer"},
    {
        
"PCJ-600"},
    {
        
"Faggio"},
    {
        
"Freeway"},
    {
        
"RC Baron"},
    {
        
"RC Raider"},
    {
        
"Glendale"},
    {
        
"Oceanic"},
    {
        
"Sanchez"},
    {
        
"Sparrow"},
    {
        
"Patriot"},
    {
        
"Quad"},
    {
        
"Coastguard"},
    {
        
"Dinghy"},
    {
        
"Hermes"},
    {
        
"Sabre"},
    {
        
"Rustler"},
    {
        
"ZR-350"},
    {
        
"Walton"},
    {
        
"Regina"},
    {
        
"Comet"},
    {
        
"BMX"},
    {
        
"Burrito"},
    {
        
"Camper"},
    {
        
"Marquis"},
    {
        
"Baggage"},
    {
        
"Dozer"},
    {
        
"Maverick"},
    {
        
"News Chopper"},
    {
        
"Rancher"},
    {
        
"FBI Rancher"},
    {
        
"Virgo"},
    {
        
"Greenwood"},
    {
        
"Jetmax"},
    {
        
"Hotring"},
    {
        
"Sandking"},
    {
        
"Blista Compact"},
    {
        
"Police Maverick"},
    {
        
"Boxville"},
    {
        
"Benson"},
    {
        
"Mesa"},
    {
        
"RC Goblin"},
    {
        
"Hotring Racer A"},
    {
        
"Hotring Racer B"},
    {
        
"Bloodring Banger"},
    {
        
"Rancher"},
    {
        
"Super GT"},
    {
        
"Elegant"},
    {
        
"Journey"},
    {
        
"Bike"},
    {
        
"Mountain Bike"},
    {
        
"Beagle"},
    {
        
"Cropdust"},
    {
        
"Stunt"},
    {
        
"Tanker"},
    {
        
"Roadtrain"},
    {
        
"Nebula"},
    {
        
"Majestic"},
    {
        
"Buccaneer"},
    {
        
"Shamal"},
    {
        
"Hydra"},
    {
        
"FCR-900"},
    {
        
"NRG-500"},
    {
        
"HPV1000"},
    {
        
"Cement Truck"},
    {
        
"Tow Truck"},
    {
        
"Fortune"},
    {
        
"Cadrona"},
    {
        
"FBI Truck"},
    {
        
"Willard"},
    {
        
"Forklift"},
    {
        
"Tractor"},
    {
        
"Combine"},
    {
        
"Feltzer"},
    {
        
"Remington"},
    {
        
"Slamvan"},
    {
        
"Blade"},
    {
        
"Freight"},
    {
        
"Streak"},
    {
        
"Vortex"},
    {
        
"Vincent"},
    {
        
"Bullet"},
    {
        
"Clover"},
    {
        
"Sadler"},
    {
        
"Firetruck LA"},
    {
        
"Hustler"},
    {
        
"Intruder"},
    {
        
"Primo"},
    {
        
"Cargobob"},
    {
        
"Tampa"},
    {
        
"Sunrise"},
    {
        
"Merit"},
    {
        
"Utility"},
    {
        
"Nevada"},
    {
        
"Yosemite"},
    {
        
"Windsor"},
    {
        
"Monster A"},
    {
        
"Monster B"},
    {
        
"Uranus"},
    {
        
"Jester"},
    {
        
"Sultan"},
    {
        
"Stratum"},
    {
        
"Elegy"},
    {
        
"Raindance"},
    {
        
"RC Tiger"},
    {
        
"Flash"},
    {
        
"Tahoma"},
    {
        
"Savanna"},
    {
        
"Bandito"},
    {
        
"Freight Flat"},
    {
        
"Streak Carriage"},
    {
        
"Kart"},
    {
        
"Mower"},
    {
        
"Duneride"},
    {
        
"Sweeper"},
    {
        
"Broadway"},
    {
        
"Tornado"},
    {
        
"AT-400"},
    {
        
"DFT-30"},
    {
        
"Huntley"},
    {
        
"Stafford"},
    {
        
"BF-400"},
    {
        
"Newsvan"},
    {
        
"Tug"},
    {
        
"Trailer 3"},
    {
        
"Emperor"},
    {
        
"Wayfarer"},
    {
        
"Euros"},
    {
        
"Hotdog"},
    {
        
"Club"},
    {
        
"Freight Carriage"},
    {
        
"Trailer 3"},
    {
        
"Andromada"},
    {
        
"Dodo"},
    {
        
"RC Cam"},
    {
        
"Launch"},
    {
        
"Police Car (LSPD)"},
    {
        
"Police Car (SFPD)"},
    {
        
"Police Car (LVPD)"},
    {
        
"Police Ranger"},
    {
        
"Picador"},
    {
        
"S.W.A.T. Van"},
    {
        
"Alpha"},
    {
        
"Phoenix"},
    {
        
"Glendale"},
    {
        
"Sadler"},
    {
        
"Luggage Trailer A"},
    {
        
"Luggage Trailer B"},
    {
        
"Stair Trailer"},
    {
        
"Boxville"},
    {
        
"Farm Plow"},
    {
        
"Utility Trailer"}
},
ConstruindoCorrida,
ConstrucaoCorridaTipo,
ConstrucaoVeiculo,
ConstrucaoVeiculoCriado,
ConstrucaoModeloID,
NomeConstrucao[30],
boolBuildTakeVehPos,
BuildVehPosCount,
boolBuildTakeCheckpoints,
ConstruirCheckPointCount,
RaceBusy 0x00,
NomeCorrida[30],
VeiculoCorrida,
CorridaTipo,
TotalCP,
FloatCoordVehCorrida[2][4],
FloatCPCoords[MAX_CHECKPOINTS][4],
CriarVehCorrida[MAX_PLAYERS],
Index,
PlayersCount[2],
CountTimer,
CountAmount,
boolNaCorrida[MAX_PLAYERS],
CorridaTick,
CorridaIniciada,
CPProgesso[MAX_PLAYERS],
Posicao,
FinishCount,
JoinCount,
rCounter,
CorridaTempo,
TextCorridaInfo[MAX_PLAYERS],
InfoTimer[MAX_PLAYERS],
Colocacao[MAX_PLAYERS],
NomeCorridas[MAX_CORRIDAS][128],
TotalCorridas,
boolCorrridasAutomaticas,
TempoProgresso;
new 
CarGod[MAX_VEHICLES];
public 
OnFilterScriptInit()
{
    print(
"\n--------------------------------------");
    print(
" Sistema de corrida carregado com sucesso");
    print(
"--------------------------------------\n");
    return 
1;
}
public 
OnFilterScriptExit()
{
    
ConstrucaoVeiculoCriado = (ConstrucaoVeiculoCriado == 0x01) ? (DestroyVehicle(ConstrucaoVeiculo), ConstrucaoVeiculoCriado 0x00) : (DestroyVehicle(ConstrucaoVeiculo), ConstrucaoVeiculoCriado 0x00);
    
KillTimer(rCounter);
    
KillTimer(CountTimer);
    
Loop(iMAX_PLAYERS)
    {
        
DisablePlayerRaceCheckpoint(i);
        
TextDrawDestroy(CorridaInfo[i]);
        
DestroyVehicle(CriarVehCorrida[i]);
        
NaCorrida[i] = false;
        
KillTimer(InfoTimer[i]);
    }
    
JoinCount 0;
    
FinishCount 0;
    
TempoProgresso 0;
    
CorrridasAutomaticas false;
    
DOF2_Exit();
    return 
1;
}
CMD:construircorrida(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridVERMELHO"[x] Voce Nao й Um Administrador(a) RCON!");
    if(
ConstruindoCorrida != 0) return SendClientMessage(playeridVERMELHO"» Voce esta em Modo de Construзгo !");
    if(
RaceBusy == 0x01) return SendClientMessage(playeridVERMELHO"[x] Espere primeiro atй a corrida termina!");
    if(
IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playeridVERMELHO"[x] Por favor, deixe o seu veнculo Primeiro!");
    
ConstruindoCorrida playerid+1;
    
ShowDialog(playerid599);
    return 
1;
}
CMD:iniciarcorrida(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridVERMELHO"[x] Voce Nao й Um Administrador(a) RCON!");
    if(
CorrridasAutomaticas == true) return SendClientMessage(playeridVERMELHO"[x] Nгo й possнvel. Corrida automбtica estб ativada !");
    if(
ConstruindoCorrida != 0) return SendClientMessage(playeridVERMELHO"[x] Hб alguйm a construзгo de uma corrida!");
    if(
RaceBusy == 0x01 || CorridaIniciada == 1) return SendClientMessage(playeridVERMELHO"[x] Hб uma Corrida atualmente. Espera primeiro atй corrida terminar !");
    if(
isnull(params)) return SendClientMessage(playeridVERMELHO"Use /iniciarcorrida [Nome-Da-Corrida]");
    
LoadRace(playeridparams);
    return 
1;
}
CMD:pararcorrida(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridVERMELHO"[x] Voce Nao й Um Administrador(a) RCON!");
    if(
RaceBusy == 0x00 || CorridaIniciada == 0) return SendClientMessage(playeridVERMELHO"[x] Nгo hб nenhuma corrida para parar ");
    
SendClientMessageToAll(VERMELHO">> O(a) Administrador(a) Fechou a Corrida Atual!!");
    
SetPlayerPos(playerid1242.3445,-1815.5928,14.7578);
    return 
StopRace();
}
CMD:ircorrida(playeridparams[])
{
    if(
CorridaIniciada == 1) return SendClientMessage(playeridVERMELHO"Corrida jб comeзou! Espera primeiro atй o Fim da corrida!");
    if(
RaceBusy == 0x00) return SendClientMessage(playeridVERMELHO"[x] Nгo hб nenhuma corrida para participar!");
    if(
NaCorrida[playerid] == true) return SendClientMessage(playeridVERMELHO"[x] Vocк jб se juntou a uma corrida!");
    if(
IsPlayerInAnyVehicle(playerid)) return SetTimerEx("SetupRaceForPlayer"25000"e"playerid), RemovePlayerFromVehicle(playerid), NaCorrida[playerid] = true;
    
SetupRaceForPlayer(playerid);
    
NaCorrida[playerid] = true;
    
CarGod[GetPlayerVehicleID(playerid)] = true;
    return 
1;
}
CMD:iniciarcorridaautomatica(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridVERMELHO"[x] Voce Nao й Um Administrador(a) RCON!");
    if(
RaceBusy == 0x01 || CorridaIniciada == 1) return SendClientMessage(playeridVERMELHO"[x] Hб uma Corrida atualmente. Espera primeiro atй corrida termina!");
    if(
CorrridasAutomaticas == true) return SendClientMessage(playeridVERMELHO"[x] Jб estб ativado!");
    
CarregarNomeCorridas();
    
CarregarCorridasAutomaticas(NomeCorridas[random(TotalCorridas)]);
    
CorrridasAutomaticas true;
    
SendClientMessage(playeridVERDE">> Vocк iniciou a corrida Automatica. O filterscript vai comeзar uma corrida aleatуria sempre que a corrida anterior acabar!");
    return 
1;
}
CMD:pararcorridaautomatica(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridVERMELHO"[x] Voce Nao й Um Administrador(a) RCON!");
    if(
CorrridasAutomaticas == false) return SendClientMessage(playeridVERMELHO"[x] Jб estб ativado!");
    
CorrridasAutomaticas false;
    return 
1;
}
CMD:saircorrida(playeridparams[])
{
    if(
NaCorrida[playerid] == true)
    {
        
CarGod[GetPlayerVehicleID(playerid)] = false;
        
JoinCount--;
        
NaCorrida[playerid] = false;
        
DestroyVehicle(CriarVehCorrida[playerid]);
        
DisablePlayerRaceCheckpoint(playerid);
        
TextDrawHideForPlayer(playeridCorridaInfo[playerid]);
        
CPProgesso[playerid] = 0;
        
SetPlayerPos(playerid1242.3445,-1815.5928,14.7578);
        
KillTimer(InfoTimer[playerid]);
        
TogglePlayerControllable(playeridtrue);
        
SetCameraBehindPlayer(playerid);
        
#if defined RACE_IN_OTHER_WORLD
        
SetPlayerVirtualWorld(playerid0);
        
#endif
    
} else return SendClientMessage(playeridVERMELHO"[x] Vocк nгo estб em uma corrida!");
    return 
1;
}
public 
OnVehicleDamageStatusUpdate(vehicleidplayerid)
{
    if(
CarGod[vehicleid]) RepairVehicle(vehicleid);
    return 
1;
}
public 
OnPlayerEnterRaceCheckpoint(playerid)
{
    if(
CPProgesso[playerid] == TotalCP -1)
    {
        new
        
TimeStamp,
        
TotalRaceTime,
        
string[256],
        
arquivo[256],
        
pName[MAX_PLAYER_NAME],
        
rTime[3],
        
Prize[2],
        
TempTotalTime,
        
TempTime[3]
        ;
        
Posicao++;
        
GetPlayerName(playeridpNamesizeof(pName));
        
SetVehicleHealth(GetPlayerVehicleID(playerid),999999);
        
TimeStamp GetTickCount();
        
TotalRaceTime TimeStamp CorridaTick;
        
ConvertTime(var, TotalRaceTimerTime[0], rTime[1], rTime[2]);
        switch(
Posicao)
        {
            case 
1Prize[0] = (random(random(5000)) + 10000), Prize[1] = 10;
            case 
2Prize[0] = (random(random(4500)) + 9000), Prize[1] = 9;
            case 
3Prize[0] = (random(random(4000)) + 8000), Prize[1] = 8;
            case 
4Prize[0] = (random(random(3500)) + 7000), Prize[1] = 7;
            case 
5Prize[0] = (random(random(3000)) + 6000), Prize[1] = 6;
            case 
6Prize[0] = (random(random(2500)) + 5000), Prize[1] = 5;
            case 
7Prize[0] = (random(random(2000)) + 4000), Prize[1] = 4;
            case 
8Prize[0] = (random(random(1500)) + 3000), Prize[1] = 3;
            case 
9Prize[0] = (random(random(1000)) + 2000), Prize[1] = 2;
            default: 
Prize[0] = random(random(1000)), Prize[1] = 1;
        }
        
format(stringsizeof(string), "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"pNamePosicao);
        
SendClientMessageToAll(VERMELHOstring);
        
format(stringsizeof(string), "~~~~~~~~~~~~~~~ O Jogador %s Venceu a Corrida em %d Lugar ~~~~~~~~~~~~~~~"pNamePosicao);
        
SendClientMessageToAll(BRANCOstring);
        
format(stringsizeof(string), "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"pNamePosicao);
        
SendClientMessageToAll(VERMELHOstring);
        
format(stringsizeof(string), ""rTime[0], rTime[1], rTime[2]);
        
SendClientMessageToAll(BRANCOstring);
        
format(stringsizeof(string), ""Prize[0], Prize[1]);
        
SendClientMessageToAll(BRANCOstring);
        if(
FinishCount <= 5)
        {
            
format(arquivosizeof(arquivo), DIRETORIO_CORRIDASNomeCorrida);
            
format(stringsizeof(string), "MelhorTempoCorrida-%d"TempoProgresso);
            
TempTotalTime DOF2_GetInt(arquivostring);
            
ConvertTime(var1TempTotalTimeTempTime[0], TempTime[1], TempTime[2]);
            if(
TotalRaceTime <= DOF2_GetInt(arquivostring) || TempTotalTime == 0)
            {
                
DOF2_SetInt(arquivostringTotalRaceTime);
                
format(stringsizeof(string), "MelhorCorrida-%d"TempoProgresso);
                if(
TempTotalTime != 0format(stringsizeof(string), ""pNameDOF2_GetString(arquivostring), -(rTime[1] - TempTime[1]), TempoProgresso+1);
                else 
format(stringsizeof(string), ""pNameTempoProgresso+1);
                
SendClientMessageToAll(VERDE"  ");
                
SendClientMessageToAll(VERDEstring);
                
SendClientMessageToAll(VERDE"  ");
                
format(stringsizeof(string), "MelhorCorrida-%d"TempoProgresso);
                
DOF2_SetString(arquivostringpName);
                
TempoProgresso++;
            }
        }
        
FinishCount++;
        
GivePlayerMoney(playeridPrize[0]);
        
SetPlayerScore(playeridGetPlayerScore(playerid) + Prize[0]);
        
DisablePlayerRaceCheckpoint(playerid);
        
CPProgesso[playerid]++;
        
SetPlayerPos(playerid1242.3445,-1815.5928,14.7578);
        if(
FinishCount >= JoinCount) return StopRace();
    }
    else
    {
        
CPProgesso[playerid]++;
        
CPCoords[CPProgesso[playerid]][3]++;
        
Colocacao[playerid] = floatround(CPCoords[CPProgesso[playerid]][3], floatround_floor);
        
SetCP(playeridCPProgesso[playerid], CPProgesso[playerid]+1TotalCPCorridaTipo);
        
PlayerPlaySound(playerid11370.00.00.0);
    }
    return 
1;
}
public 
OnPlayerDisconnect(playerid)
{
    if(
NaCorrida[playerid] == true)
    {
        
JoinCount--;
        
NaCorrida[playerid] = false;
        
DestroyVehicle(CriarVehCorrida[playerid]);
        
DisablePlayerRaceCheckpoint(playerid);
        
TextDrawHideForPlayer(playeridCorridaInfo[playerid]);
        
CPProgesso[playerid] = 0;
        
KillTimer(InfoTimer[playerid]);
        
#if defined RACE_IN_OTHER_WORLD
        
SetPlayerVirtualWorld(playerid0);
        
#endif
    
}
    
TextDrawDestroy(CorridaInfo[playerid]);
    if(
ConstruindoCorrida == playerid+1ConstruindoCorrida 0;
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    
CorridaInfo[playerid] = TextDrawCreate(633.000000348.000000" ");
    
TextDrawAlignment(CorridaInfo[playerid], 3);
    
SetVehicleHealth(GetPlayerVehicleID(playerid),999999);
    
TextDrawBackgroundColor(CorridaInfo[playerid], 255);
    
TextDrawFont(CorridaInfo[playerid], 1);
    
TextDrawLetterSize(CorridaInfo[playerid], 0.2400001.100000);
    
TextDrawColor(CorridaInfo[playerid], -687931137);
    
TextDrawSetOutline(CorridaInfo[playerid], 0);
    
TextDrawSetProportional(CorridaInfo[playerid], 1);
    
TextDrawSetShadow(CorridaInfo[playerid], 1);
    return 
1;
}
public 
OnPlayerDeath(playerid)
{
    if(
NaCorrida[playerid] == true)
    {
        
JoinCount--;
        
NaCorrida[playerid] = false;
        
DestroyVehicle(CriarVehCorrida[playerid]);
        
DisablePlayerRaceCheckpoint(playerid);
        
TextDrawHideForPlayer(playeridCorridaInfo[playerid]);
        
CPProgesso[playerid] = 0;
        
KillTimer(InfoTimer[playerid]);
        
#if defined RACE_IN_OTHER_WORLD
        
SetPlayerVirtualWorld(playerid0);
        
#endif
    
}
    if(
ConstruindoCorrida == playerid+1ConstruindoCorrida 0;
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    switch(
dialogid)
    {
        case 
599:
        {
            if(!
response) return ConstruindoCorrida 0;
            switch(
listitem)
            {
                case 
0ConstrucaoCorridaTipo 0;
                case 
1ConstrucaoCorridaTipo 3;
            }
            
ShowDialog(playerid600);
        }
        case 
600..601:
        {
            if(!
response) return ShowDialog(playerid599);
            if(!
strlen(inputtext)) return ShowDialog(playerid601);
            if(
strlen(inputtext) < || strlen(inputtext) > 20) return ShowDialog(playerid601);
            
strmid(NomeConstrucaoinputtext0strlen(inputtext), sizeof(NomeConstrucao));
            
ShowDialog(playerid602);
        }
        case 
602..603:
        {
            if(!
response) return ShowDialog(playerid600);
            if(!
strlen(inputtext)) return ShowDialog(playerid603);
            if(
isNumeric(inputtext))
            {
                if(!
IsValidVehicle(strval(inputtext))) return ShowDialog(playerid603);
                new
                
FloatpPos[4]
                ;
                
GetPlayerPos(playeridpPos[0], pPos[1], pPos[2]);
                
GetPlayerFacingAngle(playeridpPos[3]);
                
ConstrucaoModeloID strval(inputtext);
                
ConstrucaoVeiculoCriado = (ConstrucaoVeiculoCriado == 0x01) ? (DestroyVehicle(ConstrucaoVeiculo), ConstrucaoVeiculoCriado 0x00) : (DestroyVehicle(ConstrucaoVeiculo), ConstrucaoVeiculoCriado 0x00);
                
ConstrucaoVeiculo CreateVehicle(strval(inputtext), pPos[0], pPos[1], pPos[2], pPos[3], random(126), random(126), (60 60));
                
PutPlayerInVehicle(playeridConstrucaoVeiculo0);
                
ConstrucaoVeiculoCriado 0x01;
                
ShowDialog(playerid604);
            }
            else
            {
                if(!
IsValidVehicle(ReturnVehicleID(inputtext))) return ShowDialog(playerid603);
                new
                
FloatpPos[4]
                ;
                
GetPlayerPos(playeridpPos[0], pPos[1], pPos[2]);
                
GetPlayerFacingAngle(playeridpPos[3]);
                
ConstrucaoModeloID ReturnVehicleID(inputtext);
                
ConstrucaoVeiculoCriado = (ConstrucaoVeiculoCriado == 0x01) ? (DestroyVehicle(ConstrucaoVeiculo), ConstrucaoVeiculoCriado 0x00) : (DestroyVehicle(ConstrucaoVeiculo), ConstrucaoVeiculoCriado 0x00);
                
ConstrucaoVeiculo CreateVehicle(ReturnVehicleID(inputtext), pPos[0], pPos[1], pPos[2], pPos[3], random(126), random(126), (60 60));
                
PutPlayerInVehicle(playeridConstrucaoVeiculo0);
                
ConstrucaoVeiculoCriado 0x01;
                
ShowDialog(playerid604);
            }
        }
        case 
604:
        {
            if(!
response) return ShowDialog(playerid602);
            
SendClientMessage(playeridVERMELHO">> [x] IMPORTANTE: Aperte 'KEY_FIRE' Na Posiзao Local onde Serб os Primeiros Lugares da Corrida.");
            
SendClientMessage(playeridVERMELHO" Apos Setar as Posiзхes Voce Continuara a Construзгo ");
            
BuildVehPosCount 0;
            
BuildTakeVehPos true;
        }
        case 
605:
        {
            if(!
response) return ShowDialog(playerid604);
            
SendClientMessage(playeridVERMELHO">> Insira os Check-Points Pressionando 'KEY_FIRE' ");
            
SendClientMessage(playeridVERMELHO"   [x] IMPORTANTE: Pressione 'ENTER' Quando Inserir o Ultimo Check-Point Para o a Corrida Construida for Salva e Terminada ");
            
ConstruirCheckPointCount 0;
            
BuildTakeCheckpoints true;
        }
        case 
606:
        {
            if(!
response) return ShowDialog(playerid606);
            
ConstruindoCorrida 0;
            
ConstruirCheckPointCount 0;
            
BuildVehPosCount 0;
            
BuildTakeCheckpoints false;
            
BuildTakeVehPos false;
            
ConstrucaoVeiculoCriado = (ConstrucaoVeiculoCriado == 0x01) ? (DestroyVehicle(ConstrucaoVeiculo), ConstrucaoVeiculoCriado 0x00) : (DestroyVehicle(ConstrucaoVeiculo), ConstrucaoVeiculoCriado 0x00);
        }
    }
    return 
1;
}
public 
OnPlayerKeyStateChange(playeridnewkeysoldkeys)
{
    new
    
string[256], CorridaArquivo[256], arquivo[256], FloatvPos[4];
    if(
newkeys KEY_FIRE)
    {
        if(
ConstruindoCorrida == playerid+1)
        {
            if(
BuildTakeVehPos == true)
            {
                if(!
IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playeridVERMELHO">> Voce Prescisa Estar em Um Veiculo");
                
format(arquivosizeof(arquivo), DIRETORIO_CORRIDASNomeConstrucao);
                
GetVehiclePos(GetPlayerVehicleID(playerid), vPos[0], vPos[1], vPos[2]);
                
GetVehicleZAngle(GetPlayerVehicleID(playerid), vPos[3]);
                
DOF2_CreateFile(arquivo);
                
DOF2_SetInt(arquivo"Modelo"ConstrucaoModeloID);
                
DOF2_SetInt(arquivo"Tipo"ConstrucaoCorridaTipo);
                
format(stringsizeof(string), "PosX_%d"BuildVehPosCount), DOF2_SetFloat(arquivostringvPos[0]);
                
format(stringsizeof(string), "PosY_%d"BuildVehPosCount), DOF2_SetFloat(arquivostringvPos[1]);
                
format(stringsizeof(string), "PosZ_%d"BuildVehPosCount), DOF2_SetFloat(arquivostringvPos[2]);
                
format(stringsizeof(string), "Angulo_%d"BuildVehPosCount), DOF2_SetFloat(arquivostringvPos[3]);
                
format(stringsizeof(string), ">> Posiзгo Do Veiculo '%d' Setado."BuildVehPosCount+1);
                
SendClientMessage(playeridAMARELOstring);
                
BuildVehPosCount++;
            }
            if(
BuildVehPosCount >= 2)
            {
                
BuildVehPosCount 0;
                
BuildTakeVehPos false;
                
ShowDialog(playerid605);
            }
            if(
BuildTakeCheckpoints == true)
            {
                if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridVERMELHO"");
                if(
ConstruirCheckPointCount MAX_CHECKPOINTS) return SendClientMessage(playeridVERMELHO">> Voce Atingiu o Limite Maximo de Check-Point");
                if(!
IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playeridVERMELHO">> Voce Prescisa Estar em Um Veiculo");
                
format(arquivosizeof(arquivo), DIRETORIO_CORRIDASNomeConstrucao);
                
GetVehiclePos(GetPlayerVehicleID(playerid), vPos[0], vPos[1], vPos[2]);
                
format(stringsizeof(string), "CP_%d_PosX"ConstruirCheckPointCount), DOF2_SetFloat(arquivostringvPos[0]);
                
format(stringsizeof(string), "CP_%d_PosY"ConstruirCheckPointCount), DOF2_SetFloat(arquivostringvPos[1]);
                
format(stringsizeof(string), "CP_%d_PosZ"ConstruirCheckPointCount), DOF2_SetFloat(arquivostringvPos[2]);
                
format(stringsizeof(string), ">> Checkpoint '%d' Setado!"ConstruirCheckPointCount+1);
                
SendClientMessage(playeridAMARELOstring);
                
ConstruirCheckPointCount++;
            }
        }
    }
    if(
newkeys KEY_SECONDARY_ATTACK)
    {
        if(
BuildTakeCheckpoints == true)
        {
            
ShowDialog(playerid606);
            
format(CorridaArquivosizeof(CorridaArquivo), DIRETORIO_NOME_CORRIDAS);
            
TotalCorridas DOF2_GetInt(CorridaArquivo"TotalCorridas");
            
TotalCorridas++;
            
DOF2_SetInt(CorridaArquivo"TotalCorridas"TotalCorridas);
            
format(stringsizeof(string), "Race_%d"TotalCorridas-1);
            
format(arquivosizeof(arquivo), DIRETORIO_CORRIDASNomeConstrucao);
            
DOF2_SetString(CorridaArquivostringNomeConstrucao);
            
DOF2_SetInt(arquivo"TotalCP"ConstruirCheckPointCount);
            
Loop(x5)
            {
                
format(stringsizeof(string), "MelhorTempoCorrida-%d"x);
                
DOF2_SetString(arquivostring"0");
                
format(stringsizeof(string), "MelhorCorrida-%d"x);
                
DOF2_SetString(arquivostring"Nenhum");
            }
        }
    }
    return 
1;
}
function 
CarregarNomeCorridas()
{
    new
    
CorridaArquivo[64],string[64];
    
format(CorridaArquivosizeof(CorridaArquivo), DIRETORIO_NOME_CORRIDAS);
    
TotalCorridas DOF2_GetInt(CorridaArquivo"TotalCorridas");
    
Loop(xTotalCorridas)
    {
        
format(stringsizeof(string), "Race_%d"x), strmid(NomeCorridas[x], DOF2_GetString(CorridaArquivostring), 020sizeof(NomeCorridas));
        
printf(">> Loaded Races: %s"NomeCorridas[x]);
    }
    return 
1;
}
function 
CarregarCorridasAutomaticas(rName[])
{
    new
    
arquivo[256],
    
string[256]
    ;
    
format(arquivosizeof(arquivo), DIRETORIO_CORRIDASrName);
    
strmid(NomeCorridarName0strlen(rName), sizeof(NomeCorrida));
    
VeiculoCorrida DOF2_GetInt(arquivo"Modelo");
    
CorridaTipo DOF2_GetInt(arquivo"Tipo");
    
TotalCP DOF2_GetInt(arquivo"TotalCP");
    
#if DEBUG_CORRIDA == 1
    
printf("ModeloVeiculo: %d"VeiculoCorrida);
    
printf("CorridaTipo: %d"CorridaTipo);
    
printf("TotalCheckpoints: %d"TotalCP);
    
#endif
    
Loop(x2)
    {
        
format(stringsizeof(string), "PosX_%d"x), CoordVehCorrida[x][0] = DOF2_GetFloat(arquivostring);
        
format(stringsizeof(string), "PosY_%d"x), CoordVehCorrida[x][1] = DOF2_GetFloat(arquivostring);
        
format(stringsizeof(string), "PosZ_%d"x), CoordVehCorrida[x][2] = DOF2_GetFloat(arquivostring);
        
format(stringsizeof(string), "Angulo_%d"x), CoordVehCorrida[x][3] = DOF2_GetFloat(arquivostring);
        
#if DEBUG_CORRIDA == 1
        
printf("VeiculoPos %d: %f, %f, %f, %f"xCoordVehCorrida[x][0], CoordVehCorrida[x][1], CoordVehCorrida[x][2], CoordVehCorrida[x][3]);
        
#endif
    
}
    
Loop(xTotalCP)
    {
        
format(stringsizeof(string), "CP_%d_PosX"x), CPCoords[x][0] = DOF2_GetFloat(arquivostring);
        
format(stringsizeof(string), "CP_%d_PosY"x), CPCoords[x][1] = DOF2_GetFloat(arquivostring);
        
format(stringsizeof(string), "CP_%d_PosZ"x), CPCoords[x][2] = DOF2_GetFloat(arquivostring);
        
#if DEBUG_CORRIDA == 1
        
printf("RaceCheckPoint %d: %f, %f, %f"xCPCoords[x][0], CPCoords[x][1], CPCoords[x][2]);
        
#endif
    
}
    
Posicao 0;
    
FinishCount 0;
    
JoinCount 0;
    
Loop(x2PlayersCount[x] = 0;
    
CountAmount CONTAGEM_START;
    
CorridaTempo MAX_CORRIDA_TEMPO;
    
RaceBusy 0x01;
    
CountTimer SetTimer("CountTillRace"9991);
    
TempoProgresso 0;
    return 
1;
}
function 
LoadRace(playeridrName[])
{
    new
    
arquivo[256],
    
string[256]
    ;
    
format(arquivosizeof(arquivo), DIRETORIO_CORRIDASrName);
    if(!
DOF2_FileExists(arquivo)) return SendClientMessage(playeridVERMELHO"[x] Corrida Inexistente ! ");
    
strmid(NomeCorridarName0strlen(rName), sizeof(NomeCorrida));
    
VeiculoCorrida DOF2_GetInt(arquivo"Modelo");
    
CorridaTipo DOF2_GetInt(arquivo"Tipo");
    
TotalCP DOF2_GetInt(arquivo"TotalCP");
    
#if DEBUG_CORRIDA == 1
    
printf("ModeloVeiculo: %d"VeiculoCorrida);
    
printf("CorridaTipo: %d"CorridaTipo);
    
printf("TotalCheckpoints: %d"TotalCP);
    
#endif
    
Loop(x2)
    {
        
format(stringsizeof(string), "PosX_%d"x), CoordVehCorrida[x][0] = DOF2_GetFloat(arquivostring);
        
format(stringsizeof(string), "PosY_%d"x), CoordVehCorrida[x][1] = DOF2_GetFloat(arquivostring);
        
format(stringsizeof(string), "PosZ_%d"x), CoordVehCorrida[x][2] = DOF2_GetFloat(arquivostring);
        
format(stringsizeof(string), "Angulo_%d"x), CoordVehCorrida[x][3] = DOF2_GetFloat(arquivostring);
        
#if DEBUG_CORRIDA == 1
        
printf("VeiculoPos %d: %f, %f, %f, %f"xCoordVehCorrida[x][0], CoordVehCorrida[x][1], CoordVehCorrida[x][2], CoordVehCorrida[x][3]);
        
#endif
    
}
    
Loop(xTotalCP)
    {
        
format(stringsizeof(string), "CP_%d_PosX"x), CPCoords[x][0] = DOF2_GetFloat(arquivostring);
        
format(stringsizeof(string), "CP_%d_PosY"x), CPCoords[x][1] = DOF2_GetFloat(arquivostring);
        
format(stringsizeof(string), "CP_%d_PosZ"x), CPCoords[x][2] = DOF2_GetFloat(arquivostring);
        
#if DEBUG_CORRIDA == 1
        
printf("RaceCheckPoint %d: %f, %f, %f"xCPCoords[x][0], CPCoords[x][1], CPCoords[x][2]);
        
#endif
    
}
    
Posicao 0;
    
FinishCount 0;
    
JoinCount 0;
    
Loop(x2PlayersCount[x] = 0;
    
NaCorrida[playerid] = true;
    
CountAmount CONTAGEM_START;
    
CorridaTempo MAX_CORRIDA_TEMPO;
    
RaceBusy 0x01;
    
TempoProgresso 0;
    
SetupRaceForPlayer(playerid);
    
CountTimer SetTimer("CountTillRace"9991);
    return 
1;
}
function 
SetCP(playeridPrevCPNextCPMaxCPType)
{
    if(
Type == 0)
    {
        if(
NextCP == MaxCPSetPlayerRaceCheckpoint(playerid1CPCoords[PrevCP][0], CPCoords[PrevCP][1], CPCoords[PrevCP][2], CPCoords[NextCP][0], CPCoords[NextCP][1], CPCoords[NextCP][2], TAMANHO_CHECKPOINTS);
        else 
SetPlayerRaceCheckpoint(playerid0CPCoords[PrevCP][0], CPCoords[PrevCP][1], CPCoords[PrevCP][2], CPCoords[NextCP][0], CPCoords[NextCP][1], CPCoords[NextCP][2], TAMANHO_CHECKPOINTS);
    }
    else if(
Type == 3)
    {
        if(
NextCP == MaxCPSetPlayerRaceCheckpoint(playerid4CPCoords[PrevCP][0], CPCoords[PrevCP][1], CPCoords[PrevCP][2], CPCoords[NextCP][0], CPCoords[NextCP][1], CPCoords[NextCP][2], TAMANHO_CHECKPOINTS);
        else 
SetPlayerRaceCheckpoint(playerid3CPCoords[PrevCP][0], CPCoords[PrevCP][1], CPCoords[PrevCP][2], CPCoords[NextCP][0], CPCoords[NextCP][1], CPCoords[NextCP][2], TAMANHO_CHECKPOINTS);
    }
    return 
1;
}
function 
SetupRaceForPlayer(playerid)
{
    
CPProgesso[playerid] = 0;
    
TogglePlayerControllable(playeridfalse);
    
CPCoords[playerid][3] = 0;
    
SetCP(playeridCPProgesso[playerid], CPProgesso[playerid]+1TotalCPCorridaTipo);
    if(
IsOdd(playerid)) Index 1;
    else 
Index 0;
    switch(
Index)
    {
        case 
0:
        {
            if(
PlayersCount[0] == 1)
            {
                
CoordVehCorrida[0][0] -= (floatsin(-CoordVehCorrida[0][3], degrees));
                
CoordVehCorrida[0][1] -= (floatcos(-CoordVehCorrida[0][3], degrees));
                if(
IsPlayerInAnyVehicle(playerid) == 1)
                
RepairVehicle(playerid);
                
CriarVehCorrida[playerid] = CreateVehicle(VeiculoCorridaCoordVehCorrida[0][0], CoordVehCorrida[0][1], CoordVehCorrida[0][2]+2CoordVehCorrida[0][3], random(126), random(126), (60 60));
                
SetPlayerPos(playeridCoordVehCorrida[0][0], CoordVehCorrida[0][1], CoordVehCorrida[0][2]+2);
                
SetPlayerFacingAngle(playeridCoordVehCorrida[0][3]);
                
PutPlayerInVehicle(playeridCriarVehCorrida[playerid], RepairVehicle(playerid));
                
SetVehicleHealth(GetPlayerVehicleID(playerid),99999);
                
Camera(playeridCoordVehCorrida[0][0], CoordVehCorrida[0][1], CoordVehCorrida[0][2], CoordVehCorrida[0][3], 20);
            }
        }
        case 
1:
        {
            if(
PlayersCount[1] == 1)
            {
                
CoordVehCorrida[1][0] -= (floatsin(-CoordVehCorrida[1][3], degrees));
                
CoordVehCorrida[1][1] -= (floatcos(-CoordVehCorrida[1][3], degrees));
                
CriarVehCorrida[playerid] = CreateVehicle(VeiculoCorridaCoordVehCorrida[1][0], CoordVehCorrida[1][1], CoordVehCorrida[1][2]+2CoordVehCorrida[1][3], random(126), random(126), (60 60));
                
SetPlayerPos(playeridCoordVehCorrida[1][0], CoordVehCorrida[1][1], CoordVehCorrida[1][2]+2);
                
SetPlayerFacingAngle(playeridCoordVehCorrida[1][3]);
                
PutPlayerInVehicle(playeridCriarVehCorrida[playerid], 0);
                
SetVehicleHealth(GetPlayerVehicleID(playerid),99999);
                
RepairVehicle(GetPlayerVehicleID(playerid));
                
Camera(playeridCoordVehCorrida[1][0], CoordVehCorrida[1][1], CoordVehCorrida[1][2], CoordVehCorrida[1][3], 20);
            }
        }
    }
    switch(
Index)
    {
        case 
0:
        {
            if(
PlayersCount[0] != 1)
            {
                
CriarVehCorrida[playerid] = CreateVehicle(VeiculoCorridaCoordVehCorrida[0][0], CoordVehCorrida[0][1], CoordVehCorrida[0][2]+2CoordVehCorrida[0][3], random(126), random(126), (60 60));
                
SetPlayerPos(playeridCoordVehCorrida[0][0], CoordVehCorrida[0][1], CoordVehCorrida[0][2]+2);
                
SetPlayerFacingAngle(playeridCoordVehCorrida[0][3]);
                
PutPlayerInVehicle(playeridCriarVehCorrida[playerid], 0);
                
SetVehicleHealth(GetPlayerVehicleID(playerid),99999);
                
RepairVehicle(GetPlayerVehicleID(playerid));
                
Camera(playeridCoordVehCorrida[0][0], CoordVehCorrida[0][1], CoordVehCorrida[0][2], CoordVehCorrida[0][3], 20);
                
PlayersCount[0] = 1;
            }
        }
        case 
1:
        {
            if(
PlayersCount[1] != 1)
            {
                
CriarVehCorrida[playerid] = CreateVehicle(VeiculoCorridaCoordVehCorrida[1][0], CoordVehCorrida[1][1], CoordVehCorrida[1][2]+2CoordVehCorrida[1][3], random(126), random(126), (60 60));
                
SetPlayerPos(playeridCoordVehCorrida[1][0], CoordVehCorrida[1][1], CoordVehCorrida[1][2]+2);
                
SetVehicleHealth(GetPlayerVehicleID(playerid),99999);
                
SetPlayerFacingAngle(playeridCoordVehCorrida[1][3]);
                
PutPlayerInVehicle(playeridCriarVehCorrida[playerid], 0);
                
Camera(playeridCoordVehCorrida[1][0], CoordVehCorrida[1][1], CoordVehCorrida[1][2], CoordVehCorrida[1][3], 20);
                
PlayersCount[1] = 1;
            }
        }
    }
    new
    
string[128];
    
#if defined RACE_IN_OTHER_WORLD
    
SetPlayerVirtualWorld(playerid10);
    
#endif
    
InfoTimer[playerid] = SetTimerEx("TextInfo"5001"e"playerid);
    if(
JoinCount == 1format(stringsizeof(string), "Corrida: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~CorridaTempo: ~w~%s~n~~y~Posicao: ~w~1/1~n~ "NomeCorridaCPProgesso[playerid], TotalCPTempoConvertido(CorridaTempo));
    else 
format(stringsizeof(string), "Corrida: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~CorridaTempo: ~w~%s~n~~y~Posicao: ~w~%d/%d~n~ "NomeCorridaCPProgesso[playerid], TotalCPTempoConvertido(CorridaTempo), Colocacao[playerid], JoinCount);
    
TextDrawSetString(CorridaInfo[playerid], string);
    
TextDrawShowForPlayer(playeridCorridaInfo[playerid]);
    
JoinCount++;
    return 
1;
}
function 
CountTillRace()
{
    switch(
CountAmount)
    {
        case 
0:
        {
            ForEach(
iMAX_PLAYERS)
            {
                if(
NaCorrida[i] == false)
                {
                    new
                    
string[128]
                    ;
                    
format(stringsizeof(string), ">> Vocк nгo pode participar de corrida chamado %s mais. Junte-se tempo estб acabado!"NomeCorrida);
                    
SendClientMessage(iVERMELHOstring);
                }
            }
            
StartRace();
        }
        case 
1..5:
        {
            new
            
string[10]
            ;
            
format(stringsizeof(string), "~b~%d"CountAmount);
            ForEach(
iMAX_PLAYERS)
            {
                if(
NaCorrida[i] == true)
                {
                    
GameTextForPlayer(istring9995);
                    
PlayerPlaySound(i10560.00.00.0);
                }
            }
        }
        case 
605040302010:
        {
            new
            
string[128]
            ;
            
format(stringsizeof(string), ">> Uma Corrida Foi Iniciada ! Digite /EntrarRace para Participar da Corrida");
            
SendClientMessageToAll(VERMELHOstring);
        }
    }
    return 
CountAmount--;
}
function 
StartRace()
{
    ForEach(
iMAX_PLAYERS)
    {
        if(
NaCorrida[i] == true)
        {
            
TogglePlayerControllable(itrue);
            
PlayerPlaySound(i10570.00.00.0);
            
GameTextForPlayer(i"~g~GO GO GO"20005);
            
SetCameraBehindPlayer(i);
            
SetVehicleHealth(GetPlayerVehicleID(i),99999);
            
RepairVehicle(GetPlayerVehicleID(i));
        }
    }
    
rCounter SetTimer("RaceCounter"9001);
    
CorridaTick GetTickCount();
    
CorridaIniciada 1;
    
KillTimer(CountTimer);
    return 
1;
}
function 
StopRace()
{
    
KillTimer(rCounter);
    
CorridaIniciada 0;
    
CorridaTick 0;
    
RaceBusy 0x00;
    
JoinCount 0;
    
FinishCount 0;
    
TempoProgresso 0;
    ForEach(
iMAX_PLAYERS)
    {
        if(
NaCorrida[i] == true)
        {
            
DisablePlayerRaceCheckpoint(i);
            
DestroyVehicle(CriarVehCorrida[i]);
            
NaCorrida[i] = false;
            
TextDrawHideForPlayer(iCorridaInfo[i]);
            
CPProgesso[i] = 0;
            
KillTimer(InfoTimer[i]);
        }
    }
    if(
CorrridasAutomaticas == trueCarregarNomeCorridas(), CarregarCorridasAutomaticas(NomeCorridas[random(TotalCorridas)]);
    return 
1;
}
function 
RaceCounter()
{
    if(
CorridaIniciada == 1)
    {
        
CorridaTempo--;
        if(
JoinCount <= 0)
        {
            
StopRace();
            
SendClientMessageToAll(VERMELHO"---------------------------------------------------------------------------------------");
            
SendClientMessageToAll(VERMELHO"");
            
SendClientMessageToAll(VERMELHO">> Corrida Encerrada Por Nao Haver Competidores ...");
            
SendClientMessageToAll(VERMELHO"");
            
SendClientMessageToAll(VERMELHO"---------------------------------------------------------------------------------------");
        }
    }
    if(
CorridaTempo <= 0)
    {
        
StopRace();
    }
    return 
1;
}
function 
TextInfo(playerid)
{
    new
    
string[128]
    ;
    if(
JoinCount == 1format(stringsizeof(string), "Corrida: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~CorridaTempo: ~w~%s~n~~y~Posicao: ~w~1/1~n~"NomeCorridaCPProgesso[playerid], TotalCPTempoConvertido(CorridaTempo));
    else 
format(stringsizeof(string), "Corrida: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~CorridaTempo: ~w~%s~n~~y~Posicao: ~w~%d/%d~n~"NomeCorridaCPProgesso[playerid], TotalCPTempoConvertido(CorridaTempo), Colocacao[playerid], JoinCount);
    
TextDrawSetString(CorridaInfo[playerid], string);
    
TextDrawShowForPlayer(playeridCorridaInfo[playerid]);
}
function 
Camera(playeridFloat:XFloat:YFloat:ZFloat:AMul)
{
    
SetPlayerCameraLookAt(playeridXYZ);
    
SetPlayerCameraPos(playerid+ (Mul floatsin(-Adegrees)), + (Mul floatcos(-Adegrees)), Z+6);
}
function 
IsPlayerInRace(playerid)
{
    if(
NaCorrida[playerid] == true) return true;
    else return 
false;
}
function 
ShowDialog(playeriddialogid)
{
    switch(
dialogid)
    {
        case 
599ShowPlayerDialog(playeriddialogidDIALOG_STYLE_LISTCreateCaption("Construir Nova Corrida"), "\
        Corrida Terrestre / Nautica\n\
        Corrida Aerea"
"Next""Exit");
        case 
600ShowPlayerDialog(playeriddialogidDIALOG_STYLE_INPUTCreateCaption("Construir Nova Corrida (Etapa 1/4)"), "\
        {F50000}Etapa 1:\n\
        \n\
        {A1A1A3}Bem Vindo a Modo 'Construзгo de Corrida'.\n\
        Aqui Voce Iniciar a Construir uma Nova Corrida, Insira um NOME para Sua Corrida, EX: RACE-1\n\n\
        >> Insira Um NOME para Sua Corrida e Pressione 'Next' Para Continuar."
"Next""Back");
        case 
601ShowPlayerDialog(playeriddialogidDIALOG_STYLE_INPUTCreateCaption("Construir Nova Corrida (Etapa 1/4)"), "\
        {F50000}ERRO: Nome Da Corrida Muito Grande/Pequeno (Min. 1 - Max. 20)\n\n\
        {F50000}Etapa 1:\n\
        ********\n\
        {A1A1A3}Bem Vindo ao Modo 'Construзгo de Corrida'.\n\
        Aqui Voce Iniciar a Construir uma Nova Corrida, Insira um NOME para Sua Corrida, EX: RACE-1\n\n\
        >> Insira o Nome da Corrida e Pressione 'Next' Para Continuar"
"Next""Back");
        case 
602ShowPlayerDialog(playeriddialogidDIALOG_STYLE_INPUTCreateCaption("Construir Nova Corrida (Etapa 2/4)"), "\
        {F50000}Etapa 2:\n\
        \n\
        {A1A1A3}Insira o ID do Veiculo a Ser usado Na Corrida Ou o NOME Para Continuar Sua Construзгo.\n\n\
        >> Insira o ID ou o NOME Do Veiculo e Pressione 'Next' Para Continuar. 'Back' Para Voltar."
"Next""Back");
        case 
603ShowPlayerDialog(playeriddialogidDIALOG_STYLE_INPUTCreateCaption("Construir Nova Corrida (Etapa 2/4)"), "\
        {F50000}ERRO: ID Invalido/Nome\n\n\
        {F50000}Etapa 2:\n\
        \n\
        {A1A1A3}ID Invalido!  Insira o ID do Veiculo a Ser usado Na Corrida Ou o NOME Para Continuar Sua Construзгo.\n\n\
        >> Insira o ID ou o NOME Do Veiculo e Pressione 'Next' Para Continuar. 'Back' Para Voltar. "
"Next""Back");
        case 
604ShowPlayerDialog(playeriddialogidDIALOG_STYLE_MSGBOXCreateCaption("Construir Nova Corrida (Etapa 3/4)"),
        
"\
        {F50000}Etapa3:\n\
        \n\
        {A1A1A3}Agora Voce Tera que Setar as Posiзхes do Primeiro e Segundo Lugar da Largada.\n\
        Nota: Clicando Em 'OK' Retorna em Modo Free. Aperte 'KEY_FIRE' Para Setar as Posiзхes do Primeiro e Segundo Lugar.  \n\
        Nota: Apos Setar as Posiзхes, Voce ira para a Ultima Etapa da Construзгo\n\n\
        >> Pressione 'OK' Para Continuar. 'Back' Para Voltar."
"OK""Back");
        case 
605ShowPlayerDialog(playeriddialogidDIALOG_STYLE_MSGBOXCreateCaption("Construir Nova Corrida (Etapa 4/4)"),
        
"\
        {F50000}Etapa 4:\n\
        \n\
        {A1A1A3}Aqui Voce Setara os Check-Points Para Sua Corrida.\n\
        Para Setar os Check-Poits Pressione 'KEY_FIRE' No Lugar Desejado, o Check-Point Ira Salvar Automaticamente. \n\
        Ao Terminar Pressione 'ENTER' Para Finalizar Sua Corrida \n\n\
        >> Pressione 'OK' Para Continuar. 'Back' Para Voltar."
"OK""Back");
        case 
606ShowPlayerDialog(playeriddialogidDIALOG_STYLE_MSGBOXCreateCaption("Construir Nova Corrida (Done)"),
        
"\
        Vocк Criou uma nova Corrida. \n\n\
        >> Pressione 'Final' Para Terminar ou 'Exit' Para Sair Sem Salvar a Corrida "
"Final""Exit");
    }
    return 
1;
}
CreateCaption(arguments[])
{
    new
    
string[128 char]
    ;
    
format(stringsizeof(string), "{03FF5F}» {F50000}Corrida"arguments);
    return 
string;
}
stock IsValidVehicle(vehicleid)
{
    if(
vehicleid 400 || vehicleid 611) return false;
    else return 
true;
}
ReturnVehicleID(vName[])
{
    
Loop(x211)
    {
        if(
strfind(vNames[x], vNametrue) != -1)
        return 
400;
    }
    return -
1;
}
TempoConvertido(seconds)
{
    new 
tmp[16];
    new 
minutes floatround(seconds/60);
    
seconds -= minutes*60;
    
format(tmpsizeof(tmp), "%d:%02d"minutesseconds);
    return 
tmp;
}
stock isNumeric(const string[])
{
  new 
length=strlen(string);
  if (
length==0) return false;
  for (new 
0lengthi++)
  {
    if (
       (
string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+')
       || (
string[i]=='-' && i!=0)
       || (
string[i]=='+' && i!=0)
       ) return 
false;
  }
  if (
length==&& (string[0]=='-' || string[0]=='+')) return false;
  return 
true;
}
forward GodModEvento();
public 
GodModEvento()
{
    for(new 
iMAX_VEHICLES; ++i)
    {
        
RepairVehicle(i);
        
SetVehicleHealth(i1000.0);
    }
    return 
1;

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)