From 9e02c214abefbd8c23e4ea84ef2e90fb0dfdc61a Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Fri, 11 Nov 2022 01:15:51 +0300 Subject: fixed net/svc messages, not reading data atm but working --- packets/messages/message.go | 13 ++++++++++--- packets/messages/types/SvcClassInfo.go | 2 +- packets/messages/types/SvcCreateStringTable.go | 3 ++- packets/messages/types/SvcGameEventList.go | 3 ++- packets/messages/types/SvcPacketEntities.go | 6 ++++-- packets/messages/types/SvcSounds.go | 5 +++-- packets/messages/types/SvcTempEntities.go | 3 ++- packets/messages/types/SvcUpdateStringTable.go | 3 ++- packets/messages/types/SvcUserMessage.go | 3 ++- 9 files changed, 28 insertions(+), 13 deletions(-) (limited to 'packets/messages') diff --git a/packets/messages/message.go b/packets/messages/message.go index f934419..376a3d5 100644 --- a/packets/messages/message.go +++ b/packets/messages/message.go @@ -2,12 +2,20 @@ package messages import ( "bytes" - "fmt" "github.com/pektezol/bitreader" "github.com/pektezol/demoparser/packets/messages/types" ) +// TODO: Read data properly in: +// SvcCreateStringTable +// SvcGameEventList +// SvcPacketEntities +// SvcSounds +// SvcTempEntities +// SvcUpdateStringTable +// SvcUserMessage + func ParseMessage(data []byte) []Message { reader := bitreader.Reader(bytes.NewReader(data), true) var messages []Message @@ -16,7 +24,7 @@ func ParseMessage(data []byte) []Message { if err != nil { break } - fmt.Printf("Reading message type: %d\n", messageType) + // fmt.Printf("Reading message type: %d\n", messageType) switch messageType { case 0: messages = append(messages, Message{Data: types.NetNop{}}) @@ -87,7 +95,6 @@ func ParseMessage(data []byte) []Message { case 33: messages = append(messages, Message{Data: types.ParseSvcPaintmapData(reader)}) } - //fmt.Println(messages) } return messages } diff --git a/packets/messages/types/SvcClassInfo.go b/packets/messages/types/SvcClassInfo.go index d41723d..df17bfc 100644 --- a/packets/messages/types/SvcClassInfo.go +++ b/packets/messages/types/SvcClassInfo.go @@ -19,7 +19,7 @@ func ParseSvcClassInfo(reader *bitreader.ReaderType) SvcClassInfo { length := reader.TryReadInt16() createonclient := reader.TryReadBool() var serverclasses []ServerClass - if createonclient { + if !createonclient { serverclasses := make([]ServerClass, length) for i := 0; i < int(length); i++ { id, err := reader.ReadBits(HighestBitIndex(uint(length)) + 1) diff --git a/packets/messages/types/SvcCreateStringTable.go b/packets/messages/types/SvcCreateStringTable.go index 6e97ea7..336b3e0 100644 --- a/packets/messages/types/SvcCreateStringTable.go +++ b/packets/messages/types/SvcCreateStringTable.go @@ -26,7 +26,8 @@ func ParseSvcCreateStringTable(reader *bitreader.ReaderType) SvcCreateStringTabl svccreatestringtable.UserDataSizeBits = uint8(reader.TryReadBits(4)) } svccreatestringtable.Flags = uint8(reader.TryReadBits(2)) - svccreatestringtable.StringData = int(reader.TryReadBits(int(length / 8))) + reader.SkipBits(int(length)) // TODO: Read data properly + // svccreatestringtable.StringData = int(reader.TryReadBits(int(length / 8))) return svccreatestringtable } diff --git a/packets/messages/types/SvcGameEventList.go b/packets/messages/types/SvcGameEventList.go index bdba161..3952517 100644 --- a/packets/messages/types/SvcGameEventList.go +++ b/packets/messages/types/SvcGameEventList.go @@ -10,8 +10,9 @@ 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.TryReadBytesToSlice(int(length)), } } diff --git a/packets/messages/types/SvcPacketEntities.go b/packets/messages/types/SvcPacketEntities.go index 5fc27db..6621c3a 100644 --- a/packets/messages/types/SvcPacketEntities.go +++ b/packets/messages/types/SvcPacketEntities.go @@ -24,13 +24,15 @@ func ParseSvcPacketEntities(reader *bitreader.ReaderType) SvcPacketEntities { 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, DeltaFrom: deltafrom, BaseLine: baseline, UpdatedEntries: uint16(updatedentries), - UpdateBaseline: reader.TryReadBool(), - Data: reader.TryReadBytesToSlice(int(length / 8)), + UpdateBaseline: updatebaseline, + // Data: reader.TryReadBytesToSlice(int(length / 8)), } } diff --git a/packets/messages/types/SvcSounds.go b/packets/messages/types/SvcSounds.go index 1f76a03..4d858bf 100644 --- a/packets/messages/types/SvcSounds.go +++ b/packets/messages/types/SvcSounds.go @@ -22,10 +22,11 @@ func ParseSvcSounds(reader *bitreader.ReaderType) SvcSounds { } else { length = int16(reader.TryReadInt16()) } - data := reader.TryReadBytesToSlice(int(length / 8)) + reader.SkipBits(int(length)) // TODO: Read data properly + //data := reader.TryReadBytesToSlice(int(length / 8)) return SvcSounds{ ReliableSound: reliablesound, Size: size, - Data: data, + //Data: data, } } diff --git a/packets/messages/types/SvcTempEntities.go b/packets/messages/types/SvcTempEntities.go index ce89dca..105e014 100644 --- a/packets/messages/types/SvcTempEntities.go +++ b/packets/messages/types/SvcTempEntities.go @@ -12,8 +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 return SvcTempEntities{ NumEntries: numentries, - Data: reader.TryReadBytesToSlice(int(length / 8)), + //Data: reader.TryReadBytesToSlice(int(length/8) + int(length%8)), } } diff --git a/packets/messages/types/SvcUpdateStringTable.go b/packets/messages/types/SvcUpdateStringTable.go index d4a0609..d1ca9bb 100644 --- a/packets/messages/types/SvcUpdateStringTable.go +++ b/packets/messages/types/SvcUpdateStringTable.go @@ -16,6 +16,7 @@ func ParseSvcUpdateStringTable(reader *bitreader.ReaderType) SvcUpdateStringTabl svcupdatestringtable.NumChangedEntries = int16(reader.TryReadInt16()) } length := reader.TryReadBits(20) - svcupdatestringtable.Data = reader.TryReadBytesToSlice(int(length / 8)) + reader.SkipBits(int(length)) // TODO: Read data properly + //svcupdatestringtable.Data = reader.TryReadBytesToSlice(int(length / 8)) return svcupdatestringtable } diff --git a/packets/messages/types/SvcUserMessage.go b/packets/messages/types/SvcUserMessage.go index d816f22..6d09fa1 100644 --- a/packets/messages/types/SvcUserMessage.go +++ b/packets/messages/types/SvcUserMessage.go @@ -12,8 +12,9 @@ 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.TryReadBytesToSlice(int(length / 8)), } } -- cgit v1.2.3