diff options
| author | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2023-09-17 18:24:18 +0300 |
|---|---|---|
| committer | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2023-09-20 11:10:20 +0300 |
| commit | 6aa511f2ae3d5c84e7db02627ffd4d7f6796ce75 (patch) | |
| tree | e925740a5c04b1c5c44e725dab04f9b1833cf9e3 /pkg | |
| parent | parse netSignOnState flags (diff) | |
| download | sdp.go-6aa511f2ae3d5c84e7db02627ffd4d7f6796ce75.tar.gz sdp.go-6aa511f2ae3d5c84e7db02627ffd4d7f6796ce75.tar.bz2 sdp.go-6aa511f2ae3d5c84e7db02627ffd4d7f6796ce75.zip | |
decide what message types are left
Diffstat (limited to 'pkg')
25 files changed, 225 insertions, 121 deletions
diff --git a/pkg/messages/messages.go b/pkg/messages/messages.go index 6fa58fc..9e7dfae 100644 --- a/pkg/messages/messages.go +++ b/pkg/messages/messages.go | |||
| @@ -36,9 +36,9 @@ func ParseMessages(messageType int, reader *bitreader.Reader) any { | |||
| 36 | case 11: | 36 | case 11: |
| 37 | messageData = messages.ParseSvcSetPause(reader) | 37 | messageData = messages.ParseSvcSetPause(reader) |
| 38 | case 12: | 38 | case 12: |
| 39 | messageData = messages.ParseSvcCreateStringTable(reader) | 39 | messageData = messages.ParseSvcCreateStringTable(reader) // TODO: |
| 40 | case 13: | 40 | case 13: |
| 41 | messageData = messages.ParseSvcUpdateStringTable(reader) | 41 | messageData = messages.ParseSvcUpdateStringTable(reader) // TODO: |
| 42 | case 14: | 42 | case 14: |
| 43 | messageData = messages.ParseSvcVoiceInit(reader) | 43 | messageData = messages.ParseSvcVoiceInit(reader) |
| 44 | case 15: | 44 | case 15: |
| @@ -46,7 +46,7 @@ func ParseMessages(messageType int, reader *bitreader.Reader) any { | |||
| 46 | case 16: | 46 | case 16: |
| 47 | messageData = messages.ParseSvcPrint(reader) | 47 | messageData = messages.ParseSvcPrint(reader) |
| 48 | case 17: | 48 | case 17: |
| 49 | messageData = messages.ParseSvcSounds(reader) | 49 | messageData = messages.ParseSvcSounds(reader) // TODO: |
| 50 | case 18: | 50 | case 18: |
| 51 | messageData = messages.ParseSvcSetView(reader) | 51 | messageData = messages.ParseSvcSetView(reader) |
| 52 | case 19: | 52 | case 19: |
| @@ -54,25 +54,25 @@ func ParseMessages(messageType int, reader *bitreader.Reader) any { | |||
| 54 | case 20: | 54 | case 20: |
| 55 | messageData = messages.ParseSvcCrosshairAngle(reader) | 55 | messageData = messages.ParseSvcCrosshairAngle(reader) |
| 56 | case 21: | 56 | case 21: |
| 57 | messageData = messages.ParseSvcBspDecal(reader) | 57 | messageData = messages.ParseSvcBspDecal(reader) // untested |
| 58 | case 22: | 58 | case 22: |
| 59 | messageData = messages.ParseSvcSplitScreen(reader) | 59 | messageData = messages.ParseSvcSplitScreen(reader) // skipped |
| 60 | case 23: | 60 | case 23: |
| 61 | messageData = messages.ParseSvcUserMessage(reader) | 61 | messageData = messages.ParseSvcUserMessage(reader) // TODO: |
| 62 | case 24: | 62 | case 24: |
| 63 | messageData = messages.ParseSvcEntityMessage(reader) | 63 | messageData = messages.ParseSvcEntityMessage(reader) // skipped |
| 64 | case 25: | 64 | case 25: |
| 65 | messageData = messages.ParseSvcGameEvent(reader) | 65 | messageData = messages.ParseSvcGameEvent(reader) // TODO: |
| 66 | case 26: | 66 | case 26: |
| 67 | messageData = messages.ParseSvcPacketEntities(reader) | 67 | messageData = messages.ParseSvcPacketEntities(reader) // TODO: |
| 68 | case 27: | 68 | case 27: |
| 69 | messageData = messages.ParseSvcTempEntities(reader) | 69 | messageData = messages.ParseSvcTempEntities(reader) // skipped |
| 70 | case 28: | 70 | case 28: |
| 71 | messageData = messages.ParseSvcPrefetch(reader) | 71 | messageData = messages.ParseSvcPrefetch(reader) |
| 72 | case 29: | 72 | case 29: |
| 73 | messageData = messages.ParseSvcMenu(reader) | 73 | messageData = messages.ParseSvcMenu(reader) // skipped |
| 74 | case 30: | 74 | case 30: |
| 75 | messageData = messages.ParseSvcGameEventList(reader) | 75 | messageData = messages.ParseSvcGameEventList(reader) // TODO: |
| 76 | case 31: | 76 | case 31: |
| 77 | messageData = messages.ParseSvcGetCvarValue(reader) | 77 | messageData = messages.ParseSvcGetCvarValue(reader) |
| 78 | case 32: | 78 | case 32: |
diff --git a/pkg/messages/types/netSetConVar.go b/pkg/messages/types/netSetConVar.go index f04f564..44b75b9 100644 --- a/pkg/messages/types/netSetConVar.go +++ b/pkg/messages/types/netSetConVar.go | |||
| @@ -3,7 +3,7 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type NetSetConVar struct { | 5 | type NetSetConVar struct { |
| 6 | Length int8 | 6 | Length uint8 |
| 7 | ConVars []conVar | 7 | ConVars []conVar |
| 8 | } | 8 | } |
| 9 | 9 | ||
| @@ -13,7 +13,7 @@ type conVar struct { | |||
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | func ParseNetSetConVar(reader *bitreader.Reader) NetSetConVar { | 15 | func ParseNetSetConVar(reader *bitreader.Reader) NetSetConVar { |
| 16 | length := reader.TryReadBits(8) | 16 | length := reader.TryReadUInt8() |
| 17 | convars := []conVar{} | 17 | convars := []conVar{} |
| 18 | for count := 0; count < int(length); count++ { | 18 | for count := 0; count < int(length); count++ { |
| 19 | convar := conVar{ | 19 | convar := conVar{ |
| @@ -23,7 +23,7 @@ func ParseNetSetConVar(reader *bitreader.Reader) NetSetConVar { | |||
| 23 | convars = append(convars, convar) | 23 | convars = append(convars, convar) |
| 24 | } | 24 | } |
| 25 | return NetSetConVar{ | 25 | return NetSetConVar{ |
| 26 | Length: int8(length), | 26 | Length: length, |
| 27 | ConVars: convars, | 27 | ConVars: convars, |
| 28 | } | 28 | } |
| 29 | } | 29 | } |
diff --git a/pkg/messages/types/netSignOnState.go b/pkg/messages/types/netSignOnState.go index f7a5132..78d03aa 100644 --- a/pkg/messages/types/netSignOnState.go +++ b/pkg/messages/types/netSignOnState.go | |||
| @@ -9,10 +9,10 @@ import ( | |||
| 9 | type NetSignOnState struct { | 9 | type NetSignOnState struct { |
| 10 | SignOnState string | 10 | SignOnState string |
| 11 | SpawnCount int32 | 11 | SpawnCount int32 |
| 12 | NumServerPlayers int32 | 12 | NumServerPlayers uint32 |
| 13 | IdsLength int32 | 13 | IdsLength uint32 |
| 14 | PlayersNetworksIds []byte | 14 | PlayersNetworksIds []byte |
| 15 | MapNameLength int32 | 15 | MapNameLength uint32 |
| 16 | MapName string | 16 | MapName string |
| 17 | } | 17 | } |
| 18 | 18 | ||
| @@ -54,13 +54,17 @@ func (signOnState SignOnState) String() string { | |||
| 54 | 54 | ||
| 55 | func ParseNetSignOnState(reader *bitreader.Reader) NetSignOnState { | 55 | func ParseNetSignOnState(reader *bitreader.Reader) NetSignOnState { |
| 56 | netSignOnState := NetSignOnState{ | 56 | netSignOnState := NetSignOnState{ |
| 57 | SignOnState: SignOnState(reader.TryReadBits(8)).String(), | 57 | SignOnState: SignOnState(reader.TryReadUInt8()).String(), |
| 58 | SpawnCount: int32(reader.TryReadBits(32)), | 58 | SpawnCount: reader.TryReadSInt32(), |
| 59 | NumServerPlayers: int32(reader.TryReadBits(32)), | 59 | NumServerPlayers: reader.TryReadUInt32(), |
| 60 | IdsLength: int32(reader.TryReadBits(32)), | 60 | IdsLength: reader.TryReadUInt32(), |
| 61 | } | ||
| 62 | if netSignOnState.IdsLength > 0 { | ||
| 63 | netSignOnState.PlayersNetworksIds = reader.TryReadBytesToSlice(uint64(netSignOnState.IdsLength)) | ||
| 64 | } | ||
| 65 | netSignOnState.MapNameLength = reader.TryReadUInt32() | ||
| 66 | if netSignOnState.MapNameLength > 0 { | ||
| 67 | netSignOnState.MapName = reader.TryReadStringLength(uint64(netSignOnState.MapNameLength)) | ||
| 61 | } | 68 | } |
| 62 | netSignOnState.PlayersNetworksIds = reader.TryReadBytesToSlice(uint64(netSignOnState.IdsLength)) | ||
| 63 | netSignOnState.MapNameLength = int32(reader.TryReadBits(32)) | ||
| 64 | netSignOnState.MapName = reader.TryReadStringLength(uint64(netSignOnState.MapNameLength)) | ||
| 65 | return netSignOnState | 69 | return netSignOnState |
| 66 | } | 70 | } |
diff --git a/pkg/messages/types/netTick.go b/pkg/messages/types/netTick.go index 2870c9c..dc941ad 100644 --- a/pkg/messages/types/netTick.go +++ b/pkg/messages/types/netTick.go | |||
| @@ -3,15 +3,15 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type NetTick struct { | 5 | type NetTick struct { |
| 6 | Tick int32 | 6 | Tick uint32 |
| 7 | HostFrameTime float32 | 7 | HostFrameTime float32 |
| 8 | HostFrameTimeStdDeviation float32 | 8 | HostFrameTimeStdDeviation float32 |
| 9 | } | 9 | } |
| 10 | 10 | ||
| 11 | func ParseNetTick(reader *bitreader.Reader) NetTick { | 11 | func ParseNetTick(reader *bitreader.Reader) NetTick { |
| 12 | return NetTick{ | 12 | return NetTick{ |
| 13 | Tick: int32(reader.TryReadBits(32)), | 13 | Tick: reader.TryReadUInt32(), |
| 14 | HostFrameTime: float32(reader.TryReadBits(16)) / 1e5, | 14 | HostFrameTime: float32(reader.TryReadUInt16()) / 1e5, |
| 15 | HostFrameTimeStdDeviation: float32(reader.TryReadBits(16)) / 1e5, | 15 | HostFrameTimeStdDeviation: float32(reader.TryReadUInt16()) / 1e5, |
| 16 | } | 16 | } |
| 17 | } | 17 | } |
diff --git a/pkg/messages/types/svcBspDecal.go b/pkg/messages/types/svcBspDecal.go index dda81dd..220f63a 100644 --- a/pkg/messages/types/svcBspDecal.go +++ b/pkg/messages/types/svcBspDecal.go | |||
| @@ -7,9 +7,9 @@ import ( | |||
| 7 | type SvcBspDecal struct { | 7 | type SvcBspDecal struct { |
| 8 | Pos []vectorCoord | 8 | Pos []vectorCoord |
| 9 | DecalTextureIndex int16 | 9 | DecalTextureIndex int16 |
| 10 | EntityIndex int16 | 10 | EntityIndex uint16 |
| 11 | ModelIndex int16 | 11 | ModelIndex uint16 |
| 12 | LowPriority int8 | 12 | LowPriority bool |
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | type vectorCoord struct { | 15 | type vectorCoord struct { |
| @@ -23,10 +23,10 @@ func ParseSvcBspDecal(reader *bitreader.Reader) SvcBspDecal { | |||
| 23 | DecalTextureIndex: int16(reader.TryReadBits(9)), | 23 | DecalTextureIndex: int16(reader.TryReadBits(9)), |
| 24 | } | 24 | } |
| 25 | if reader.TryReadBool() { | 25 | if reader.TryReadBool() { |
| 26 | svcBspDecal.EntityIndex = int16(reader.TryReadBits(11)) | 26 | svcBspDecal.EntityIndex = uint16(reader.TryReadBits(11)) |
| 27 | svcBspDecal.ModelIndex = int16(reader.TryReadBits(11)) | 27 | svcBspDecal.ModelIndex = uint16(reader.TryReadBits(11)) |
| 28 | } | 28 | } |
| 29 | svcBspDecal.LowPriority = int8(reader.TryReadBits(1)) | 29 | svcBspDecal.LowPriority = reader.TryReadBool() |
| 30 | return svcBspDecal | 30 | return svcBspDecal |
| 31 | } | 31 | } |
| 32 | 32 | ||
diff --git a/pkg/messages/types/svcClassInfo.go b/pkg/messages/types/svcClassInfo.go index 27862bf..d2f6a90 100644 --- a/pkg/messages/types/svcClassInfo.go +++ b/pkg/messages/types/svcClassInfo.go | |||
| @@ -1,14 +1,13 @@ | |||
| 1 | package messages | 1 | package messages |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | ||
| 5 | "math" | 4 | "math" |
| 6 | 5 | ||
| 7 | "github.com/pektezol/bitreader" | 6 | "github.com/pektezol/bitreader" |
| 8 | ) | 7 | ) |
| 9 | 8 | ||
| 10 | type SvcClassInfo struct { | 9 | type SvcClassInfo struct { |
| 11 | Length int16 | 10 | ClassCount uint16 |
| 12 | CreateOnClient bool | 11 | CreateOnClient bool |
| 13 | ServerClasses []serverClass | 12 | ServerClasses []serverClass |
| 14 | } | 13 | } |
| @@ -21,15 +20,14 @@ type serverClass struct { | |||
| 21 | 20 | ||
| 22 | func ParseSvcClassInfo(reader *bitreader.Reader) SvcClassInfo { | 21 | func ParseSvcClassInfo(reader *bitreader.Reader) SvcClassInfo { |
| 23 | svcClassInfo := SvcClassInfo{ | 22 | svcClassInfo := SvcClassInfo{ |
| 24 | Length: int16(reader.TryReadBits(16)), | 23 | ClassCount: reader.TryReadUInt16(), |
| 25 | CreateOnClient: reader.TryReadBool(), | 24 | CreateOnClient: reader.TryReadBool(), |
| 26 | } | 25 | } |
| 27 | classes := []serverClass{} | 26 | classes := []serverClass{} |
| 28 | if !svcClassInfo.CreateOnClient { | 27 | if !svcClassInfo.CreateOnClient { |
| 29 | for count := 0; count < int(svcClassInfo.Length); count++ { | 28 | for count := 0; count < int(svcClassInfo.ClassCount); count++ { |
| 30 | fmt.Println(classes) | ||
| 31 | classes = append(classes, serverClass{ | 29 | classes = append(classes, serverClass{ |
| 32 | ClassId: int16(reader.TryReadBits(uint64(math.Log2(float64(svcClassInfo.Length)) + 1))), | 30 | ClassId: int16(reader.TryReadBits(uint64(math.Log2(float64(svcClassInfo.ClassCount)) + 1))), |
| 33 | ClassName: reader.TryReadString(), | 31 | ClassName: reader.TryReadString(), |
| 34 | DataTableName: reader.TryReadString(), | 32 | DataTableName: reader.TryReadString(), |
| 35 | }) | 33 | }) |
diff --git a/pkg/messages/types/svcCmdKeyValues.go b/pkg/messages/types/svcCmdKeyValues.go index 35a8a8d..8fdd076 100644 --- a/pkg/messages/types/svcCmdKeyValues.go +++ b/pkg/messages/types/svcCmdKeyValues.go | |||
| @@ -3,13 +3,13 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcCmdKeyValues struct { | 5 | type SvcCmdKeyValues struct { |
| 6 | Length int32 | 6 | Length uint32 |
| 7 | Data []byte | 7 | Data []byte |
| 8 | } | 8 | } |
| 9 | 9 | ||
| 10 | func ParseSvcCmdKeyValues(reader *bitreader.Reader) SvcCmdKeyValues { | 10 | func ParseSvcCmdKeyValues(reader *bitreader.Reader) SvcCmdKeyValues { |
| 11 | svcCmdKeyValues := SvcCmdKeyValues{ | 11 | svcCmdKeyValues := SvcCmdKeyValues{ |
| 12 | Length: int32(reader.TryReadBits(32)), | 12 | Length: reader.TryReadUInt32(), |
| 13 | } | 13 | } |
| 14 | svcCmdKeyValues.Data = reader.TryReadBytesToSlice(uint64(svcCmdKeyValues.Length)) | 14 | svcCmdKeyValues.Data = reader.TryReadBytesToSlice(uint64(svcCmdKeyValues.Length)) |
| 15 | return svcCmdKeyValues | 15 | return svcCmdKeyValues |
diff --git a/pkg/messages/types/svcCreateStringTable.go b/pkg/messages/types/svcCreateStringTable.go index 3c15e5c..aea40b0 100644 --- a/pkg/messages/types/svcCreateStringTable.go +++ b/pkg/messages/types/svcCreateStringTable.go | |||
| @@ -21,7 +21,7 @@ type SvcCreateStringTable struct { | |||
| 21 | func ParseSvcCreateStringTable(reader *bitreader.Reader) SvcCreateStringTable { | 21 | func ParseSvcCreateStringTable(reader *bitreader.Reader) SvcCreateStringTable { |
| 22 | svcCreateStringTable := SvcCreateStringTable{ | 22 | svcCreateStringTable := SvcCreateStringTable{ |
| 23 | Name: reader.TryReadString(), | 23 | Name: reader.TryReadString(), |
| 24 | MaxEntries: int16(reader.TryReadBits(16)), | 24 | MaxEntries: reader.TryReadSInt16(), |
| 25 | } | 25 | } |
| 26 | svcCreateStringTable.NumEntries = int8(reader.TryReadBits(uint64(math.Log2(float64(svcCreateStringTable.MaxEntries))) + 1)) | 26 | svcCreateStringTable.NumEntries = int8(reader.TryReadBits(uint64(math.Log2(float64(svcCreateStringTable.MaxEntries))) + 1)) |
| 27 | svcCreateStringTable.Length = int32(reader.TryReadBits(20)) | 27 | svcCreateStringTable.Length = int32(reader.TryReadBits(20)) |
diff --git a/pkg/messages/types/svcCrosshairAngle.go b/pkg/messages/types/svcCrosshairAngle.go index e8424e1..b7d234c 100644 --- a/pkg/messages/types/svcCrosshairAngle.go +++ b/pkg/messages/types/svcCrosshairAngle.go | |||
| @@ -3,11 +3,21 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcCrosshairAngle struct { | 5 | type SvcCrosshairAngle struct { |
| 6 | Angle []int16 | 6 | Angle crosshairAngles |
| 7 | } | ||
| 8 | |||
| 9 | type crosshairAngles struct { | ||
| 10 | X float32 | ||
| 11 | Y float32 | ||
| 12 | Z float32 | ||
| 7 | } | 13 | } |
| 8 | 14 | ||
| 9 | func ParseSvcCrosshairAngle(reader *bitreader.Reader) SvcCrosshairAngle { | 15 | func ParseSvcCrosshairAngle(reader *bitreader.Reader) SvcCrosshairAngle { |
| 10 | return SvcCrosshairAngle{ | 16 | return SvcCrosshairAngle{ |
| 11 | Angle: []int16{int16(reader.TryReadBits(16)), int16(reader.TryReadBits(16)), int16(reader.TryReadBits(16))}, | 17 | Angle: crosshairAngles{ |
| 18 | X: float32(reader.TryReadBits(16)), | ||
| 19 | Y: float32(reader.TryReadBits(16)), | ||
| 20 | Z: float32(reader.TryReadBits(16)), | ||
| 21 | }, | ||
| 12 | } | 22 | } |
| 13 | } | 23 | } |
diff --git a/pkg/messages/types/svcEntityMessage.go b/pkg/messages/types/svcEntityMessage.go index 8d5c4aa..58f42ba 100644 --- a/pkg/messages/types/svcEntityMessage.go +++ b/pkg/messages/types/svcEntityMessage.go | |||
| @@ -3,17 +3,17 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcEntityMessage struct { | 5 | type SvcEntityMessage struct { |
| 6 | EntityIndex int16 | 6 | EntityIndex uint16 |
| 7 | ClassId int16 | 7 | ClassId uint16 |
| 8 | Length int16 | 8 | Length uint16 |
| 9 | Data []byte | 9 | Data []byte |
| 10 | } | 10 | } |
| 11 | 11 | ||
| 12 | func ParseSvcEntityMessage(reader *bitreader.Reader) SvcEntityMessage { | 12 | func ParseSvcEntityMessage(reader *bitreader.Reader) SvcEntityMessage { |
| 13 | svcEntityMessage := SvcEntityMessage{ | 13 | svcEntityMessage := SvcEntityMessage{ |
| 14 | EntityIndex: int16(reader.TryReadBits(11)), | 14 | EntityIndex: uint16(reader.TryReadBits(11)), |
| 15 | ClassId: int16(reader.TryReadBits(9)), | 15 | ClassId: uint16(reader.TryReadBits(9)), |
| 16 | Length: int16(reader.TryReadBits(11)), | 16 | Length: uint16(reader.TryReadBits(11)), |
| 17 | } | 17 | } |
| 18 | svcEntityMessage.Data = reader.TryReadBitsToSlice(uint64(svcEntityMessage.Length)) | 18 | svcEntityMessage.Data = reader.TryReadBitsToSlice(uint64(svcEntityMessage.Length)) |
| 19 | return svcEntityMessage | 19 | return svcEntityMessage |
diff --git a/pkg/messages/types/svcFixAngle.go b/pkg/messages/types/svcFixAngle.go index 675c50e..95f67ec 100644 --- a/pkg/messages/types/svcFixAngle.go +++ b/pkg/messages/types/svcFixAngle.go | |||
| @@ -4,12 +4,22 @@ import "github.com/pektezol/bitreader" | |||
| 4 | 4 | ||
| 5 | type SvcFixAngle struct { | 5 | type SvcFixAngle struct { |
| 6 | Relative bool | 6 | Relative bool |
| 7 | Angle []int16 | 7 | Angle fixAngles |
| 8 | } | ||
| 9 | |||
| 10 | type fixAngles struct { | ||
| 11 | X float32 | ||
| 12 | Y float32 | ||
| 13 | Z float32 | ||
| 8 | } | 14 | } |
| 9 | 15 | ||
| 10 | func ParseSvcFixAngle(reader *bitreader.Reader) SvcFixAngle { | 16 | func ParseSvcFixAngle(reader *bitreader.Reader) SvcFixAngle { |
| 11 | return SvcFixAngle{ | 17 | return SvcFixAngle{ |
| 12 | Relative: reader.TryReadBool(), | 18 | Relative: reader.TryReadBool(), |
| 13 | Angle: []int16{int16(reader.TryReadBits(16)), int16(reader.TryReadBits(16)), int16(reader.TryReadBits(16))}, | 19 | Angle: fixAngles{ |
| 20 | X: float32(reader.TryReadBits(16)), | ||
| 21 | Y: float32(reader.TryReadBits(16)), | ||
| 22 | Z: float32(reader.TryReadBits(16)), | ||
| 23 | }, | ||
| 14 | } | 24 | } |
| 15 | } | 25 | } |
diff --git a/pkg/messages/types/svcGameEvent.go b/pkg/messages/types/svcGameEvent.go index 44d6dd5..9e4564a 100644 --- a/pkg/messages/types/svcGameEvent.go +++ b/pkg/messages/types/svcGameEvent.go | |||
| @@ -3,13 +3,13 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcGameEvent struct { | 5 | type SvcGameEvent struct { |
| 6 | Length int16 | 6 | Length uint16 |
| 7 | Data []byte // TODO: GameEvent[] | 7 | Data []byte // TODO: GameEvent[] |
| 8 | } | 8 | } |
| 9 | 9 | ||
| 10 | func ParseSvcGameEvent(reader *bitreader.Reader) SvcGameEvent { | 10 | func ParseSvcGameEvent(reader *bitreader.Reader) SvcGameEvent { |
| 11 | svcGameEvent := SvcGameEvent{ | 11 | svcGameEvent := SvcGameEvent{ |
| 12 | Length: int16(reader.TryReadBits(11)), | 12 | Length: uint16(reader.TryReadBits(11)), |
| 13 | } | 13 | } |
| 14 | svcGameEvent.Data = reader.TryReadBitsToSlice(uint64(svcGameEvent.Length)) | 14 | svcGameEvent.Data = reader.TryReadBitsToSlice(uint64(svcGameEvent.Length)) |
| 15 | return svcGameEvent | 15 | return svcGameEvent |
diff --git a/pkg/messages/types/svcGetCvarValue.go b/pkg/messages/types/svcGetCvarValue.go index 0598722..19fc362 100644 --- a/pkg/messages/types/svcGetCvarValue.go +++ b/pkg/messages/types/svcGetCvarValue.go | |||
| @@ -3,13 +3,13 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcGetCvarValue struct { | 5 | type SvcGetCvarValue struct { |
| 6 | Cookie string | 6 | Cookie int32 |
| 7 | CvarName string | 7 | CvarName string |
| 8 | } | 8 | } |
| 9 | 9 | ||
| 10 | func ParseSvcGetCvarValue(reader *bitreader.Reader) SvcGetCvarValue { | 10 | func ParseSvcGetCvarValue(reader *bitreader.Reader) SvcGetCvarValue { |
| 11 | svcGetCvarValue := SvcGetCvarValue{ | 11 | svcGetCvarValue := SvcGetCvarValue{ |
| 12 | Cookie: reader.TryReadStringLength(4), | 12 | Cookie: reader.TryReadSInt32(), |
| 13 | CvarName: reader.TryReadString(), | 13 | CvarName: reader.TryReadString(), |
| 14 | } | 14 | } |
| 15 | return svcGetCvarValue | 15 | return svcGetCvarValue |
diff --git a/pkg/messages/types/svcMenu.go b/pkg/messages/types/svcMenu.go index 9958e99..9e8e2eb 100644 --- a/pkg/messages/types/svcMenu.go +++ b/pkg/messages/types/svcMenu.go | |||
| @@ -3,15 +3,15 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcMenu struct { | 5 | type SvcMenu struct { |
| 6 | MenuType int16 | 6 | Type uint16 |
| 7 | Length int32 | 7 | Length uint32 |
| 8 | Data []byte | 8 | Data []byte |
| 9 | } | 9 | } |
| 10 | 10 | ||
| 11 | func ParseSvcMenu(reader *bitreader.Reader) SvcMenu { | 11 | func ParseSvcMenu(reader *bitreader.Reader) SvcMenu { |
| 12 | svcMenu := SvcMenu{ | 12 | svcMenu := SvcMenu{ |
| 13 | MenuType: int16(reader.TryReadBits(16)), | 13 | Type: reader.TryReadUInt16(), |
| 14 | Length: int32(reader.TryReadBits(32)), | 14 | Length: reader.TryReadUInt32(), |
| 15 | } | 15 | } |
| 16 | svcMenu.Data = reader.TryReadBitsToSlice(uint64(svcMenu.Length)) | 16 | svcMenu.Data = reader.TryReadBitsToSlice(uint64(svcMenu.Length)) |
| 17 | return svcMenu | 17 | return svcMenu |
diff --git a/pkg/messages/types/svcPacketEntities.go b/pkg/messages/types/svcPacketEntities.go index 54e4a2a..2d86bf2 100644 --- a/pkg/messages/types/svcPacketEntities.go +++ b/pkg/messages/types/svcPacketEntities.go | |||
| @@ -5,33 +5,30 @@ import ( | |||
| 5 | ) | 5 | ) |
| 6 | 6 | ||
| 7 | type SvcPacketEntities struct { | 7 | type SvcPacketEntities struct { |
| 8 | MaxEntries int16 | 8 | MaxEntries uint16 |
| 9 | IsDelta bool | 9 | IsDelta bool |
| 10 | DeltaFrom int32 | 10 | DeltaFrom int32 |
| 11 | BaseLine bool | 11 | BaseLine bool |
| 12 | UpdatedEntries int16 | 12 | UpdatedEntries uint16 |
| 13 | Length int32 | 13 | Length uint32 |
| 14 | UpdatedBaseline bool | 14 | UpdatedBaseline bool |
| 15 | Data []byte | 15 | Data []byte |
| 16 | } | 16 | } |
| 17 | 17 | ||
| 18 | func ParseSvcPacketEntities(reader *bitreader.Reader) SvcPacketEntities { | 18 | func ParseSvcPacketEntities(reader *bitreader.Reader) SvcPacketEntities { |
| 19 | svcPacketEntities := SvcPacketEntities{ | 19 | svcPacketEntities := SvcPacketEntities{ |
| 20 | MaxEntries: int16(reader.TryReadBits(11)), | 20 | MaxEntries: uint16(reader.TryReadBits(11)), |
| 21 | IsDelta: reader.TryReadBool(), | 21 | IsDelta: reader.TryReadBool(), |
| 22 | } | 22 | } |
| 23 | if svcPacketEntities.IsDelta { | 23 | if svcPacketEntities.IsDelta { |
| 24 | svcPacketEntities.DeltaFrom = int32(reader.TryReadBits(32)) | 24 | svcPacketEntities.DeltaFrom = reader.TryReadSInt32() |
| 25 | } else { | 25 | } else { |
| 26 | svcPacketEntities.DeltaFrom = -1 | 26 | svcPacketEntities.DeltaFrom = -1 |
| 27 | } | 27 | } |
| 28 | svcPacketEntities.BaseLine = reader.TryReadBool() | 28 | svcPacketEntities.BaseLine = reader.TryReadBool() |
| 29 | svcPacketEntities.UpdatedEntries = int16(reader.TryReadBits(11)) | 29 | svcPacketEntities.UpdatedEntries = uint16(reader.TryReadBits(11)) |
| 30 | svcPacketEntities.Length = int32(reader.TryReadBits(20)) | 30 | svcPacketEntities.Length = uint32(reader.TryReadBits(20)) |
| 31 | svcPacketEntities.UpdatedBaseline = reader.TryReadBool() | 31 | svcPacketEntities.UpdatedBaseline = reader.TryReadBool() |
| 32 | svcPacketEntities.Data = reader.TryReadBitsToSlice(uint64(svcPacketEntities.Length)) //, dataReader = reader.ForkAndSkip(int(svcPacketEntities.Length)) | 32 | svcPacketEntities.Data = reader.TryReadBitsToSlice(uint64(svcPacketEntities.Length)) |
| 33 | // for count := 0; count < int(svcPacketEntities.UpdatedEntries); count++ { | ||
| 34 | // dataReader.TryReadBool() | ||
| 35 | // } | ||
| 36 | return svcPacketEntities | 33 | return svcPacketEntities |
| 37 | } | 34 | } |
diff --git a/pkg/messages/types/svcPaintmapData.go b/pkg/messages/types/svcPaintmapData.go index 41ef515..380016a 100644 --- a/pkg/messages/types/svcPaintmapData.go +++ b/pkg/messages/types/svcPaintmapData.go | |||
| @@ -3,13 +3,13 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcPaintmapData struct { | 5 | type SvcPaintmapData struct { |
| 6 | Length int32 | 6 | Length uint32 |
| 7 | Data []byte | 7 | Data []byte |
| 8 | } | 8 | } |
| 9 | 9 | ||
| 10 | func ParseSvcPaintmapData(reader *bitreader.Reader) SvcPaintmapData { | 10 | func ParseSvcPaintmapData(reader *bitreader.Reader) SvcPaintmapData { |
| 11 | svcPaintmapData := SvcPaintmapData{ | 11 | svcPaintmapData := SvcPaintmapData{ |
| 12 | Length: int32(reader.TryReadBits(32)), | 12 | Length: reader.TryReadUInt32(), |
| 13 | } | 13 | } |
| 14 | svcPaintmapData.Data = reader.TryReadBitsToSlice(uint64(svcPaintmapData.Length)) | 14 | svcPaintmapData.Data = reader.TryReadBitsToSlice(uint64(svcPaintmapData.Length)) |
| 15 | return svcPaintmapData | 15 | return svcPaintmapData |
diff --git a/pkg/messages/types/svcSendTable.go b/pkg/messages/types/svcSendTable.go index 9eb47fc..2395e9f 100644 --- a/pkg/messages/types/svcSendTable.go +++ b/pkg/messages/types/svcSendTable.go | |||
| @@ -3,15 +3,16 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcSendTable struct { | 5 | type SvcSendTable struct { |
| 6 | NeedsDecoder int8 | 6 | NeedsDecoder bool |
| 7 | Length int8 | 7 | Length uint8 |
| 8 | Props int32 | 8 | Props uint32 |
| 9 | } | 9 | } |
| 10 | 10 | ||
| 11 | func ParseSvcSendTable(reader *bitreader.Reader) SvcSendTable { | 11 | func ParseSvcSendTable(reader *bitreader.Reader) SvcSendTable { |
| 12 | return SvcSendTable{ | 12 | svcSendTable := SvcSendTable{ |
| 13 | NeedsDecoder: int8(reader.TryReadBits(8)), | 13 | NeedsDecoder: reader.TryReadBool(), |
| 14 | Length: int8(reader.TryReadBits(8)), | 14 | Length: reader.TryReadUInt8(), |
| 15 | Props: int32(reader.TryReadBits(32)), | ||
| 16 | } | 15 | } |
| 16 | svcSendTable.Props = uint32(reader.TryReadBits(uint64(svcSendTable.Length))) | ||
| 17 | return svcSendTable | ||
| 17 | } | 18 | } |
diff --git a/pkg/messages/types/svcSetView.go b/pkg/messages/types/svcSetView.go index 266a539..4ba5e3c 100644 --- a/pkg/messages/types/svcSetView.go +++ b/pkg/messages/types/svcSetView.go | |||
| @@ -3,11 +3,11 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcSetView struct { | 5 | type SvcSetView struct { |
| 6 | EntityIndex int16 | 6 | EntityIndex uint16 |
| 7 | } | 7 | } |
| 8 | 8 | ||
| 9 | func ParseSvcSetView(reader *bitreader.Reader) SvcSetView { | 9 | func ParseSvcSetView(reader *bitreader.Reader) SvcSetView { |
| 10 | return SvcSetView{ | 10 | return SvcSetView{ |
| 11 | EntityIndex: int16(reader.TryReadBits(11)), | 11 | EntityIndex: uint16(reader.TryReadBits(11)), |
| 12 | } | 12 | } |
| 13 | } | 13 | } |
diff --git a/pkg/messages/types/svcSounds.go b/pkg/messages/types/svcSounds.go index 22d4a66..1553450 100644 --- a/pkg/messages/types/svcSounds.go +++ b/pkg/messages/types/svcSounds.go | |||
| @@ -4,8 +4,8 @@ import "github.com/pektezol/bitreader" | |||
| 4 | 4 | ||
| 5 | type SvcSounds struct { | 5 | type SvcSounds struct { |
| 6 | ReliableSound bool | 6 | ReliableSound bool |
| 7 | Size int8 | 7 | SoundCount uint8 |
| 8 | Length int16 | 8 | Length uint16 |
| 9 | Data []byte | 9 | Data []byte |
| 10 | } | 10 | } |
| 11 | 11 | ||
| @@ -14,11 +14,11 @@ func ParseSvcSounds(reader *bitreader.Reader) SvcSounds { | |||
| 14 | ReliableSound: reader.TryReadBool(), | 14 | ReliableSound: reader.TryReadBool(), |
| 15 | } | 15 | } |
| 16 | if svcSounds.ReliableSound { | 16 | if svcSounds.ReliableSound { |
| 17 | svcSounds.Size = 1 | 17 | svcSounds.SoundCount = 1 |
| 18 | svcSounds.Length = int16(reader.TryReadBits(8)) | 18 | svcSounds.Length = uint16(reader.TryReadUInt8()) |
| 19 | } else { | 19 | } else { |
| 20 | svcSounds.Size = int8(reader.TryReadBits(8)) | 20 | svcSounds.SoundCount = reader.TryReadUInt8() |
| 21 | svcSounds.Length = int16(reader.TryReadBits(16)) | 21 | svcSounds.Length = reader.TryReadUInt16() |
| 22 | } | 22 | } |
| 23 | svcSounds.Data = reader.TryReadBitsToSlice(uint64(svcSounds.Length)) | 23 | svcSounds.Data = reader.TryReadBitsToSlice(uint64(svcSounds.Length)) |
| 24 | return svcSounds | 24 | return svcSounds |
diff --git a/pkg/messages/types/svcSplitScreen.go b/pkg/messages/types/svcSplitScreen.go index 3ba6ee8..5ddc131 100644 --- a/pkg/messages/types/svcSplitScreen.go +++ b/pkg/messages/types/svcSplitScreen.go | |||
| @@ -3,15 +3,15 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcSplitScreen struct { | 5 | type SvcSplitScreen struct { |
| 6 | Unk bool | 6 | RemoveUser bool |
| 7 | Length int16 | 7 | Length uint16 |
| 8 | Data []byte | 8 | Data []byte |
| 9 | } | 9 | } |
| 10 | 10 | ||
| 11 | func ParseSvcSplitScreen(reader *bitreader.Reader) SvcSplitScreen { | 11 | func ParseSvcSplitScreen(reader *bitreader.Reader) SvcSplitScreen { |
| 12 | svcSplitScreen := SvcSplitScreen{ | 12 | svcSplitScreen := SvcSplitScreen{ |
| 13 | Unk: reader.TryReadBool(), | 13 | RemoveUser: reader.TryReadBool(), |
| 14 | Length: int16(reader.TryReadBits(11)), | 14 | Length: uint16(reader.TryReadBits(11)), |
| 15 | } | 15 | } |
| 16 | svcSplitScreen.Data = reader.TryReadBitsToSlice(uint64(svcSplitScreen.Length)) | 16 | svcSplitScreen.Data = reader.TryReadBitsToSlice(uint64(svcSplitScreen.Length)) |
| 17 | return svcSplitScreen | 17 | return svcSplitScreen |
diff --git a/pkg/messages/types/svcTempEntities.go b/pkg/messages/types/svcTempEntities.go index ca4b995..9c20a65 100644 --- a/pkg/messages/types/svcTempEntities.go +++ b/pkg/messages/types/svcTempEntities.go | |||
| @@ -3,15 +3,15 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcTempEntities struct { | 5 | type SvcTempEntities struct { |
| 6 | NumEntries int8 | 6 | NumEntries uint8 |
| 7 | Length int32 | 7 | Length uint32 |
| 8 | Data []byte | 8 | Data []byte |
| 9 | } | 9 | } |
| 10 | 10 | ||
| 11 | func ParseSvcTempEntities(reader *bitreader.Reader) SvcTempEntities { | 11 | func ParseSvcTempEntities(reader *bitreader.Reader) SvcTempEntities { |
| 12 | svcTempEntities := SvcTempEntities{ | 12 | svcTempEntities := SvcTempEntities{ |
| 13 | NumEntries: int8(reader.TryReadBits(8)), | 13 | NumEntries: reader.TryReadUInt8(), |
| 14 | Length: int32(reader.TryReadBits(17)), | 14 | Length: uint32(reader.TryReadBits(17)), |
| 15 | } | 15 | } |
| 16 | svcTempEntities.Data = reader.TryReadBitsToSlice(uint64(svcTempEntities.Length)) | 16 | svcTempEntities.Data = reader.TryReadBitsToSlice(uint64(svcTempEntities.Length)) |
| 17 | return svcTempEntities | 17 | return svcTempEntities |
diff --git a/pkg/messages/types/svcUpdateStringTable.go b/pkg/messages/types/svcUpdateStringTable.go index c606141..9a3cbe0 100644 --- a/pkg/messages/types/svcUpdateStringTable.go +++ b/pkg/messages/types/svcUpdateStringTable.go | |||
| @@ -3,18 +3,18 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcUpdateStringTable struct { | 5 | type SvcUpdateStringTable struct { |
| 6 | TableId int8 | 6 | TableId uint8 |
| 7 | NumChangedEntries int16 | 7 | NumChangedEntries uint16 |
| 8 | Length int32 | 8 | Length int32 |
| 9 | Data []byte | 9 | Data []byte |
| 10 | } | 10 | } |
| 11 | 11 | ||
| 12 | func ParseSvcUpdateStringTable(reader *bitreader.Reader) SvcUpdateStringTable { | 12 | func ParseSvcUpdateStringTable(reader *bitreader.Reader) SvcUpdateStringTable { |
| 13 | svcUpdateStringTable := SvcUpdateStringTable{ | 13 | svcUpdateStringTable := SvcUpdateStringTable{ |
| 14 | TableId: int8(reader.TryReadBits(5)), | 14 | TableId: reader.TryReadUInt8(), |
| 15 | } | 15 | } |
| 16 | if reader.TryReadBool() { | 16 | if reader.TryReadBool() { |
| 17 | svcUpdateStringTable.NumChangedEntries = int16(reader.TryReadBits(16)) | 17 | svcUpdateStringTable.NumChangedEntries = reader.TryReadUInt16() |
| 18 | } | 18 | } |
| 19 | svcUpdateStringTable.Length = int32(reader.TryReadBits(20)) | 19 | svcUpdateStringTable.Length = int32(reader.TryReadBits(20)) |
| 20 | svcUpdateStringTable.Data = reader.TryReadBitsToSlice(uint64(svcUpdateStringTable.Length)) | 20 | svcUpdateStringTable.Data = reader.TryReadBitsToSlice(uint64(svcUpdateStringTable.Length)) |
diff --git a/pkg/messages/types/svcUserMessage.go b/pkg/messages/types/svcUserMessage.go index fb8be20..3cc6de2 100644 --- a/pkg/messages/types/svcUserMessage.go +++ b/pkg/messages/types/svcUserMessage.go | |||
| @@ -3,16 +3,92 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcUserMessage struct { | 5 | type SvcUserMessage struct { |
| 6 | MsgType int8 | 6 | Type int8 |
| 7 | Length int16 | 7 | Length int16 |
| 8 | Data []byte | 8 | Data []byte |
| 9 | } | 9 | } |
| 10 | 10 | ||
| 11 | type UserMessageType int | ||
| 12 | |||
| 13 | const ( | ||
| 14 | EUserMessageTypeUnknown UserMessageType = iota | ||
| 15 | EUserMessageTypeInvalid | ||
| 16 | EUserMessageTypeGeiger | ||
| 17 | EUserMessageTypeTrain | ||
| 18 | EUserMessageTypeHudText | ||
| 19 | EUserMessageTypeSayText | ||
| 20 | EUserMessageTypeSayText2 | ||
| 21 | EUserMessageTypeTextMsg | ||
| 22 | EUserMessageTypeHUDMsg | ||
| 23 | EUserMessageTypeResetHUD | ||
| 24 | EUserMessageTypeGameTitle | ||
| 25 | EUserMessageTypeItemPickup | ||
| 26 | EUserMessageTypeShowMenu | ||
| 27 | EUserMessageTypeShake | ||
| 28 | EUserMessageTypeFade | ||
| 29 | EUserMessageTypeVGUIMenu | ||
| 30 | EUserMessageTypeRumble | ||
| 31 | EUserMessageTypeBattery | ||
| 32 | EUserMessageTypeDamage | ||
| 33 | EUserMessageTypeVoiceMask | ||
| 34 | EUserMessageTypeRequestState | ||
| 35 | EUserMessageTypeCloseCaption | ||
| 36 | EUserMessageTypeHintText | ||
| 37 | EUserMessageTypeKeyHintText | ||
| 38 | EUserMessageTypeSquadMemberDied | ||
| 39 | EUserMessageTypeAmmoDenied | ||
| 40 | EUserMessageTypeCreditsMsg | ||
| 41 | EUserMessageTypeCreditsPortalMsg | ||
| 42 | EUserMessageTypeLogoTimeMsg | ||
| 43 | EUserMessageTypeAchievementEvent | ||
| 44 | EUserMessageTypeEntityPortalled | ||
| 45 | EUserMessageTypeKillCam | ||
| 46 | EUserMessageTypeTilt | ||
| 47 | EUserMessageTypeCloseCaptionDirect | ||
| 48 | EUserMessageTypeUpdateJalopyRadar | ||
| 49 | EUserMessageTypeCurrentTimescale | ||
| 50 | EUserMessageTypeDesiredTimescale | ||
| 51 | EUserMessageTypeInventoryFlash | ||
| 52 | EUserMessageTypeIndicatorFlash | ||
| 53 | EUserMessageTypeControlHelperAnimate | ||
| 54 | EUserMessageTypeTakePhoto | ||
| 55 | EUserMessageTypeFlash | ||
| 56 | EUserMessageTypeHudPingIndicator | ||
| 57 | EUserMessageTypeOpenRadialMenu | ||
| 58 | EUserMessageTypeAddLocator | ||
| 59 | EUserMessageTypeMPMapCompleted | ||
| 60 | EUserMessageTypeMPMapIncomplete | ||
| 61 | EUserMessageTypeMPMapCompletedData | ||
| 62 | EUserMessageTypeMPTauntEarned | ||
| 63 | EUserMessageTypeMPTauntUnlocked | ||
| 64 | EUserMessageTypeMPTauntLocked | ||
| 65 | EUserMessageTypeMPAllTauntsLocked | ||
| 66 | EUserMessageTypePortalFX_Surface | ||
| 67 | EUserMessageTypePaintWorld | ||
| 68 | EUserMessageTypePaintEntity | ||
| 69 | EUserMessageTypeChangePaintColor | ||
| 70 | EUserMessageTypePaintBombExplode | ||
| 71 | EUserMessageTypeRemoveAllPaint | ||
| 72 | EUserMessageTypePaintAllSurfaces | ||
| 73 | EUserMessageTypeRemovePaint | ||
| 74 | EUserMessageTypeStartSurvey | ||
| 75 | EUserMessageTypeApplyHitBoxDamageEffect | ||
| 76 | EUserMessageTypeSetMixLayerTriggerFactor | ||
| 77 | EUserMessageTypeTransitionFade | ||
| 78 | EUserMessageTypeScoreboardTempUpdate | ||
| 79 | EUserMessageTypeChallengeModCheatSession | ||
| 80 | EUserMessageTypeChallengeModCloseAllUI | ||
| 81 | ) | ||
| 82 | |||
| 11 | func ParseSvcUserMessage(reader *bitreader.Reader) SvcUserMessage { | 83 | func ParseSvcUserMessage(reader *bitreader.Reader) SvcUserMessage { |
| 12 | svcUserMessage := SvcUserMessage{ | 84 | svcUserMessage := SvcUserMessage{ |
| 13 | MsgType: int8(reader.TryReadBits(8)), | 85 | Type: int8(reader.TryReadBits(8)), |
| 14 | Length: int16(reader.TryReadBits(12)), | 86 | Length: int16(reader.TryReadBits(12)), |
| 15 | } | 87 | } |
| 16 | svcUserMessage.Data = reader.TryReadBitsToSlice(uint64(svcUserMessage.Length)) | 88 | svcUserMessage.Data = reader.TryReadBitsToSlice(uint64(svcUserMessage.Length)) |
| 17 | return svcUserMessage | 89 | return svcUserMessage |
| 18 | } | 90 | } |
| 91 | |||
| 92 | // func byteToUserMessageType() { | ||
| 93 | |||
| 94 | // } | ||
diff --git a/pkg/messages/types/svcVoiceData.go b/pkg/messages/types/svcVoiceData.go index 9609d80..efcae85 100644 --- a/pkg/messages/types/svcVoiceData.go +++ b/pkg/messages/types/svcVoiceData.go | |||
| @@ -3,17 +3,19 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcVoiceData struct { | 5 | type SvcVoiceData struct { |
| 6 | Client int8 | 6 | FromClient uint8 |
| 7 | Proximity int8 | 7 | Proximity bool |
| 8 | Length int16 | 8 | Length int16 |
| 9 | Data []byte | 9 | Data []byte |
| 10 | } | 10 | } |
| 11 | 11 | ||
| 12 | func ParseSvcVoiceData(reader *bitreader.Reader) SvcVoiceData { | 12 | func ParseSvcVoiceData(reader *bitreader.Reader) SvcVoiceData { |
| 13 | svcVoiceData := SvcVoiceData{ | 13 | svcVoiceData := SvcVoiceData{ |
| 14 | Client: int8(reader.TryReadBits(8)), | 14 | FromClient: reader.TryReadUInt8(), |
| 15 | Proximity: int8(reader.TryReadBits(8)), | 15 | } |
| 16 | Length: int16(reader.TryReadBits(16)), | 16 | proximity := reader.TryReadUInt8() |
| 17 | if proximity != 0 { | ||
| 18 | svcVoiceData.Proximity = true | ||
| 17 | } | 19 | } |
| 18 | svcVoiceData.Data = reader.TryReadBitsToSlice(uint64(svcVoiceData.Length)) | 20 | svcVoiceData.Data = reader.TryReadBitsToSlice(uint64(svcVoiceData.Length)) |
| 19 | return svcVoiceData | 21 | return svcVoiceData |
diff --git a/pkg/messages/types/svcVoiceInit.go b/pkg/messages/types/svcVoiceInit.go index afabfc9..a6d711a 100644 --- a/pkg/messages/types/svcVoiceInit.go +++ b/pkg/messages/types/svcVoiceInit.go | |||
| @@ -3,18 +3,24 @@ package messages | |||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type SvcVoiceInit struct { | 5 | type SvcVoiceInit struct { |
| 6 | Codec string | 6 | Codec string |
| 7 | Quality uint8 | 7 | Quality uint8 |
| 8 | Unk float32 | 8 | SampleRate int32 |
| 9 | } | 9 | } |
| 10 | 10 | ||
| 11 | func ParseSvcVoiceInit(reader *bitreader.Reader) SvcVoiceInit { | 11 | func ParseSvcVoiceInit(reader *bitreader.Reader) SvcVoiceInit { |
| 12 | svcVoiceInit := SvcVoiceInit{ | 12 | svcVoiceInit := SvcVoiceInit{ |
| 13 | Codec: reader.TryReadString(), | 13 | Codec: reader.TryReadString(), |
| 14 | Quality: uint8(reader.TryReadBits(8)), | 14 | Quality: reader.TryReadUInt8(), |
| 15 | } | 15 | } |
| 16 | if svcVoiceInit.Quality == 0b11111111 { | 16 | if svcVoiceInit.Quality == 0b11111111 { |
| 17 | svcVoiceInit.Unk = reader.TryReadFloat32() | 17 | svcVoiceInit.SampleRate = reader.TryReadSInt32() |
| 18 | } else { | ||
| 19 | if svcVoiceInit.Codec == "vaudio_celt" { | ||
| 20 | svcVoiceInit.SampleRate = 22050 | ||
| 21 | } else { | ||
| 22 | svcVoiceInit.SampleRate = 11025 | ||
| 23 | } | ||
| 18 | } | 24 | } |
| 19 | return svcVoiceInit | 25 | return svcVoiceInit |
| 20 | } | 26 | } |