27.06.2012, 13:24
Eu estou na ideia que posso fazer mais que uma Race, e tentei ate fazer duas para teste!
a primeira funciona bem ! a segunda aparece so o primeiro checkpoint e depois passa logo para o segundo checkpoint mas da primeira corrida, e deveria passar para o segundo checkpoint da segunda corrida.
Vou postar o codigo
Ambas as corridas tem 8 cordenadas cada
o comando para a primeira corrida
o comando para a segunda
Qual o erro que estou a cometer, uma vez que compila direito
a primeira funciona bem ! a segunda aparece so o primeiro checkpoint e depois passa logo para o segundo checkpoint mas da primeira corrida, e deveria passar para o segundo checkpoint da segunda corrida.
Vou postar o codigo
Ambas as corridas tem 8 cordenadas cada
pawn Код:
new Stats[MAX_PLAYERS];
new Float:Checkpoints[8][3] = //4 = 4 coordenadas | 3 = 3 "valores" (X,Y,Z)
{
{1406.4424,2809.1531,10.5919},
{1126.8287,2760.1855,10.1019},
{950.1466,2897.5222,52.7929},
{780.9700,2885.5942,7.1434},
{469.1844,2716.8953,64.3484},
{-151.7990,2551.8516,25.6030},
{-375.0106,2204.2549,41.8663},
{-506.9388,2592.5195,53.1969}
};
new Checkcarta[MAX_PLAYERS];
new Float:CartaCP[8][3] =
{
{-2603.3442,-53.3233,3.7527},
{-2852.7930,376.6257,3.9116},
{-2750.2720,638.1409,27.3291},
{-2675.8254,1288.4055,6.6118},
{-2059.3032,1281.6399,7.1298},
{-2188.6697,1176.6960,55.1438},
{-1863.6123,846.1705,34.5965},
{-2046.5602,-91.8176,34.7318}
};
pawn Код:
public OnPlayerEnterRaceCheckpoint(playerid)
{
if(Stats[playerid] == 0){
switch(Stats[playerid]) {
case 0:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[1][0], Checkpoints[1][1], Checkpoints[1][2], Checkpoints[2][0], Checkpoints[2][1], Checkpoints[2][2], 10);
Stats[playerid] = 1;
return 1;
}
case 1:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[2][0], Checkpoints[2][1], Checkpoints[2][2], Checkpoints[3][0], Checkpoints[3][1], Checkpoints[3][2], 10);
Stats[playerid] = 2;
return 1;
}
case 2:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[3][0], Checkpoints[3][1], Checkpoints[3][2], Checkpoints[4][0], Checkpoints[4][1], Checkpoints[4][2], 10);
Stats[playerid] = 3;
return 1;
}
case 3:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[4][0], Checkpoints[4][1], Checkpoints[4][2], Checkpoints[5][0], Checkpoints[5][1], Checkpoints[5][2], 10);
Stats[playerid] = 4;
return 1;
}
case 4:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[5][0], Checkpoints[5][1], Checkpoints[5][2], Checkpoints[6][0], Checkpoints[6][1], Checkpoints[6][2], 10);
Stats[playerid] = 5;
return 1;
}
case 5:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[6][0], Checkpoints[6][1], Checkpoints[6][2], Checkpoints[7][0], Checkpoints[7][1], Checkpoints[7][2], 10);
Stats[playerid] = 6;
return 1;
}
case 6:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[7][0], Checkpoints[7][1], Checkpoints[7][2], Checkpoints[7][0], Checkpoints[7][1], Checkpoints[7][2], 10);
Stats[playerid] = 7;
return 1;
}
case 7:
{
DisablePlayerRaceCheckpoint(playerid);
GameTextForPlayer(playerid, "Corrida terminada", 3000, 1);
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid,pName,sizeof(pName));
new string[248];
format(string,sizeof(string),"%s {E0C589}terminou a prova de Rally!",pName);
SendClientMessageToAll(moderador, string);
return 1;
}
}
}
if(Checkcarta[playerid] > 0){
switch(Checkcarta[playerid])
{
case 1:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, CartaCP[1][0], CartaCP[1][1], CartaCP[1][2], CartaCP[2][0], CartaCP[2][1], CartaCP[2][2], 10);
Checkcarta[playerid] = 2;
return 1;
}
case 2:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, CartaCP[2][0], CartaCP[2][1], CartaCP[2][2], CartaCP[3][0], CartaCP[3][1], CartaCP[3][2], 10);
Checkcarta[playerid] = 3;
return 1;
}
case 3:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, CartaCP[3][0], CartaCP[3][1], CartaCP[3][2], CartaCP[4][0], CartaCP[4][1], CartaCP[4][2], 10);
Checkcarta[playerid] = 4;
return 1;
}
case 4:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, CartaCP[4][0], CartaCP[4][1], CartaCP[4][2], CartaCP[5][0], CartaCP[5][1], CartaCP[5][2], 10);
Checkcarta[playerid] = 5;
return 1;
}
case 5:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, CartaCP[5][0], CartaCP[5][1], CartaCP[5][2], CartaCP[6][0], CartaCP[6][1], CartaCP[6][2], 10);
Checkcarta[playerid] = 6;
return 1;
}
case 6:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, CartaCP[6][0], CartaCP[6][1], CartaCP[6][2], CartaCP[7][0], CartaCP[7][1], CartaCP[7][2], 10);
Checkcarta[playerid] = 7;
return 1;
}
case 7:
{
DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 0, CartaCP[7][0], CartaCP[7][1], CartaCP[7][2], CartaCP[7][0], CartaCP[7][1], CartaCP[7][2], 10);
Checkcarta[playerid] = 8;
return 1;
}
case 8:
{
DisablePlayerRaceCheckpoint(playerid);
GameTextForPlayer(playerid, "Exame terminado", 3000, 1);
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid,pName,sizeof(pName));
new string[248];
format(string,sizeof(string),"%s {E0C589}terminou a prova de Rally!",pName);
SendClientMessageToAll(moderador, string);
return 1;
}
}
}
return 0;
}
pawn Код:
if(strcmp(cmdtext, "/partida", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(IsPlayerInRangeOfPoint(playerid,15,1430.5233,2819.9524,10.8203)==0) return SendClientMessage(playerid, COLOR_DARKRED, "Tens de estar na zona de Rally");
Stats[playerid] = 0;
SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[0][0], Checkpoints[0][1], Checkpoints[0][2], Checkpoints[1][0], Checkpoints[1][1], Checkpoints[1][2], 10);
SendClientMessage(playerid, 0x456EAF67, "Corrida ativa");
return 1;
}
return 1;
}
pawn Код:
if(strcmp(cmdtext, "/corrida", true) == 0)
{
if(IsPlayerConnected(playerid))
{
Checkcarta[playerid] = 1;
SetPlayerRaceCheckpoint(playerid, 0, CartaCP[0][0], CartaCP[0][1], CartaCP[0][2], CartaCP[1][0], CartaCP[1][1], CartaCP[1][2], 10);
SendClientMessage(playerid, 0x456EAF67, "Corrida ativa");
return 1;
}
return 1;
}
Qual o erro que estou a cometer, uma vez que compila direito