Página 1 de 1

Tutorial - Servidor PHP Grátis + Pegando horas

Enviado: Sáb Jul 14, 2018 5:00 pm
por All-x
  • Nome: Pegando informações do Servidor PHP (Última atualização: 01/05/2020)
  • Engine: GameMaker: Studio 2 e GameMaker: Studio 1.4
  • Feito com base na dúvida do tópico: Timer para jogo Android!
Neste tutorial rápido ensino como pegar as horas de um servidor PHP usando um host gratuito AwardSpace.

Bom, vamos lá! Crie um servidor gratuito aqui:

https://www.awardspace.com/free-hosting/?

Imagem

Após o registro será apresentada tela de boas vindas, apenas feche até que apareça para que troque a senha da conta:

Imagem

Irá abrir a DASHBOARD com trocentas ferramentas e opções. O primeiro passo é criar o domínio, então selecione a opção Domain Manager:

Imagem

Na tela seguinte clique em Create a Free Subdomain, escolha um nome e um domínio grátis (Escolhi mygamesonline.org), e clique em Create. Logo o endereço do site vai ser http://alexfc.mygamesonline.org/. Se você já possui um dominio registrado e queira usá-lo basta utilizar a opção Host a Domain:

Imagem

Volte à DASHBOARD, mas agora selecione a opção File Manager:

Imagem

Para cada domínio é criada uma pasta, logo devemos abrir a pasta correspondente, essa pasta é a raiz do site:

Imagem

Agora vamos criar um arquivo chamado horas.php, para isso selecione a opção Create:

Imagem

Depois selecione Create File, coloque o nome horas.php e clique em Create:

Imagem

Agora na raiz temos o arquivo horas.php:

Dê um clique duplo e abra o arquivo. Será aberto editor de texto, basta colar o seguinte código (Referência: PHP Date e Timezones):

Código: Selecionar todos

<?php

date_default_timezone_set("America/Sao_Paulo");
echo date("H:i:s");

?>
Clique em SAVE para salvar o arquivo. O formato será de 24 horas (Ex: 15:12:05), com horas, minutos e segundos. para personalizar só acessar os links de referência. Agora pode ser acessado pelo link abaixo (No meu caso):

http://alexfc.mygamesonline.org/horas.php

Agora no GMS basta fazer uma requisição no Create:

Código: Selecionar todos

// Fazendo requisição HTTP
get_horas = http_get("http://alexfc.mygamesonline.org/horas.php");

// Vai guardar o resultado da nossa requisição
resultado = "Aguarde...";
E no evento Asyncchronous -> HTTP verificar quando o resultado vai chegar:

Código: Selecionar todos

/// Checando se o nosso "get_horas" teve resultado
if ds_map_find_value(async_load, "id") == get_horas
{
    // Deu certo, grava as horas em 'resultado'
    if ds_map_find_value(async_load, "status") == 0
    {
       resultado = ds_map_find_value(async_load, "result");
    }
    // Vessh deu ruim! 'status' tem valor menor que 0, veja referência
    else
    {
        // HTTP tem vários códigos de resposta, procure na referência
        resultado = "Erro";
    }
}
Referências: http_get e HTTP Event

Imagem

Simples. Agora tu tem as horas salvas na variável resultado, pode fazer o que quiser com ela. Fiz um exemplo mais detalhado de uso:

Exemplo - Pegando infos do Servidor PHP - GMS 2

Exemplo - Pegando infos do Servidor PHP - GMS 1.4

Re: Tutorial - Servidor PHP Grátis + Pegando horas

Enviado: Sáb Jul 14, 2018 6:41 pm
por None
Muito bom o tutorial!

Re: Tutorial - Servidor PHP Grátis + Pegando horas

Enviado: Seg Jul 16, 2018 3:05 pm
por AdrianoPpaula
Cara... eu nem sei como agradecer, serio mesmo...eu estava a muito tempo procurando algo a respeito disso para criar esse tipo de sistema e não achava em lugar nenhum. Eu fiz alguns teste aqui e funcionou perfeitamente agora é só montar o sistema tipo pegar a informação e colocar em uma variável e fazer a comparação com a hora do usuário. O melhor beneficio desse sistema é a questão de poder criar prêmios por login e prêmios mensais e isso ajuda muito em jogos mobile na hora de manter o jogador ativo em seu game.

Re: Tutorial - Servidor PHP Grátis + Pegando horas

Enviado: Qui Jul 19, 2018 2:24 pm
por didipimenta
Muito bom Alex! Parabéns!
Estou pensando em criar um Projeto grande no Game Maker Studio para armazenar e retirar informações no Servidor. Com o Servidor PHP + SQL será essencial para finalizar essa minha ideia. Com esse Tutorial, você despertou novas possibilidades! Obrigado!
Abraço.

Re: Tutorial - Servidor PHP Grátis + Pegando horas

Enviado: Sáb Jul 21, 2018 10:11 pm
por All-x
didipimenta escreveu:Muito bom Alex! Parabéns!
Estou pensando em criar um Projeto grande no Game Maker Studio para armazenar e retirar informações no Servidor. Com o Servidor PHP + SQL será essencial para finalizar essa minha ideia. Com esse Tutorial, você despertou novas possibilidades! Obrigado!
Abraço.
Valeu Diogo, fico feliz em ter contribuído! Esse server me ajudou com outros trabalhos, é uma mão na roda. Porém não é tão estável, por isso o ideal é usar apenas para testes e jogos simples.

Abraços

Re: Tutorial - Servidor PHP Grátis + Pegando horas

Enviado: Sex Nov 30, 2018 9:26 pm
por AdrianoPpaula
Olá Alex blz!
Então a alguns meses venho tentando desenvolver um sistema de horários para mobile (aquele famoso sistema de premiação...tipo o báu do Clash Royale)
esse tutorial me ajudou muito

Vamos lá a minha dúvida:
Como faço para por exemplo diminuir 2 horários diferente e mostrar na tela quantos minutos ou hora falta para ganhar a premiação.

Tipo...vou mostrar o que eu fiz até agora mas está dando erro =/


A ideia é criar um botão de premiação que a cada duas horas e meia é ativado.

então em um obj control eu criei um relogio em tempo real constante usando o seu tutorial como base

OBJ TIME SERVE CONTROL

Código: Selecionar todos

global.se_time=http_get("ENDEREÇO DO MEU SERVIDOR");
alarm[0]=1800
ALARM[0]

Código: Selecionar todos

global.se_time=http_get("ENDEREÇO DO MEU SERVIDOR");
alarm[0]=1800
HTTP

Código: Selecionar todos

if ds_map_find_value(async_load, "id")  == global.se_time {
 global.se_time= ds_map_find_value(async_load, "result");
}
Tá beleza esse é um relógio que acada 1 minuto atualiza a hora do servidor colocando na variável global.se_time
Agora fiz algo similar com isso com o botão de premiação...toda vez que eu aperto o botão de premiação ele salva uma variável nos dados do usuário do mesmo jeito só que na variável  global.presente_time...o problema está na hora que o botão aparece ele faz o calculo diminuindo a hora do global.se_time com a hora do presente time adicionando mais duas horas e meia... vamos lá

OBJ BOTÃO PREMIAÇÃO
CREATE

Código: Selecionar todos

serve_time_hor=0;
serve_time_min=0;
presente_time_hor=0;
presente_time_min=0;
hora=0;
minuto=0;
date_serve=0;
date_presente=0;
ativar_premio=false;
DRAW

Código: Selecionar todos

draw_self();
serve_time_hor= string_copy(global.se_time,1,2);
serve_time_min= string_copy(global.se_time,4,2);

presente_time_hor= string_copy(global.presente_time,1,2);
presente_time_min= string_copy(global.presente_time,4,2);

date_serve= date_create_datetime(2018,11,30,serve_time_hor,serve_time_min,00);
date_presente= date_create_datetime(2018,11,30,presente_time_hor,presente_time_min,00);

hora =  ( ( ( date_get_hour(date_serve)*60) - ( date_get_hour(date_presente)*60+120) ) /60 )*-1; 
minuto= ( ( ( date_get_minute(date_serve)*60) - (date_get_minute(date_presente)*60+1800) )/60)*-1 ;

/// VERIFICANDO PREMIO DISPONIVEL
if minuto <=0 and hora <=0 {
ativar_premio=true;
} 
else {ativar_premio=false}


Então esse logica ai em cima está errada
a ideia é fazer algo assim

horario = horario_servidor - horario_ultimo_premio + 2 horas e meia = hora restante

Re: Tutorial - Servidor PHP Grátis + Pegando horas

Enviado: Sex Nov 30, 2018 10:15 pm
por All-x
Nunca joguei esses tipos de jogos, então perdoe se eu não entender.

O ideal é que boa parte dessa lógica esteja no servidor. Mas vamos supor que esse universo seja perfeito e resolver seu problema atual xD.

Ali depois dos 2 date_create_datetime, basta colocar assim:

Código: Selecionar todos

diff = date_minute_span(date_serve, date_presente);

if diff >= 120
{
    ativar_premio = true;
}
else
{
    ativar_premio = false;
}
Acho que é isso.

Abraços

Re: Tutorial - Servidor PHP Grátis + Pegando horas

Enviado: Sáb Dez 01, 2018 12:14 am
por AdrianoPpaula
Rapaz era isso mesmo eu consegui finalizar o sistema agora graças a dica que você deu do date_minute_span porem tive que adaptar para mostrar na tela o horário restante.

Uma foto pra ilustrar como seria o sistema.
Imagem


Acabou que ficou dessa maneira aqui, pesquisando mais a fundo descobri um calculo para converter todos os números certinho ficando da seguinte maneira

DRAW

Código: Selecionar todos

serve_time_hor= string_copy(global.se_time,1,2);
serve_time_min= string_copy(global.se_time,4,2);
serve_time_sec= string_copy(global.se_time,7,2);

presente_time_hor= string_copy(global.presente_time,1,2);
presente_time_min= string_copy(global.presente_time,4,2);
presente_time_sec= string_copy(global.presente_time,7,2);

date_serve= date_create_datetime(2018,11,30,serve_time_hor,serve_time_min,serve_time_sec);
date_presente=  date_create_datetime(2018,11,30,presente_time_hor,presente_time_min,presente_time_sec);

// Tempo total convertido para segundos adicionando mais 2:30 que da 8280 segundo por ai
tempo_total_segundo = floor(date_second_span(date_serve,date_inc_second(date_presente,8280)));

hora = tempo_total_segundo div 3600;
minuto = (tempo_total_segundo mod 3600) div 60;
segundo = tempo_total_segundo mod 60;

diff = date_second_span(date_serve,date_inc_second(date_presente,8280));
if diff >= 8280 {
 ativar_premio = true;
}
else{
 ativar_premio = false;
}

/// ESCREVENDO TEXTO
if ativar_premio==true {
 draw_text(x,y,"Abrir")
} else {
draw_text(x,y,string(hora)+"h:"+string(minuto)+"min");


Basicamente converteu tudo para segundos, e removendo as frações recebidas usando o mod e div simulando assim sistema de horários perfeitamente.

Re: Tutorial - Servidor PHP Grátis + Pegando horas

Enviado: Qua Abr 29, 2020 5:35 pm
por antchita
tenho uma dúvida: para esse servidor funcionar, o usuário terá que estar conectado a internet? se sim, tem como fazer um que as informações ficam só no dispositivo do usuario, sem necessitar de conecção a net?

Re: Tutorial - Servidor PHP Grátis + Pegando horas

Enviado: Qua Abr 29, 2020 6:29 pm
por All-x
antchita escreveu:tenho uma dúvida: para esse servidor funcionar, o usuário terá que estar conectado a internet? se sim, tem como fazer um que as informações ficam só no dispositivo do usuario, sem necessitar de conecção a net?
Acho que precisa formular melhor a pergunta xD

A informação (horas) está na internet, então a gente só faz uma requisição dessa informação. Poderia ser qualquer outra informação (Data, tabela de scores e etc).

Agora se tu está falando especificamente das horas tu pode usar as funções Date e Time e pegar as hora corrente. O tutorial pega a informação 'horas' de um servidor para evitar burlar o jogo, como na referência que postei.

Se tu necessitar gravar a informação, seja ela qual for, localmente, tu pode usar arquivos INI.

Re: Tutorial - Servidor PHP Grátis + Pegando horas

Enviado: Sáb Mai 02, 2020 6:24 pm
por rodrigomendes
Boa Alex, quais outras aplicações dessa funcionalidade? fiquei curioso. Que tipo de funcoes podemos utilizar? Para fazer dois aparelhos jogarem online tambem faz deste jeito:?

Re: Tutorial - Servidor PHP Grátis + Pegando horas

Enviado: Sáb Mai 02, 2020 7:22 pm
por All-x
rodrigomendes escreveu:Boa Alex, quais outras aplicações dessa funcionalidade? fiquei curioso. Que tipo de funcoes podemos utilizar?  Para fazer dois aparelhos jogarem online tambem faz deste jeito:?
Diversas aplicações: Tabela de scores, cadastro de usuários (Login, logout), verificar atualizações, baixar arquivos da internet e exibi-los no jogo e etc.

Boa parte delas necessita de banco de dados (SQL), por isso é fundamental saber algo de programação web no back-end.

Como é difícil achar hosts gratuitos confiáveis e com boa disponibilidade, pessoal acaba desistindo (Até tive que atualizar o post, pois o outro estava péssimo).

Sobre "fazer aparelhos jogarem online" o calo é mais embaixo caso seja algo em tempo real. Dá só uma olhada na "Introdução":

https://www.yoyogames.com/blog/446/intr ... r-studio-2

Ainda assim o negócio vai mais longe, quando quer envolver contas e estatisticas.

Enfim, estudo para meses a fio (Semanas se está em 'lockdown' xD).