[Pedido] Sistema de Corrida Bugada AJUDEM!!
#1

Eu coloquei esse FS no meu gm, mas quando to criando o caminho la perto do setimo checkpoint o veiculo some, alguem me ajuda a descobrir o pq? e a resolver...








Код:
#include < a_samp >
#include < dof2   >
#include < zcmd   >
 
#define ForEach(%0,%1) \
for(new %0 = 0; %0 != %1; %0++) if(IsPlayerConnected(%0) && !IsPlayerNPC(%0))
 
#define Loop(%0,%1) \
for(new %0 = 0; %0 != %1; %0++)
 
#define IsOdd(%1) \
((%1) & 1)
 
#define ConvertTime(%0,%1,%2,%3,%4) \
new \
Float: %0 = floatdiv(%1, 60000) \
;\
%2 = floatround(%0, floatround_tozero); \
%3 = floatround(floatmul(%0 - %2, 60), floatround_tozero); \
%4 = floatround(floatmul(floatmul(%0 - %2, 60) - %3, 1000), floatround_tozero)
 
#define function%0(%1) \
forward%0(%1); public%0(%1)
 
#define DIRETORIO_CORRIDAS          "/Corridas/%s.ini"
#define DIRETORIO_NOME_CORRIDAS     "/Corridas/%s.txt"
 
#define DEBUG_CORRIDA               1
#define TAMANHO_CHECKPOINTS         8
#define CONTAGEM_START              30
#define MAX_CHECKPOINTS             800
#define MAX_CORRIDAS                500
#define MAX_CORRIDA_TEMPO           6000
 
#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],
bool: BuildTakeVehPos,
BuildVehPosCount,
bool: BuildTakeCheckpoints,
ConstruirCheckPointCount,
RaceBusy = 0x00,
NomeCorrida[30],
VeiculoCorrida,
CorridaTipo,
TotalCP,
Float: CoordVehCorrida[2][4],
Float: CPCoords[MAX_CHECKPOINTS][4],
CriarVehCorrida[MAX_PLAYERS],
Index,
PlayersCount[2],
CountTimer,
CountAmount,
bool: NaCorrida[MAX_PLAYERS],
CorridaTick,
CorridaIniciada,
CPProgesso[MAX_PLAYERS],
Posicao,
FinishCount,
JoinCount,
rCounter,
CorridaTempo,
Text: CorridaInfo[MAX_PLAYERS],
InfoTimer[MAX_PLAYERS],
Colocacao[MAX_PLAYERS],
NomeCorridas[MAX_CORRIDAS][128],
TotalCorridas,
bool: CorrridasAutomaticas,
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(i, MAX_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(playerid, params[])
{
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[x] Voce Nao й Um Administrador(a) RCON!");
        if(ConstruindoCorrida != 0) return SendClientMessage(playerid, VERMELHO, "» Voce esta em Modo de Construзгo !");
        if(RaceBusy == 0x01) return SendClientMessage(playerid, VERMELHO, "[x] Espere primeiro atй a corrida termina!");
        if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, VERMELHO, "[x] Por favor, deixe o seu veнculo Primeiro!");
        ConstruindoCorrida = playerid+1;
        ShowDialog(playerid, 599);
        return 1;
}
CMD:iniciarcorrida(playerid, params[])
{
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[x] Voce Nao й Um Administrador(a) RCON!");
        if(CorrridasAutomaticas == true) return SendClientMessage(playerid, VERMELHO, "[x] Nгo й possнvel. Corrida automбtica estб ativada !");
        if(ConstruindoCorrida != 0) return SendClientMessage(playerid, VERMELHO, "[x] Hб alguйm a construзгo de uma corrida!");
        if(RaceBusy == 0x01 || CorridaIniciada == 1) return SendClientMessage(playerid, VERMELHO, "[x] Hб uma Corrida atualmente. Espera primeiro atй corrida terminar !");
        if(isnull(params)) return SendClientMessage(playerid, VERMELHO, "Use /iniciarcorrida [Nome-Da-Corrida]");
        LoadRace(playerid, params);
    return 1;
}
CMD:pararcorrida(playerid, params[])
{
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[x] Voce Nao й Um Administrador(a) RCON!");
        if(RaceBusy == 0x00 || CorridaIniciada == 0) return SendClientMessage(playerid, VERMELHO, "[x] Nгo hб nenhuma corrida para parar ");
        SendClientMessageToAll(VERMELHO, ">> O(a) Administrador(a) Fechou a Corrida Atual!!");
        SetPlayerPos(playerid, 1242.3445,-1815.5928,14.7578);
        return StopRace();
}
CMD:entrarcorrida(playerid, params[])
{
        if(CorridaIniciada == 1) return SendClientMessage(playerid, VERMELHO, "Corrida jб comeзou! Espera primeiro atй o Fim da corrida!");
        if(RaceBusy == 0x00) return SendClientMessage(playerid, VERMELHO, "[x] Nгo hб nenhuma corrida para participar!");
        if(NaCorrida[playerid] == true) return SendClientMessage(playerid, VERMELHO, "[x] Vocк jб se juntou a uma corrida!");
        if(IsPlayerInAnyVehicle(playerid)) return SetTimerEx("SetupRaceForPlayer", 2500, 0, "e", playerid), RemovePlayerFromVehicle(playerid), NaCorrida[playerid] = true;
        SetupRaceForPlayer(playerid);
        NaCorrida[playerid] = true;
    CarGod[GetPlayerVehicleID(playerid)] = true;
        return 1;
}
CMD:autocorrida(playerid, params[])
{
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[x] Voce Nao й Um Administrador(a) RCON!");
        if(RaceBusy == 0x01 || CorridaIniciada == 1) return SendClientMessage(playerid, VERMELHO, "[x] Hб uma Corrida atualmente. Espera primeiro atй corrida termina!");
        if(CorrridasAutomaticas == true) return SendClientMessage(playerid, VERMELHO, "[x] Jб estб ativado!");
        CarregarNomeCorridas();
        CarregarCorridasAutomaticas(NomeCorridas[random(TotalCorridas)]);
        CorrridasAutomaticas = true;
        SendClientMessage(playerid, VERDE, ">> Vocк iniciou a corrida Automatica. O filterscript vai comeзar uma corrida aleatуria sempre que a corrida anterior acabar!");
        return 1;
}
CMD:pararautocorrida(playerid, params[])
{
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[x] Voce Nao й Um Administrador(a) RCON!");
        if(CorrridasAutomaticas == false) return SendClientMessage(playerid, VERMELHO, "[x] Jб estб ativado!");
        CorrridasAutomaticas = false;
        return 1;
}
CMD:desistir(playerid, params[])
{
        if(NaCorrida[playerid] == true)
        {
        CarGod[GetPlayerVehicleID(playerid)] = false;
                JoinCount--;
                NaCorrida[playerid] = false;
                DestroyVehicle(CriarVehCorrida[playerid]);
                DisablePlayerRaceCheckpoint(playerid);
                TextDrawHideForPlayer(playerid, CorridaInfo[playerid]);
                CPProgesso[playerid] = 0;
                SetPlayerPos(playerid, 1242.3445,-1815.5928,14.7578);
                KillTimer(InfoTimer[playerid]);
                TogglePlayerControllable(playerid, true);
                SetCameraBehindPlayer(playerid);
                #if defined RACE_IN_OTHER_WORLD
                SetPlayerVirtualWorld(playerid, 0);
                #endif
        } else return SendClientMessage(playerid, VERMELHO, "[x] Vocк nгo estб em uma corrida!");
        return 1;
}
 
public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
        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(playerid, pName, sizeof(pName));
                SetVehicleHealth(GetPlayerVehicleID(playerid),999999);
                TimeStamp = GetTickCount();
                TotalRaceTime = TimeStamp - CorridaTick;
                ConvertTime(var, TotalRaceTime, rTime[0], rTime[1], rTime[2]);
                switch(Posicao)
                {
 
                        case 1: Prize[0] = (random(random(5000)) + 10000), Prize[1] = 10;
                        case 2: Prize[0] = (random(random(4500)) + 9000), Prize[1] = 9;
                        case 3: Prize[0] = (random(random(4000)) + 8000), Prize[1] = 8;
                        case 4: Prize[0] = (random(random(3500)) + 7000), Prize[1] = 7;
                        case 5: Prize[0] = (random(random(3000)) + 6000), Prize[1] = 6;
                        case 6: Prize[0] = (random(random(2500)) + 5000), Prize[1] = 5;
                        case 7: Prize[0] = (random(random(2000)) + 4000), Prize[1] = 4;
                        case 8: Prize[0] = (random(random(1500)) + 3000), Prize[1] = 3;
                        case 9: Prize[0] = (random(random(1000)) + 2000), Prize[1] = 2;
                        default: Prize[0] = random(random(1000)), Prize[1] = 1;
                }
 
                format(string, sizeof(string), "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", pName, Posicao);
                SendClientMessageToAll(VERMELHO, string);
                format(string, sizeof(string), "~~~~~~~~~~~~~~~ O Jogador %s Venceu a Corida em %d Lugar ~~~~~~~~~~~~~~~", pName, Posicao);
                SendClientMessageToAll(BRANCO, string);
                format(string, sizeof(string), "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", pName, Posicao);
                SendClientMessageToAll(VERMELHO, string);
                format(string, sizeof(string), "", rTime[0], rTime[1], rTime[2]);
                SendClientMessageToAll(BRANCO, string);
                format(string, sizeof(string), "", Prize[0], Prize[1]);
                SendClientMessageToAll(BRANCO, string);
 
                if(FinishCount <= 5)
                {
 
                        format(arquivo, sizeof(arquivo), DIRETORIO_CORRIDAS, NomeCorrida);
                        format(string, sizeof(string), "MelhorTempoCorrida-%d", TempoProgresso);
                        TempTotalTime = DOF2_GetInt(arquivo, string);
                        ConvertTime(var1, TempTotalTime, TempTime[0], TempTime[1], TempTime[2]);
                        if(TotalRaceTime <= DOF2_GetInt(arquivo, string) || TempTotalTime == 0)
                        {
 
                                DOF2_SetInt(arquivo, string, TotalRaceTime);
                                format(string, sizeof(string), "MelhorCorrida-%d", TempoProgresso);
                                if(TempTotalTime != 0) format(string, sizeof(string), "", pName, DOF2_GetString(arquivo, string), -(rTime[1] - TempTime[1]), TempoProgresso+1);
                                else format(string, sizeof(string), "", pName, TempoProgresso+1);
                                SendClientMessageToAll(VERDE, "  ");
                                SendClientMessageToAll(VERDE, string);
                                SendClientMessageToAll(VERDE, "  ");
                                format(string, sizeof(string), "MelhorCorrida-%d", TempoProgresso);
                                DOF2_SetString(arquivo, string, pName);
                                TempoProgresso++;
                        }
                }
                FinishCount++;
                GivePlayerMoney(playerid, Prize[0]);
                SetPlayerScore(playerid, GetPlayerScore(playerid) + Prize[0]);
                DisablePlayerRaceCheckpoint(playerid);
                CPProgesso[playerid]++;
                SetPlayerPos(playerid, 1242.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(playerid, CPProgesso[playerid], CPProgesso[playerid]+1, TotalCP, CorridaTipo);
                PlayerPlaySound(playerid, 1137, 0.0, 0.0, 0.0);
        }
        return 1;
}
 
public OnPlayerDisconnect(playerid)
{
        if(NaCorrida[playerid] == true)
        {
 
                JoinCount--;
                NaCorrida[playerid] = false;
                DestroyVehicle(CriarVehCorrida[playerid]);
                DisablePlayerRaceCheckpoint(playerid);
                TextDrawHideForPlayer(playerid, CorridaInfo[playerid]);
                CPProgesso[playerid] = 0;
                KillTimer(InfoTimer[playerid]);
                #if defined RACE_IN_OTHER_WORLD
                SetPlayerVirtualWorld(playerid, 0);
                #endif
        }
        TextDrawDestroy(CorridaInfo[playerid]);
        if(ConstruindoCorrida == playerid+1) ConstruindoCorrida = 0;
        return 1;
}
 
public OnPlayerConnect(playerid)
{
        CorridaInfo[playerid] = TextDrawCreate(633.000000, 348.000000, " ");
        TextDrawAlignment(CorridaInfo[playerid], 3);
        SetVehicleHealth(GetPlayerVehicleID(playerid),999999);
        TextDrawBackgroundColor(CorridaInfo[playerid], 255);
        TextDrawFont(CorridaInfo[playerid], 1);
        TextDrawLetterSize(CorridaInfo[playerid], 0.240000, 1.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(playerid, CorridaInfo[playerid]);
                CPProgesso[playerid] = 0;
                KillTimer(InfoTimer[playerid]);
                #if defined RACE_IN_OTHER_WORLD
                SetPlayerVirtualWorld(playerid, 0);
                #endif
        }
        if(ConstruindoCorrida == playerid+1) ConstruindoCorrida = 0;
        return 1;
}
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
        switch(dialogid)
        {
 
                case 599:
                {
 
                        if(!response) return ConstruindoCorrida = 0;
                        switch(listitem)
                        {
 
                                case 0: ConstrucaoCorridaTipo = 0;
                                case 1: ConstrucaoCorridaTipo = 3;
                        }
                        ShowDialog(playerid, 600);
                }
                case 600..601:
                {
 
                        if(!response) return ShowDialog(playerid, 599);
                        if(!strlen(inputtext)) return ShowDialog(playerid, 601);
                        if(strlen(inputtext) < 1 || strlen(inputtext) > 20) return ShowDialog(playerid, 601);
                        strmid(NomeConstrucao, inputtext, 0, strlen(inputtext), sizeof(NomeConstrucao));
                        ShowDialog(playerid, 602);
                }
                case 602..603:
                {
 
                        if(!response) return ShowDialog(playerid, 600);
                        if(!strlen(inputtext)) return ShowDialog(playerid, 603);
                        if(isNumeric(inputtext))
                        {
 
 
                                if(!IsValidVehicle(strval(inputtext))) return ShowDialog(playerid, 603);
                                new
                                Float: pPos[4]
                                ;
                                GetPlayerPos(playerid, pPos[0], pPos[1], pPos[2]);
                                GetPlayerFacingAngle(playerid, pPos[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(playerid, ConstrucaoVeiculo, 0);
                                ConstrucaoVeiculoCriado = 0x01;
                                ShowDialog(playerid, 604);
                        }
                        else
                        {
 
                                if(!IsValidVehicle(ReturnVehicleID(inputtext))) return ShowDialog(playerid, 603);
                                new
                                Float: pPos[4]
                                ;
                                GetPlayerPos(playerid, pPos[0], pPos[1], pPos[2]);
                                GetPlayerFacingAngle(playerid, pPos[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(playerid, ConstrucaoVeiculo, 0);
                                ConstrucaoVeiculoCriado = 0x01;
                                ShowDialog(playerid, 604);
                        }
                }
                case 604:
                {
 
                        if(!response) return ShowDialog(playerid, 602);
                        SendClientMessage(playerid, VERMELHO, ">> [x] IMPORTANTE: Aperte 'KEY_FIRE' Na Posiзao Local onde Serб os Primeiros Lugares da Corrida.");
                        SendClientMessage(playerid, VERMELHO, " Apos Setar as Posiзхes Voce Continuara a Construзгo ");
                        BuildVehPosCount = 0;
                        BuildTakeVehPos = true;
                }
                case 605:
                {
 
                        if(!response) return ShowDialog(playerid, 604);
                        SendClientMessage(playerid, VERMELHO, ">> Insira os Check-Points Pressionando 'KEY_FIRE' ");
                        SendClientMessage(playerid, VERMELHO, "   [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(playerid, 606);
                        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(playerid, newkeys, oldkeys)
{
        new
        string[256], CorridaArquivo[256], arquivo[256], Float: vPos[4];
        if(newkeys & KEY_FIRE)
        {
                if(ConstruindoCorrida == playerid+1)
                {
                        if(BuildTakeVehPos == true)
                        {
                                if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, VERMELHO, ">> Voce Prescisa Estar em Um Veiculo");
                                format(arquivo, sizeof(arquivo), DIRETORIO_CORRIDAS, NomeConstrucao);
                                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(string, sizeof(string), "PosX_%d", BuildVehPosCount), DOF2_SetFloat(arquivo, string, vPos[0]);
                                format(string, sizeof(string), "PosY_%d", BuildVehPosCount), DOF2_SetFloat(arquivo, string, vPos[1]);
                                format(string, sizeof(string), "PosZ_%d", BuildVehPosCount), DOF2_SetFloat(arquivo, string, vPos[2]);
                                format(string, sizeof(string), "Angulo_%d", BuildVehPosCount), DOF2_SetFloat(arquivo, string, vPos[3]);
                                format(string, sizeof(string), ">> Posiзгo Do Veiculo '%d' Setado.", BuildVehPosCount+1);
                                SendClientMessage(playerid, AMARELO, string);
                                BuildVehPosCount++;
                        }
                        if(BuildVehPosCount >= 2)
                        {
 
                                BuildVehPosCount = 0;
                                BuildTakeVehPos = false;
                                ShowDialog(playerid, 605);
                        }
                        if(BuildTakeCheckpoints == true)
                        {
 
                                if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "");
                                if(ConstruirCheckPointCount > MAX_CHECKPOINTS) return SendClientMessage(playerid, VERMELHO, ">> Voce Atingiu o Limite Maximo de Check-Point");
                                if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, VERMELHO, ">> Voce Prescisa Estar em Um Veiculo");
                                format(arquivo, sizeof(arquivo), DIRETORIO_CORRIDAS, NomeConstrucao);
                                GetVehiclePos(GetPlayerVehicleID(playerid), vPos[0], vPos[1], vPos[2]);
                                format(string, sizeof(string), "CP_%d_PosX", ConstruirCheckPointCount), DOF2_SetFloat(arquivo, string, vPos[0]);
                                format(string, sizeof(string), "CP_%d_PosY", ConstruirCheckPointCount), DOF2_SetFloat(arquivo, string, vPos[1]);
                                format(string, sizeof(string), "CP_%d_PosZ", ConstruirCheckPointCount), DOF2_SetFloat(arquivo, string, vPos[2]);
                                format(string, sizeof(string), ">> Checkpoint '%d' Setado!", ConstruirCheckPointCount+1);
                                SendClientMessage(playerid, AMARELO, string);
                                ConstruirCheckPointCount++;
                        }
                }
        }
        if(newkeys & KEY_SECONDARY_ATTACK)
        {
                if(BuildTakeCheckpoints == true)
                {
 
                        ShowDialog(playerid, 606);
                        format(CorridaArquivo, sizeof(CorridaArquivo), DIRETORIO_NOME_CORRIDAS);
                        TotalCorridas = DOF2_GetInt(CorridaArquivo, "TotalCorridas");
                        TotalCorridas++;
                        DOF2_SetInt(CorridaArquivo, "TotalCorridas", TotalCorridas);
                        format(string, sizeof(string), "Race_%d", TotalCorridas-1);
                        format(arquivo, sizeof(arquivo), DIRETORIO_CORRIDAS, NomeConstrucao);
                        DOF2_SetString(CorridaArquivo, string, NomeConstrucao);
                        DOF2_SetInt(arquivo, "TotalCP", ConstruirCheckPointCount);
                        Loop(x, 5)
                        {
 
                                format(string, sizeof(string), "MelhorTempoCorrida-%d", x);
                                DOF2_SetString(arquivo, string, "0");
                                format(string, sizeof(string), "MelhorCorrida-%d", x);
                                DOF2_SetString(arquivo, string, "Nenhum");
                        }
                }
        }
        return 1;
}
 
function CarregarNomeCorridas()
{
        new
        CorridaArquivo[64],string[64];
        format(CorridaArquivo, sizeof(CorridaArquivo), DIRETORIO_NOME_CORRIDAS);
        TotalCorridas = DOF2_GetInt(CorridaArquivo, "TotalCorridas");
        Loop(x, TotalCorridas)
        {
 
                format(string, sizeof(string), "Race_%d", x), strmid(NomeCorridas[x], DOF2_GetString(CorridaArquivo, string), 0, 20, sizeof(NomeCorridas));
                printf(">> Loaded Races: %s", NomeCorridas[x]);
        }
        return 1;
}
 
function CarregarCorridasAutomaticas(rName[])
{
        new
        arquivo[256],
        string[256]
        ;
        format(arquivo, sizeof(arquivo), DIRETORIO_CORRIDAS, rName);
        strmid(NomeCorrida, rName, 0, strlen(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(x, 2)
        {
 
                format(string, sizeof(string), "PosX_%d", x), CoordVehCorrida[x][0] = DOF2_GetFloat(arquivo, string);
                format(string, sizeof(string), "PosY_%d", x), CoordVehCorrida[x][1] = DOF2_GetFloat(arquivo, string);
                format(string, sizeof(string), "PosZ_%d", x), CoordVehCorrida[x][2] = DOF2_GetFloat(arquivo, string);
                format(string, sizeof(string), "Angulo_%d", x), CoordVehCorrida[x][3] = DOF2_GetFloat(arquivo, string);
                #if DEBUG_CORRIDA == 1
                printf("VeiculoPos %d: %f, %f, %f, %f", x, CoordVehCorrida[x][0], CoordVehCorrida[x][1], CoordVehCorrida[x][2], CoordVehCorrida[x][3]);
                #endif
        }
        Loop(x, TotalCP)
        {
 
                format(string, sizeof(string), "CP_%d_PosX", x), CPCoords[x][0] = DOF2_GetFloat(arquivo, string);
                format(string, sizeof(string), "CP_%d_PosY", x), CPCoords[x][1] = DOF2_GetFloat(arquivo, string);
                format(string, sizeof(string), "CP_%d_PosZ", x), CPCoords[x][2] = DOF2_GetFloat(arquivo, string);
                #if DEBUG_CORRIDA == 1
                printf("RaceCheckPoint %d: %f, %f, %f", x, CPCoords[x][0], CPCoords[x][1], CPCoords[x][2]);
                #endif
        }
        Posicao = 0;
        FinishCount = 0;
        JoinCount = 0;
        Loop(x, 2) PlayersCount[x] = 0;
        CountAmount = CONTAGEM_START;
        CorridaTempo = MAX_CORRIDA_TEMPO;
        RaceBusy = 0x01;
        CountTimer = SetTimer("CountTillRace", 999, 1);
        TempoProgresso = 0;
        return 1;
}
 
function LoadRace(playerid, rName[])
{
        new
        arquivo[256],
        string[256]
        ;
 
        format(arquivo, sizeof(arquivo), DIRETORIO_CORRIDAS, rName);
        if(!DOF2_FileExists(arquivo)) return SendClientMessage(playerid, VERMELHO, "[x] Corrida Inexistente ! ");
        strmid(NomeCorrida, rName, 0, strlen(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(x, 2)
        {
 
                format(string, sizeof(string), "PosX_%d", x), CoordVehCorrida[x][0] = DOF2_GetFloat(arquivo, string);
                format(string, sizeof(string), "PosY_%d", x), CoordVehCorrida[x][1] = DOF2_GetFloat(arquivo, string);
                format(string, sizeof(string), "PosZ_%d", x), CoordVehCorrida[x][2] = DOF2_GetFloat(arquivo, string);
                format(string, sizeof(string), "Angulo_%d", x), CoordVehCorrida[x][3] = DOF2_GetFloat(arquivo, string);
                #if DEBUG_CORRIDA == 1
                printf("VeiculoPos %d: %f, %f, %f, %f", x, CoordVehCorrida[x][0], CoordVehCorrida[x][1], CoordVehCorrida[x][2], CoordVehCorrida[x][3]);
                #endif
        }
        Loop(x, TotalCP)
        {
 
                format(string, sizeof(string), "CP_%d_PosX", x), CPCoords[x][0] = DOF2_GetFloat(arquivo, string);
                format(string, sizeof(string), "CP_%d_PosY", x), CPCoords[x][1] = DOF2_GetFloat(arquivo, string);
                format(string, sizeof(string), "CP_%d_PosZ", x), CPCoords[x][2] = DOF2_GetFloat(arquivo, string);
                #if DEBUG_CORRIDA == 1
                printf("RaceCheckPoint %d: %f, %f, %f", x, CPCoords[x][0], CPCoords[x][1], CPCoords[x][2]);
                #endif
        }
        Posicao = 0;
        FinishCount = 0;
        JoinCount = 0;
        Loop(x, 2) PlayersCount[x] = 0;
        NaCorrida[playerid] = true;
        CountAmount = CONTAGEM_START;
        CorridaTempo = MAX_CORRIDA_TEMPO;
        RaceBusy = 0x01;
        TempoProgresso = 0;
        SetupRaceForPlayer(playerid);
        CountTimer = SetTimer("CountTillRace", 999, 1);
        return 1;
}
 
function SetCP(playerid, PrevCP, NextCP, MaxCP, Type)
{
        if(Type == 0)
        {
 
                if(NextCP == MaxCP) SetPlayerRaceCheckpoint(playerid, 1, CPCoords[PrevCP][0], CPCoords[PrevCP][1], CPCoords[PrevCP][2], CPCoords[NextCP][0], CPCoords[NextCP][1], CPCoords[NextCP][2], TAMANHO_CHECKPOINTS);
                else SetPlayerRaceCheckpoint(playerid, 0, CPCoords[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 == MaxCP) SetPlayerRaceCheckpoint(playerid, 4, CPCoords[PrevCP][0], CPCoords[PrevCP][1], CPCoords[PrevCP][2], CPCoords[NextCP][0], CPCoords[NextCP][1], CPCoords[NextCP][2], TAMANHO_CHECKPOINTS);
                else SetPlayerRaceCheckpoint(playerid, 3, CPCoords[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(playerid, false);
        CPCoords[playerid][3] = 0;
        SetCP(playerid, CPProgesso[playerid], CPProgesso[playerid]+1, TotalCP, CorridaTipo);
        if(IsOdd(playerid)) Index = 1;
        else Index = 0;
 
        switch(Index)
        {
 
                case 0:
                {
 
                        if(PlayersCount[0] == 1)
                        {
 
 
                                CoordVehCorrida[0][0] -= (6 * floatsin(-CoordVehCorrida[0][3], degrees));
                                CoordVehCorrida[0][1] -= (6 * floatcos(-CoordVehCorrida[0][3], degrees));
                                if(IsPlayerInAnyVehicle(playerid) == 1)
                                RepairVehicle(playerid);
                                CriarVehCorrida[playerid] = CreateVehicle(VeiculoCorrida, CoordVehCorrida[0][0], CoordVehCorrida[0][1], CoordVehCorrida[0][2]+2, CoordVehCorrida[0][3], random(126), random(126), (60 * 60));
                                SetPlayerPos(playerid, CoordVehCorrida[0][0], CoordVehCorrida[0][1], CoordVehCorrida[0][2]+2);
                                SetPlayerFacingAngle(playerid, CoordVehCorrida[0][3]);
                                PutPlayerInVehicle(playerid, CriarVehCorrida[playerid], RepairVehicle(playerid));
                                SetVehicleHealth(GetPlayerVehicleID(playerid),99999);
                                Camera(playerid, CoordVehCorrida[0][0], CoordVehCorrida[0][1], CoordVehCorrida[0][2], CoordVehCorrida[0][3], 20);
                        }
                }
                case 1:
                {
 
                        if(PlayersCount[1] == 1)
                        {
 
 
                                CoordVehCorrida[1][0] -= (6 * floatsin(-CoordVehCorrida[1][3], degrees));
                                CoordVehCorrida[1][1] -= (6 * floatcos(-CoordVehCorrida[1][3], degrees));
                                CriarVehCorrida[playerid] = CreateVehicle(VeiculoCorrida, CoordVehCorrida[1][0], CoordVehCorrida[1][1], CoordVehCorrida[1][2]+2, CoordVehCorrida[1][3], random(126), random(126), (60 * 60));
                                SetPlayerPos(playerid, CoordVehCorrida[1][0], CoordVehCorrida[1][1], CoordVehCorrida[1][2]+2);
                                SetPlayerFacingAngle(playerid, CoordVehCorrida[1][3]);
                                PutPlayerInVehicle(playerid, CriarVehCorrida[playerid], 0);
                                SetVehicleHealth(GetPlayerVehicleID(playerid),99999);
                                RepairVehicle(GetPlayerVehicleID(playerid));
                                Camera(playerid, CoordVehCorrida[1][0], CoordVehCorrida[1][1], CoordVehCorrida[1][2], CoordVehCorrida[1][3], 20);
                        }
                }
        }
        switch(Index)
        {
 
                case 0:
                {
 
                        if(PlayersCount[0] != 1)
                        {
 
 
                                CriarVehCorrida[playerid] = CreateVehicle(VeiculoCorrida, CoordVehCorrida[0][0], CoordVehCorrida[0][1], CoordVehCorrida[0][2]+2, CoordVehCorrida[0][3], random(126), random(126), (60 * 60));
                                SetPlayerPos(playerid, CoordVehCorrida[0][0], CoordVehCorrida[0][1], CoordVehCorrida[0][2]+2);
                                SetPlayerFacingAngle(playerid, CoordVehCorrida[0][3]);
                                PutPlayerInVehicle(playerid, CriarVehCorrida[playerid], 0);
                                SetVehicleHealth(GetPlayerVehicleID(playerid),99999);
                                RepairVehicle(GetPlayerVehicleID(playerid));
                                Camera(playerid, CoordVehCorrida[0][0], CoordVehCorrida[0][1], CoordVehCorrida[0][2], CoordVehCorrida[0][3], 20);
                                PlayersCount[0] = 1;
                        }
                }
                case 1:
                {
 
                        if(PlayersCount[1] != 1)
                        {
 
 
                                CriarVehCorrida[playerid] = CreateVehicle(VeiculoCorrida, CoordVehCorrida[1][0], CoordVehCorrida[1][1], CoordVehCorrida[1][2]+2, CoordVehCorrida[1][3], random(126), random(126), (60 * 60));
                                SetPlayerPos(playerid, CoordVehCorrida[1][0], CoordVehCorrida[1][1], CoordVehCorrida[1][2]+2);
                                SetVehicleHealth(GetPlayerVehicleID(playerid),99999);
                                SetPlayerFacingAngle(playerid, CoordVehCorrida[1][3]);
                                PutPlayerInVehicle(playerid, CriarVehCorrida[playerid], 0);
                                Camera(playerid, CoordVehCorrida[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(playerid, 10);
        #endif
        InfoTimer[playerid] = SetTimerEx("TextInfo", 500, 1, "e", playerid);
        if(JoinCount == 1) format(string, sizeof(string), "Corrida: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~CorridaTempo: ~w~%s~n~~y~Posicao: ~w~1/1~n~ ", NomeCorrida, CPProgesso[playerid], TotalCP, TempoConvertido(CorridaTempo));
        else format(string, sizeof(string), "Corrida: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~CorridaTempo: ~w~%s~n~~y~Posicao: ~w~%d/%d~n~ ", NomeCorrida, CPProgesso[playerid], TotalCP, TempoConvertido(CorridaTempo), Colocacao[playerid], JoinCount);
        TextDrawSetString(CorridaInfo[playerid], string);
        TextDrawShowForPlayer(playerid, CorridaInfo[playerid]);
        JoinCount++;
        return 1;
}
 
function CountTillRace()
{
        switch(CountAmount)
        {
 
                case 0:
                {
 
                        ForEach(i, MAX_PLAYERS)
                        {
 
                                if(NaCorrida[i] == false)
                                {
 
                                        new
                                        string[128]
                                        ;
                                        format(string, sizeof(string), ">> Vocк nгo pode participar de corrida chamado %s mais. Junte-se tempo estб acabado!", NomeCorrida);
                                        SendClientMessage(i, VERMELHO, string);
                                }
                        }
                        StartRace();
                }
                case 1..5:
                {
 
                        new
                        string[10]
                        ;
                        format(string, sizeof(string), "~b~%d", CountAmount);
                        ForEach(i, MAX_PLAYERS)
                        {
 
                                if(NaCorrida[i] == true)
                                {
 
                                        GameTextForPlayer(i, string, 999, 5);
                                        PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
                                }
                        }
                }
                case 60, 50, 40, 30, 20, 10:
                {
 
                        new
                        string[128]
                        ;
                        format(string, sizeof(string), ">> Uma Corrida Foi Iniciada ! Digite /EntrarRace para Participar da Corrida");
                        SendClientMessageToAll(VERMELHO, string);
                }
        }
        return CountAmount--;
}
 
function StartRace()
{
        ForEach(i, MAX_PLAYERS)
        {
 
                if(NaCorrida[i] == true)
                {
 
                        TogglePlayerControllable(i, true);
                        PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
                        GameTextForPlayer(i, "~g~GO GO GO", 2000, 5);
                        SetCameraBehindPlayer(i);
                        SetVehicleHealth(GetPlayerVehicleID(i),99999);
                        RepairVehicle(GetPlayerVehicleID(i));
                }
        }
        rCounter = SetTimer("RaceCounter", 900, 1);
        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(i, MAX_PLAYERS)
        {
 
                if(NaCorrida[i] == true)
                {
 
                        DisablePlayerRaceCheckpoint(i);
                        DestroyVehicle(CriarVehCorrida[i]);
                        NaCorrida[i] = false;
                        TextDrawHideForPlayer(i, CorridaInfo[i]);
                        CPProgesso[i] = 0;
                        KillTimer(InfoTimer[i]);
                }
        }
        if(CorrridasAutomaticas == true) CarregarNomeCorridas(), 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 == 1) format(string, sizeof(string), "Corrida: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~CorridaTempo: ~w~%s~n~~y~Posicao: ~w~1/1~n~", NomeCorrida, CPProgesso[playerid], TotalCP, TempoConvertido(CorridaTempo));
        else format(string, sizeof(string), "Corrida: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~CorridaTempo: ~w~%s~n~~y~Posicao: ~w~%d/%d~n~", NomeCorrida, CPProgesso[playerid], TotalCP, TempoConvertido(CorridaTempo), Colocacao[playerid], JoinCount);
        TextDrawSetString(CorridaInfo[playerid], string);
        TextDrawShowForPlayer(playerid, CorridaInfo[playerid]);
}
 
function Camera(playerid, Float:X, Float:Y, Float:Z, Float:A, Mul)
{
        SetPlayerCameraLookAt(playerid, X, Y, Z);
        SetPlayerCameraPos(playerid, X + (Mul * floatsin(-A, degrees)), Y + (Mul * floatcos(-A, degrees)), Z+6);
}
 
function IsPlayerInRace(playerid)
{
        if(NaCorrida[playerid] == true) return true;
        else return false;
}
 
function ShowDialog(playerid, dialogid)
{
    switch(dialogid)
    {
        case 599: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, CreateCaption("Construir Nova Corrida"), "\
        Corrida Terrestre / Nautica\n\
        Corrida Aerea", "Next", "Exit");
 
        case 600: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, CreateCaption("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 601: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, CreateCaption("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 602: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, CreateCaption("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 603: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, CreateCaption("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 604: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, CreateCaption("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 605: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, CreateCaption("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 606: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, CreateCaption("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(string, sizeof(string), "{03FF5F}» {F50000}Corrida", arguments);
        return string;
}
 
stock IsValidVehicle(vehicleid)
{
        if(vehicleid < 400 || vehicleid > 611) return false;
        else return true;
}
 
ReturnVehicleID(vName[])
{
        Loop(x, 211)
        {
 
                if(strfind(vNames[x], vName, true) != -1)
                return x + 400;
        }
        return -1;
}
 
TempoConvertido(seconds)
{
        new tmp[16];
        new minutes = floatround(seconds/60);
        seconds -= minutes*60;
        format(tmp, sizeof(tmp), "%d:%02d", minutes, seconds);
        return tmp;
}
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;
}
 
forward GodModEvento();
public GodModEvento()
{
    for(new i; i < MAX_VEHICLES; ++i)
    {
        RepairVehicle(i);
        SetVehicleHealth(i, 1000.0);
    }
    return 1;
}
Reply
#2

use [pawn][/*pawn] sem o * [/*pawn] sem o * no final do post e no cmз [pawn] , pra facilita.
Reply
#3

tem nd disso --'
Reply
#4

ele quis dizer pra voce colocar o codigo entre [pawn] codigo aqui dentro [*/pawn] aqui no forum claro que sem o *
Reply
#5

pronto. alguem pode me ajudar?? por favor
Reply
#6

pode explica melhor porfavor?
Reply
#7

quando eu to criando os check point pra corrida, quando chego la pro setimo check point o veiculo q eu to criando os check point some e nao da pra criar mais tendeu??
Reply
#8

talvez limit dele so seja 7 .. ai quando passa no 7°, o carro some.. que dizer que o player ganhou.. vc pd adc uma text na tela ou no xat msm ex: ''o player %s ganhou a corrida!'' , si foi oq eu entendi.
Reply
#9

tipo tem vez q da pra criar + q 7 , o limeite й 800 checkpoints, mas o carro some devez enquado antes e dps do 7, tendeu, ja chego sumir no 1
Reply
#10

viish.. vo verifica o code edo edit@
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)