🚀Packet Functions
Envio Packets GameServer para Cliente
As funções de Packets permitem a comunicação entre o servidor de jogos (GameServer) e o cliente, criando, manipulando e enviando pacotes de dados. 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.Observação: Sempre limpe o pacote após usá-lo para evitar problemas de memória ou dados residuais.
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.
Exemplo:
CreatePacket("MyPacket", 0x01) LogAdd("[Packet] - Pacote MyPacket criado com ID 0x01", 0)
2. SetDwordPacket(packetName, position)
SetDwordPacket(packetName, position)Descrição: Define um valor DWORD (32 bits) na posição especificada do pacote.
Exemplo:
CreatePacket("MyPacket", 0x01) SetDwordPacket("MyPacket", 123456) LogAdd("[Packet] - Definido valor DWORD 123456 no pacote MyPacket", 0)
3. GetDwordPacket(packetName, position)
GetDwordPacket(packetName, position)Descrição: Obtém o valor DWORD (32 bits) na posição especificada do pacote.
Exemplo:
local value = GetDwordPacket("MyPacket", 0) LogAdd(string.format("[Packet] - Valor DWORD obtido do pacote MyPacket: %d", 0, value), 0)
4. SetWordPacket(packetName, position)
SetWordPacket(packetName, position)Descrição: Define um valor WORD (16 bits) na posição especificada do pacote.
Exemplo:
CreatePacket("MyPacket", 0x01) SetWordPacket("MyPacket", 1234) LogAdd("[Packet] - Definido valor WORD 1234 no pacote MyPacket", 0)
5. GetWordPacket(packetName, position)
GetWordPacket(packetName, position)Descrição: Obtém o valor WORD (16 bits) na posição especificada do pacote.
Exemplo:
local value = GetWordPacket("MyPacket", 0) LogAdd(string.format("[Packet] - Valor WORD obtido do pacote MyPacket: %d", 0, value), 0)
6. SetBytePacket(packetName, position)
SetBytePacket(packetName, position)Descrição: Define um valor BYTE (8 bits) na posição especificada do pacote.
Exemplo:
CreatePacket("MyPacket", 0x01) SetBytePacket("MyPacket", 255) LogAdd("[Packet] - Definido valor BYTE 255 no pacote MyPacket", 0)
7. GetBytePacket(packetName, position)
GetBytePacket(packetName, position)Descrição: Obtém o valor BYTE (8 bits) na posição especificada do pacote.
Exemplo:
local value = GetBytePacket("MyPacket", 0) LogAdd(string.format("[Packet] - Valor BYTE obtido do pacote MyPacket: %d", 0, value), 0)
8. SetCharPacket(packetName, string)
SetCharPacket(packetName, string)Descrição: Define uma string com até 10 caracteres no pacote.
Exemplo:
CreatePacket("MyPacket", 0x01) SetCharPacket("MyPacket", "Hello") LogAdd("[Packet] - Definida string 'Hello' no pacote MyPacket", 0)
9. GetCharPacket(packetName, position)
GetCharPacket(packetName, position)Descrição: Obtém uma string do pacote na posição especificada.
Exemplo:
local str = GetCharPacket("MyPacket", 0) LogAdd(string.format("[Packet] - String obtida do pacote MyPacket: %s", str), 0)
10. SetCharPacketLength(packetName, string, length)
SetCharPacketLength(packetName, string, length)Descrição: Define uma string com um tamanho específico no pacote.
Exemplo:
CreatePacket("MyPacket", 0x01) SetCharPacketLength("MyPacket", "HelloWorld", 10) LogAdd("[Packet] - Definida string 'HelloWorld' com tamanho 10 no pacote MyPacket", 0)
11. GetCharPacketLength(packetName, string, length)
GetCharPacketLength(packetName, string, length)Descrição: Obtém uma string com um tamanho específico do pacote.
Exemplo:
local str = GetCharPacketLength("MyPacket", 0, 10) LogAdd(string.format("[Packet] - String obtida do pacote MyPacket (tamanho 10): %s", str), 0)
12. SendPacket(packetName, aIndex)
SendPacket(packetName, aIndex)Descrição: Envia o pacote para o jogador com o índice
aIndex.Exemplo:
CreatePacket("MyPacket", 0x01) SetBytePacket("MyPacket", 255) SendPacket("MyPacket", 100) LogAdd("[Packet] - Pacote MyPacket enviado para jogador com aIndex 100", 0)
13. ClearPacket(packetName)
ClearPacket(packetName)Descrição: Limpa o pacote após o uso para evitar resíduos de dados.
Exemplo:
CreatePacket("MyPacket", 0x01) SetBytePacket("MyPacket", 255) SendPacket("MyPacket", 100) ClearPacket("MyPacket") LogAdd("[Packet] - Pacote MyPacket limpo", 0)
Exemplo Prático Completo
Abaixo está um exemplo fictício que utiliza várias funções de pacotes em uma única função para criar, configurar, enviar e limpar um pacote para um jogador. Este código pode ser usado como base para comunicação entre servidor e cliente.
-- Sistema de envio de pacotes
PACKET_MANAGER = {}
function PACKET_MANAGER.SendCustomPacket(aIndex)
local player = User.new(aIndex)
local playerName = player:getName()
-- Cria o pacote
CreatePacket("CustomPacket", 0xF1)
LogAdd(string.format("[PacketManager] - [%s] Criou pacote CustomPacket com ID 0xF1", playerName), 0)
-- Define valores no pacote
SetBytePacket("CustomPacket", 1) -- Estado (ex.: 1 para ativo)
SetWordPacket("CustomPacket", 1000) -- Valor de exemplo
SetDwordPacket("CustomPacket", 123456) -- Outro valor de exemplo
SetCharPacket("CustomPacket", "Teste") -- String curta
SetCharPacketLength("CustomPacket", "HelloWorld", 10) -- String com tamanho definido
-- Loga os valores configurados
local byteValue = GetBytePacket("CustomPacket", 0)
local wordValue = GetWordPacket("CustomPacket", 0)
local dwordValue = GetDwordPacket("CustomPacket", 0)
local charValue = GetCharPacket("CustomPacket", 0)
local charLengthValue = GetCharPacketLength("CustomPacket", 0, 10)
LogAdd(string.format("[PacketManager] - [%s] Pacote configurado: BYTE=%d, WORD=%d, DWORD=%d, CHAR=%s, CHAR_LENGTH=%s",
playerName, byteValue, wordValue, dwordValue, charValue, charLengthValue), 0)
-- Envia o pacote para o jogador
SendPacket("CustomPacket", aIndex)
LogAdd(string.format("[PacketManager] - [%s] Pacote CustomPacket enviado", playerName), 0)
-- Limpa o pacote
ClearPacket("CustomPacket")
LogAdd(string.format("[PacketManager] - [%s] Pacote CustomPacket limpo", playerName), 0)
end
-- Exemplo de chamada da função
PACKET_MANAGER.SendCustomPacket(100) -- Substitua 100 pelo aIndex do jogador
return PACKET_MANAGERResumo
As funções de pacotes permitem criar, manipular e enviar dados entre o servidor e o cliente.
Use
CreatePacketpara iniciar, funçõesSetpara adicionar dados,SendPacketpara enviar eClearPacketpara limpar.As funções
Getpermitem recuperar dados do pacote para verificação.O exemplo prático mostra como criar, configurar, enviar e limpar um pacote em uma única função.
Last updated
