[Ajuda] Tempo on no servidor ajuda
#1

bom estou tentando fazer o tempo on no server mais nгo estou conseguindo cada ele nгo esta contando


CODIGO


pawn Код:
/CONTA

format(String, sizeof(String), "{FFFFFF}» Tempo Online: {32CD32}%02d Dias %02d Horas e %02d Minutos %02d Segundos\n\n", ContaPlayer[playerid][TempoOn]); strcat(String2, String);

enum PlayerInfo
{
    TempoOn,
}

ONGAMEMODEINIT

SetTimer("TempoOnline", 1000, true);


SALVANDO DADOS

DOF2_SetInt(StringRegistro, "TempoOn", ContaPlayer[playerid][TempoOn]);

CARREGANDO DADOS

TextOn[playerid] = true;


forward TempoOnline();
public TempoOnline()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(Logado[i] == true)
            {
                ContaPlayer[i][TempoOn]++;
            }
        }
    }
    return 1;
}
stock ConvertDia(number)
{
    new Hora = 0, StrHora[100];
    Hora = floatround(number / 3600);
    new Dia = 0;
    if(Hora >= 24)
    {
        Dia = floatround((Hora/24), floatround_floor);
        Hora = Hora % 24;
    }
    if(Dia > 0)
    {
        format(StrHora, 100, "%d", Dia);
    }
    else if(Dia == 0)
    {
        format(StrHora, 100, "0");
    }
    return StrHora;
}

stock ConvertHora(number)
{
    new Hora = 0, StrHora[100];
    Hora = floatround(number / 3600);
    if(Hora >= 24)
    {
        Hora = Hora % 24;
    }
    format(StrHora, 100, "%d", Hora);
    return StrHora;
}

stock ConvertMinuto(number)
{
    new Hora = 0, Minuto = 0, StrHora[100];
    Hora = floatround(number / 3600);
    Minuto = floatround((number / 60) - (Hora * 60));
    format(StrHora, 100, "%d", Minuto);
    return StrHora;
}

stock ConvertSegundo(number)
{
    new Hora = 0, Minuto = 0, Segundo = 0, StrHora[100];
    Hora = floatround(number / 3600);
    Minuto = floatround((number / 60) - (Hora * 60));
    Segundo = floatround(number - ((Hora * 3600) + (Minuto * 60)));
    format(StrHora, 100, "%d", Segundo);
    return StrHora;
}
PRINTS DO BUG
Reply
#2

A sua stock retorna uma string, entгo na hora de mostrar a hora do player tem que vir com %s e nгo %02d.

Pode criar uma stock que converte tudo ao inves de uma pra cada:
Код:
stock ConverterTempo(valor)
{
	new dias = 0, horas = 0, minutos = 0, segundos = 0, resultado[100];
	horas = floatround(valor / 3600);
	minutos = floatround((valor / 60) - (horas * 60));
	segundos = floatround(valor - ((horas * 3600) + (minutos * 60)));

	if(horas >= 24)
	{
		dias = floatround((horas/24), floatround_floor);
		horas = horas % 24;
	}

	if(dias > 0)
	   format(resultado, 100, "%ddias, %dh %dm e %ds", dias, horas, minutos, segundos);
	else if(horas > 0)
	   format(resultado, 100, "%dh %dm e %ds", horas, minutos, segundos);
	else
	   format(resultado, 100, "%dm e %ds", minutos, segundos);

    return resultado;
}
e na hora de mostrar o tempo on so usar assim:
Код:
format(String, sizeof(String), "{FFFFFF}» Tempo Online: {32CD32}%s\n\n", ConverterTempo(ContaPlayer[playerid][TempoOn])); strcat(String2, String);
Reply
#3

Voce nгo esta convertendo a variavel TempoOn, ela esta sendo adicionada da forma correta, agora para vocк converter ela em formato real pode usar uma das funcoes abaixo uma usa oplugin ctime e outro nao.

PHP код:
ConvertUnix(Time:tempo)
{
    new 
tm <tmTempo>;
    new 
str[100];o
    localtime
(tempotmTempo);
    
strftime(strsizeof(str), "%H:%M %d/%m/%Y"tmTempo);
    return 
str;
}
Convert(numero)
{
    new 
hours 0mins 0secs 0string[100];
    
hours floatround(numero 3600);
    
mins floatround((numero 60) - (hours 60));
    
secs floatround(numero - ((hours 3600) + (mins 60)));
    new 
days 0;
    if(
hours >= 24)
    {
        
days floatround((hours/24), floatround_floor);
        
hours hours 24;
    }
    if(
days 0)
    {
        
format(string100"%d, %dh %dm e %ds"dayshoursminssecs);
    }
    else if(
hours 0)
    {
        
format(string100"%dh %dm e %ds"hoursminssecs);
    }
    else
    {
        
format(string100"%dm e %ds"minssecs);
    }
    return 
string;

Reply
#4

Quote:
Originally Posted by DayvisonJJB
Посмотреть сообщение
Voce nгo esta convertendo a variavel TempoOn, ela esta sendo adicionada da forma correta, agora para vocк converter ela em formato real pode usar uma das funcoes abaixo uma usa oplugin ctime e outro nao.

PHP код:
ConvertUnix(Time:tempo)
{
    new 
tm <tmTempo>;
    new 
str[100];o
    localtime
(tempotmTempo);
    
strftime(strsizeof(str), "%H:%M %d/%m/%Y"tmTempo);
    return 
str;
}
Convert(numero)
{
    new 
hours 0mins 0secs 0string[100];
    
hours floatround(numero 3600);
    
mins floatround((numero 60) - (hours 60));
    
secs floatround(numero - ((hours 3600) + (mins 60)));
    new 
days 0;
    if(
hours >= 24)
    {
        
days floatround((hours/24), floatround_floor);
        
hours hours 24;
    }
    if(
days 0)
    {
        
format(string100"%d, %dh %dm e %ds"dayshoursminssecs);
    }
    else if(
hours 0)
    {
        
format(string100"%dh %dm e %ds"hoursminssecs);
    }
    else
    {
        
format(string100"%dm e %ds"minssecs);
    }
    return 
string;

DayvisonJJB

como defino elas??

warning 203: symbol is never used: "Convert"
warning 203: symbol is never used: "ConvertUnix"

e no /conta como fica..

esta assim:
pawn Код:
format(String, sizeof(String), "{FFFFFF}» Tempo Online: {32CD32}%02d Dias %02d Horas e %02d Minutos %02d Segundos\n\n", ContaPlayer[playerid][TempoOn]); strcat(String2, String);
lembrando quero que mostre dias horas minutos e segundos no dialog
Reply
#5

passei 2 so para vc ver 2 codigos,agora na hora de formatar a strjng vce deve fazer assim
PHP код:
format(Stringsizeof(String), "{FFFFFF}» Tempo Online: {32CD32}%s",Convert(ContaPlayer[playerid][TempoOn])); 
@edit
vc pode usar esta include tambem e formatar a data a seu gosto

https://sampforum.blast.hk/showthread.php?tid=347605
Reply
#6

Quote:
Originally Posted by DayvisonJJB
Посмотреть сообщение
passei 2 so para vc ver 2 codigos,agora na hora de formatar a strjng vce deve fazer assim
PHP код:
format(Stringsizeof(String), "{FFFFFF}» Tempo Online: {32CD32}%s",Convert(ContaPlayer[playerid][TempoOn])); 
@edit
vc pode usar esta include tambem e formatar a data a seu gosto

https://sampforum.blast.hk/showthread.php?tid=347605
nгo entendi entгo como que fica o meu ?? me perdi agora.. me responde o topico acima

pawn Код:
format(String, sizeof(String), "{FFFFFF}» Tempo Online: {32CD32}%s",Convert(ContaPlayer[playerid][TempoOn]));
isto so mostra SOMENTE UM quero DIAS HORAS MINUTOS E SEGUNDOS..........

CODIGO FICO ASSIM:

pawn Код:
forward TempoOnline();
public TempoOnline()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(Logado[i] == true)
            {
                ContaPlayer[i][TempoOn]++;
            }
        }
    }
    return 1;
}
ConvertUnix(Time:tempo)
{
    new tm <tmTempo>;
    new str[100];o
    localtime(tempo, tmTempo);
    strftime(str, sizeof(str), "%H:%M %d/%m/%Y", tmTempo);
    return str;
}
Convert(numero)
{
    new hours = 0, mins = 0, secs = 0, string[100];
    hours = floatround(numero / 3600);
    mins = floatround((numero / 60) - (hours * 60));
    secs = floatround(numero - ((hours * 3600) + (mins * 60)));
    new days = 0;
    if(hours >= 24)
    {
        days = floatround((hours/24), floatround_floor);
        hours = hours % 24;
    }
    if(days > 0)
    {
        format(string, 100, "%d, %dh %dm e %ds", days, hours, mins, secs);
    }
    else if(hours > 0)
    {
        format(string, 100, "%dh %dm e %ds", hours, mins, secs);
    }
    else
    {
        format(string, 100, "%dm e %ds", mins, secs);
    }
    return string;
}
Reply
#7

O Gabriel jб falou como deveria usar. Й sу ler.

Resposta abaixo

Quote:
Originally Posted by GabrielDias_Invision
Посмотреть сообщение
A sua stock retorna uma string, entгo na hora de mostrar a hora do player tem que vir com %s e nгo %02d.

Pode criar uma stock que converte tudo ao inves de uma pra cada:
Код:
stock ConverterTempo(valor)
{
	new dias = 0, horas = 0, minutos = 0, segundos = 0, resultado[100];
	horas = floatround(valor / 3600);
	minutos = floatround((valor / 60) - (horas * 60));
	segundos = floatround(valor - ((horas * 3600) + (minutos * 60)));

	if(horas >= 24)
	{
		dias = floatround((horas/24), floatround_floor);
		horas = horas % 24;
	}

	if(dias > 0)
	   format(resultado, 100, "%ddias, %dh %dm e %ds", dias, horas, minutos, segundos);
	else if(horas > 0)
	   format(resultado, 100, "%dh %dm e %ds", horas, minutos, segundos);
	else
	   format(resultado, 100, "%dm e %ds", minutos, segundos);

    return resultado;
}
e na hora de mostrar o tempo on so usar assim:
Код:
format(String, sizeof(String), "{FFFFFF}» Tempo Online: {32CD32}%s\n\n", ConverterTempo(ContaPlayer[playerid][TempoOn])); strcat(String2, String);
Reply
#8

Quote:
Originally Posted by DayvisonJJB
Посмотреть сообщение
Olha sу como vai retornar:
Quote:
Originally Posted by ReyMysterio
Посмотреть сообщение
O Gabriel jб falou como deveria usar. Й sу ler.

Resposta abaixo
so mostra os minutos e segundos nгo mostra dias e horas..
Reply
#9

Quote:
Originally Posted by Tiger157000
Посмотреть сообщение
so mostra os minutos e segundos nгo mostra dias e horas..
Talvez pq ainda nгo tenha se passado dias/horas apуs a implantaзгo do sistema...
Reply
#10

hum pode ser mesmo Diego nгo pensei nisso vou ir testando se acaso nгo pegar eu edito o post..


Obrigado a todos..
Reply


Forum Jump:


Users browsing this thread: