05.11.2012, 22:12
(
Последний раз редактировалось aldair8; 07.11.2012 в 00:28.
Причина: Ajuda PF
)
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; }