[Pedido] Sistema de VIP
#2

pawn Код:
#include <a_samp>

new
    pVip[MAX_PLAYERS][2]
;
   
enum
{
    VIP_NONE = 0,
    VIP_REMOVE = 1,
    VIP_SET = 2,
    VIP_NO_TIME = 3,
    VIP_NOT_CONNECTED = 4
}
   
   
stock month_to_timestamp(months)
{
    /*
        Explicaзгo:
            sabemos que 1 hora sгo 3600 segundos, logo um dia serг 24 * 3600.
            sabendo que 1 dia sгo ( 24 * 3600 ), um mкs serб ( (24 * 3600) * 30)
            agora multiplicamos a quantidade de meses (((24 * 3600) * 30) * months)
           
            Por fim somamos o gettime para obtermos um futuro timestamp.

        Modo de uso: setVip(playerid,month_to_timestamp(3));
    */


    return ( ( ( ( 3600 * 24 ) * 30 ) * months ) + gettime() );
}

stock setVip(playerid,time)
{
    if(IsPlayerConnected(playerid)){
        if(pVip[playerid][0] == 1 && time == 0)
        {
            /*
                Aqui removemos o vip do jogador!
            */


            pVip[playerid][0] = 0; //Aqui colocamos o vip para 0
            pVip[playerid][1] = 0; //Aqui foi colocamos o valor do tempo para 0
           
            /*
                Por fim aqui deve ficar um sistema de salvamento, de forma a
                atualizar os dados do jogador, informando o sistema que o mesmo
                jб nгo possui vip.
            */

           

            return VIP_REMOVED; //isto й definido numa variбvel.
        } else if(
       
            if(time == 0)
            {
                return VIP_NO_TIME; //Ocorreu um erro, a variavel max_time tem valor de 0.
            } else {
                pVip[playerid][0] = 1; //Setamos o vip para 1 ( isto significa que o player tem vip )
                pVip[playerid][1] = time; //Setamos o tempo de duraзгo para o vip ( dessa forma quando o tempo passar o vip serб retirado )
               
                /*
                    Nesta parte й necessбio salvar os dados.
                */

               
                return VIP_SET; //O Vip foi setado com sucesso!
            }
        }
    } else { return VIP_NOT_CONECTED; //O jogador nгo estб conectado. }
   
    return VIP_NONE;
}

public OnPlayerConnect(playerid)
{
    /*
        Aqui carregamos os dados dos vips.
    */

    return 1;
}

public OnPlayerUpdate(playerid)
{
    /*
        Aqui й onde verificamos o vip do jogador,
    */

   
    if(gettime() == pVip[playerid][1] || gettime() > pVip[playerid][1])
    {
        /*
            Verificamos se o timestamp й igual ao do vip, caso seja removemos o
            vip, pois isso significa que o tempo limite jб chegou. Para nгo haver
            problemas utilizamos uma segunda condiзг que verifica se o timestamp
            й maior que o tempo do vip, isto significa que o timestamp jб passou
            o limite de vip do jogador.
        */

        SendClientMessage(playerid,-1,"O seu vip terminou!");
        setVip(playerid,0); //agora colocamos o vip para 0
    }
   
    /*
        Se quiser tambйm й possнvel remover o vip se o jogador estiver offline
        mas isso jб й mais complicado...
    */

    return 1;
}
Fiz um simples sistema de VIP, agora й sу adaptares, devo dizer que nгo testei o mesmo, mas caso esteja algo errado й sу enviares PM.
Reply


Messages In This Thread
Sistema de VIP - by victorlus - 26.07.2014, 07:50
Re: Sistema de VIP - by rebelox - 26.07.2014, 10:54
Re: Sistema de VIP - by darkxdll - 26.07.2014, 12:37
Re: Sistema de VIP - by rebelox - 26.07.2014, 12:44
Re: Sistema de VIP - by darkxdll - 26.07.2014, 13:09
Re: Sistema de VIP - by Marlon307 - 26.07.2014, 13:27

Forum Jump:


Users browsing this thread: 1 Guest(s)