From 892fb8f547ce4a31901fb029a762331b1188efb7 Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Fri, 11 Nov 2022 23:19:01 +0300 Subject: net/svc messages finally getting parsed correctly --- packets/messages/types/SvcCreateStringTable.go | 9 +++++---- packets/messages/types/SvcGameEvent.go | 15 +++++++++++++++ packets/messages/types/SvcGameEventList.go | 3 +-- packets/messages/types/SvcPacketEntities.go | 5 +++-- packets/messages/types/SvcSounds.go | 4 +--- packets/messages/types/SvcTempEntities.go | 4 ++-- packets/messages/types/SvcUpdateStringTable.go | 3 +-- packets/messages/types/SvcUserMessage.go | 3 +-- 8 files changed, 29 insertions(+), 17 deletions(-) create mode 100644 packets/messages/types/SvcGameEvent.go (limited to 'packets/messages/types') diff --git a/packets/messages/types/SvcCreateStringTable.go b/packets/messages/types/SvcCreateStringTable.go index 336b3e0..72ab1a7 100644 --- a/packets/messages/types/SvcCreateStringTable.go +++ b/packets/messages/types/SvcCreateStringTable.go @@ -1,6 +1,8 @@ package types -import "github.com/pektezol/bitreader" +import ( + "github.com/pektezol/bitreader" +) type SvcCreateStringTable struct { Name string @@ -10,7 +12,7 @@ type SvcCreateStringTable struct { UserDataSize uint16 UserDataSizeBits uint8 Flags uint8 - StringData int + StringData []byte } func ParseSvcCreateStringTable(reader *bitreader.ReaderType) SvcCreateStringTable { @@ -26,8 +28,7 @@ func ParseSvcCreateStringTable(reader *bitreader.ReaderType) SvcCreateStringTabl svccreatestringtable.UserDataSizeBits = uint8(reader.TryReadBits(4)) } svccreatestringtable.Flags = uint8(reader.TryReadBits(2)) - reader.SkipBits(int(length)) // TODO: Read data properly - // svccreatestringtable.StringData = int(reader.TryReadBits(int(length / 8))) + svccreatestringtable.StringData = reader.TryReadBitsToSlice(int(length)) return svccreatestringtable } diff --git a/packets/messages/types/SvcGameEvent.go b/packets/messages/types/SvcGameEvent.go new file mode 100644 index 0000000..1d6b0ea --- /dev/null +++ b/packets/messages/types/SvcGameEvent.go @@ -0,0 +1,15 @@ +package types + +import ( + "github.com/pektezol/bitreader" +) + +type SvcGameEvent struct { + Data []byte +} + +func ParseSvcGameEvent(reader *bitreader.ReaderType) SvcGameEvent { + length := reader.TryReadBits(11) + reader.SkipBits(int(length)) + return SvcGameEvent{} // TODO: Parse SvcGameEvent +} diff --git a/packets/messages/types/SvcGameEventList.go b/packets/messages/types/SvcGameEventList.go index 3952517..fea0be4 100644 --- a/packets/messages/types/SvcGameEventList.go +++ b/packets/messages/types/SvcGameEventList.go @@ -10,9 +10,8 @@ type SvcGameEventList struct { func ParseSvcGameEventList(reader *bitreader.ReaderType) SvcGameEventList { events := reader.TryReadBits(9) length := reader.TryReadBits(20) - reader.SkipBits(int(length)) // TODO: Read data properly return SvcGameEventList{ Events: int16(events), - //Data: reader.TryReadBytesToSlice(int(length)), + Data: reader.TryReadBitsToSlice(int(length)), } } diff --git a/packets/messages/types/SvcPacketEntities.go b/packets/messages/types/SvcPacketEntities.go index 6621c3a..9d8a8b0 100644 --- a/packets/messages/types/SvcPacketEntities.go +++ b/packets/messages/types/SvcPacketEntities.go @@ -20,12 +20,13 @@ func ParseSvcPacketEntities(reader *bitreader.ReaderType) SvcPacketEntities { var deltafrom int32 if isdelta { deltafrom = int32(reader.TryReadInt32()) + } else { + deltafrom = -1 } baseline := reader.TryReadBool() updatedentries := reader.TryReadBits(11) length := reader.TryReadBits(20) updatebaseline := reader.TryReadBool() - reader.SkipBits(int(length)) // TODO: Read data properly return SvcPacketEntities{ MaxEntries: uint16(maxentries), IsDelta: isdelta, @@ -33,6 +34,6 @@ func ParseSvcPacketEntities(reader *bitreader.ReaderType) SvcPacketEntities { BaseLine: baseline, UpdatedEntries: uint16(updatedentries), UpdateBaseline: updatebaseline, - // Data: reader.TryReadBytesToSlice(int(length / 8)), + Data: reader.TryReadBitsToSlice(int(length)), } } diff --git a/packets/messages/types/SvcSounds.go b/packets/messages/types/SvcSounds.go index 4d858bf..2dc7974 100644 --- a/packets/messages/types/SvcSounds.go +++ b/packets/messages/types/SvcSounds.go @@ -22,11 +22,9 @@ func ParseSvcSounds(reader *bitreader.ReaderType) SvcSounds { } else { length = int16(reader.TryReadInt16()) } - reader.SkipBits(int(length)) // TODO: Read data properly - //data := reader.TryReadBytesToSlice(int(length / 8)) return SvcSounds{ ReliableSound: reliablesound, Size: size, - //Data: data, + Data: reader.TryReadBitsToSlice(int(length)), } } diff --git a/packets/messages/types/SvcTempEntities.go b/packets/messages/types/SvcTempEntities.go index 105e014..3bfae0c 100644 --- a/packets/messages/types/SvcTempEntities.go +++ b/packets/messages/types/SvcTempEntities.go @@ -12,9 +12,9 @@ type SvcTempEntities struct { func ParseSvcTempEntities(reader *bitreader.ReaderType) SvcTempEntities { numentries := reader.TryReadInt8() length := reader.TryReadBits(17) - reader.SkipBits(int(length)) // TODO: Read data properly + //reader.SkipBits(int(length)) // TODO: Read data properly return SvcTempEntities{ NumEntries: numentries, - //Data: reader.TryReadBytesToSlice(int(length/8) + int(length%8)), + Data: reader.TryReadBitsToSlice(int(length)), } } diff --git a/packets/messages/types/SvcUpdateStringTable.go b/packets/messages/types/SvcUpdateStringTable.go index d1ca9bb..9f178a5 100644 --- a/packets/messages/types/SvcUpdateStringTable.go +++ b/packets/messages/types/SvcUpdateStringTable.go @@ -16,7 +16,6 @@ func ParseSvcUpdateStringTable(reader *bitreader.ReaderType) SvcUpdateStringTabl svcupdatestringtable.NumChangedEntries = int16(reader.TryReadInt16()) } length := reader.TryReadBits(20) - reader.SkipBits(int(length)) // TODO: Read data properly - //svcupdatestringtable.Data = reader.TryReadBytesToSlice(int(length / 8)) + svcupdatestringtable.Data = reader.TryReadBitsToSlice(int(length)) return svcupdatestringtable } diff --git a/packets/messages/types/SvcUserMessage.go b/packets/messages/types/SvcUserMessage.go index 6d09fa1..c7b0566 100644 --- a/packets/messages/types/SvcUserMessage.go +++ b/packets/messages/types/SvcUserMessage.go @@ -12,9 +12,8 @@ type SvcUserMessage struct { func ParseSvcUserMessage(reader *bitreader.ReaderType) SvcUserMessage { msgtype := reader.TryReadInt8() length := reader.TryReadBits(12) - reader.SkipBits(int(length)) // TODO: Read data properly return SvcUserMessage{ MsgType: msgtype, - //Data: reader.TryReadBytesToSlice(int(length / 8)), + Data: reader.TryReadBitsToSlice(int(length)), } } -- cgit v1.2.3