[Duvida] GetTickCount
#1

Boa noite!
Eu gostaria de saber se o GetTickCount da lag ?

Gostaria que me explica-se qual a real funзгo dele oque ele faz e tal.

Obrigado, aguardando respostas...
Reply
#2

se nгo me engano ele informa +- a quanto tempo uma funзгo foi iniciada. Segundo a wiki do sa-mp https://sampwiki.blast.hk/wiki/GetTickCount ele pode causar problemas em servidores online a mais de 24horas sem um gmx ou com timmers de mais de 24horas.

para mais informaзхes veja:

https://sampforum.blast.hk/showthread.php?tid=149922
https://sampwiki.blast.hk/wiki/GetTickCount
Reply
#3

Exatamente o que o Sergio disse, entretanto, o GetTickCount() serve para capturar o tempo em milisegundos de quando o samp-server.exe foi iniciado atй o atual momento.

Ele й usado muitas vezes com subtraзгo algйbrica para checar o tempo que se passou quando uma funзгo foi iniciada, atй o final dela, por exemplo:


pawn Код:
public OnPlayerConnect(playerid)
{
    new TempoInicial = GetTickCount();//Vai pegar o tempo que se passou desde que o server foi iniciado.
    print("AAAAAAAAAA");
    print("BBBBBBBBBB");
    print("CCCCCCCCCC");
    new TempoFinal = GetTickCount();//Vai pegar o tempo DE NOVO, mas dessa vez as funзхes print ja foram executadas
    printf("%d", (TempoFinal - TempoInicial)); //Subtrai o Tempo Final menos o Tempo Inicial para ACHAR A VARIAЗГO DE TEMPO DECORRIDO entre o primeiro GetTickCount e o segundo, muito bom no caso para medir o tempo que levou para todos os prints(as funзхes com AAAA, BBBB e CCCC) ocorrerem, se й que me entende.
    return 1;
}
Espero ter ajudado
Reply
#4

Entendi mais eu estou usando ele so para calcular o tempo dos administradores online entao ele so calcula o tempo dos administradores online..
Duvida : O Bug de 24hrs йe porq ex: eu ligo meu servidor agora бs 1:00 e no dia seguinte бs 2:00 ele so vai tar mostrando que o servidor foi liga tem 1 hora й isso ?
Reply
#5

nгo, se nгo me engano e assim: vocк liga ele 1:00, amanha as 1:00 o seu servidor ira cair quando vocк digitar o comando para ver quanto tempo os admins ficaram online
Reply
#6

Nгo й 24 horas, й 24 dias o mбximo valor que o GetTickCount pode retornar.

Entгo junioor, se vocк colocar o GetTickCount no lugar certo nгo haverб problemas, a nгo ser o que o admin fique 24 dias jogando sem sair do servidor .

Fiz aqui uma amostra de como usar corretamente o GetTickCount no seu caso

pawn Код:
new AdminTempoInicial[MAX_PLAYERS];
new AdminTempoFinal[MAX_PLAYERS];
new AdminTempo[MAX_PLAYERS];


public OnPlayerConnect(playerid)
{
    if(IsPlayerAdmin(playerid))
    {
        AdminTempoInicial[playerid] = GetTickCount();
    }
    return 1;
}


public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp("/tempoadmins",cmdtext,true,12)==0)
    {
        new NickNome[MAX_PLAYER_NAME], texto[70];
        for(new x = 0; x < MAX_PLAYERS; x++)
        {
            if(IsPlayerAdmin(x))
            {
                AdminTempoFinal[x] = GetTickCount();
                AdminTempo[x] = (AdminTempoFinal[x] - AdminTempoInicial[x]);
                GetPlayerName(x, NickNome, sizeof(NickNome));
                format(texto,70,"Tempo Conectado do Admin %s em Milisegundos: %d", NickNome, AdminTempo[x]);
                SendClientMessage(playerid, 0xFFFFFFAA, texto);
            }
        }
        return 1;
    }
    return 0;
}
Espero ter ajudado
Reply
#7

rjjj estarei colocando um codico aqui analiza para mim e ve se tem alguma coisa errada.

pawn Код:
public OnPlayerRequestSpawn(playerid)
{
    if (AccountInfo[playerid][AdminLevel] >= 4){
    TConectado(playerid);
    }
     return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
      if (AccountInfo[playerid][AdminLevel] >= 4){
      TDesconectado(playerid);}
 return 1;
}

TConectado(playerid)
{
    new stringaa[128];
    new stringgg[128];
    GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
    format(stringaa, sizeof(stringaa), "/Arquivos/TempoLogado/%s.ini", giveplayer);
    if(!dini_Exists(stringaa)) {
        dini_Create(stringaa);
    }
    new File:logkeller = fopen(stringaa, io_append);
    if(logkeller) {
        new Ano, Mes,Dia;
        getdate(Ano, Mes,Dia);
        getdate(Anolog[playerid], Meslog[playerid],Dialog[playerid]);
        new Hora, Minuto, Segundo;
        gettime(Hora, Minuto, Segundo);
        gettime(Horalog[playerid], Minutolog[playerid], Segundolog[playerid]);
        format(stringgg, sizeof stringgg, "\r\n[%d/%d/%d]Logado бs %d:%d\r\n", Dia, Mes, Ano, Hora, Minuto);
        fwrite(logkeller, stringgg);
        fclose(logkeller);
    }
    return 1;
}

TDesconectado(playerid)
{
    GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
    new stringaa[128];
    new stringgg[128];
    format(stringaa, sizeof(stringaa), "/Arquivos/TempoLogado/%s.ini", giveplayer);
    if(!dini_Exists(stringaa)) {
        dini_Create(stringaa);}
       
    new File:logkeller = fopen(stringaa, io_append);
    if(logkeller) {
        new Ano, Mes,Dia;
        getdate(Ano, Mes,Dia);
        new Hora, Minuto, Segundo;
        gettime(Hora, Minuto, Segundo);
        new horaon = Hora-Horalog[playerid];
        new minutoon = Minuto-Minutolog[playerid];
        if(Dia != Dialog[playerid]) {
            Hora = Hora+24;
        }
        if(minutoon < 0) {
            minutoon = 60-Minutolog[playerid]+Minuto;
            horaon = Hora-Horalog[playerid]-1;
        }
        format(stringgg, sizeof stringgg, "[%d/%d/%d]Deslogado бs %d:%d \r\n[%d/%d/%d]Tempo Logado: %d hora(s) e %d minuto(s)\r\n\r\n--------------------------------------------------------------------------------------\r\n\r\n", Dia, Mes, Ano, Hora, Minuto, Dia, Mes, Ano, horaon, minutoon);
        fwrite(logkeller, stringgg);
        fclose(logkeller);
    }
    return 1;
}
Reply
#8

o foda e o lag que pode dar se vocк nгo souber usar isto
Reply
#9

Quote:
Originally Posted by junioor
Посмотреть сообщение
rjjj estarei colocando um codico aqui analiza para mim e ve se tem alguma coisa errada.

pawn Код:
public OnPlayerRequestSpawn(playerid)
{
    if (AccountInfo[playerid][AdminLevel] >= 4){
    TConectado(playerid);
    }
     return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
      if (AccountInfo[playerid][AdminLevel] >= 4){
      TDesconectado(playerid);}
 return 1;
}

TConectado(playerid)
{
    new stringaa[128];
    new stringgg[128];
    GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
    format(stringaa, sizeof(stringaa), "/Arquivos/TempoLogado/%s.ini", giveplayer);
    if(!dini_Exists(stringaa)) {
        dini_Create(stringaa);
    }
    new File:logkeller = fopen(stringaa, io_append);
    if(logkeller) {
        new Ano, Mes,Dia;
        getdate(Ano, Mes,Dia);
        getdate(Anolog[playerid], Meslog[playerid],Dialog[playerid]);
        new Hora, Minuto, Segundo;
        gettime(Hora, Minuto, Segundo);
        gettime(Horalog[playerid], Minutolog[playerid], Segundolog[playerid]);
        format(stringgg, sizeof stringgg, "\r\n[%d/%d/%d]Logado бs %d:%d\r\n", Dia, Mes, Ano, Hora, Minuto);
        fwrite(logkeller, stringgg);
        fclose(logkeller);
    }
    return 1;
}

TDesconectado(playerid)
{
    GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
    new stringaa[128];
    new stringgg[128];
    format(stringaa, sizeof(stringaa), "/Arquivos/TempoLogado/%s.ini", giveplayer);
    if(!dini_Exists(stringaa)) {
        dini_Create(stringaa);}
       
    new File:logkeller = fopen(stringaa, io_append);
    if(logkeller) {
        new Ano, Mes,Dia;
        getdate(Ano, Mes,Dia);
        new Hora, Minuto, Segundo;
        gettime(Hora, Minuto, Segundo);
        new horaon = Hora-Horalog[playerid];
        new minutoon = Minuto-Minutolog[playerid];
        if(Dia != Dialog[playerid]) {
            Hora = Hora+24;
        }
        if(minutoon < 0) {
            minutoon = 60-Minutolog[playerid]+Minuto;
            horaon = Hora-Horalog[playerid]-1;
        }
        format(stringgg, sizeof stringgg, "[%d/%d/%d]Deslogado бs %d:%d \r\n[%d/%d/%d]Tempo Logado: %d hora(s) e %d minuto(s)\r\n\r\n--------------------------------------------------------------------------------------\r\n\r\n", Dia, Mes, Ano, Hora, Minuto, Dia, Mes, Ano, horaon, minutoon);
        fwrite(logkeller, stringgg);
        fclose(logkeller);
    }
    return 1;
}

Nгo, tudo estб certo, eu lembro quando o keller postou esse filterscript, ele testou vбrias vezes e criou vбrios tуpicos antes de lanзar o projeto, por isso pode ficar tranquilo.

E com o if usado por voce para checar se o jogador й administrador deixou o cуdigo ideal para sua situaзгo.


Espero ter ajudado
Reply
#10

so uma duvida sobre este assunto: como converte isto para segundos?
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)