Entrar
Últimos assuntos
» Retorno da GMBR!!!por theguitarmester Ter 19 Mar 2024, 22:38
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21
» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39
» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16
» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05
» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55
» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39
» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28
» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01
[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
Tópicos semelhantes
» [Tutorial] 39dll Tutorial - Part I
» Oi Galerinha, aqui um tutorial básico de um jogo de luta que eu fiz! [TUTORIAL]
» DBZ Final 1
» Viva o 3D Final
» Quadrado 1.0 FINAL
» Oi Galerinha, aqui um tutorial básico de um jogo de luta que eu fiz! [TUTORIAL]
» DBZ Final 1
» Viva o 3D Final
» Quadrado 1.0 FINAL
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|