[FilterScript] Sistema de teste de habilitaзгo.
#1

Descriзгo:
Bom, muita gente vem me pedindo pra criar um sistema de teste de habilitaзгo onde o player escolhe qual a categoria de veнculos na qual ele deseja fazer o teste e inicia o teste, fiz 3 categorias, aeronaves, carros e motos, cada um com seu preзo, nгo fiz as variбveis que identificam se o player й habilitado ou nгo por que esse FS fiz pra ser adaptado aos seus GameModes entгo como cada GM tem sua variбvel, nгo achei produtivo cria-las no FS.

Sobre os testes:
Carros: 3 testes, 1° percurso, 2° rota por checkpoints, 3° teste de habilidade no estacionamento, todos com limite de tempo.
Motos: 3 testes, 1° um mini stunt onde o player deverб subir na laje com a moto e passar pro telhado ao lado, 2° uma rota com checkpoints atй pular em um mini stunt do morro pra uma laje abaixo, 3° um percurso atй uma mini fazenda а norte de Los Santos.
Aeronaves: 2 testes, 1° percurso, vocк deve decolar o beagle e pousar no aeroporto abandonado, entгo deverб estaciona-lo no maior hangar disponнvel. 2° percurso, vocк deverб levar o helicoptero RainDance do heliporto de Los Santos atй o heliporto da delegacia de Las Venturas.

Como uma imagem vale mais que mil palavras, resolvi fazer um vнdeo, salvei ele em HD mas ficou com 52GB, salvei normal ficou com 2,13 GB, tava tenso pra fazer upload entгo salvei com baixa qualidade ficou com 109MB.

[ame]http://www.youtube.com/watch?v=8rWkUiIbEZE[/ame]
Click aqui para ver mais imagens:

pawn Code:
#include <a_samp>

#define PickupCor 0xF09C00AA
#define DMenuAutoEscola          200
#define DInstrucaoAutoEscola     201
#define DRepetirCarros1          202
#define DRepetirCarros2          203
#define DRepetirCarros3          204
#define DRepetirMoto1            205
#define DRepetirMoto2            206
#define DRepetirMoto3            207
#define DRepetirAero1            208
#define DRepetirAero2            209
#define MAXPLAYERS 40
//=============================[† Forward †]====================================
forward VerificarConclusao(playerid);
//============================[† Variбveis †]===================================
new VAutoEscolaTeste[MAXPLAYERS];        //Veiculo do teste
new TesteEtapa[MAXPLAYERS];              //Etapa do teste
new FazendoTeste[MAXPLAYERS];            //Fazendo teste
new Verificar[MAXPLAYERS];               //Tempo para chegada
new Float: TesteCoords[21][3] =          //Coordenadas dos Checkpoints
{
    {-1641.479980, 1300.554687, 6.861728},       //Chegada 1° teste carros
    {-1838.397460, -2455.462890, 27.546628},     //1° Ponto 2° teste carros
    {-1649.979736, -2619.526611, 45.465484},     //2° Ponto 2° teste carros
    {-1180.888061, -2639.533447, 11.539744},     //3° Ponto 2° teste carros
    {-780.500183, -2684.883544, 83.137527},      //4° Ponto 2° teste carros
    {-364.759643, -2255.772216, 43.043220},      //5° Ponto 2° teste carros
    {-160.736419, -2425.323242, 35.856044},      //6° Ponto 2° teste carros
    {-184.029815, -2819.222167, 42.097366},      //7° Ponto 2° teste carros
    {-1342.344726, -2875.889160, 54.987930},     //8° Ponto 2° teste carros
    {-1970.295898, -2434.038574, 30.194002},     //Chegada 2° teste carros
    {2305.241455, 1962.293823, 9.433162},        //1° Ponto 3° teste carros
    {2236.203613, 1974.228759, 31.350551},       //Saнda 3° teste carros
    {2305.241455, 1962.293823, 9.433162},        //Chegada 3° teste carros
    {305.941436, -1760.017211, 7.244368},        //1° Ponto 1° teste motos
    {294.514434, -1758.280761, 8.047305},        //Chegada 1° teste motos
    {2775.379394, -1044.423217, 38.830417},      //1° Ponto 2° teste motos
    {2697.045410, -1050.630004, 67.454254},      //2° Ponto 2° teste motos
    {2660.527099, -1071.078979, 68.900634},      //3° Ponto 2° teste motos
    {2742.664794, -1177.842651, 68.896690},      //4° Ponto 2° teste motos
    {2815.201416, -1170.591308, 32.239631},      //Chegada 2° teste motos
    {-577.292663, -189.324462, 78.249137}        //Chegada 3° teste motos
};

main()
{
    print("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n                            Progressгo Pawn\n              Envolvendo jogadores, revolucionando servidores!\n                             Josma_CMD\n\n\n\n\n\n\n\n\n");
}//MAIN By: Gill Penner

public OnFilterScriptInit()
{
    CreatePickup(1239, 1, 1494.325195,1304.942871,1093.289062, 0);   //Pickup autoescola entrada
    CreatePickup(1239, 1, 1081.219726, -1696.847534, 13.546875, 0);  //Pickup autoescola saнda
    CreatePickup(2894, 1, 1490.509765, 1305.782958, 1093.296386, 0); //Pickup menu auto escola
    Create3DTextLabel("Auto escola\nPressione ENTER para entrar.", PickupCor, 356.8607,186.0784,1009.1264, 40, 0, 0);
    Create3DTextLabel("Auto escola\nPressione ENTER para sair.", PickupCor, 1494.325195,1304.942871,1093.289062, 40, 0, 0);
    Create3DTextLabel("Menu Auto escola\nPressione ENTER para ver as opзхes.", PickupCor, 1490.509765, 1305.782958, 1093.296386, 40, 0, 0);
    return 1;
}

public OnPlayerConnect(playerid)
{
    SendClientMessage(playerid, 0x1E90FF99, "Este servidor usa um sistema de teste de habilitaзгo do{FFFFFF} Progressгo Pawn - Josma_CMD");
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(oldstate == PLAYER_STATE_DRIVER)
    {
        if(TesteEtapa[playerid] == 14 && FazendoTeste[playerid] == 1 || TesteEtapa[playerid] == 13 && FazendoTeste[playerid] == 1)
        {
            ShowPlayerDialog(playerid, DRepetirMoto1, DIALOG_STYLE_MSGBOX, "Vocк caiu", "Vocк caiu da moto, deseja repetir o teste?", "Sim", "Nгo");
            DestroyVehicle(VAutoEscolaTeste[playerid]);
            DisablePlayerRaceCheckpoint(playerid);
            return 1;
        }
        return 1;
    }
    return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
    new Float: lataria, Float: P[3];                       //Cria as variбveis que serгo usadas abaixo
    GetVehicleHealth(VAutoEscolaTeste[playerid], lataria); //Getarб o health do veiculo, para ver se o player danificou ele no teste
    GetPlayerPos(playerid, P[0], P[1], P[2]);          //Pegarб a coordenada de onde serб aplicado o som
    PlayerPlaySound(playerid, 1053, P[0], P[1], P[2]); //Aplicarб som ao entrar no Race Checkpoint
    if(TesteEtapa[playerid] == 1 && FazendoTeste[playerid] == 1)
    {
        if(lataria < 1000)
        {
            ShowPlayerDialog(playerid, DRepetirCarros1, DIALOG_STYLE_MSGBOX, "Vocк nгo conseguiu", "Vocк danificou seu veнculo, deseja repetir o teste?", "Sim", "Nгo");
            KillTimer(Verificar[playerid]);
            DestroyVehicle(VAutoEscolaTeste[playerid]);
            FazendoTeste[playerid] = 0;
            DisablePlayerRaceCheckpoint(playerid);
            return 1;
        }
        else if(lataria == 1000)
        {
            ShowPlayerDialog(playerid, DRepetirCarros2, DIALOG_STYLE_MSGBOX, "Vocк conseguiu", "Vocк deseja passar para a prуxima etapa do teste de habilitaзгo?", "Sim", "Nгo");
            DestroyVehicle(VAutoEscolaTeste[playerid]);
            FazendoTeste[playerid] = 0;
            KillTimer(Verificar[playerid]);
            DisablePlayerRaceCheckpoint(playerid);
            return 1;
        }
        return 1;
    }
    if(TesteEtapa[playerid] == 2 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[2][0], TesteCoords[2][1], TesteCoords[2][2], TesteCoords[3][0], TesteCoords[3][1], TesteCoords[3][2], 5.0);
        TesteEtapa[playerid] = 3;
        return 1;
    }
    if(TesteEtapa[playerid] == 3 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[3][0], TesteCoords[3][1], TesteCoords[3][2], TesteCoords[4][0], TesteCoords[4][1], TesteCoords[4][2], 5.0);
        TesteEtapa[playerid] = 4;
        return 1;
    }
    if(TesteEtapa[playerid] == 4 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[4][0], TesteCoords[4][1], TesteCoords[4][2], TesteCoords[5][0], TesteCoords[5][1], TesteCoords[5][2], 5.0);
        TesteEtapa[playerid] = 5;
        return 1;
    }
    if(TesteEtapa[playerid] == 5 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[5][0], TesteCoords[5][1], TesteCoords[5][2], TesteCoords[6][0], TesteCoords[6][1], TesteCoords[6][2], 5.0);
        TesteEtapa[playerid] = 6;
        return 1;
    }
    if(TesteEtapa[playerid] == 6 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[6][0], TesteCoords[6][1], TesteCoords[6][2], TesteCoords[7][0], TesteCoords[7][1], TesteCoords[7][2], 5.0);
        TesteEtapa[playerid] = 7;
        return 1;
    }
    if(TesteEtapa[playerid] == 7 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[7][0], TesteCoords[7][1], TesteCoords[7][2], TesteCoords[8][0], TesteCoords[8][1], TesteCoords[8][2], 5.0);
        TesteEtapa[playerid] = 8;
        return 1;
    }
    if(TesteEtapa[playerid] == 8 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[8][0], TesteCoords[8][1], TesteCoords[8][2], TesteCoords[9][0], TesteCoords[9][1], TesteCoords[9][2], 5.0);
        TesteEtapa[playerid] = 9;
        return 1;
    }
    if(TesteEtapa[playerid] == 9 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 1, TesteCoords[9][0], TesteCoords[9][1], TesteCoords[9][2], TesteCoords[9][0], TesteCoords[9][1], TesteCoords[9][2], 5.0);
        TesteEtapa[playerid] = 10;
        return 1;
    }
    if(TesteEtapa[playerid] == 10 && FazendoTeste[playerid] == 1)
    {
        if(lataria < 1000)
        {
            ShowPlayerDialog(playerid, DRepetirCarros2, DIALOG_STYLE_MSGBOX, "Vocк nгo conseguiu", "Vocк danificou seu veнculo, deseja repetir o teste?", "Sim", "Nгo");
            KillTimer(Verificar[playerid]);
            DestroyVehicle(VAutoEscolaTeste[playerid]);
            FazendoTeste[playerid] = 0;
            DisablePlayerRaceCheckpoint(playerid);
            return 1;
        }
        else if(lataria == 1000)
        {
            ShowPlayerDialog(playerid, DRepetirCarros3, DIALOG_STYLE_MSGBOX, "Vocк conseguiu", "Vocк deseja passar para a prуxima etapa do teste de habilitaзгo?", "Sim", "Nгo");
            DestroyVehicle(VAutoEscolaTeste[playerid]);
            FazendoTeste[playerid] = 0;
            KillTimer(Verificar[playerid]);
            DisablePlayerRaceCheckpoint(playerid);
            return 1;
        }
        return 1;
    }
    if(TesteEtapa[playerid] == 11 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 1, TesteCoords[11][0], TesteCoords[11][1], TesteCoords[11][2], TesteCoords[11][0], TesteCoords[11][1], TesteCoords[11][2], 5.0);
        TesteEtapa[playerid] = 12;
        return 1;
    }
    if(TesteEtapa[playerid] == 12 && FazendoTeste[playerid] == 1)
    {
        if(lataria < 1000)
        {
            ShowPlayerDialog(playerid, DRepetirCarros3, DIALOG_STYLE_MSGBOX, "Vocк nгo conseguiu", "Vocк danificou seu veнculo, deseja repetir o teste?", "Sim", "Nгo");
            KillTimer(Verificar[playerid]);
            DestroyVehicle(VAutoEscolaTeste[playerid]);
            FazendoTeste[playerid] = 0;
            DisablePlayerRaceCheckpoint(playerid);
            return 1;
        }
        else if(lataria == 1000)
        {
            SetPlayerInterior(playerid, 3);
            SetPlayerPos(playerid, 1497.034423, 1308.573730, 1093.294799);
            ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Vocк conseguiu", "Vocк tirou sua carteira de habilitaзгo, e agora pode dirigir carros.", "Ok", "");
            DestroyVehicle(VAutoEscolaTeste[playerid]);
            FazendoTeste[playerid] = 0;
            KillTimer(Verificar[playerid]);
            DisablePlayerRaceCheckpoint(playerid);
            //Aqui a variбvel habilitando o jogador а pilotar carros
            return 1;
        }
        return 1;
    }
    if(TesteEtapa[playerid] == 13 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 1, TesteCoords[14][0], TesteCoords[14][1], TesteCoords[14][2], TesteCoords[14][0], TesteCoords[14][1], TesteCoords[14][2], 5.0);
        TesteEtapa[playerid] = 14;
        FazendoTeste[playerid] = 0;
        return 1;
    }
    if(TesteEtapa[playerid] == 14 && FazendoTeste[playerid] == 0)
    {
        DisablePlayerRaceCheckpoint(playerid);
        DestroyVehicle(VAutoEscolaTeste[playerid]);
        ShowPlayerDialog(playerid, DRepetirMoto2, DIALOG_STYLE_MSGBOX, "Vocк conseguiu", "Vocк passou na primeira etapa, deseja ir para a prуxima etapa do teste?", "Sim", "Nгo");
        return 1;
    }
    if(TesteEtapa[playerid] == 15 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[15][0], TesteCoords[15][1], TesteCoords[15][2], TesteCoords[16][0], TesteCoords[16][1], TesteCoords[16][2], 5.0);
        TesteEtapa[playerid] = 16;
        return 1;
    }
    if(TesteEtapa[playerid] == 16 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[16][0], TesteCoords[16][1], TesteCoords[16][2], TesteCoords[17][0], TesteCoords[17][1], TesteCoords[17][2], 5.0);
        TesteEtapa[playerid] = 17;
        return 1;
    }
    if(TesteEtapa[playerid] == 17 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[17][0], TesteCoords[17][1], TesteCoords[17][2], TesteCoords[18][0], TesteCoords[18][1], TesteCoords[18][2], 5.0);
        TesteEtapa[playerid] = 18;
        return 1;
    }
    if(TesteEtapa[playerid] == 18 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[18][0], TesteCoords[18][1], TesteCoords[18][2], TesteCoords[19][0], TesteCoords[19][1], TesteCoords[19][2], 5.0);
        TesteEtapa[playerid] = 19;
        return 1;
    }
    if(TesteEtapa[playerid] == 19 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        SetPlayerRaceCheckpoint(playerid, 1, TesteCoords[19][0], TesteCoords[19][1], TesteCoords[19][2], TesteCoords[19][0], TesteCoords[19][1], TesteCoords[19][2], 5.0);
        TesteEtapa[playerid] = 20;
        return 1;
    }
    if(TesteEtapa[playerid] == 20 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        DestroyVehicle(VAutoEscolaTeste[playerid]);
        ShowPlayerDialog(playerid, DRepetirMoto3, DIALOG_STYLE_MSGBOX, "Vocк conseguiu", "Vocк passou na segunda etapa, deseja ir para a prуxima etapa do teste?", "Sim", "Nгo");
        TesteEtapa[playerid] = 0;
        KillTimer(Verificar[playerid]);
        return 1;
    }
    if(TesteEtapa[playerid] == 21 && FazendoTeste[playerid] == 1)
    {
        DisablePlayerRaceCheckpoint(playerid);
        DestroyVehicle(VAutoEscolaTeste[playerid]);
        SetPlayerInterior(playerid, 3);
        SetPlayerPos(playerid, 1497.034423, 1308.573730, 1093.294799);
        ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Vocк conseguiu", "Vocк concluiu o teste para adiquirir sua habilitaзгo, agora jб pode pilotar motos.", "Ok", "");
        TesteEtapa[playerid] = 0;
        KillTimer(Verificar[playerid]);
        //Aqui a variбvel habilitando o jogador а pilotar motos
        return 1;
    }
    if(TesteEtapa[playerid] == 22 && FazendoTeste[playerid] == 1)
    {
        if(lataria < 1000)
        {
            DisablePlayerRaceCheckpoint(playerid);
            DestroyVehicle(VAutoEscolaTeste[playerid]);
            KillTimer(Verificar[playerid]);
            ShowPlayerDialog(playerid, DRepetirAero1, DIALOG_STYLE_MSGBOX, "Vocк nгo conseguiu", "Vocк danificou sua aeronave, deseja repetir o teste?", "Sim", "Nгo");
            return 1;
        }
        else if(lataria == 1000)
        {
            DisablePlayerRaceCheckpoint(playerid);
            DestroyVehicle(VAutoEscolaTeste[playerid]);
            ShowPlayerDialog(playerid, DRepetirAero2, DIALOG_STYLE_MSGBOX, "Vocк conseguiu", "Vocк passou na primeira etapa do teste de aeronaves, deseja passar para prуxima etapa?", "Sim", "Nгo");
            TesteEtapa[playerid] = 0;
            KillTimer(Verificar[playerid]);
            return 1;
        }
        return 1;
    }
    if(TesteEtapa[playerid] == 23 && FazendoTeste[playerid] == 1)
    {
        if(lataria < 1000)
        {
            DisablePlayerRaceCheckpoint(playerid);
            DestroyVehicle(VAutoEscolaTeste[playerid]);
            KillTimer(Verificar[playerid]);
            ShowPlayerDialog(playerid, DRepetirAero2, DIALOG_STYLE_MSGBOX, "Vocк nгo conseguiu", "Vocк danificou sua aeronave, deseja repetir o teste?", "Sim", "Nгo");
            return 1;
        }
        else if(lataria == 1000)
        {
            DisablePlayerRaceCheckpoint(playerid);
            DestroyVehicle(VAutoEscolaTeste[playerid]);
            SetPlayerInterior(playerid, 3);
            SetPlayerPos(playerid, 1497.034423, 1308.573730, 1093.294799);
            ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Vocк conseguiu", "Vocк terminou o teste para obter a hбbilitaзгo para pilotar aeronaves, e agora jб pode pilotar.", "Ok", "");
            TesteEtapa[playerid] = 0;
            KillTimer(Verificar[playerid]);
            //Aqui a variбvel habilitando o jogador а pilotar aeronaves
            return 1;
        }
        return 1;
    }
    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys == KEY_SECONDARY_ATTACK)
    {
        if(IsPlayerInRangeOfPoint(playerid, 3.0, 1081.219726, -1696.847534, 13.546875)) //Caso esteja nesta coordenada, executarб o que estб abaixo
        {
            SetPlayerPos(playerid, 1494.325195,1304.942871,1093.289062);        //Teleporta para dentro da Auto Escola
            SetPlayerInterior(playerid, 3);                                     //Setarб o interior para [3]
            return 1;
        }
        if(IsPlayerInRangeOfPoint(playerid, 3.0, 1494.325195,1304.942871,1093.289062)) //Caso esteja nesta coordenada, executarб o que estб abaixo
        {
            SetPlayerPos(playerid, 1081.219726, -1696.847534, 13.546875);       //Teleporta para fora da Auto Escola
            SetPlayerInterior(playerid, 0);                                     //Setarб o interior para [0]
            return 1;
        }
        if(IsPlayerInRangeOfPoint(playerid, 3.0, 1490.509765, 1305.782958, 1093.296386)) //Caso esteja nesta coordenada, executarб o que estб abaixo
        {
            ShowPlayerDialog(playerid, DMenuAutoEscola, DIALOG_STYLE_LIST, "{FFFFFF}Escolha o teste", "{FFFFFF}Carros {1E90FF}$5.000\n{FFFFFF}Motos {1E90FF}$3.000\n{FFFFFF}Aeronaves {1E90FF}$4.000", "Comprar", "Cancelar"); //Mostrarб o menu
            return 1;
        }
        return 1;
    }
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
    case DMenuAutoEscola:
    {
        if(response)
        {
            switch(listitem)
            {
                case 0:
                {
                    ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Como concluнr seu teste", "Dirija de LS atй o porto de San Fierro sem danos e em menos de 3:40 minutos", "OK", "");
                    VAutoEscolaTeste[playerid] = CreateVehicle(402, 1089.949218, -1757.977783, 13.212669, 89.3455565, 1, 1, 5000);
                    PutPlayerInVehicle(playerid, VAutoEscolaTeste[playerid], 0);
                    SetPlayerInterior(playerid, 0);
                    TesteEtapa[playerid] = 1;
                    FazendoTeste[playerid] = 1;
                    GivePlayerMoney(playerid, -5000);
                    Verificar[playerid] = SetTimerEx("VerificarConclusao", 220000, false, "playerid", playerid);
                    SetPlayerRaceCheckpoint(playerid, 1, TesteCoords[0][0], TesteCoords[0][1], TesteCoords[0][2], TesteCoords[0][0], TesteCoords[0][1], TesteCoords[0][2], 5.0);
                    return 1;
                }
                case 1:
                {
                    ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Como concluнr seu teste", "Siga reto e suba na laje atravez do meio fiu. Apуs isso vб para a casa do lado esquerdo com a moto.", "OK", "");
                    VAutoEscolaTeste[playerid] = CreateVehicle(522, 305.917968, -1868.175415, 2.393410, 0.3362, 0, 158, 5000);
                    PutPlayerInVehicle(playerid, VAutoEscolaTeste[playerid], 0);
                    SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[13][0], TesteCoords[13][1], TesteCoords[13][2], TesteCoords[14][0], TesteCoords[14][1], TesteCoords[14][2], 5.0);
                    TesteEtapa[playerid] = 13;
                    GivePlayerMoney(playerid, -3000);
                    FazendoTeste[playerid] = 1;
                    SetPlayerInterior(playerid, 0);
                    return 1;
                }
                case 2:
                {
                    ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Como concluнr seu teste", "Decole o aviгo, leve-o atй o hangar localizado no aeroporto abandonado de Las Venturas, estacione-o.", "OK", "");
                    VAutoEscolaTeste[playerid] = CreateVehicle(511, -1646.996459, -154.085769, 15.522509, 315.0830, 0, 158, 5000);
                    PutPlayerInVehicle(playerid, VAutoEscolaTeste[playerid], 0);
                    SetPlayerRaceCheckpoint(playerid, 1, 405.687927, 2451.601562, 17.873716, 405.687927, 2451.601562, 17.873716, 5.0);
                    TesteEtapa[playerid] = 22;
                    GivePlayerMoney(playerid, -4000);
                    FazendoTeste[playerid] = 1;
                    SetPlayerInterior(playerid, 0);
                    return 1;
                }
            }
            return 1;
        }
        return 1;
    }
    case DRepetirCarros1:
    {
        if(response)
        {
            ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Como concluнr seu teste", "Dirija de LS atй o porto de San Fierro sem danos e em menos de 3:40 minutos", "OK", "");
            VAutoEscolaTeste[playerid] = CreateVehicle(402, 1089.949218, -1757.977783, 13.212669, 89.3455565, 1, 1, 5000);
            PutPlayerInVehicle(playerid, VAutoEscolaTeste[playerid], 0);
            SetPlayerInterior(playerid, 0);
            TesteEtapa[playerid] = 1;
            FazendoTeste[playerid] = 1;
            Verificar[playerid] = SetTimerEx("VerificarConclusao", 220000, false, "playerid", playerid);
            SetPlayerRaceCheckpoint(playerid, 1, TesteCoords[0][0], TesteCoords[0][1], TesteCoords[0][2], TesteCoords[0][0], TesteCoords[0][1], TesteCoords[0][2], 5.0);
            return 1;
        }
        return 1;
    }
    case DRepetirCarros2:
    {
        if(response)
        {
            ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Como concluнr seu teste", "Siga a trilha de checkpoints atй o final do circuito, sem danos e em menos de 3:00 minutos", "OK", "");
            VAutoEscolaTeste[playerid] = CreateVehicle(424, -1970.295898, -2434.038574, 30.194002, 273.215728, 0, 1, 5000);
            PutPlayerInVehicle(playerid, VAutoEscolaTeste[playerid], 0);
            SetPlayerInterior(playerid, 0);
            TesteEtapa[playerid] = 2;
            FazendoTeste[playerid] = 1;
            Verificar[playerid] = SetTimerEx("VerificarConclusao", 180000, false, "playerid", playerid);
            SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[1][0], TesteCoords[1][1], TesteCoords[1][2], TesteCoords[2][0], TesteCoords[2][1], TesteCoords[2][2], 5.0);
            return 1;
        }
        return 1;
    }
    case DRepetirCarros3:
    {
        if(response)
        {
            ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Como concluнr seu teste", "Desca pelo estacionamento atй o Checkpoint no tйrreo e suba atй o ponto de partida, sem danos e em 1:15 minutos", "OK", "");
            VAutoEscolaTeste[playerid] = CreateVehicle(562, 2236.203613, 1974.228759, 31.350551, 273.215728, 158, 1, 5000);
            PutPlayerInVehicle(playerid, VAutoEscolaTeste[playerid], 0);
            SetPlayerInterior(playerid, 0);
            TesteEtapa[playerid] = 11;
            FazendoTeste[playerid] = 1;
            Verificar[playerid] = SetTimerEx("VerificarConclusao", 75000, false, "playerid", playerid);
            SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[12][0], TesteCoords[12][1], TesteCoords[12][2], TesteCoords[11][0], TesteCoords[11][1], TesteCoords[11][2], 5.0);
            return 1;
        }
        return 1;
    }
    case DRepetirMoto1:
    {
        if(response)
        {
            ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Como concluнr seu teste", "Siga reto e suba na laje atravez do meio fiu. Apуs isso vб para a casa do lado esquerdo com a moto.", "OK", "");
            VAutoEscolaTeste[playerid] = CreateVehicle(522, 305.917968, -1868.175415, 2.393410, 0.3362, 0, 158, 5000);
            PutPlayerInVehicle(playerid, VAutoEscolaTeste[playerid], 0);
            SetPlayerRaceCheckpoint(playerid, 0, TesteCoords[13][0], TesteCoords[13][1], TesteCoords[13][2], TesteCoords[14][0], TesteCoords[14][1], TesteCoords[14][2], 5.0);
            TesteEtapa[playerid] = 13;
            FazendoTeste[playerid] = 1;
            return 1;
        }
        return 1;
    }
    case DRepetirMoto2:
    {
        if(response)
        {
            ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Como concluнr seu teste", "Siga a trilha de checkpoints atй o alto do morro, por fim, pule o muro e pare na laje abaixo.", "OK", "");
            VAutoEscolaTeste[playerid] = CreateVehicle(522, 2838.280517, -1046.117309, 22.838201, 89.345565, 0, 158, 5000);
            PutPlayerInVehicle(playerid, VAutoEscolaTeste[playerid], 0);
            SetPlayerRaceCheckpoint(playerid, 0, 2838.280517, -1046.117309, 22.838201, TesteCoords[15][0], TesteCoords[15][1], TesteCoords[15][2], 5.0);
            TesteEtapa[playerid] = 15;
            FazendoTeste[playerid] = 1;
            return 1;
        }
        return 1;
    }
    case DRepetirMoto3:
    {
        if(response)
        {
            ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Como concluнr seu teste", "Chegue atй o checkpoint em menos de 1:50 minutos, pegue o caminho que desejar.", "OK", "");
            VAutoEscolaTeste[playerid] = CreateVehicle(468, 2418.786132, 91.505310, 26.047235, 89.345565, 158, 158, 5000);
            PutPlayerInVehicle(playerid, VAutoEscolaTeste[playerid], 0);
            Verificar[playerid] = SetTimerEx("VerificarConclusao", 150000, false, "playerid", playerid);
            SetPlayerRaceCheckpoint(playerid, 1, -577.292663, -189.324462, 78.249137, TesteCoords[20][0], TesteCoords[20][1], TesteCoords[20][2], 5.0);
            TesteEtapa[playerid] = 21;
            FazendoTeste[playerid] = 1;
            return 1;
        }
        return 1;
    }
    case DRepetirAero1:
    {
        if(response)
        {
            ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Como concluнr seu teste", "Decole o aviгo, leve-o atй o hangar localizado no aeroporto abandonado de Las Venturas, estacione-o.", "OK", "");
            VAutoEscolaTeste[playerid] = CreateVehicle(511, -1646.996459, -154.085769, 15.522509, 315.0830, 0, 158, 5000);
            PutPlayerInVehicle(playerid, VAutoEscolaTeste[playerid], 0);
            SetPlayerRaceCheckpoint(playerid, 1, 405.687927, 2451.601562, 17.873716, 405.687927, 2451.601562, 17.873716, 5.0);
            TesteEtapa[playerid] = 22;
            FazendoTeste[playerid] = 1;
            SetPlayerInterior(playerid, 0);
            return 1;
        }
        return 1;
    }
    case DRepetirAero2:
    {
        if(response)
        {
            ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Como concluнr seu teste", "Decole o aviгo, leve-o atй o hangar localizado no aeroporto abandonado de Las Venturas, estacione-o.", "OK", "");
            VAutoEscolaTeste[playerid] = CreateVehicle(563, 1766.504882, -2286.285644, 27.501468, 268.859832, 0, 158, 5000);
            PutPlayerInVehicle(playerid, VAutoEscolaTeste[playerid], 0);
            SetPlayerRaceCheckpoint(playerid, 1, 2093.283447, 2414.863037, 75.284034, 2093.283447, 2414.863037, 75.284034, 5.0);
            TesteEtapa[playerid] = 23;
            FazendoTeste[playerid] = 1;
            return 1;
        }
        return 1;
    }
}
return 1;
}

public VerificarConclusao(playerid) //Й chamada no fim do prazo, se o player chegar а tempo esse timer й destruнdo, entгo nгo serб chamado
{
    //Abaixo todas as etapas que tem um tempo limite para a chegada
    if(TesteEtapa[playerid] == 1)
    {
        if(FazendoTeste[playerid] == 1)
        {
            DestroyVehicle(VAutoEscolaTeste[playerid]);
            FazendoTeste[playerid] = 0;
            TesteEtapa[playerid] = 0;
            ShowPlayerDialog(playerid, DRepetirCarros1, DIALOG_STYLE_MSGBOX, "Vocк nгo conseguiu", "Vocк nгo chegou а tempo, deseja repetir o teste?", "Sim", "Nгo");
            return 1;
        }
        return 1;
    }
    if(TesteEtapa[playerid] >= 2 && TesteEtapa[playerid] <= 10)
    {
        if(FazendoTeste[playerid] == 1)
        {
            DestroyVehicle(VAutoEscolaTeste[playerid]);
            FazendoTeste[playerid] = 0;
            TesteEtapa[playerid] = 0;
            ShowPlayerDialog(playerid, DRepetirCarros2, DIALOG_STYLE_MSGBOX, "Vocк nгo conseguiu", "Vocк nгo chegou а tempo, deseja repetir o teste?", "Sim", "Nгo");
            return 1;
        }
        return 1;
    }
    if(TesteEtapa[playerid] >= 11 && TesteEtapa[playerid] <= 12)
    {
        if(FazendoTeste[playerid] == 1)
        {
            DestroyVehicle(VAutoEscolaTeste[playerid]);
            FazendoTeste[playerid] = 0;
            TesteEtapa[playerid] = 0;
            ShowPlayerDialog(playerid, DRepetirCarros3, DIALOG_STYLE_MSGBOX, "Vocк nгo conseguiu", "Vocк nгo chegou а tempo, deseja repetir o teste?", "Sim", "Nгo");
            return 1;
        }
        return 1;
    }
    if(TesteEtapa[playerid] == 21)
    {
        if(FazendoTeste[playerid] == 1)
        {
            ShowPlayerDialog(playerid, DInstrucaoAutoEscola, DIALOG_STYLE_MSGBOX, "Como concluнr seu teste", "Chegue atй o checkpoint em menos de 1:50 minutos, pegue o caminho que desejar.", "OK", "");
            VAutoEscolaTeste[playerid] = CreateVehicle(468, 2418.786132, 91.505310, 26.047235, 89.345565, 158, 158, 5000);
            PutPlayerInVehicle(playerid, VAutoEscolaTeste[playerid], 0);
            Verificar[playerid] = SetTimerEx("VerificarConclusao", 15000, false, "playerid", playerid);
            SetPlayerRaceCheckpoint(playerid, 1, 2838.280517, -1046.117309, 22.838201, TesteCoords[20][0], TesteCoords[20][1], TesteCoords[20][2], 5.0);
            TesteEtapa[playerid] = 21;
            FazendoTeste[playerid] = 1;
            return 1;
        }
        return 1;
    }
    return 1;
}
OBS: Essa versгo й bбsica, pretendo fazer uma melhor futuramente porem nгo tenho certeza se postarei ou nгo, fique а vontade para editar e adaptar ao seu GameMode, qualquer duvida pergunte.
OBS2: Adiantei partes no vнdeo pra nгo ficar muito grande, e se notarem o helicoptero e o aviгo perdem reflexo em 2 partes do vнdeo(Desliguei a ENB Series por que ela nгo foi feita especialmente pro samp, a бgua some achei melhor desativar).
Reply


Messages In This Thread
Sistema de teste de habilitaзгo. - by Josma_cmd - 09.08.2011, 17:06
Re: Sistema de teste de habilitaзгo. - by JonathanFeitosa - 09.08.2011, 17:15
Re: Sistema de teste de habilitaзгo. - by Josma_cmd - 09.08.2011, 17:19
Re: Sistema de teste de habilitaзгo. - by RockFire - 09.08.2011, 17:22
Re: Sistema de teste de habilitaзгo. - by Bruno Pereira - 09.08.2011, 17:24
Re: Sistema de teste de habilitaзгo. - by Gabriel Duarte - 09.08.2011, 17:24
Re: Sistema de teste de habilitaзгo. - by JonathanFeitosa - 09.08.2011, 17:24
Re: Sistema de teste de habilitaзгo. - by Josma_cmd - 09.08.2011, 17:27
Re: Sistema de teste de habilitaзгo. - by JonathanFeitosa - 09.08.2011, 17:29
Re: Sistema de teste de habilitaзгo. - by BrunoBSF - 09.08.2011, 17:31

Forum Jump:


Users browsing this thread: 2 Guest(s)