SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

    [Tutorial] Salvar tempo tocado sem o uso de SetTimer(Ex)

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11381
    Moedas : 1031993
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

    [Tutorial] Salvar tempo tocado sem o uso de SetTimer(Ex) Empty [Tutorial] Salvar tempo tocado sem o uso de SetTimer(Ex)

    Mensagem por Weslley_Script Sáb 6 maio 2023 - 6:01

    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 [Tutorial] Salvar tempo tocado sem o uso de SetTimer(Ex) Mrgreen

    [Tutorial] Salvar tempo tocado sem o uso de SetTimer(Ex) HDxDE22

    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:
    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:
    peão Код:


    Código:
    formato ( Arquivo, 56 , "%s.txt" , Nome ) ;

    E troque o valor entre aspas..

    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.

    [Tutorial] Salvar tempo tocado sem o uso de SetTimer(Ex) HDxDE22

    Espero que seja ъtil a alguйm [Tutorial] Salvar tempo tocado sem o uso de SetTimer(Ex) BiggrinComo eu jб disse, й bem simples, porйm MUITO mais eficiente do que usando Timers, ao menos eu acredito que sim [Tutorial] Salvar tempo tocado sem o uso de SetTimer(Ex) Razz

    Atй mais.

    Cumps, Ph0ton.



    [Tutorial] Salvar tempo tocado sem o uso de SetTimer(Ex) D07Xwqb
    [Tutorial] Salvar tempo tocado sem o uso de SetTimer(Ex) Yjab9HN

      Data/hora atual: Dom 19 maio 2024 - 6:00