GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


[Tutorial]connecção simples com 39DLL

+6
peixoto
omikakim
Anderson3d
Mr.Brum
PedroX
Jiraya
10 participantes

Ir para baixo

[Tutorial]connecção simples com 39DLL Empty [Tutorial]connecção simples com 39DLL

Mensagem por Jiraya Sex 29 Abr 2011, 05:32

Olá a todos!
a 39Dll é conhecida pelo seu poderoso sistema de connecção!
mas algumas pessoas reclamam, por algo ser algo difícil de usar.
eu adicionei a 39dll ao gmLIBRARY simplificando as funções.

ok vamos começar
baixe o gmLibrary e instale no seu game maker

crie um objeto e nomeie como "Controle"
deixe esse objeto como persistent
e no create event desse objeto use o seguinte
Código:

using("39dll.h|gui.h");//isso fara o game maker usar as funçoes da 39dll e da GUI[Graphical User Interface]
global.host=false;//vai definir se o jogador é host ou server

e agora no draw_event do objeto Controle use o seguinte
Código:

if (room==room_menu)//checa se estiver na room_menu
{
//isso cria um botão e checa se ele foi pressionado
if (gui_button("host",10,10,128,32,"entrar no jogo como server")==gui_left_pressed)
{
//vamos usar a porta 8210, você pode usar qualquer porta, que não esteja sendo usada.
global.LISTEN=tcp_listen(8210,2);//isso faz o seu computador "ouvir" esperar qualquer ip que se conecte à porta 8210
//2 sera o numero maximo de jogadores
room_goto(room_server);//ir para a room_server, que iremos criar em breve
global.host=true;//então sera o host
};

if (gui_button("jogador",10,48,128,32,"entrar no jogo como jogador")==gui_left_pressed)
{
//essa função tentara se conectar com o servidor
//o primeiro argumento é o ip do servidor
//o segundo argumento é a porta que o servidor estara escutando
global.SERVIDOR=tcp_connect(get_string("digite o ip do servidor:","127.0.0.1"),8210);
    if (!global.SERVIDOR)//checa se ñ conseguiu se conectar
    show_message("erro ao tentar se conectar com o servidor!");else
    {//então ira para room do jogo
    room_caption="Server";
    room_goto(room_game);
    }
};

}else
if (room==room_server)//checa se estiver na room onde o servidor ira esperar o jogador
{
draw_text(10,10,"esperando o jogador!");
jogador=tcp_accept(global.LISTEN);//prepara para aceitar o jogador
  if ( jogador)//se  o jogador "bater na porta" x3
  {
  global.JOGADOR=jogador;//guarda a id do jogador para trocar mensagens
  room_caption="Jogador";
  room_goto(room_game);
  }
};

pronto o básico importante ja foi feito
agora vem a troca de mensagem Happy

agora crie uma room e nomeie como "room_menu", coloque o objeto controle nessa room
então crie outra room e nomeie como "room_server"
então crie a ultima room "room_game".
deve ficar assim a ordem no seu projeto
room_menu
room_server
room_game

agora a troca de mensagens
crie um objeto e nomeie como "Comunicador".
e no draw event desse objeto use isso
Código:


if (global.host)//checa se o jogador é o host
{
    msg=receive_message(global.JOGADOR);//recebe mensagens do jogador
    //você pode usar a função server_receive(); tbm, que recebe mensagens de todos os jogadores simultaneamente
   
    if (msg)//se recebeu a mensagem
    {
        switch (read_id())//lê a id da mensagem
        {
        //aqui o servidor ira interpretar as mensagens recebidas
              case 0:
              BOOT.x=read_value();//aplica a posição x do outro jogador no BOOT
              BOOT.y=read_value();//aplica a posição y do outro jogador no BOOT;
              break;
        };
    };
}else//se for o jogador
{
    msg=receive_message(global.SERVIDOR);
    if (msg)
    {
        switch (read_id())//lê a id da mensagem
        {
        //aqui o jogador ira interpretar as mensagens recebidas do servidor
              case 0:
              BOOT.x=read_value();//aplica a posição x do outro jogador no BOOT
              BOOT.y=read_value();//aplica a posição y do outro jogador no BOOT;
              break;
        }
    }
};

coloque o objeto Comunicador na room_game

pronto, agora é só trocar as mensagens Happy

agora vamos fazer os personagens andar no mapa
crie uma sprite que será o jogador
crie um objeto e nomeie de "Jogador"
coloque a sprite que você fez no object Jogador
crie mais um objeto e nomeie de "BOOT"
e aplica uma sprite qualquer no objeto BOOT, ele recebera as mensagens dos outros jogadores
no step event do objeto Jogador, use isso
Código:

//movimento simples
if (keyboard_check(vk_right))
x+=4;else
if (keyboard_check(vk_left))
x-=4;
if (keyboard_check(vk_up))
y-=4;else
if (keyboard_check(vk_down))
y+=4;

buff_clear(0);//limpa o buff para n haver congestionamento e lentidão nas transferências de mensagens
set_id(0);//define a id da mensagem para 0
write_value(x);//escreve o valor de x na mensagem
write_value(y);//escreve o valor de y na mensagem

if (global.host)//Servidor
{
send_message(global.JOGADOR);//envia a mensagem para o jogador
//você pode usar a função server_send(); que envia a mensagem para todos os jogadores simultaneamente
}else//Jogador
{
send_message(global.SERVIDOR);//envia a mensagem para o servidor
};

[nota]deixa a room_game com um fps de 90

Pronto a troca de mensagem entre o jogador e servidor está completa
agora coloque o objeto Comunicador,Jogador e o objeto BOOT na room_game
e teste para ver se esta funcionando!

quem quiser baixar o exemplo
aqui esta o link
Download[.gmk]
Jiraya
Jiraya

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 20/03/2010
Reputação : 108
Número de Mensagens : 1134
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://www.facebook.com/seito.washiro.7

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Re: [Tutorial]connecção simples com 39DLL

Mensagem por PedroX Sex 29 Abr 2011, 11:17

Muito bom Jiraya. Suas engines são muito boas.
Esse tutorial é bem proveitoso. A gmlibrary é excelente.

FLW

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Re: [Tutorial]connecção simples com 39DLL

Mensagem por Jiraya Sex 29 Abr 2011, 17:14

Vlw Happy!
creio que a gmLIBRARY esta num nivel capaz de andar lado a lado com o gmlSDK!
Jiraya
Jiraya

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 20/03/2010
Reputação : 108
Número de Mensagens : 1134
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://www.facebook.com/seito.washiro.7

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Re: [Tutorial]connecção simples com 39DLL

Mensagem por PedroX Sex 29 Abr 2011, 17:28

Sim. Esta mesmo.
Você poderia juntar as duas mais para frente.
O unico problema seria a imensidão de scripts que iria ter.
Por outro lado, quanto mais funções, melhor.

FLW

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Re: [Tutorial]connecção simples com 39DLL

Mensagem por Mr.Brum Sáb 28 maio 2011, 22:47

galera... sensacional... show de bola!! voltei a me animar com o gm , depois dessa extensão!!!... +rep amanhã!
Mr.Brum
Mr.Brum

Games Ranking : Nota C

Notas recebidas : D + D + C + C + D + B
Data de inscrição : 28/04/2011
Reputação : 41
Número de Mensagens : 915
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://mrbrumgames.blogspot.com/

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Re: [Tutorial]connecção simples com 39DLL

Mensagem por Anderson3d Dom 29 maio 2011, 10:16

perfect, quando tiver todas as funções da 39dll eu farei uma estátua sua aqui em Natal igual a do Rock...
Anderson3d
Anderson3d

Games Ranking : Nota A

Notas recebidas : A - A
Data de inscrição : 15/02/2009
Reputação : 9
Número de Mensagens : 1479
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.indiegamebr.com

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Re: [Tutorial]connecção simples com 39DLL

Mensagem por omikakim Seg 30 maio 2011, 17:32

ira me ajudar muito isso
omikakim
omikakim

Games Ranking : Nota E

Notas recebidas : E
Data de inscrição : 07/02/2011
Reputação : 0
Número de Mensagens : 95
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Re: [Tutorial]connecção simples com 39DLL

Mensagem por Jiraya Seg 30 maio 2011, 20:58

Obrigado a todos Happy

Pedro Henrique escreveu:Muito bom Jiraya. Suas engines são muito boas.
Esse tutorial é bem proveitoso. A gmlibrary é excelente.
FLW
que bom que acha isso, pois ela foi uma de minhas maiores criaçoes!

Pedro Henrique escreveu:Sim. Esta mesmo.
Você poderia juntar as duas mais para frente.
O unico problema seria a imensidão de scripts que iria ter.
Por outro lado, quanto mais funções, melhor.
FLW
ya, n estou pensando em unilas, e sim adicionar funçoes do gmlSDK melhoradas no gmLIB

mrbrum22 escreveu:galera... sensacional... show de bola!! voltei a me animar com o gm , depois dessa extensão!!!... +rep amanhã!
yo, fico feliz em ler isso!

Anderson3d escreveu:perfect, quando tiver todas as funções da 39dll eu farei uma estátua sua aqui em Natal igual a do Rock...
xD, isso foi um tanto exagerado, mesmo assim obrigado Happy
Jiraya
Jiraya

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 20/03/2010
Reputação : 108
Número de Mensagens : 1134
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://www.facebook.com/seito.washiro.7

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Re: [Tutorial]connecção simples com 39DLL

Mensagem por Mr.Brum Ter 31 maio 2011, 08:11

Por favor, cria um help aí,explicando as funções..


Última edição por mrbrum22 em Ter 10 Jan 2012, 21:08, editado 1 vez(es)
Mr.Brum
Mr.Brum

Games Ranking : Nota C

Notas recebidas : D + D + C + C + D + B
Data de inscrição : 28/04/2011
Reputação : 41
Número de Mensagens : 915
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://mrbrumgames.blogspot.com/

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Re: [Tutorial]connecção simples com 39DLL

Mensagem por peixoto Seg 20 Jun 2011, 19:47

Tenho uma duvida:Como fasso para ter mais de 2 jogadores numa mesma room?Quando tentei 3 jogadores, apareceu dois numa room e um numa outra room '-'

Se alguem souber ajudar me ajuda

ps:Adorei o tutorial so teu fan d++++++++++
peixoto
peixoto

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 14/02/2010
Reputação : 3
Número de Mensagens : 911
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Re: [Tutorial]connecção simples com 39DLL

Mensagem por Isaque Onix Ter 10 Jan 2012, 21:04

como instala o gmLibrary???
Isaque Onix
Isaque Onix

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 15/08/2010
Reputação : 147
Número de Mensagens : 1626
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Unity
  • C#
  • Outros


http://spyreserver.16mb.com

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Re: [Tutorial]connecção simples com 39DLL

Mensagem por Thyago Ter 10 Jan 2012, 21:15

peixoto escreveu:Tenho uma duvida:Como fasso para ter mais de 2 jogadores numa mesma room?Quando tentei 3 jogadores, apareceu dois numa room e um numa outra room '-'

Se alguem souber ajudar me ajuda

ps:Adorei o tutorial so teu fan d++++++++++



acho que é isso,tente mudar 2 para outro numero
global.LISTEN=tcp_listen(8210,2);//isso faz o seu computador "ouvir" esperar qualquer ip que se conecte à porta 8210
//2 sera o numero maximo de jogadores
Thyago
Thyago

Games Ranking : Nota B

Notas recebidas : D+B+B+C+A
Data de inscrição : 24/08/2009
Reputação : 31
Número de Mensagens : 1101
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 1 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Re: [Tutorial]connecção simples com 39DLL

Mensagem por WhiteAngel Dom 11 Nov 2012, 12:48

Erro no evento de Draw do obj_control na linha 27:

Código:
if (room==room_menu)//checa se estiver na room_menu
{
//isso cria um botão e checa se ele foi pressionado
if (gui_button("host",10,10,128,32,"entrar no jogo como server")==gui_left_pressed)
{
//vamos usar a porta 8210, você pode usar qualquer porta, que não esteja sendo usada.
global.LISTEN=tcp_listen(8210,2);//isso faz o seu computador "ouvir" esperar qualquer ip que se conecte à porta 8210
//2 sera o numero maximo de jogadores
room_goto(room_server);//ir para a room_server, que iremos criar em breve
global.host=true;//então sera o host
};

if (gui_button("jogador",10,48,128,32,"entrar no jogo como jogador")==gui_left_pressed)
{
//essa função tentara se conectar com o servidor
//o primeiro argumento é o ip do servidor
//o segundo argumento é a porta que o servidor estara escutando
global.SERVIDOR=tcp_connect(get_string("digite o ip do servidor:","127.0.0.1"),8210);
    if (!global.SERVIDOR)//checa se ñ conseguiu se conectar
    show_message("error after try connect on server");else
    {//então ira para room do jogo
    room_caption="Server";
    room_goto(room_game);
    }
};

}else<br>if (room==room_server)//checa se estiver na room onde o servidor ira esperar o jogador
{
draw_text(10,10,"esperando o jogador!");
jogador=tcp_accept(global.LISTEN);//prepara para aceitar o jogador
  if ( jogador)//se  o jogador "bater na porta" x3
  {
  global.JOGADOR=jogador;//guarda a id do jogador para trocar mensagens
  room_caption="Jogador";
  room_goto(room_game);
  }
};
WhiteAngel
WhiteAngel

Data de inscrição : 02/08/2012
Reputação : 6
Número de Mensagens : 145
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.flexgames.com.br/

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Re: [Tutorial]connecção simples com 39DLL

Mensagem por peixoto Sáb 24 Nov 2012, 21:22

Que bom (que ao menos parece) que estão voltando com tutoriais que ajudem jogos MMORPG/online.

Esse tutorial poderia ser útil no meu projeto(se eu fosse mais experiente Razz )

Muito bom tutorial !
peixoto
peixoto

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 14/02/2010
Reputação : 3
Número de Mensagens : 911
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Bom

Mensagem por natanael3d_@hotmail.com Seg 19 Jan 2015, 22:17

Gostei bem rapido e pratico
natanael3d_@hotmail.com
natanael3d_@hotmail.com

Data de inscrição : 21/03/2013
Reputação : 0
Número de Mensagens : 5
Prêmios : [Tutorial]connecção simples com 39DLL Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

[Tutorial]connecção simples com 39DLL Empty Re: [Tutorial]connecção simples com 39DLL

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos