[Duvida] GetTickCount -
junioor - 26.02.2011
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...
Re: [Duvida] GetTickCount -
SergioBr - 26.02.2011
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
Re: [Duvida] GetTickCount - rjjj - 26.02.2011
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
Re: [Duvida] GetTickCount -
junioor - 26.02.2011
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 ?
Re: [Duvida] GetTickCount -
SergioBr - 26.02.2011
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
Re: [Duvida] GetTickCount - rjjj - 26.02.2011
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
Re: [Duvida] GetTickCount -
junioor - 26.02.2011
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;
}
Re: [Duvida] GetTickCount -
SergioBr - 26.02.2011
o foda e o lag que pode dar se vocк nгo souber usar isto
Re: [Duvida] GetTickCount - rjjj - 26.02.2011
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
Re: [Duvida] GetTickCount -
SergioBr - 27.02.2011
so uma duvida sobre este assunto: como converte isto para segundos?