Avatar do usuário
Alex FC
Administrador
Administrador
Autor
Mensagens: 534
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS
Karma: 1003

Contato:

Tutorial - Servidor PHP Grátis + Pegando horas

Sáb Jul 14, 2018 5:00 pm

  • 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):

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

// 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:

/// 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
3
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!

Tags:
 
Avatar do usuário
None
Administrador
Administrador
Mensagens: 287
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 654

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

Sáb Jul 14, 2018 6:41 pm

Muito bom o tutorial!
1
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
Avatar do usuário
AdrianoPpaula
Membro
Membro
Mensagens: 59
Registrado em: Qui Ago 27, 2015 5:56 am
Localização: Quissamã RJ
Karma: 82

Contato:

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

Seg Jul 16, 2018 3:05 pm

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.
Imagem
 
Avatar do usuário
didipimenta
Colaborador
Colaborador
Mensagens: 106
Registrado em: Ter Fev 28, 2017 10:01 pm
Localização: São Paulo
Karma: 320
Contato:

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

Qui Jul 19, 2018 2:24 pm

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.
2
Aprenda passo a passo como criar jogos 2D para PC no GameMaker Studio.
Acessem meu canal no Youtube → https://www.youtube.com/playlist?list=P ... Vzgqqcd6-J
 
Avatar do usuário
Alex FC
Administrador
Administrador
Autor
Mensagens: 534
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS
Karma: 1003

Contato:

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

Sáb Jul 21, 2018 10:11 pm

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
1
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!
 
Avatar do usuário
AdrianoPpaula
Membro
Membro
Mensagens: 59
Registrado em: Qui Ago 27, 2015 5:56 am
Localização: Quissamã RJ
Karma: 82

Contato:

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

Sex Nov 30, 2018 9:26 pm

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
global.se_time=http_get("ENDEREÇO DO MEU SERVIDOR");
alarm[0]=1800

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

HTTP
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
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
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
Imagem
 
Avatar do usuário
Alex FC
Administrador
Administrador
Autor
Mensagens: 534
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS
Karma: 1003

Contato:

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

Sex Nov 30, 2018 10:15 pm

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:

diff = date_minute_span(date_serve, date_presente);

if diff >= 120
{
    ativar_premio = true;
}
else
{
    ativar_premio = false;
}


Acho que é isso.

Abraços
1
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!
 
Avatar do usuário
AdrianoPpaula
Membro
Membro
Mensagens: 59
Registrado em: Qui Ago 27, 2015 5:56 am
Localização: Quissamã RJ
Karma: 82

Contato:

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

Sáb Dez 01, 2018 12:14 am

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
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.
Imagem
 
antchita
Novato
Novato
Mensagens: 1
Registrado em: Sex Fev 26, 2016 11:11 am
Karma: 0

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

Qua Abr 29, 2020 5:35 pm

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?
 
Avatar do usuário
Alex FC
Administrador
Administrador
Autor
Mensagens: 534
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS
Karma: 1003

Contato:

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

Qua Abr 29, 2020 6:29 pm

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.
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!
 
Avatar do usuário
rodrigomendes
Novato
Novato
Mensagens: 11
Registrado em: Sáb Jul 16, 2016 6:43 pm
Karma: 10

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

Sáb Mai 02, 2020 6:24 pm

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:?
Portfolio:

2009 - Pro-Shoot Striker
2009 - Cubo 2
2008 - Smash !!!
 
Avatar do usuário
Alex FC
Administrador
Administrador
Autor
Mensagens: 534
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS
Karma: 1003

Contato:

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

Sáb Mai 02, 2020 7:22 pm

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/introduction-to-networking-in-gamemaker-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).
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!