diff options
| author | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2022-11-11 01:15:51 +0300 |
|---|---|---|
| committer | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2023-09-16 21:39:41 +0300 |
| commit | 9e02c214abefbd8c23e4ea84ef2e90fb0dfdc61a (patch) | |
| tree | 4c5f81bccd9babcfd65d5d9f3d56704c9fd4930a /packets/messages | |
| parent | better debugging, still broken (diff) | |
| download | sdp.go-9e02c214abefbd8c23e4ea84ef2e90fb0dfdc61a.tar.gz sdp.go-9e02c214abefbd8c23e4ea84ef2e90fb0dfdc61a.tar.bz2 sdp.go-9e02c214abefbd8c23e4ea84ef2e90fb0dfdc61a.zip | |
fixed net/svc messages, not reading data atm but working
Diffstat (limited to 'packets/messages')
| -rw-r--r-- | packets/messages/message.go | 13 | ||||
| -rw-r--r-- | packets/messages/types/SvcClassInfo.go | 2 | ||||
| -rw-r--r-- | packets/messages/types/SvcCreateStringTable.go | 3 | ||||
| -rw-r--r-- | packets/messages/types/SvcGameEventList.go | 3 | ||||
| -rw-r--r-- | packets/messages/types/SvcPacketEntities.go | 6 | ||||
| -rw-r--r-- | packets/messages/types/SvcSounds.go | 5 | ||||
| -rw-r--r-- | packets/messages/types/SvcTempEntities.go | 3 | ||||
| -rw-r--r-- | packets/messages/types/SvcUpdateStringTable.go | 3 | ||||
| -rw-r--r-- | packets/messages/types/SvcUserMessage.go | 3 |
9 files changed, 28 insertions, 13 deletions
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 | |||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "bytes" | 4 | "bytes" |
| 5 | "fmt" | ||
| 6 | 5 | ||
| 7 | "github.com/pektezol/bitreader" | 6 | "github.com/pektezol/bitreader" |
| 8 | "github.com/pektezol/demoparser/packets/messages/types" | 7 | "github.com/pektezol/demoparser/packets/messages/types" |
| 9 | ) | 8 | ) |
| 10 | 9 | ||
| 10 | // TODO: Read data properly in: | ||
| 11 | // SvcCreateStringTable | ||
| 12 | // SvcGameEventList | ||
| 13 | // SvcPacketEntities | ||
| 14 | // SvcSounds | ||
| 15 | // SvcTempEntities | ||
| 16 | // SvcUpdateStringTable | ||
| 17 | // SvcUserMessage | ||
| 18 | |||
| 11 | func ParseMessage(data []byte) []Message { | 19 | func ParseMessage(data []byte) []Message { |
| 12 | reader := bitreader.Reader(bytes.NewReader(data), true) | 20 | reader := bitreader.Reader(bytes.NewReader(data), true) |
| 13 | var messages []Message | 21 | var messages []Message |
| @@ -16,7 +24,7 @@ func ParseMessage(data []byte) []Message { | |||
| 16 | if err != nil { | 24 | if err != nil { |
| 17 | break | 25 | break |
| 18 | } | 26 | } |
| 19 | fmt.Printf("Reading message type: %d\n", messageType) | 27 | // fmt.Printf("Reading message type: %d\n", messageType) |
| 20 | switch messageType { | 28 | switch messageType { |
| 21 | case 0: | 29 | case 0: |
| 22 | messages = append(messages, Message{Data: types.NetNop{}}) | 30 | messages = append(messages, Message{Data: types.NetNop{}}) |
| @@ -87,7 +95,6 @@ func ParseMessage(data []byte) []Message { | |||
| 87 | case 33: | 95 | case 33: |
| 88 | messages = append(messages, Message{Data: types.ParseSvcPaintmapData(reader)}) | 96 | messages = append(messages, Message{Data: types.ParseSvcPaintmapData(reader)}) |
| 89 | } | 97 | } |
| 90 | //fmt.Println(messages) | ||
| 91 | } | 98 | } |
| 92 | return messages | 99 | return messages |
| 93 | } | 100 | } |
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 { | |||
| 19 | length := reader.TryReadInt16() | 19 | length := reader.TryReadInt16() |
| 20 | createonclient := reader.TryReadBool() | 20 | createonclient := reader.TryReadBool() |
| 21 | var serverclasses []ServerClass | 21 | var serverclasses []ServerClass |
| 22 | if createonclient { | 22 | if !createonclient { |
| 23 | serverclasses := make([]ServerClass, length) | 23 | serverclasses := make([]ServerClass, length) |
| 24 | for i := 0; i < int(length); i++ { | 24 | for i := 0; i < int(length); i++ { |
| 25 | id, err := reader.ReadBits(HighestBitIndex(uint(length)) + 1) | 25 | 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 | |||
| 26 | svccreatestringtable.UserDataSizeBits = uint8(reader.TryReadBits(4)) | 26 | svccreatestringtable.UserDataSizeBits = uint8(reader.TryReadBits(4)) |
| 27 | } | 27 | } |
| 28 | svccreatestringtable.Flags = uint8(reader.TryReadBits(2)) | 28 | svccreatestringtable.Flags = uint8(reader.TryReadBits(2)) |
| 29 | svccreatestringtable.StringData = int(reader.TryReadBits(int(length / 8))) | 29 | reader.SkipBits(int(length)) // TODO: Read data properly |
| 30 | // svccreatestringtable.StringData = int(reader.TryReadBits(int(length / 8))) | ||
| 30 | return svccreatestringtable | 31 | return svccreatestringtable |
| 31 | 32 | ||
| 32 | } | 33 | } |
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 { | |||
| 10 | func ParseSvcGameEventList(reader *bitreader.ReaderType) SvcGameEventList { | 10 | func ParseSvcGameEventList(reader *bitreader.ReaderType) SvcGameEventList { |
| 11 | events := reader.TryReadBits(9) | 11 | events := reader.TryReadBits(9) |
| 12 | length := reader.TryReadBits(20) | 12 | length := reader.TryReadBits(20) |
| 13 | reader.SkipBits(int(length)) // TODO: Read data properly | ||
| 13 | return SvcGameEventList{ | 14 | return SvcGameEventList{ |
| 14 | Events: int16(events), | 15 | Events: int16(events), |
| 15 | Data: reader.TryReadBytesToSlice(int(length)), | 16 | //Data: reader.TryReadBytesToSlice(int(length)), |
| 16 | } | 17 | } |
| 17 | } | 18 | } |
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 { | |||
| 24 | baseline := reader.TryReadBool() | 24 | baseline := reader.TryReadBool() |
| 25 | updatedentries := reader.TryReadBits(11) | 25 | updatedentries := reader.TryReadBits(11) |
| 26 | length := reader.TryReadBits(20) | 26 | length := reader.TryReadBits(20) |
| 27 | updatebaseline := reader.TryReadBool() | ||
| 28 | reader.SkipBits(int(length)) // TODO: Read data properly | ||
| 27 | return SvcPacketEntities{ | 29 | return SvcPacketEntities{ |
| 28 | MaxEntries: uint16(maxentries), | 30 | MaxEntries: uint16(maxentries), |
| 29 | IsDelta: isdelta, | 31 | IsDelta: isdelta, |
| 30 | DeltaFrom: deltafrom, | 32 | DeltaFrom: deltafrom, |
| 31 | BaseLine: baseline, | 33 | BaseLine: baseline, |
| 32 | UpdatedEntries: uint16(updatedentries), | 34 | UpdatedEntries: uint16(updatedentries), |
| 33 | UpdateBaseline: reader.TryReadBool(), | 35 | UpdateBaseline: updatebaseline, |
| 34 | Data: reader.TryReadBytesToSlice(int(length / 8)), | 36 | // Data: reader.TryReadBytesToSlice(int(length / 8)), |
| 35 | } | 37 | } |
| 36 | } | 38 | } |
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 { | |||
| 22 | } else { | 22 | } else { |
| 23 | length = int16(reader.TryReadInt16()) | 23 | length = int16(reader.TryReadInt16()) |
| 24 | } | 24 | } |
| 25 | data := reader.TryReadBytesToSlice(int(length / 8)) | 25 | reader.SkipBits(int(length)) // TODO: Read data properly |
| 26 | //data := reader.TryReadBytesToSlice(int(length / 8)) | ||
| 26 | return SvcSounds{ | 27 | return SvcSounds{ |
| 27 | ReliableSound: reliablesound, | 28 | ReliableSound: reliablesound, |
| 28 | Size: size, | 29 | Size: size, |
| 29 | Data: data, | 30 | //Data: data, |
| 30 | } | 31 | } |
| 31 | } | 32 | } |
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 { | |||
| 12 | func ParseSvcTempEntities(reader *bitreader.ReaderType) SvcTempEntities { | 12 | func ParseSvcTempEntities(reader *bitreader.ReaderType) SvcTempEntities { |
| 13 | numentries := reader.TryReadInt8() | 13 | numentries := reader.TryReadInt8() |
| 14 | length := reader.TryReadBits(17) | 14 | length := reader.TryReadBits(17) |
| 15 | reader.SkipBits(int(length)) // TODO: Read data properly | ||
| 15 | return SvcTempEntities{ | 16 | return SvcTempEntities{ |
| 16 | NumEntries: numentries, | 17 | NumEntries: numentries, |
| 17 | Data: reader.TryReadBytesToSlice(int(length / 8)), | 18 | //Data: reader.TryReadBytesToSlice(int(length/8) + int(length%8)), |
| 18 | } | 19 | } |
| 19 | } | 20 | } |
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 | |||
| 16 | svcupdatestringtable.NumChangedEntries = int16(reader.TryReadInt16()) | 16 | svcupdatestringtable.NumChangedEntries = int16(reader.TryReadInt16()) |
| 17 | } | 17 | } |
| 18 | length := reader.TryReadBits(20) | 18 | length := reader.TryReadBits(20) |
| 19 | svcupdatestringtable.Data = reader.TryReadBytesToSlice(int(length / 8)) | 19 | reader.SkipBits(int(length)) // TODO: Read data properly |
| 20 | //svcupdatestringtable.Data = reader.TryReadBytesToSlice(int(length / 8)) | ||
| 20 | return svcupdatestringtable | 21 | return svcupdatestringtable |
| 21 | } | 22 | } |
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 { | |||
| 12 | func ParseSvcUserMessage(reader *bitreader.ReaderType) SvcUserMessage { | 12 | func ParseSvcUserMessage(reader *bitreader.ReaderType) SvcUserMessage { |
| 13 | msgtype := reader.TryReadInt8() | 13 | msgtype := reader.TryReadInt8() |
| 14 | length := reader.TryReadBits(12) | 14 | length := reader.TryReadBits(12) |
| 15 | reader.SkipBits(int(length)) // TODO: Read data properly | ||
| 15 | return SvcUserMessage{ | 16 | return SvcUserMessage{ |
| 16 | MsgType: msgtype, | 17 | MsgType: msgtype, |
| 17 | Data: reader.TryReadBytesToSlice(int(length / 8)), | 18 | //Data: reader.TryReadBytesToSlice(int(length / 8)), |
| 18 | } | 19 | } |
| 19 | } | 20 | } |