[Tutorial] - Lendo (e carregando) arquivos online

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[Tutorial] - Lendo (e carregando) arquivos online

Mensagem por fredcobain em Sab 11 Maio 2013, 23:23


  • Título: Lendo Arquivos Online
  • GM Version: :GMS:
  • Link para download da Engine: ARQUIVOSONLINE
  • Requer Extensões: Não
  • Requer DLLs: Não. GML Puro e aplicado =)
  • Tags: Ler online; arquivos online; ler webserver;


Lendo arquivos Online

Bom, tudo começou quando eu estava querendo fazer uma aplicação para Android que buscasse os dados em um servidor web.

Obviamente não poderia fazer uso de DLL's, pois não era pra rodar no Windows.

Depois de muito quebrar a cabeça e tentar entender (até pq vcs verão que é um tanto quanto estranho a forma do GMS alocar esses dados), consegui exorcizar e espero tornar a vida de vcs mais fácil.

Para que vcs entendam mesmo, temos que ir por partes.... então vamos lá:

Parte 1 - Eventos Assíncronos

A única forma eficiente de buscar algo online é através de eventos assíncronos (asynchronous events). São chamados assim porque nós nunca sabemos quando a função assíncrona vai completar o seu trabalho.

Para todas as funções normais (síncronas), a chamada de linha do algoritmo dura 1 step.

No caso das funções assíncronas, estas são disparadas e só Jesus sabe quando (em qual step) que vão retornar alguma coisa.

MAAASSSSS, quando retornam (aleluia), é disparado um evento assíncrono no GMS (Asynchronous Event). Essa é a hora de checar o que foi retornado.


Parte 2 - Função http_get(url)

A função http_get() é uma função assíncrona (ohhh!). Isso significa que é aquele tipo de função que vc chama e esquece. Em algum step do jogo ela vai voltar (qdo ela conseguir carregar o conteúdo da url que vc passou como parâmetro).

Por isso, vc não vai conseguir trabalhar com o conteúdo da URL na próxima chamada (step). Pode esperar a vida toda que não vai dar certo.... a única forma de dar certo é sendo sinalizado por um Evento Assíncrono relacionado a essa bendita função http_get(). E esse evento está dentro de ASYNCHRONOUS, mais precisamente o evento HTTP.

Bom, com isso nós já temos o "QUANDO".

Agora falta o "ONDE".

Pasmem, a função http_get() não vai te retornar bulhufas.... (na verdade vai, mas não é o que vc quer... vcs vão entender mais a frente). O conteúdo da URL é salvo numa váriavel global nativa chamada async_load.

É desse corno que vamos falar agora.

Parte 3 - variável async_load

Esse cara é uma variável global nativa do GMS. É uma variável do tipo DS_MAP. (Se não sabem como funciona um DS_MAP, vão estudar essa estrutura de dados no manual do GMS, mas pra simplificar posso dizer que o DS_MAP é um mapa que contém várias chaves dentro de cada posição (quase como se fosse um arquivo.ini salvo na memória).

A estrutura da varíavel async_load quando fazemos uma chamada pelo http_get() será composta pelas chaves abaixo:

*ID : A posição (ID) do conteúdo da chamada http (que vc fez através do http_get()). Toda vez que vc chama essa função (http_get), um novo conjunto de chaves é criado dentro do mapa async_load. Começando na posição (ID) 0. Assim, se vc faz 3 chamadas http_get() no seu código, vc gera 3 eventos assíncronos do tipo HTTP, alimentando o mapa async_load em 3 posições (0, 1 e 2) - uma para cada chamada. Vejam vcs que quando chamamos o http_get(url), na verdade ela retorna essa chave, ou seja, o valor da chave "ID" da variável async_load onde a url em questão será descarregada.
Pra eu entender isso tive que perder uma tarde inteira.... como sou burro... Mad

*URL : O endereço que vc passou na função http_get - Tipo http://www.game.com/teste.ini

*result : Aqui está o conteúdo (que é salvo numa string) do arquivo que vc apontou na url (ou seja, aqui está o conteúdo do arquivo online teste.ini) - my precious! What a Face

*http_status : É o código http que é retornado na chamada http_get. Ex: 200 para OK. 404 para não encontrado. 204 para sem conteúdo, etc... O negócio aqui é torcer pra dar o valor 200, senão, é pq o webserver não aceita acessar diretamente esse arquivo, ou vc passou o endereço errado, ou está fora do ar, ou vc é uma anta, etc.

◦status : Quando dá algum erro, um valor menor que 0 é retornado nessa chave.


Pronto, agora temos a faca e o queijo na mão!!!! Vamos ver na prática como funciona essa joça.

Parte 4 - A p**** do código =)

Não precisamos mais que uma room e um objeto (dentro da room de preferência ¬¬).

No CREATE_EVENT:

Código:


pega_arquivo = http_get("http://www.dorway.com/test.txt");
Essa url é de um arquivo txt que procurei aleatoriamente no google. A idéia é vc passar onde vc salva seu arquivo .ini por exemplo.

O que acontece no código acima é que a variável "pega_arquivo" vai disparar um evento http_get(). O conteúdo dessa url vai ser salvo no mapa async_load. o ID do async_load vai ser o mesmo salvo na variável pega_arquivo.

Isto posto, precisamos de um evento ASYNCHRONOUS / HTTP para pegarmos o resultado dessa chamada (que é salvo na variável async_load - nada mais nada menos que um mísero ds_map).

No evento HTTP (Asynchronous)

Código:

show_message(string(ds_map_find_value(async_load,"id")));
A chave ID do async_load tem que ter o mesmo valor retornado pelo http_get(). Se foi a primeira vez que vc executou
a função http_get(), o valor vai ser 0. Se for a segunda vez, vai ser 1. E assim sucessivamente.

Código:
show_message(ds_map_find_value(async_load,"url"));
O código acima vai mostrar justamente a url que vc passou quando chamou a função http_get()

Código:
show_message(string(ds_map_find_value(async_load,"http_status")));
O código acima está o status http da chamada que foi feita no http_get

Código:
show_message(ds_map_find_value(async_load,"result")));
No código acima, meus caros, ESTÁ O OURO!!!! Sim, o conteúdo do arquivo passado na URL é salvo na chave "result" desse maldito ds_map
Assim vc pode trabalhar dentro dessa chave. Pode por exemplo salvar localmente. Etc...




Bom, agora vcs (assim como eu) estão doutrinados nessa missão.

Espero que esse tutorial tenha sido de grande valia, e que vcs não tenham que bater tanto a cabeça quanto eu pra carregar conteúdo online.

No início do post tem o link de um GMZ para vcs importarem e verem a engine funcionando no GMS. A engine basicamente faz o download do arquivo que está hospedado no webserver e mostra na tela a primeira linha desse arquivo.

Boas criações à todos.

Titio Fred.


Última edição por fredcobain em Dom 12 Maio 2013, 16:40, editado 1 vez(es)

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por PedroX em Dom 12 Maio 2013, 12:09

Muito bom o tutorial. Quando der, continue a postar tutoriais. Vlw.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Gonçalves em Dom 12 Maio 2013, 13:00

Também achei muito bom o tutorial, muito fácil de entender.

E a função parece ser muito mais rápida que a da HTTP DLL para GM8. Continue a contribuir sempre que possível!

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Gonzo em Dom 12 Maio 2013, 13:10

baixei a engine e só apareceram alguma janelas com as mensagens não era pra ele ler algum arquivo online e baixar o arquivo ?

eu demoro pra intender mais quando intendo o baguio fica loko

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Gonçalves em Dom 12 Maio 2013, 13:44

Ah e, será que tem uma forma de baixar a informação do .txt e passar direto para uma string? Seria mais rápido e evitaria possíveis falhas... Quanto as falhas acho que seria bem raro acontecer assim do jeito que está mas seria mais fácil não ter de criar um .txt com as informações pra depois passar pro jogo.

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por fredcobain em Dom 12 Maio 2013, 16:29

Mina do Rock escreveu:baixei a engine e só apareceram alguma janelas com as mensagens não era pra ele ler algum arquivo online e baixar o arquivo ?

eu demoro pra intender mais quando intendo o baguio fica loko

Então, o que a engine faz é copiar o conteúdo de um arquivo online para um arquivo local.
Dá uma olhadinha nos comentários do código.

Gonçalves escreveu:Ah e, será que tem uma forma de baixar a informação do .txt e passar direto para uma string? Seria mais rápido e evitaria possíveis falhas... Quanto as falhas acho que seria bem raro acontecer assim do jeito que está mas seria mais fácil não ter de criar um .txt com as informações pra depois passar pro jogo.

Dá sim.

Na verdade a chave "result" do async_load é uma variável do tipo string.

Depois que vc chama o http_get(url) passando o endereço do seu arquivo txt na web, vc pode criar uma variável qualquer no evento HTTP para salvar o conteúdo:

Ex:

Código:
 conteudo = ds_map_find_value(async_load,"result");

Ou seja, no exemplo acima o texto contido no arquivo txt online (que vc passou na função http_get) será salvo na variável (do tipo string) conteúdo.

Entendeu ?

Postagens unidas por Gonçalves! Evite double-post.

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Gonçalves em Dom 12 Maio 2013, 16:44

#fred

Sim, obrigado pela resposta. A teoria consegui sacar, mas não tenho como testar agora, mas tarde vejo se funciona.

Até mais! sorrindo2

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Crovux em Qua 05 Jun 2013, 17:14

legal.. Isso pode ser útil pra muitas coisas!

Crovux

Número de Mensagens : 169
Idade : 20
Data de inscrição : 07/01/2012
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Magritte em Qua 05 Jun 2013, 22:18

Eu sou um novato no Game Maker, e não entendi direito uma coisa:
Para o que isso serve?
Desculpe a minha nubisse!

Magritte

Número de Mensagens : 163
Idade : 18
Data de inscrição : 22/04/2013
Reputação : 17
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Gonçalves em Qua 05 Jun 2013, 22:22

#marcigre

Serve pra baixar arquivos de internet, permitindo baixar bases de dados atualizadas para softwares, buscar atualizações para jogos, ou até mesmo gerenciar downloads. Vai da imaginação do programador! o/

Gonçalves

Ranking : Nota B
Número de Mensagens : 1013
Data de inscrição : 29/10/2010
Notas recebidas : B + A + C
Reputação : 79
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por CRP-Max em Ter 11 Jun 2013, 15:34

Não tinha visto esta mensagens antes, conteúdo muito bom, bem explicado e divertido de ler, parabéns. What a Face
Agora só falta uma forma de gera estes arquivos online, dai seria perfeito. cheers

CRP-Max

Ranking : Nota C
Número de Mensagens : 819
Idade : 41
Data de inscrição : 28/10/2008
Notas recebidas : C
Reputação : 29
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por fredcobain em Qua 12 Jun 2013, 12:53

CRP-Max escreveu:Não tinha visto esta mensagens antes, conteúdo muito bom, bem explicado e divertido de ler, parabéns. What a Face
Agora só falta uma forma de gera estes arquivos online, dai seria perfeito. cheers

Amigo, obrigado pelos elogios ao post.

Penso que não tem como fazer o upload nativamente pelo GMS.

Mas acho que com PHP junto dá pra fazer.

Veja o script no fórum do GMC.

Link - Upload File

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Gonzo em Qua 12 Jun 2013, 15:08

fredcobain da pra vc fazer uma engine que le um numero online, exemplo  435345345323 e se bater como o do exe ir pra room 2 ? e se nao bater aparecer uma janelinha mostrando senha invalida, vc poderia fazer isso pra nos ?
vlw

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por fredcobain em Qua 12 Jun 2013, 15:37

Gonzo escreveu:fredcobain da pra vc fazer uma engine que le um numero online, exemplo  435345345323 e se bater como o do exe ir pra room 2 ? e se nao bater aparecer uma janelinha mostrando senha invalida, vc poderia fazer isso pra nos ?
vlw



Fala Gonzo, desculpe, mas não entendi o que vc quis dizer com "bater com o do exe" ?

Qual seria esse número do "exe" ? Como ele é gerado ?

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Gonzo em Qua 12 Jun 2013, 16:14

cara seria tipo um serial mesmo, e o do exe seria gerado manualmente pra bater com o do online, pode fazer?

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por fredcobain em Qua 12 Jun 2013, 16:52

A idéia seria a seguinte:

Eu criaria um arquivo serial.txt e colocaria e hospedaria em algum servidor web.

Usando a minha engine, é só vc trocar a url no create event:
pega_arquivo = http_get("http://www.seuservidor.com/serial.txt");


No final, o conteúdo desse arquivo (ou seja, o serial) vai ser carregado na variável "result" do mapa async_load. Vc acessa via:
ds_map_find_value(async_load,"result")

Então vc pega esse valor e compara com o serial do seu EXE.


Entendeu?

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Gonzo em Qua 12 Jun 2013, 17:21

a cara na verdade eu preciso que o o gms salve o serial do link em um arquivo ini, só isso se possivel. vlw:)

https://dl.dropboxusercontent.com/u/4532144/teste_serial.txt

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por moisesBR em Qui 13 Jun 2013, 22:28

Gonzo escreveu: escreveu:fredcobain da pra vc fazer uma engine que le um numero online, exemplo  435345345323 e se bater como o do exe ir pra room 2 ? e se nao bater aparecer uma janelinha mostrando senha invalida, vc poderia fazer isso pra nos ?
vlw


dê uma olhada eu consegui fazer isso usando o seu serial e o netread!:

https://www.dropbox.com/s/iq10zg52rgblpl1/letextoexterno%28moisesbr%29.rar

moisesBR

Número de Mensagens : 873
Idade : 40
Data de inscrição : 24/10/2009
Reputação : 14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://inprovise.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por fredcobain em Sex 14 Jun 2013, 09:44

moisesBR escreveu:
Gonzo escreveu: escreveu:fredcobain da pra vc fazer uma engine que le um numero online, exemplo  435345345323 e se bater como o do exe ir pra room 2 ? e se nao bater aparecer uma janelinha mostrando senha invalida, vc poderia fazer isso pra nos ?
vlw


dê uma olhada eu consegui fazer isso usando o seu serial e o netread!:

https://www.dropbox.com/s/iq10zg52rgblpl1/letextoexterno%28moisesbr%29.rar


Moisés, o problema de usar DLL é que vc fica restrito ao windows... não consegue exportar para as outras plataformas...

Mais tarde eu vou fazer o exemplo usando os comandos nativos do gms.

=)


------------------------------------------------------------------------------------------------

Pronto.

Gonzo, ta aqui o que vc queria. Enjoy.

Checar Serial Online - Gonzo

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Gonzo em Dom 16 Jun 2013, 15:56

blz agora funfo ki legal..  vlw moises e fredcobain duas engines que eu tinha curiosidade de saber vlw .

off :  gente pq nao tem + e - de reputacao no meu perfil pra eu agradece a galera q me da uma força ? 
vlw

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por fredcobain em Dom 16 Jun 2013, 16:07

Show!

Gonzo, meu filho, o + e - não aparece pra vc pq vc não pode agradecer a vc mesmo ahusuhashuahs


Mas fica tranquilo que eu (e todo o resto do fórum) vejo  o seu rssrrssrrs

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por irlansn em Seg 17 Jun 2013, 13:03

MUITO, MUITOOOO bom mesmo, alem de ser um assunto muito relevante e útil, a foma irreverente como você explica deixa tudo mais fácil e divertido de apender!!!
já tenho planos para esse recurso, MUAHAHA, mais coisa para me deixar ansioso para a compra do GMS :S bouncefelicidade


(já tá virando clichê) mas são pessoas como você que ajudam o fórum a crescer Very Happy
Espero que a Steff reconheça seu potencial logo, rsrs'

Irlan

irlansn

Ranking : Nota C
Número de Mensagens : 482
Idade : 18
Data de inscrição : 18/01/2011
Notas recebidas : B+D
Reputação : 5
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por fredcobain em Seg 17 Jun 2013, 14:09

Muito obrigado pelos elogios.
=)

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por MatheusMM em Sex 19 Set 2014, 19:38

eu não entendi quase nada, eu queria saber se você não poderia fazer um tutorial para aprender primeiro sobre isso, porque eu sou leigo nesse assunto e tenho que aprender do zero, pra depois botar em prática o que você ensinou aí

MatheusMM

Número de Mensagens : 30
Data de inscrição : 10/08/2014
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Lauro em Dom 23 Nov 2014, 14:51

Sabem como trato erros de mysql usando essa função?
Vejam
http://kingdomsbook.zz.vc/verifica_login.php?email=lauro@lauro.com&senha=asd
Aqui eu uso get pra validar o login. Masssss e se o login não confere?

--Edit--
Consegui fazer isso no próprio php.

Lauro

Ranking : Nota D
Número de Mensagens : 854
Idade : 19
Data de inscrição : 09/11/2010
Notas recebidas : C+D
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.google.com

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por fernando.munizerthal em Qua 03 Dez 2014, 14:19

fredcobain, não sei se você vai ver esta pergunta..

E não sei se reviver esse tópico é permitido, mas estou com um problema na minha implementação.

Estou conseguindo usar tranquilamente os eventos HTML da mesma forma que você explicou, uso para acessar meu banco de dados através de arquivos php online..

O meu problema, é que em uma das minhas rooms preciso disparar 3 http_get(), e para cada um deles tenho um evento de HTTP, e é ai que esta o problema, a cada vez que disparo o http_get() ele entra em todos os meus eventos HTTP.. sendo que deveria entrar em apenas um.

Já consegui resolver essa maldição, mas foi com uma gambiarra feia pra caramba e acho que mais pra frente terei problemas com isso, a minha dúvida é, sabe alguma alternativa mais profissional para escapar disso?

Eu acho que devo utilizar o ds_map_find_value(async_load,"id"); para pegar o Id e verificar se é igual ao do http_get() certo, e se for, permitir usar o evento HTT, fazer isso em todos os meus eventos HTTP, essa ideia me veio agora, acha que pode funcionar?

Obrigado.

fernando.munizerthal

Número de Mensagens : 76
Idade : 22
Data de inscrição : 17/10/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Lauro em Qua 03 Dez 2014, 14:28

Verifica o resultado.
Por exemplo, se você quer puxar um id, verifique se é número.
Se é um nome, verifique se é caractere.

Lauro

Ranking : Nota D
Número de Mensagens : 854
Idade : 19
Data de inscrição : 09/11/2010
Notas recebidas : C+D
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.google.com

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por fernando.munizerthal em Qua 03 Dez 2014, 14:41

Não, não é isso
Assim, eu tenho 3 objetos

Janela1, Janela2 e Janela3

Quando a room é criada esses 3 objetos são criados.
E no evento create de cada um deles existe um http_get() e cada um deles tem um evento HTTP.

Quando inicia o jogo, e os objetos são criados eles executam o comando http_get(), porém em vez do mesmo objeto executar o evento HTTP para esse get, todos os 3 objetos executam o evento HTTP para o mesmo get.

Depois que li esse tutorial eu vi que cada evento http_get() tem um id, que pode ser consultado no evento HTTP através do comando ds_map_find_value(async_load,"id");

Então pensei em cada evento HTTP eu fazer um if e verificar se o id é o id do http_get() correspondente aquele objeto.

Ficaria algo como:

Código:

idHTTP_Get = ds_map_find_value(async_load,"id");
if(idHTTP_Get == object_HTTP_Get)
{
    Código..
}

O que não sei é o que comparar no if com o idHTTP_Get, ou melhor como pegar o id do http_get() do objeto..

Isso que preciso saber.

fernando.munizerthal

Número de Mensagens : 76
Idade : 22
Data de inscrição : 17/10/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Lukbebalduke em Qua 03 Dez 2014, 15:16

@Fernando

  Os valores são salvos numa variável global, que é sempre a mesma, então não sei se você conseguiria fazer tudo isso ao mesmo tempo, na minha opinião o mais viável é você ler o conteúdo das 3 janelas de uma vez só... como um arquivo só.
 Creio eu que é você quem está gerenciando esses arquivos, então junte todos ele num só.

Abraço ! felicidade

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por fernando.munizerthal em Qua 03 Dez 2014, 15:36

Cara, não da, como eu disse é um código de php que acesso, e este já esta o mais otimizado possível, e a cada http_get eu faço um SELECT diferente no meu banco, ou melhor precisa ser 3 gets para poder mandar 3 valores diferentes para o meu SELECT..

fernando.munizerthal

Número de Mensagens : 76
Idade : 22
Data de inscrição : 17/10/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Lukbebalduke em Qua 03 Dez 2014, 15:56

@Fernando

Como eu disse, os valores são todos salves numa variável global que é sempre a mesma, portanto, você vai ter que fazer o seguinte:

- Chamar a função do http_get()
- Salvar os valores resultados numa outra variável
- Limpar os dados do async_load (não sei se é necessário... mas na duvida)
- Chamar novamente um outro http_get() e repetir esse processo até ter terminado de salvar os 3 resultados.

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Lauro em Qua 03 Dez 2014, 17:17

VocÊ poderia chamar a função progressivamente, faça uma verificação no evento http do objeto pra criar o outro.

Lauro

Ranking : Nota D
Número de Mensagens : 854
Idade : 19
Data de inscrição : 09/11/2010
Notas recebidas : C+D
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.google.com

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por fernando.munizerthal em Qua 03 Dez 2014, 19:28

Lukbebalduke não faço ideia de como fazer isso que tu esta dizendo hehe.

Lauro, é o que estou fazendo no momento, mas não sei se é uma boa..

fernando.munizerthal

Número de Mensagens : 76
Idade : 22
Data de inscrição : 17/10/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por fernando.munizerthal em Qui 04 Dez 2014, 09:01

Acredito que descobri como fazer a verificação que queria..
Ainda deram alguns problemas aqui, mas eu sei por que, então não vem ao caso..

A moral é, no momento em que for chamar o http_get() deve ser atribuido ele a uma variável array, exemplo:

teste[0] = http_get();

Então no evento HTTP, deve ser feito um if assim

if(ds_map_find_value(async_load,"id") == teste[0])

Então só entrará no evento se o http_get que esta respondendo for o que você esta esperando, desse jeito outros eventos http que estão rodando junto não entrarão nesse evento (:

Obrigado pela ajuda..

fernando.munizerthal

Número de Mensagens : 76
Idade : 22
Data de inscrição : 17/10/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Tutorial] - Lendo (e carregando) arquivos online

Mensagem por Conteúdo patrocinado Hoje à(s) 08:36


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum