[Ajuda] Da para ter duas RaceCheckpoint ?
#1

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
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;
}
o comando para a primeira corrida

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;
}
o comando para a segunda

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
Reply
#2

pode usar 2 racecheckpoints usando streamer
Reply
#3

so mesmo com streamer ? ?
Reply
#4

Tente isso amigo:

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 1:
            {
                DisablePlayerRaceCheckpoint(playerid);
                SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[1][0], Checkpoints[1][1], Checkpoints[1][2], Checkpoints[2][0], Checkpoints[2][1], Checkpoints[2][2], 10);
            }
            case 2:
            {
                DisablePlayerRaceCheckpoint(playerid);
                SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[2][0], Checkpoints[2][1], Checkpoints[2][2], Checkpoints[3][0], Checkpoints[3][1], Checkpoints[3][2], 10);
            }
            case 3:
            {
                DisablePlayerRaceCheckpoint(playerid);
                SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[3][0], Checkpoints[3][1], Checkpoints[3][2], Checkpoints[4][0], Checkpoints[4][1], Checkpoints[4][2], 10);
            }
            case 4:
            {
                DisablePlayerRaceCheckpoint(playerid);
                SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[4][0], Checkpoints[4][1], Checkpoints[4][2], Checkpoints[5][0], Checkpoints[5][1], Checkpoints[5][2], 10);
            }
            case 5:
            {
                DisablePlayerRaceCheckpoint(playerid);
                SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[5][0], Checkpoints[5][1], Checkpoints[5][2], Checkpoints[6][0], Checkpoints[6][1], Checkpoints[6][2], 10);
            }
            case 6:
            {
                DisablePlayerRaceCheckpoint(playerid);
                SetPlayerRaceCheckpoint(playerid, 0, Checkpoints[6][0], Checkpoints[6][1], Checkpoints[6][2], Checkpoints[7][0], Checkpoints[7][1], Checkpoints[7][2], 10);
            }
            case 7:
            {
                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]++;
            case 8:
            {
                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);
                Stats[playerid]=0;
            }
           
       }
    }
    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);
            }
            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);
            }
            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);
            }
            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);
            }
            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);
            }
            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);
            }
            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]++;
            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);
                Checkcarta[playerid]=0;
            }
        }
    }
    return 1;
}
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] = 1;
        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;
}
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;
}
OBS: Nao testei isso, teste ae e ve se funciona ^^
Reply
#5

Nгo da erro nenhum so que mal passo a Checkpoint da /corrida em vez de ativar o segundo Checkpoint da corrida, nгo ele ativa a segunda Checkpoint da /partida.
Reply
#6

Testa o que eu postei ae
Reply
#7

tenho um gm base que eu fis aqui e tem sistema de race
vc pode adicionar quantas race quiser
nгo vou postar no forum mais passo pra quem me adicionar msn: leandroneni@live.com
Reply
#8

Rick_DR, Testa o que eu postei e depois me avisa '-', eu editei a resposta minha que tinha um pequeno erro, agora so falta testar
Reply
#9

Hunter_Xtreme tive a ver antes de voce editar, o erro era meu mas voce ajudou-me a conseguir corrigir, Um seja eu no comando /partida colocava o stats como = 0, e tinha de colocar um valor diferente do neutro.

+ REP por ajudar e por se preocupar
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)