Packet Funcions
Documentação de Pacotes Cliente-GameServer
As funções de pacotes permitem a comunicação do cliente para o servidor de jogos, criando, manipulando e enviando pacotes de dados, além de receber pacotes do servidor. Esta documentação apresenta as funções de forma clara, intuitiva e com exemplos práticos e concisos para facilitar o uso. Para exemplos mais detalhados, consulte o arquivo JewelBank.lua.
Como Usar as Funções de Pacotes
Criação de Pacotes: Use
CreatePacketpara iniciar um pacote, definindo seu nome e identificador.Manipulação: Use funções como
SetBytePacket,SetWordPacket,SetDwordPacketouSetCharPacketpara adicionar dados ao pacote.Envio e Limpeza: Envie o pacote com
SendPackete limpe-o comClearPacketapós o uso.Recebimento: Use as funções
Getpara processar dados recebidos de um pacote do servidor.Observação: Sempre limpe o pacote após o uso para evitar problemas de memória ou dados residuais. No cliente, não há suporte para exibição de logs.
Funções de Pacotes
Abaixo estão todas as funções disponíveis, explicadas de forma simples com exemplos práticos:
1. CreatePacket(packetName, packet)
CreatePacket(packetName, packet)Descrição: Cria um pacote com o nome e identificador especificados para enviar ao servidor.
Exemplo:
CreatePacket("ClientPacket", 0x02)
2. SetDwordPacket(packetName, position)
SetDwordPacket(packetName, position)Descrição: Define um valor DWORD (32 bits) na posição especificada do pacote.
Exemplo:
CreatePacket("ClientPacket", 0x02) SetDwordPacket("ClientPacket", 987654)
3. GetDwordPacket(packetName, position)
GetDwordPacket(packetName, position)Descrição: Obtém o valor DWORD (32 bits) na posição especificada do pacote recebido.
Exemplo:
local value = GetDwordPacket("ClientPacket", 0)
4. SetWordPacket(packetName, position)
SetWordPacket(packetName, position)Descrição: Define um valor WORD (16 bits) na posição especificada do pacote.
Exemplo:
CreatePacket("ClientPacket", 0x02) SetWordPacket("ClientPacket", 5678)
5. GetWordPacket(packetName, position)
GetWordPacket(packetName, position)Descrição: Obtém o valor WORD (16 bits) na posição especificada do pacote recebido.
Exemplo:
local value = GetWordPacket("ClientPacket", 0)
6. SetBytePacket(packetName, position)
SetBytePacket(packetName, position)Descrição: Define um valor BYTE (8 bits) na posição especificada do pacote.
Exemplo:
CreatePacket("ClientPacket", 0x02) SetBytePacket("ClientPacket", 128)
7. GetBytePacket(packetName, position)
GetBytePacket(packetName, position)Descrição: Obtém o valor BYTE (8 bits) na posição especificada do pacote recebido.
Exemplo:
local value = GetBytePacket("ClientPacket", 0)
8. SetCharPacket(packetName, string)
SetCharPacket(packetName, string)Descrição: Define uma string com até 10 caracteres no pacote.
Exemplo:
CreatePacket("ClientPacket", 0x02) SetCharPacket("ClientPacket", "Action")
9. GetCharPacket(packetName, position)
GetCharPacket(packetName, position)Descrição: Obtém uma string do pacote na posição especificada.
Exemplo:
local str = GetCharPacket("ClientPacket", 0)
10. SetCharPacketLength(packetName, string, length)
SetCharPacketLength(packetName, string, length)Descrição: Define uma string com um tamanho específico no pacote.
Exemplo:
CreatePacket("ClientPacket", 0x02) SetCharPacketLength("ClientPacket", "ClientData", 10)
11. GetCharPacketLength(packetName, string, length)
GetCharPacketLength(packetName, string, length)Descrição: Obtém uma string com um tamanho específico do pacote recebido.
Exemplo:
local str = GetCharPacketLength("ClientPacket", 0, 10)
12. SendPacket(packetName, aIndex)
SendPacket(packetName, aIndex)Descrição: Envia o pacote para o servidor, direcionado ao jogador com o índice
aIndex.Exemplo:
CreatePacket("ClientPacket", 0x02) SetBytePacket("ClientPacket", 128) SendPacket("ClientPacket", 100)
13. ClearPacket(packetName)
ClearPacket(packetName)Descrição: Limpa o pacote após o uso para evitar resíduos de dados.
Exemplo:
CreatePacket("ClientPacket", 0x02) SetBytePacket("ClientPacket", 128) SendPacket("ClientPacket", 100) ClearPacket("ClientPacket")
Exemplo Prático Completo
Abaixo está um exemplo fictício que combina o recebimento de um pacote do servidor, processamento de seus dados e envio de uma resposta do cliente para o servidor. Este código pode ser usado como base para comunicação bidirecional.
-- Sistema de gerenciamento de pacotes cliente-servidor
CLIENT_PACKET_MANAGER = {}
function CLIENT_PACKET_MANAGER.HandleClientPacket(aIndex, packetName, packetId)
local player = User.new(aIndex)
-- Processa pacote recebido do servidor
local byteValue = GetBytePacket(packetName, 0)
local wordValue = GetWordPacket(packetName, 1)
local dwordValue = GetDwordPacket(packetName, 2)
local charValue = GetCharPacket(packetName, 3)
local charLengthValue = GetCharPacketLength(packetName, 4, 10)
-- Cria um pacote de resposta para o servidor
CreatePacket("ResponsePacket", 0xF2)
-- Define valores no pacote de resposta
SetBytePacket("ResponsePacket", 2) -- Estado de resposta (ex.: 2 para confirmação)
SetWordPacket("ResponsePacket", 2000) -- Valor de exemplo
SetDwordPacket("ResponsePacket", 654321) -- Outro valor de exemplo
SetCharPacket("ResponsePacket", "Reply") -- String curta
SetCharPacketLength("ResponsePacket", "ClientReply", 10) -- String com tamanho definido
-- Envia o pacote de resposta para o servidor
SendPacket("ResponsePacket", aIndex)
-- Limpa os pacotes
ClearPacket(packetName)
ClearPacket("ResponsePacket")
end
-- Exemplo de chamada da função
CLIENT_PACKET_MANAGER.HandleClientPacket(100, "ServerPacket", 0xF1) -- Substitua 100 pelo aIndex do jogador
return CLIENT_PACKET_MANAGERResumo
As funções de pacotes permitem criar, manipular, enviar e receber dados entre o cliente e o servidor.
Use
CreatePacketpara iniciar, funçõesSetpara adicionar dados,Getpara processar dados recebidos,SendPacketpara enviar eClearPacketpara limpar.O exemplo prático mostra como processar um pacote recebido do servidor, extrair seus dados e enviar uma resposta ao servidor.
No cliente, não há suporte para exibição de logs, então o foco está nas operações de manipulação e envio de pacotes.
Last updated
