[Tutorial] Como colocar timer nos dialogs
#1


Bom dia galera, estou aqui com intuito de dar uma ajeitada nesse tutorial.

Bom galera, vejo muita gente pedindo ajuda de como colocar timer nas dialogs, entгo resolvi compartilhar uma criaзгo minha, sei que nгo й nada muito avanзado, afinal eu ainda continuo codando com codes antigos, nгo consegui me adaptar a zcmd, sscanf e etc. Mas enfim vamos lб, sei que por mais simples que seja o code, vai ajudar muitos novatos.

OBS: Lembrem-se de adaptar as variбveis de acordo com o seu GM.
Comeзando:

Vocк deve colocar as variбveis no inicio do seu GM, junto as demais variбveis
pawn Код:
#define D_Tutorial          100                 //ID do dialog usado no tutorial, deve mudar conforme o seu servidor
new bool:PodePassarTutorial[MAX_PLAYERS];       //Irб verificar se o player pode ou nгo passar o tutorial
new bool:VendoTutorial[MAX_PLAYERS];            //Irб verificar se ele estб ou nгo vendo o tutorial
new TempoTutorial[MAX_PLAYERS];                 //Define o tempo que o player deve esperar
new timertutorial[MAX_PLAYERS];                 //Variбvel utilizada para guardar as informaзхes do timer para cada player
Um exemplo de como usar na sua dialog
pawn Код:
//Em OnPlayerDialog
    new stringtuto[128];
    if(dialogid == D_Tutorial)  // Em sua dialog vocк deve colocб-lo da seguinte forma:
    {
        if(response == 0)
        {
            return 1;
        }
        if(response == 1)
        {
            if(PodePassarTutorial[playerid] == true)    //Aqui verifica que o player jб estб autorizado a passar o tutorial
            {
                ShowPlayerDialog(playerid, D_Tutorial, DIALOG_STYLE_MSGBOX, "Tutorial!", "Bem vindo ao tutorial.", ">>", "");
                PodePassarTutorial[playerid] = false;   // Aqui estб definindo que o player nгo poderб passar para o prуximo dialog antes do tempo acabar.
                TempoTutorial[playerid] = 10;           // Aqui define o tempo que o player vai esperar para poder passar o tutorial.
            }
            else if(PodePassarTutorial[playerid] == false) //Aqui verifica que o player ainda nгo estб autorizado a passar o tutorial, retornando-o para o dialog anterior
            {
                format(stringtuto, 128, "Vocк deve esperar %d segundos para poder passar o tutorial!", TempoTutorial[playerid]);
                SendClientMessage(playerid, -1, stringtuto);
                ShowPlayerDialog(playerid, D_Tutorial+1, DIALOG_STYLE_MSGBOX, "Tutorial:","Muito bem, vocк esperou o tempo suficiente para passar o tutorial!",">>","");
                VendoTutorial[playerid] = false;        // Define que o player nгo estб mais vendo o tutorial
                PlayerInfo[playerid][pTutorial] = 1;    // Define que o player jб visualizou o tutorial, Usado na maioria dos GF's, edite de acordo com seu gm
            }
        }
        return 1;
    }
Aqui й onde inicia o tutorial. Vocк deve por no final do registro do player, ex:
pawn Код:
public OnPlayerSpawn(playerid)  // Usei como exemplo o OnPlayerSpawn, mas vocк pode ajustar de sua forma
{
    if(InfoPlayer[playerid][pTutorial] == 0)
    {
        PodePassarTutorial[playerid] = false;   // Nгo deixarб o player passar o tutorial antes do tempo
        VendoTutorial[playerid] = true;         // Define que o player estб vendo o tutorial
        TempoTutorial[playerid] = 5;            // Define o tempo que o player deve esperar
        timertutorial[playerid] = SetTimerEx("VendoTuto", 1000, true, "i", playerid);   // Timer que irб checar quando o player poderб passar para o prуximo tutorial
    }
    return 1;
}
Coloca em OnPlayerConnect para nгo haver bugs
pawn Код:
PodePassarTutorial[playerid] = false;
VendoTutorial[playerid] = false;
TempoTutorial[playerid] = 0;
Esta callback й usada para verificar o tempo que o player deve esperar para passar o tutorial. Pode colocб-la no final de seu GM
pawn Код:
forward VendoTuto(playerid);
public VendoTuto(playerid)
{
    if(VendoTutorial[playerid] == true) // Aqui verifica se o player estб vendo o tutorial, em caso de true, ele irб diminuir o valor da variбvel de tempo
    {
        if(TempoTutorial[playerid] == 0)// Checa se jб se passou o tempo de espera do player, no caso do valor da variбvel se igualar a 0, irб retornar para o player que ele poderб passar o tutorial
        {
            PodePassarTutorial[playerid] = true;    // Permite o player a passar para o prуximo dialog
            SendClientMessage(playerid, cinza, "Vocк jб pode passar a pбgina!");
        }
        else{TempoTutorial[playerid] --;}// Diminui o tempo de espera do player de 1 em 1 segundo
    }
    else if(VendoTutorial[playerid] == false)// Verifica, se o player nгo estiver mais vendo o tutorial ele irб "excluir" o timer, fazendo com que nгo fique contando de varde
    {
        KillTimer(timertutorial[playerid]); // "Exclui" o timer para nгo haver lag desnecessбrio
        TempoTutorial[playerid] = 0;
    }
    return 1;
}
Bom galera й isso, espero que ajude.
Creio que tenha dado uma melhorada

Imagem de teste
Imagem de teste 2 - Tempo restante
Imagem de teste 3 - pode passar para o prуximo dialog
Imagem de teste 4 - tempo restante
Reply


Messages In This Thread
Como colocar timer nos dialogs - by MatheusDalZot - 24.05.2014, 15:51
Re: Como colocar timer nos dialogs - by Input - 24.05.2014, 15:53
Re: Como colocar timer nos dialogs - by MatheusDalZot - 24.05.2014, 15:56
Re: Como colocar timer nos dialogs - by Input - 24.05.2014, 16:45
Re: Como colocar timer nos dialogs - by PT - 24.05.2014, 17:13
Re: Como colocar timer nos dialogs - by Vinicin - 24.05.2014, 21:02
Re: Como colocar timer nos dialogs - by Don_Speed - 24.05.2014, 21:22
Re: Como colocar timer nos dialogs - by MatheusDalZot - 25.05.2014, 13:11

Forum Jump:


Users browsing this thread: 1 Guest(s)