Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

Criar/Atualizar itens no jogo baseado no tempo real

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
GabrielXavier
Membro
Membro
Reações: 0
Mensagens: 39
Localização: Goiás

Contato:

Criar/Atualizar itens no jogo baseado no tempo real

Mensagem por GabrielXavier » Ter Jun 28, 2016 11:55 pm

Boa noite, gostaria de desenvolver um sistema para um jogo online onde o jogador cria uma construção (ou atualiza) e o jogo exibe o tempo restante para o fim do evento.

Já tive estudando sobre o assunto no Game Maker  até obtive uns resultados, mas o sistema ficou com bugs e não consegui o resultado que esperava.

Para chegar a hora que ocorrerá o fim do evento é fácil basta usar a função: date_inc_second(date,amount); que recebe a hora atual por exemplo, acrescenta tempo em segundos na hora atual e retorna a hora do fim do evento, e então basta guardar essa hora do fim pra chegar se a construção já foi concluída ou não.

Pra checar se a construção(ou atualização) terminou devo usar essa função date_compare_datetime(date1,date2); que retorna 1 se data 1 for anterior a data 2, 0 se ambas as datas foram iguais ou -1 caso a data1 seja após a data2.

Com isso eu já consigo utilizar o recurso de atualização das coisas em tempo real, baseando na hora do servidor para não ter como o jogador alterar a hora do dispositivo dele e trapacear no jogo.

O problema é que não consegui construir a parte do feedback pro jogador para informar com precisão quanto tempo anda falta para a conclusão do evento.

Está função date_second_span(date1,date2); retorna o tempo restante em segundos entre uma data e a outra, e acredito que é baseado nela que devo trabalhar me corrijam se eu estiver errado 
Usei este script para tentar separar os dados em dias, minutos, horas e segundos:

Código: Selecionar todos

   data1 = scr_hora_atual();
    data2 = hora_fim;
    
    _tmp = date_second_span(data1,data2);
    
    _dia = _tmp/86400;
    _hr = frac(_dia)*24;
    _mn = frac(_hr)*60;
    _sg = frac(_mn)*60;
Porém o script não funcionou muito bem.
O feedback que eu quero retornar para o jogador é da seguinte forma:
Se faltas muitos dias para o fim do evento deve imprimir os dias e horas restantes -> 15d 23h
Se faltar mais de 24 horas para o fim do evento quero imprimir apenas quantos dias e quantas horas para o fim -> 1d 5h
Se faltar menos de 24 horas quero mostrar as horas e minutos restantes -> 7h 30m
Se faltar menos de 1 hora quero mostrar apenas os minutos e os segundos restantes -> 15m 35s
E se faltar menos de 1 minuto mostro apenas os segundos - 20s

Alguém poderia me ajudar com esse problema? :ué:
[ ] Publicar um App no Google Play.
[ ]GANHAR DINHEIRO.
[ ]Viver com o lucro dos meu jogos/apps (Sonho).

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes