(espero) de pacotes simples tutorial
2 participantes
Página 1 de 1
(espero) de pacotes simples tutorial
Escrevi isso para alguém, mas eu percebi que eu poderia muito bem postá-lo, deixe-me saber se houver algum erro, eu fiz isso sorta enquanto o café-privados e semi-adormecido
Isso é realmente muito simples quando você entende o básico: D
Primeiro de tudo, todos os pacotes precisam ter seu nome declarado em modEnumerations. Para os pacotes enviados do cliente precisam ser C (packetname) e para
pacotes enviados a partir do servidor que precisa ser S (packetname).
Por exemplo, aqui está o código para falar no mapa.
Isto é de modClientTCP lado do cliente ( )
a parte principal que você precisa se preocupar é realmente
Basicamente esta parte é apenas um sub-normal, que você chama com parâmetros. por exemplo.
Call SayMsg (texto que precisa ser enviado)
Este é então automaticamente colocada na variável "texto" do sub.
Para as partes internas do pacote você vai ver as linhas "WriteLong" e "WriteString". Cada pacote tem sempre "(packetname) buffer.writelong" abaixo da
linha "buffer Set = clsbuffer novo" Isto é principalmente para fins de identificação para o servidor que eu penso. Cada bit de informação que deve ser enviado precisa ter
writelong sua própria ou WriteString.
Por exemplo, se eu quisesse enviar o nome do jogador, o nível do jogador e algum texto que eu teria:
Que eu chamaria de
Em termos de envio de dados para o servidor que é tudo o que você precisa fazer do lado do cliente. Agora vamos para o código do servidor, esta é a confiança simples me
Primeiro de tudo temos de ir para modEnumerations e certifique-se que declarar o nome do pacote, neste exemplo, só é CRandomPacket.
Em seguida vá para modHandleData e encontrar o sub initMesssages. Nele você vai encontrar uma enorme quantidade de linhas como esta
Nós precisamos adicionar uma linha como esta para o nosso pacote. Então, mantendo com o nome do pacote até agora basta adicionar
A maioria deles é exatamente o mesmo para cada pacote, a única coisa que muda é o nome do pacote e também o sub que chamamos de lidar com a informação que é
recebeu, neste caso "HandleRandomPacket".
Depois de ter acrescentado que a entrada de linha (as linhas devem ser na mesma ordem em que os nomes dos pacotes estão em modEnumerations) rolar para o fundo
modHandleData para que possamos adicionar na sub para lidar com a informação.
O sub é bastante direto e muito bem até o que você colocar nele, por exemplo, aqui está o sub manipulação de mensagens:
Para o nosso sub precisamos ter algo como:
Basicamente, o sub deve começar com "Private Sub HandleRandomPacket (ByVal índice As Long, ByRef Dados () As Byte, ByVal StartAddR As Long, ByVal ExtraVar As Long)" e, em seguida, declarar algumas variáveis para manter a nossa informação. A
parte é declarar o nosso buffer de leitura.
Você vai notar a readlong / ReadString linhas, estes apenas ler as informações, simples e simpático. A informação tem que ser lido na mesma ordem em que foi escrito, acho que de uma primeira primeira coisa a meio.
Isso é tudo que eu penso, apenas para o envio de informações para o servidor. É praticamente o mesmo para o envio de informações para o cliente, você pode ver como tudo é manipulado no servidor ou apenas perguntar se você ficar preso, eu tentei fazer isto tão simples e legível quanto possível, mas estou um pouco cansado
Skweek
Isso é realmente muito simples quando você entende o básico: D
Primeiro de tudo, todos os pacotes precisam ter seu nome declarado em modEnumerations. Para os pacotes enviados do cliente precisam ser C (packetname) e para
pacotes enviados a partir do servidor que precisa ser S (packetname).
Por exemplo, aqui está o código para falar no mapa.
Isto é de modClientTCP lado do cliente ( )
- Código:
Public Sub SayMsg(ByVal text As String)
Dim Buffer As clsBuffer
' If debug mode, handle error then exit out
If Options.Debug = 1 Then On Error GoTo errorhandler
Set Buffer = New clsBuffer
Buffer.WriteLong CSayMsg
Buffer.WriteString text
SendData Buffer.ToArray()
Set Buffer = Nothing
' Error handler
Exit Sub
errorhandler:
HandleError "SayMsg", "modClientTCP", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
Exit Sub
End Sub
a parte principal que você precisa se preocupar é realmente
- Código:
Dim Buffer As clsBuffer
Set Buffer = New clsBuffer
Buffer.WriteLong CSayMsg
Buffer.WriteString text
SendData Buffer.ToArray()
Set Buffer = Nothing
Basicamente esta parte é apenas um sub-normal, que você chama com parâmetros. por exemplo.
Call SayMsg (texto que precisa ser enviado)
Este é então automaticamente colocada na variável "texto" do sub.
Para as partes internas do pacote você vai ver as linhas "WriteLong" e "WriteString". Cada pacote tem sempre "(packetname) buffer.writelong" abaixo da
linha "buffer Set = clsbuffer novo" Isto é principalmente para fins de identificação para o servidor que eu penso. Cada bit de informação que deve ser enviado precisa ter
writelong sua própria ou WriteString.
Por exemplo, se eu quisesse enviar o nome do jogador, o nível do jogador e algum texto que eu teria:
- Código:
Public Sub Blah (ByVal índice As Long, ByVal nível As Long, ByVal texto As String)
Dim buffer como clsBuffer
"Se o modo de depuração, lidar com o erro, em seguida, sair
Se Options.Debug = 1 Então no ErrorHandler GoTo erro
Definir Buffer = clsBuffer Nova
Buffer.WriteLong CRandomPacket
Índice Buffer.WriteLong
nível Buffer.WriteLong
texto Buffer.WriteString
SendData Buffer.ToArray ()
Definir Buffer = Nothing
"Manipulador de erro
Exit Sub
ErrorHandler:
HandleError "SayMsg", "modClientTCP", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
Exit Sub
End Sub
Que eu chamaria de
- Código:
Call Blah(index, Player(index).level, "teaxt blah blah")
Em termos de envio de dados para o servidor que é tudo o que você precisa fazer do lado do cliente. Agora vamos para o código do servidor, esta é a confiança simples me
Primeiro de tudo temos de ir para modEnumerations e certifique-se que declarar o nome do pacote, neste exemplo, só é CRandomPacket.
Em seguida vá para modHandleData e encontrar o sub initMesssages. Nele você vai encontrar uma enorme quantidade de linhas como esta
- Código:
HandleDataSub(CPartyLeave) =
GetAddress(AddressOf HandlePartyLeave)
Nós precisamos adicionar uma linha como esta para o nosso pacote. Então, mantendo com o nome do pacote até agora basta adicionar
- Código:
HandleDataSub(CRandomPacket) = GetAddress
(AddressOf HandleRandomPacket)
A maioria deles é exatamente o mesmo para cada pacote, a única coisa que muda é o nome do pacote e também o sub que chamamos de lidar com a informação que é
recebeu, neste caso "HandleRandomPacket".
Depois de ter acrescentado que a entrada de linha (as linhas devem ser na mesma ordem em que os nomes dos pacotes estão em modEnumerations) rolar para o fundo
modHandleData para que possamos adicionar na sub para lidar com a informação.
O sub é bastante direto e muito bem até o que você colocar nele, por exemplo, aqui está o sub manipulação de mensagens:
- Código:
Private Sub HandleSayMsg(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddR As Long, ByVal ExtraVar As Long)
Dim msg As String
Dim i As Long
Dim Buffer As clsBuffer
Set Buffer = New clsBuffer
Buffer.WriteBytes Data()
msg = Buffer.ReadString
' Prevent hacking
For i = 1 To Len(msg)
' limit the ASCII
If AscW(Mid$(msg, i, 1)) < 32 Or AscW(Mid$(msg, i, 1)) > 126 Then
' limit the extended ASCII
If AscW(Mid$(msg, i, 1)) < 128 Or AscW(Mid$(msg, i, 1)) > 168 Then
' limit the extended ASCII
If AscW(Mid$(msg, i, 1)) < 224 Or AscW(Mid$(msg, i, 1)) > 253 Then
Mid$(msg, i, 1) = ""
End If
End If
End If
Next
Call AddLog("Map #" & GetPlayerMap(index) & ": " & GetPlayerName(index) & " says, '" & msg & "'", PLAYER_LOG)
Call SayMsg_Map(GetPlayerMap(index), index, msg, QBColor(White))
Set Buffer = Nothing
End Sub
Para o nosso sub precisamos ter algo como:
- Código:
Private Sub HandleRandomPacket(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddR As Long, ByVal ExtraVar As Long)
' the variables we store our information in
Dim text As String
Dim player As Long
Dim playerlevel AS Long
Dim Buffer As clsBuffer
Set Buffer = New clsBuffer
Buffer.WriteBytes Data()
player = buffer.ReadLong
playerlevel = buffer.ReadLong
text = buffer.ReadString
'code that does something with this information
Set Buffer = Nothing
End Sub
Basicamente, o sub deve começar com "Private Sub HandleRandomPacket (ByVal índice As Long, ByRef Dados () As Byte, ByVal StartAddR As Long, ByVal ExtraVar As Long)" e, em seguida, declarar algumas variáveis para manter a nossa informação. A
- Código:
Dim Buffer As clsBuffer
Set Buffer = New clsBuffer
Buffer.WriteBytes Data()
parte é declarar o nosso buffer de leitura.
Você vai notar a readlong / ReadString linhas, estes apenas ler as informações, simples e simpático. A informação tem que ser lido na mesma ordem em que foi escrito, acho que de uma primeira primeira coisa a meio.
Isso é tudo que eu penso, apenas para o envio de informações para o servidor. É praticamente o mesmo para o envio de informações para o cliente, você pode ver como tudo é manipulado no servidor ou apenas perguntar se você ficar preso, eu tentei fazer isto tão simples e legível quanto possível, mas estou um pouco cansado
Skweek
Re: (espero) de pacotes simples tutorial
Legal. +1 Cred
Mestre Lingua Yoda Aprendeu você?
uhauhauah Origins Eclipse =]
Mestre Lingua Yoda Aprendeu você?
uhauhauah Origins Eclipse =]
Dr.Manhattan- Membro Veterano
- Mensagens : 863
Tópicos semelhantes
» [Tutorial] Avatar Simples
» [Tutorial]Sign simples
» [Tutorial] Botão Simples
» [ALL][Tutorial super simples] Comando sair somente no cliente~side
» Tutorial Borda tech/sign tech [Simples]
» [Tutorial]Sign simples
» [Tutorial] Botão Simples
» [ALL][Tutorial super simples] Comando sair somente no cliente~side
» Tutorial Borda tech/sign tech [Simples]
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Dom 08 Abr 2018, 18:40 por JorgeZinhoo002
» Ojkjeeeee
Seg 10 Out 2016, 23:19 por Frozen
» Naruto Great Ninja Batle
Dom 09 Out 2016, 14:29 por GuiinhoLP
» Recrutamento de um Designer para jogo de CDZ.
Sex 23 Set 2016, 18:37 por newbie123
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:11 por Eduardo
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:11 por Eduardo
» Serviços de suporte maker( Programação , Design , PixelArt ) E Vendas de Jogos
Qui 22 Set 2016, 20:09 por Eduardo
» Projeto Dbz
Qua 31 Ago 2016, 23:46 por 157
» Avaliação - Sprites Naruto
Qua 31 Ago 2016, 17:09 por 157
» [Sprites] DBZ (Plix)
Qua 31 Ago 2016, 14:13 por 157
» Super Pack - Bleach V.2
Qua 31 Ago 2016, 13:02 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:04 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:03 por 157
» [PEDIDO][PROJETO][RECRUTAMENTO] DYNISTYGAMES
Ter 30 Ago 2016, 10:02 por 157
» [Pedido] Contador de resets na FrmMain
Sáb 13 Ago 2016, 17:45 por killers97
» [Recrutamento]
Qua 10 Ago 2016, 23:09 por Monsters
» Ajuda erro no Cliente e Servidor do EEB 2.6!
Qua 20 Jul 2016, 19:53 por Binholx
» Como criar tilesets para Eclipse Origins 3.0 (POKÉMON)
Qua 29 Jun 2016, 19:46 por Sir Aaron
» Recursos Pokemons
Qua 29 Jun 2016, 19:34 por Sir Aaron
» erro frm flash
Qua 25 maio 2016, 13:51 por vava123
» Pedido - Pack de star wars
Qui 19 maio 2016, 05:06 por edsonpet
» [Ajuda] Sobre como por o servidor on por ip fixo
Ter 17 maio 2016, 16:14 por vava123
» Illusion Dimension - O Misterio do ID: BETA TESTE ONLINE
Sex 06 maio 2016, 20:02 por LksFlorencio
» [NSME] Naruto Shinobi Maker Engine
Qua 23 Mar 2016, 15:11 por luana1457
» Script /base,/casa Igual DBZ Forces
Dom 21 Fev 2016, 07:34 por JorgeZinhoo002
» [Pedido]Colar Tsunade item sprite eclipse origin
Qui 21 Jan 2016, 07:38 por lawllietbr
» [Pedido] Elysium
Sáb 19 Dez 2015, 11:31 por luana1457
» Naruto - Recruta
Ter 15 Dez 2015, 18:40 por Uchiha ~
» [Avaliação] - Kirito from Sword Art Online; Red and Pikachu from Pokemon.
Qua 25 Nov 2015, 13:43 por Thanakii
» [Avaliação] - Kenpachi Zaraki from Bleach; Libra Shiryu From Saint Seiya.
Qua 25 Nov 2015, 12:55 por Thanakii
» Demonstração de Sprites (Á VENDA!)
Qua 25 Nov 2015, 12:40 por Thanakii
» [Sistema de Reset]Para Eclipse .
Ter 24 Nov 2015, 16:51 por VithorUchi
» Cada Guild Nascer em Certo Mapa
Qui 12 Nov 2015, 06:13 por fabiofeijó_HIT
» Dragon Ball z Fusion A Grande Volta
Qui 29 Out 2015, 15:17 por fabiofeijó_HIT
» Ajuda com Ip fixo
Seg 26 Out 2015, 16:07 por GalaxyHells15
» Como Fazer um GUI no Eclipse Origins
Dom 18 Out 2015, 22:10 por Jeanleee
» Shisui Susanoo
Dom 18 Out 2015, 20:23 por Jeanleee
» Fantasy Art Online
Dom 18 Out 2015, 16:41 por daviih123
» Ajuda !!
Seg 05 Out 2015, 12:13 por andersonzika
» como passar o usuário e senha para o MainMenu?
Seg 28 Set 2015, 22:03 por Bëzerk
» Ru time ero 13 Type mismatch
Seg 28 Set 2015, 09:08 por andredarle
» Jarvis 1.3 Download
Qua 23 Set 2015, 18:42 por soares125
» [Avaliação/Disponibilização]Árvore 64x64
Qua 23 Set 2015, 15:15 por Over~
» Mlk's Zikas Signatures
Ter 22 Set 2015, 21:15 por Aikawa Reborn'
» Pedido de Sistemas
Dom 20 Set 2015, 18:05 por cleyton_05
» [AjudaEEB]Gerador de EXP
Qua 16 Set 2015, 14:04 por Over~
» [Avaliar] Base, Humano e Goblin.
Seg 14 Set 2015, 22:51 por .iBlaz3.
» Fabrica do Tio Cronos!
Dom 13 Set 2015, 21:31 por [ADM]Cronos
» [PixelArt] Minion - Meu malvado favorito
Dom 13 Set 2015, 12:51 por [ADM]Cronos
» [Avaliar] Goku Dragon Ball Z
Qua 05 Ago 2015, 21:36 por Setrux