Fala galera, tranquilo ?
Hoje vou mostrar a vocês uma forma rápida e fácil de salvar o tempo que um jogador ficou conectado sem o uso das funções SetTimer e SetTimerEx, ou seja, sem um sistema muito complexo e que usa muito cache.. É um método bem simples que
também é usado para medir a velocidade de funções...
Antes de começarmos, gostaria de avisar que no Tutorial estarei usando DOF2, visto que é uma Include rápida sobre a qual já possuo certo conhecimento.. Espero que gostem
PRIMEIRO PASSO:
Criamos a variável que irÁ armazenar o tempo que o Player está conectado.
Exemplo:
Hoje vou mostrar a vocês uma forma rápida e fácil de salvar o tempo que um jogador ficou conectado sem o uso das funções SetTimer e SetTimerEx, ou seja, sem um sistema muito complexo e que usa muito cache.. É um método bem simples que
também é usado para medir a velocidade de funções...
Antes de começarmos, gostaria de avisar que no Tutorial estarei usando DOF2, visto que é uma Include rápida sobre a qual já possuo certo conhecimento.. Espero que gostem
PRIMEIRO PASSO:
Criamos a variável que irÁ armazenar o tempo que o Player está conectado.
Exemplo:
peão Код:
- Código:
novo TempoJogado [ MAX_PLAYERS ] ;
*Não é necessário nenhuma explicação, espero.
__________
SEGUNDO PASSO:
Quando o Player Conectar, definiremos o valor da variável que armazena o tempo que o Player está conectado para o tempo que o Servidor está conectado (em milissegundos) dividido por 1000 (mil), o que retornará o valor em segundos.
Exemplo:
__________
SEGUNDO PASSO:
Quando o Player Conectar, definiremos o valor da variável que armazena o tempo que o Player está conectado para o tempo que o Servidor está conectado (em milissegundos) dividido por 1000 (mil), o que retornará o valor em segundos.
Exemplo:
peão Код:
- Código:
public OnPlayerConnect ( playerid )
{
TempoJogado [ playerid ] = GetTickCount ( ) / 1000 ;
retornar 1 ;
}
* GetTickCount() - Retorna o tempo em atividade do Servidor em Milissegundos (ms).
*1ms = 0,001s, 1s = 1000ms
TERCEIRO PASSO:
Quando o jogador desconectar, definiremos o valor da variável para o tempo de atividade do servidor dividido por 1000 (mil) mais o valor antigo da variável. Depois, checaremos se jà existe um Arquivo deste player, se nгo existir o criado, checamos se jб existe um valor salvo do dia de hoje, caso haja, definiremos o valor como o jб salvo mais o que estб sendo salvo, caso contrбrio, simplesmente salvaremos.
Exemplo:
peão Код:
- Código:
public OnPlayerDisconnect ( playerid, razão )
{
novo arquivo [ 56 ] , Nome [ 24 ] , Dia, Mes, Ano; // Criamos as variáveis
TempoJogado [ playerid ] = GetTickCount ( ) / 1000 - TempoJogado [ playerid ] ; // Definimos o "TempoJogado" do Player para o Tempo de Atividade do servidor (em milissegundos) dividido por 1000 (mil) (= Tempo em Segundos) menos o valor antigo da variável.
getdate ( Ano, Mes, Dia) ; // Armazena a data atual.
GetPlayerName ( playerid, Nome, 24 ) ; // Armazena o nome do player na variável "Nome"
format ( File, 56 , "%s.txt" , Nome ) ; // Formata a variável "File" para "Nome_Do_Player.txt", ou seja, scriptfiles > Nome_Do_Player.txt
if ( ! DOF2_FileExists ( File ) ) DOF2_CreateFile ( File ) ; // Se o Arquivo nгo existir cria-o.
formato ( Nome, 24 ,"%02d/%02d/%d" , Dia, Mes, Ano ) ; // Para não ter de criar uma nova variável, armazenamos a Data formatada também em "Nome"..
if ( DOF2_IsSet ( File, Nome ) ) TempoJogado [ playerid ] += DOF2_GetInt ( File, Nome ) ; // Caso já exista um tempo salvo na data de hoje, o TempoJogado é somado ao que já estava salvo.
DOF2_SetInt ( Arquivo, Nome, TempoJogado [ playerid ] ) ; // Seta no Arquivo o novo valor de "TempoJogado"
DOF2_SaveFile () ; // Salva o arquivo.
retornar 1 ;
}
* getdade(ano, mês, dia) - Armazena a data atual.
* GetPlayerName(playerid, const name[], len) - Armazena o nome de um Player.
*Eu sei que nenhum exemplo dado nгo seria necessбrio que a variбvel "File" fosse formatada, mas isso facilita para que alguйm nгo muito instruнdo possa facilmente alterar o local onde a mesma й salva.
FAQ
Como trocar o local onde o arquivo é salvo ?
R: Vá na seguinte linha:
* GetPlayerName(playerid, const name[], len) - Armazena o nome de um Player.
*Eu sei que nenhum exemplo dado nгo seria necessбrio que a variбvel "File" fosse formatada, mas isso facilita para que alguйm nгo muito instruнdo possa facilmente alterar o local onde a mesma й salva.
FAQ
Como trocar o local onde o arquivo é salvo ?
R: Vá na seguinte linha:
peão Код:
- Código:
formato ( Arquivo, 56 , "%s.txt" , Nome ) ;
E troque o valor entre aspas..
Ex:
Ex:
peão Код:
- Código:
[left]formato ( Arquivo, 56 , "Tempo Jogado/%s.txt" , Nome ) ;[/left]
Agora, será salvo no seguinte destino: scriptfiles > Tempo Jogado > Nome_Do_Player.txt
* Certifique-se de que a pasta "Tempo Jogado" existe, caso contrário o Servidor irá crashar.
Espero que seja ъtil a alguйm Como eu jб disse, й bem simples, porйm MUITO mais eficiente do que usando Timers, ao menos eu acredito que sim
Atй mais.
Cumps, Ph0ton.
* Certifique-se de que a pasta "Tempo Jogado" existe, caso contrário o Servidor irá crashar.
Espero que seja ъtil a alguйm Como eu jб disse, й bem simples, porйm MUITO mais eficiente do que usando Timers, ao menos eu acredito que sim
Atй mais.
Cumps, Ph0ton.