[Ajuda] Remover VIP automбtico (Nгo й pedido de cуdigo)
#1

Eu tentei criar um sistema VIP onde o admin adciona a data de vencimento ao jogador, exemplo: /darvip id, dia, mes, ano, e essa data ficaria salva, na onplayerupdate eu pus um check meio galhofa mas ele nгo funcionou (tenho certeza que por burrice minha, alguйm poderia me ajudar e apontar o erro no meu check, pois a VIP sai, assim que й dada.

pawn Код:
if(strcmp(cmd, "/darvip", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if (PlayerInfo[playerid][pAdmin] < 4000)
            {
                SendClientMessage(playerid, COLOR_GRAD1, "Vocк nгo tem autorizaзгo para usar esse comando.");
                return 1;
            }
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "ERRO: Digite /darvip [id] [dia] [mes] [ano](Coloque o comando com um dia a menos)");
                return 1;
            }
            new para1;
            para1 = ReturnUser(tmp);
            new nome[24];
            GetPlayerName(playerid, nome, sizeof nome);
            GetPlayerName(para1, giveplayer, sizeof(giveplayer));
            GetPlayerName(playerid, sendername, sizeof(sendername));

            tmp = strtok(cmdtext, idx);
            new dia = strval(tmp);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /darvip [id] [dia] [mкs] [ano] (Data do Vencimento)");
                return 1;
            }
            tmp = strtok(cmdtext, idx);
            new mes = strval(tmp);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /darvip [id] [dia] [mкs] [ano] (Data do Vencimento)");
                return 1;
            }
            tmp = strtok(cmdtext, idx);
            new ano = strval(tmp);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /darvip [id] [dia] [mкs] [ano] (Data do Vencimento)");
                return 1;
            }
            if(IsPlayerConnected(para1))
            {
                if(para1 != INVALID_PLAYER_ID)
                {
                    format(string, sizeof string, "Vocк deu os status de VIP para %s", giveplayer);
                    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                    format(string, sizeof string, "Vocк recebeu todos os status de VIP do administrador %s.", sendername);
                    SendClientMessage(para1, COLOR_LIGHTBLUE, string);
                    getdate(year, month, day);
                    gettime(hour,minute,second);
                    format(string, sizeof(string), "%s deu vip ao %s nнvel %d (%d/%d/%d - %d:%d)",sendername,giveplayer,day, month, year,hour, minute);
                    VipsLog(string);
                    PlayerInfo[giveplayerid][pLevel] += 3;
                    ScoreLevel(para1);
                    PlayerInfo[para1][pVIP] = 1;
                    PlayerInfo[para1][pVIPD] = dia;
                    PlayerInfo[para1][pVIPM] = mes;
                    PlayerInfo[para1][pVIPA] = ano;
                    return 1;
                    }
                }
            }
        }
Check na OnPlayerUpdate

pawn Код:
if(PlayerInfo[playerid][pVIP] != 0)
        {
        getdate(Ano, Mes, Dia);
        if(PlayerInfo[playerid][pVIPD] < Dia || PlayerInfo[playerid][pVIPM] < Mes)
        {
            SendClientMessage(playerid, 0xFFFF00FF, "Seu tempo de VIP expirou.");
            PlayerInfo[playerid][pVIP] = 0;
            PlayerInfo[playerid][pVIPM] = 0;
            PlayerInfo[playerid][pVIPA] = 0;
            PlayerInfo[playerid][pVIPD] = 0;
        }
        else if(PlayerInfo[playerid][pVIPA] > Ano)
        {
            SendClientMessage(playerid, 0xFFFF00FF, "Seu tempo de VIP expirou.");
            PlayerInfo[playerid][pVIP] = 0;
            PlayerInfo[playerid][pVIPM] = 0;
            PlayerInfo[playerid][pVIPA] = 0;
            PlayerInfo[playerid][pVIPD] = 0;
        }
    }
Reply
#2

https://sampforum.blast.hk/showthread.php?tid=254915
Reply
#3

Consegui fazer certinho em Unixtimestamp, agora, tem como eu converter ele pra horбrio real dentro do samp?

Mas o dia VIP/Mкs/Ano VIP sу funciona quando eu seto 30 dias usando esse mйtodo pra calcular data de vencimento

pawn Код:
if(PlayerInfo[playerid][pVIPD] > 31)
                {
                PlayerInfo[playerid][pVIPD] -= 31;
                PlayerInfo[playerid][pVIPM] ++;
                }
                if(PlayerInfo[playerid][pVIPM] > 12)
                {
                PlayerInfo[playerid][pVIPM] -= 12;
                PlayerInfo[playerid][pVIPA] ++;
                return 1;
Existe forma de calcular ou eu teria que fazer o comando da mesma forma que o meu primeiro /darvip id dias [dia] [mes] [ano] do vencimento, jб que esses valores sгo unico e exclusivo pro jogador digitar /tempovip e ver seu vecimento.
Reply
#4

http://forum.sa-mp.com/showpost.php?...postcount=1653 - GetTime.

Pegue como base!
Reply
#5

Conseguiu mesmo? vocк realmente leu?

vipVencimento] = (86400*dias)+gettime();


60 dias, 100 dias, etc.

pawn Код:
Comando

pVencimento] = (86400*dias)+gettime();

// Vencimento
new atualTimer = PlayerInfo[playerid][pVencimento];
new iRandomTime = (atualTimer-gettime())+gettime();
new szMessage[128];
format(szMessage, sizeof(szMessage), "O seu donator irб expirar em %s", timec(iRandomTime));
SendClientMessage(playerid, 0xCACAFFAA, szMessage);

// Fim do GM

stock timec(timestamp, compare = -1) {
    if (compare == -1) {
        compare = gettime();
    }
    new
        n,
        // on the following line, I have removed the need for the diff() function.
        // if you want to use the diff() function in pawn, replace the following with:
        // Float:d = diff(timestamp, compare),
        Float:d = (timestamp > compare) ? timestamp - compare : compare - timestamp,
        returnstr[32];
    if (d < 60) {
        format(returnstr, sizeof(returnstr), "< 1 minuto");
        return returnstr;
    } else if (d < 3600) { // 3600 = 1 hour
        n = floatround(floatdiv(d, 60.0), floatround_floor);
        format(returnstr, sizeof(returnstr), "minuto");
    } else if (d < 86400) { // 86400 = 1 day
        n = floatround(floatdiv(d, 3600.0), floatround_floor);
        format(returnstr, sizeof(returnstr), "hora");
    } else if (d < 2592000) { // 2592000 = 1 month
        n = floatround(floatdiv(d, 86400.0), floatround_floor);
        format(returnstr, sizeof(returnstr), "dia");
    } else if (d < 31536000) { // 31536000 = 1 year
        n = floatround(floatdiv(d, 2592000.0), floatround_floor);
        format(returnstr, sizeof(returnstr), "mкs");
    } else {
        n = floatround(floatdiv(d, 31536000.0), floatround_floor);
        format(returnstr, sizeof(returnstr), "ano");
    }
    if (n == 1) {
        format(returnstr, sizeof(returnstr), "1 %s", returnstr);
    } else {
        format(returnstr, sizeof(returnstr), "%d %ss", n, returnstr);
    }
    return returnstr;
}
Toma ai mastigado, nгo sabe estudar, vamos veer se pelo menos agora aprende.
Reply
#6

Quote:
Originally Posted by Ricop522
Посмотреть сообщение
Conseguiu mesmo? vocк realmente leu?

Toma ai mastigado, nгo sabe estudar, vamos veer se pelo menos agora aprende.
Mesmo com sua grosseria obrigado, eu tive que sair pra escola mas eu jб tinha conseguido fazer e esqueci de editar.
Valeu mesmo assim, sempre achei vocк um dos caras mais humildes e um dos que eu mais admirava nesse fуrum e pelo seu trabalho no AD-RP, mas agora realmente fiquei meio decepcionado com essa demosntraзгo de arrogancia, de qualquer forma, REP+, abraзo.
Reply
#7

Quote:
Originally Posted by JuniorRiddle
Посмотреть сообщение
Mesmo com sua grosseria obrigado, eu tive que sair pra escola mas eu jб tinha conseguido fazer e esqueci de editar.
Valeu mesmo assim, sempre achei vocк um dos caras mais humildes e um dos que eu mais admirava nesse fуrum e pelo seu trabalho no AD-RP, mas agora realmente fiquei meio decepcionado com essa demosntraзгo de arrogancia, de qualquer forma, REP+, abraзo.
diz uma novidade ai....
Reply
#8

Quote:
Originally Posted by JuniorRiddle
Посмотреть сообщение
Mesmo com sua grosseria obrigado, eu tive que sair pra escola mas eu jб tinha conseguido fazer e esqueci de editar.
Valeu mesmo assim, sempre achei vocк um dos caras mais humildes e um dos que eu mais admirava nesse fуrum e pelo seu trabalho no AD-RP, mas agora realmente fiquei meio decepcionado com essa demosntraзгo de arrogancia, de qualquer forma, REP+, abraзo.
me passa ai como voce fez?
Reply
#9

Malz coloquei o meu codigo mais ele й exclusivo, nгo vo bobear de deixar os meus comandos exclusivos e funcionando para vocкs que nem se quer da REP+!
Reply
#10

Quote:
Originally Posted by PSYRocK
Посмотреть сообщение
Malz coloquei o meu codigo mais ele й exclusivo, nгo vo bobear de deixar os meus comandos exclusivos e funcionando para vocкs que nem se quer da REP+!
se entrego heim a conta fake kK!
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)