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

O Cуdigo estб mais ou menos, faltou sу o tutorial..
Reply
#3

Quote:
Originally Posted by Input
Посмотреть сообщение
O Cуdigo estб mais ou menos, faltou sу o tutorial..
Sou meio fraco em criar tutorial :P mas acho que qualquer pode intender o que eu estou tentando dizer nй?
Reply
#4

Quote:
Originally Posted by MatheusDalZot
Посмотреть сообщение
Sou meio fraco em criar tutorial :P mas acho que qualquer pode intender o que eu estou tentando dizer nй?
O Pior й que nгo dб para compreender.. Se for um iniciante ele nгo irб intender nada.. Explique os parвmetros das funзхes, as variбveis que vocк criou e etc..

Transforme este cуdigo ъtil em um tutorial ^^
Reply
#5

Alem de estar muito mal explicado, tem cуdigo que nem funciona ai.
Reply
#6

Sou iniciante, nгo consegui colocar certo, explica parte por parte direitinho e onde tem que colocar, mais vlw por te postado deve ajudar alguйm que e mais experiente !!!
Reply
#7

Horrivel . Nгo da pra acreditar que foi vocк que fez .
Reply
#8

Quote:
Originally Posted by Don_Speed
Посмотреть сообщение
Horrivel . Nгo da pra acreditar que foi vocк que fez .
Nгo intendi amigo. Eu falei que era simples *-*

Quote:
Originally Posted by PT
Посмотреть сообщение
Alem de estar muito mal explicado, tem cуdigo que nem funciona ai.
Bom PT, aqui no meu GM estб tudo ok, atй vo posar uma print.

Quote:
Originally Posted by Vinicin
Посмотреть сообщение
Sou iniciante, nгo consegui colocar certo, explica parte por parte direitinho e onde tem que colocar, mais vlw por te postado deve ajudar alguйm que e mais experiente !!!
Ok, irei dar uma melhorada, o dia que decidi compartilhar eu estava com um pouco de pressa

Quote:
Originally Posted by Input
Посмотреть сообщение
O Pior й que nгo dб para compreender.. Se for um iniciante ele nгo irб intender nada.. Explique os parвmetros das funзхes, as variбveis que vocк criou e etc..

Transforme este cуdigo ъtil em um tutorial ^^
Ok Input, irei dar uma melhorada
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)