Entrar
Últimos assuntos
» player não consegue andarpor 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] 39dll Tutorial - Part II(Final)
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
[Tutorial] 39dll Tutorial - Part II(Final)
39dll Tutorial Part II(Final)
Luke Escude
Luke Escude
Descrição : Eu achei este tutorial sobre a 39dll no site da gmc (forum de game maker da yoyogames) , então resolvi traduzi-la e postar aqui no fórum pra ver se ajudam os usuários a entender melhor sobre esta dll , eu ainda não testei , mas pelos comentários , parece ser bom !
Part II(Final) do tutorial sobre 39dll traduzido feito pelo Luke Escude que disponibilizou este tutorial para todos!
Obs:Tutorial traduzido ,comentários das engines traduzidas , menos as imagem , voçes mesmo terão que traduzi-las
Nível de dificuldade: Avançado
Game Maker : (Não testado em outros game maker's pelo o que eu sei)
Tutorial Original: http://www.lukeescude.com/online-tutorial/
6. Gravar, e leitura de uma mensagem
Um bom conjunto de comandos existe para gravar dados, como bytes, strings, etc, para uma mensagem, e depois de ler os dados da mensagem. Se você enviar uma mensagem sobre o cliente, você pode usar os comandos de gravação para gravar dados a ele, em seguida, enviá-lo. Em seguida, o servidor lê-lo usando os comandos de leitura.
- Spoiler:
- Escrever Comandos
WriteByte (número, de 0 a 255)
WriteString (A seqüência de caracteres entre "aspas")
writeInt (um inteiro)
writeDouble (número com decimal, muito preciso) A diferença entre um Double e float, é Double são mais precisos,
writeFloat (número com decimal, regular) eles têm números muito mais à direita do decimal
Ler Comandos
ReadByte () - Retorna um inteiro
ReadString () - Retorna uma string
readInt () - Retorna um inteiro
readDouble () - Retorna um float
readfloat () - Retorna um float
Estes são apenas os típicos de leitura / gravação comandos. Há vários outros, como longs e ushorts, mas aqueles que não são necessários para você memorizar. Apenas estas as mais básicas até aqui. Usando os comandos de gravação, você pode escrever seus dados para uma mensagem, em seguida, enviá-lo para o lado de recepção. Ambos os comandos de gravação e os comandos de ler o trabalho, tanto o cliente e o servidor.
7. Enviando a mensagem
O envio da mensagem é bastante simples, uma vez que você tem todos os seus dados gravados. Lembra da ID da TCP de cada objeto jogador no servidor? Esse ID representa o cliente específico ligado a ele. Isso é para o servidor.
Por outro lado, no cliente, uma vez que estabelece uma ligação com o servidor, ele armazena a ID de TCP em uma variável, global.tcp.
Isto significa que, se você é o servidor, e você quiser enviar uma mensagem para o cliente, você usa sendmessage (tcp), enquanto no cliente, para enviar uma mensagem para o servidor, você pode usar SendMessage (global.tcp). Mais detalhadamente abaixo.
- Spoiler:
- clearbuffer ()
WriteByte (0)
sendmessage (global.tcp)-ou-sendmessage (tcp)
O comando clearbuffer () deve ser chamado quando você está a escrevendo dados de uma mensagem. clearbuffer () limpa a leitura / gravação de buffer. Você não quer que os dados antigos que vão em sua mensagem, não é?
Após o comando clearbuffer () é chamado, em seguida, usar os comandos de gravação para gravar todos os dados que você deseja. Neste caso, a mensagem tem somente um byte, que é o valor é 0.
O comando SendMessage () envia a mensagem para a conexão especificada. No cliente, só pode haver uma ligação, certo? A conexão para o servidor. Então você usa global.tcp (ou qualquer outro nome variável) ... No servidor, uma vez que o ID TCP deve ser local, e não global, você acabou de usar tcp.
NOTA: Eu sei que nós não falamos sobre o cliente ainda, mas estamos chegando lá. Você está quase pronto!
8. O Client
Aqui é onde o jogo atua. O cliente é o que está aberta no computador do usuário. Ele faz apenas uma ligação, para o servidor. Eu tenho uma base de clientes para você que eu criei, é o esqueleto de um cliente, mas é bom trabalhar com uma vez que tem todos os scripts necessários, e objetos.
ClientBase.GMK
Tudo bem, o cliente terá dois objetos usados para a conexão. online_connect, que faz a conexão inicial, e online_receive que vai fazer todos os dados que recebem do servidor. Tem o mesmo switch () da árvore do servidor, porque como para colocar um byte no início da mensagem.
Aqui está o código para o evento de criação do objeto online_connect:
- Spoiler:
- dllinit(0,true,true); //Necessário init () DLL
global.tcp=tcpconnect("127.0.0.1",5123,1); //Conectar ao endereço IP 127.0.0.1, na porta 5123, não o modo bloqueio on
if global.tcp>0 //Se a ligação for feita ...
{
//conexão bem-sucedida
room_goto_next()
}
else
{
show_message("Não foi possível conectar ao servidor!")
game_end()
}
No código acima, o dllinit () é o mesmo que o servidor. Aqui é a nossa variável global.tcp. Ele está a ser atribuído a ID TCP retornado pelo tcpconnect () função. O primeiro parâmetro para tcpconnect () é o endereço IP do servidor, que é uma cadeia. NOTA: 127.0.0.1 é o mesmo que "localhost". O segundo parâmetro é o número da porta. Isso está definido para 5123, mas deve ser alterado para qualquer porta que o servidor opera. O terceiro parâmetro define o bloqueio para OFF.
- Spoiler:
- while (1)
{
msize = receiveMessage (global.tcp);
if msize = 0
{
/ / Para fazer quando o servidor desconecta aleatoriamente
show_message ("servidor terminou inesperadamente.")
game_end ()
}
if (msize <= 0) break;
mid = ReadByte ();
switch (mid)
{
case 0:
break;
case 1:
break;
}
/ / Nada abaixo daqui
}
Observe como intimamente relacionado o código Step do cliente é o código do STEP do objeto jogador. Além disso, observe, o comando receiveMessage () tem "global.tcp", em que, em vez do objeto jogador "tcp" nele.
Tudo o resto é fácil de entender se você entendeu o objeto jogador no servidor.
9. Juntando tudo
Você já sabe como configurar um servidor, conectar a ele com um cliente, ler / escrever uma mensagem e enviar a mensagem. Agora, é hora de você colocar tudo junto. Comece simples, não sobrecarregar-se. Esse tipo de coisa leva tempo.
Eu criei uma amostra de bate-papo , servidor e client para que você olhe. Basta iniciar o servidor, minimizá-lo, e lançar dois clientes. Cada cliente representa um usuário, então o que você digita em um cliente é enviada ao servidor, e o servidor repete para todos os clientes. É uma sala de chat.
ChatRoom.RAR
Emfim o tutorial acaba por aqui , espero que tenha ajudado muitos aqui no fórum , é o que eu espero
As vezes arranjo um tempo pra ''fuçar'' o site da Gmc , e qualquer dia desse traduzo mais alguns tutoriais que eu achar interessante ,porque o fórum da gmc tem um conhecimento mais amplo sobre o game maker
então , abrç , ate a próxima pessoal!
39dll Tutorial Online, Lucas Escude, 2010
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos