Salta ai contenuti

Moongate.Network.Packets

Definizioni dei pacchetti Ultima Online, serializzazione basata su span e registrazione dei pacchetti per Moongate.

Richiede .NET 10. Usa la versione del package disponibile nel feed NuGet configurato.

Terminal window
dotnet add package Moongate.Network.Packets

  • Un insieme iniziale di pacchetti per ClassicUO 7.x, inclusi messaggi di login, controllo, ping e funzionalità supportate.
  • Un registro dei pacchetti che usa metadati per registrazione e ricerca degli opcode.
  • Lettori e scrittori basati su span per la serializzazione dei pacchetti.
  • API di codifica e decodifica testabili indipendentemente da un server TCP.

Registra il pacchetto ping, congela il registro e decodifica un frame codificato:

using Moongate.Network.Packets.General;
using Moongate.Network.Packets.Registry;
using Moongate.Network.Packets.Serialization;
var registry = new PacketRegistry();
registry.RegisterIncoming<PingPacket>();
registry.Freeze();
var bytes = PacketCodec.Encode(new PingPacket(42));
if (!registry.TryDecode(bytes, out var packet, out var opCode)
|| packet is not PingPacket ping)
{
throw new InvalidOperationException($"Could not decode opcode {opCode:X2}.");
}
Console.WriteLine($"{opCode:X2}:{ping.Sequence}");

Vedi Pacchetti e handler per la tabella completa degli opcode integrati, un pacchetto personalizzato, test a livello di byte e integrazione nell’host.

Questo package dipende da Moongate.Core. Non richiede Moongate.Network per codificare o decodificare pacchetti.

L’insieme di pacchetti è un sottoinsieme del protocollo UO. La decodifica richiede un frame di pacchetto completo; buffering e framing di un flusso TCP appartengono all’integrazione del trasporto. Handler dei pacchetti e dispatch sul ciclo di gioco appartengono all’integrazione del server.

Distribuito con licenza AGPL-3.0-or-later. Vedi il repository dei sorgenti e la licenza.

Creato con ❤️ da Tom

Offrimi un caffè