20.09.2012, 03:26
Bom to criando um sistema de corrida por cp so que ao eu criar os cps e logo apos abrir a corrida, somente o 1 cp fica com a setinha, os outros fica no formato da bandeirinha e o ultimo cp buga, vai la pro meio do mapa
Code
Code
pawn Код:
// topo
new CpsNormais = 255;
new CPFinal = 255;
new QueCP[MAX_PLAYERS];
// comandos
CMD:configevento(playerid, params[])
{
if(CriandoEvento == 0) return SendClientMessage(playerid, VERMELHO_ESCURO, "[x] Voce prescisar estar em modo de construзгo");
if(EventoCriado == 1) return SendClientMessage(playerid, VERMELHO_ESCURO, "[x] ja existe um evento criado no momento. finalize - o");
new IDConfig;
if(sscanf(params, "d", IDConfig)) return SendClientMessage(playerid, VERMELHO_ESCURO, "[x] Uso: /configevento [ 1 Terrestre e Nautico | 2 Aereo ]");
if(IDConfig < 1 || IDConfig > 2) return SendClientMessage(playerid, VERMELHO_ESCURO, "[x] ID Invбlido, Uso: /configevento [ 1 Terrestre e Nautico | 2 Aereo ]");
if(IDConfig == 1)
{
SendClientMessage(playerid, 0x9ACD32AA, "[ INFO ] Voce selecionou o modo 1 Terrestre / Nautico. A partir de agora apenas checkpoints serгo criados.");
CpsNormais = 0; // ID do cp da setinha
CPFinal = 1; // ID do cp da bandeirinha
EventoConfig = 1;
EventoCriado = 1;
EventoDesbloqueado = 0;
return 1;
}
else if(IDConfig == 2)
{
SendClientMessage(playerid, 0x9ACD32AA, "[ INFO ] Voce selecionou modo 2 Aereo. A partir de agora apenas checkpoints serгo criados.");
CpsNormais = 3; // ID do cp do arco
CPFinal = 4; // ID do cp da bandeirinha do arco
EventoConfig = 1;
EventoCriado = 1;
EventoDesbloqueado = 0;
return 1;
}
return 1;
}
CMD:criarcp(playerid)
{
new vid = GetPlayerVehicleID(playerid);
if(CriandoEvento == 0) return SendClientMessage(playerid, VERMELHO_ESCURO, "[x] Voce prescisar estar em modo de construзгo");
if(EventoConfig == 0) return SendClientMessage(playerid, VERMELHO_ESCURO, "[x] Vocк prescisar configurar o evento primeiro /ConfigEvento");
if(!IsPlayerInVehicle(playerid, vid)) return SendClientMessage(playerid, VERMELHO_ESCURO, "[x] Vocк estar em algum veiculo para setar os checkpoints");
new string[148];
if(CheckPointSetado < MAX_RACE_CPS)
{
new CP[80], Float:GetX, Float:GetY, Float:GetZ;
GetPlayerPos(playerid, GetX, GetY, GetZ);
CheckPointSetado++;
CheckpointCoord[0][CheckPointSetado] = GetX;
CheckpointCoord[1][CheckPointSetado] = GetY;
CheckpointCoord[2][CheckPointSetado] = GetZ;
format(CP, sizeof( CP ), "~y~Checkpoint ~r~%d ~y~setado", CheckPointSetado);
GameTextForPlayer(playerid, CP, 3000, 3);
PlayerPlaySound(playerid,1056,0.0,0.0,0.0);
}
else
{
format(string,sizeof(string),"[x] Voce excedeu o limite de checkpoint. Limite: %d",MAX_RACE_CPS);
SendClientMessage(playerid,VERMELHO_ESCURO,string);
}
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
if(CheckPointSetado > 0)
{
if(QueCP[playerid] == CheckPointSetado)
{
placement++;
new string[128];
if(placement == 1)
{
for(new eventocar = 0; eventocar < MAX_VEHEVENTO; eventocar++)
{
if(IsPlayerInVehicle(playerid,VehEvento[eventocar]))
{
SendClientMessageToAll(VERMELHO_ESCURO, "______________________________________________________________________");
SendClientMessageToAll(VERMELHO_ESCURO, " ");
format(string, sizeof(string), " %s {FFFFFF}venceu o evento em 1є lugar", nome(playerid));
SendClientMessageToAll(VERMELHO_ESCURO, string);
SendClientMessageToAll(VERMELHO_ESCURO, " ");
SendClientMessageToAll(VERMELHO_ESCURO, "______________________________________________________________________");
}
}
}
else if(placement == 2)
{
for(new eventocar = 0; eventocar < MAX_VEHEVENTO; eventocar++)
{
if(IsPlayerInVehicle(playerid,VehEvento[eventocar]))
{
SendClientMessageToAll(VERMELHO_ESCURO, "______________________________________________________________________");
SendClientMessageToAll(VERMELHO_ESCURO, " ");
format(string, sizeof(string), " %s {FFFFFF}venceu o evento em 2є lugar", nome(playerid));
SendClientMessageToAll(VERMELHO_ESCURO, string);
SendClientMessageToAll(VERMELHO_ESCURO, " ");
SendClientMessageToAll(VERMELHO_ESCURO, "______________________________________________________________________");
}
}
}
else if(placement == 3)
{
for(new eventocar = 0; eventocar < MAX_VEHEVENTO; eventocar++)
{
if(IsPlayerInVehicle(playerid,VehEvento[eventocar]))
{
SendClientMessageToAll(VERMELHO_ESCURO, "______________________________________________________________________");
SendClientMessageToAll(VERMELHO_ESCURO, " ");
format(string, sizeof(string), " %s {FFFFFF}venceu o evento em 3є lugar", nome(playerid));
SendClientMessageToAll(VERMELHO_ESCURO, string);
SendClientMessageToAll(VERMELHO_ESCURO, " ");
SendClientMessageToAll(VERMELHO_ESCURO, "______________________________________________________________________");
}
}
}
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
DisablePlayerRaceCheckpoint(playerid);
QueCP[playerid] = 0;
return 1;
}
else if(QueCP[playerid] == CheckPointSetado-1)
{
for(new eventocar = 0; eventocar < MAX_VEHEVENTO; eventocar++)
{
if(IsPlayerInVehicle(playerid,VehEvento[eventocar]))
{
QueCP[playerid] += 1;
SetPlayerRaceCheckpoint(playerid, CpsNormais, CheckpointCoord[0][QueCP[playerid]], CheckpointCoord[1][QueCP[playerid]], CheckpointCoord[2][QueCP[playerid]], 0.0, 0.0, 0.0, 8.0);
PlayerPlaySound(playerid, 1137, 0.0, 0.0, 0.0);
}
}
}
PlayerPlaySound(playerid, 1137, 0.0, 0.0, 0.0);
QueCP[playerid] += 1;
SetPlayerRaceCheckpoint(playerid, CPFinal, CheckpointCoord[0][QueCP[playerid]], CheckpointCoord[1][QueCP[playerid]], CheckpointCoord[2][QueCP[playerid]], CheckpointCoord[0][QueCP[playerid]+1], CheckpointCoord[1][QueCP[playerid]+1], CheckpointCoord[2][QueCP[playerid]+1], 10.0);
}
return 1;
}