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;
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?
