aboutsummaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-17 18:24:18 +0300
committerArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-20 11:10:20 +0300
commit6aa511f2ae3d5c84e7db02627ffd4d7f6796ce75 (patch)
treee925740a5c04b1c5c44e725dab04f9b1833cf9e3 /pkg
parentparse netSignOnState flags (diff)
downloadsdp.go-6aa511f2ae3d5c84e7db02627ffd4d7f6796ce75.tar.gz
sdp.go-6aa511f2ae3d5c84e7db02627ffd4d7f6796ce75.tar.bz2
sdp.go-6aa511f2ae3d5c84e7db02627ffd4d7f6796ce75.zip
decide what message types are left
Diffstat (limited to 'pkg')
-rw-r--r--pkg/messages/messages.go24
-rw-r--r--pkg/messages/types/netSetConVar.go6
-rw-r--r--pkg/messages/types/netSignOnState.go24
-rw-r--r--pkg/messages/types/netTick.go8
-rw-r--r--pkg/messages/types/svcBspDecal.go12
-rw-r--r--pkg/messages/types/svcClassInfo.go10
-rw-r--r--pkg/messages/types/svcCmdKeyValues.go4
-rw-r--r--pkg/messages/types/svcCreateStringTable.go2
-rw-r--r--pkg/messages/types/svcCrosshairAngle.go14
-rw-r--r--pkg/messages/types/svcEntityMessage.go12
-rw-r--r--pkg/messages/types/svcFixAngle.go14
-rw-r--r--pkg/messages/types/svcGameEvent.go4
-rw-r--r--pkg/messages/types/svcGetCvarValue.go4
-rw-r--r--pkg/messages/types/svcMenu.go10
-rw-r--r--pkg/messages/types/svcPacketEntities.go19
-rw-r--r--pkg/messages/types/svcPaintmapData.go4
-rw-r--r--pkg/messages/types/svcSendTable.go15
-rw-r--r--pkg/messages/types/svcSetView.go4
-rw-r--r--pkg/messages/types/svcSounds.go12
-rw-r--r--pkg/messages/types/svcSplitScreen.go10
-rw-r--r--pkg/messages/types/svcTempEntities.go8
-rw-r--r--pkg/messages/types/svcUpdateStringTable.go8
-rw-r--r--pkg/messages/types/svcUserMessage.go86
-rw-r--r--pkg/messages/types/svcVoiceData.go16
-rw-r--r--pkg/messages/types/svcVoiceInit.go16
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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type NetSetConVar struct { 5type 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
15func ParseNetSetConVar(reader *bitreader.Reader) NetSetConVar { 15func 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 (
9type NetSignOnState struct { 9type 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
55func ParseNetSignOnState(reader *bitreader.Reader) NetSignOnState { 55func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type NetTick struct { 5type NetTick struct {
6 Tick int32 6 Tick uint32
7 HostFrameTime float32 7 HostFrameTime float32
8 HostFrameTimeStdDeviation float32 8 HostFrameTimeStdDeviation float32
9} 9}
10 10
11func ParseNetTick(reader *bitreader.Reader) NetTick { 11func 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 (
7type SvcBspDecal struct { 7type 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
15type vectorCoord struct { 15type 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 @@
1package messages 1package messages
2 2
3import ( 3import (
4 "fmt"
5 "math" 4 "math"
6 5
7 "github.com/pektezol/bitreader" 6 "github.com/pektezol/bitreader"
8) 7)
9 8
10type SvcClassInfo struct { 9type 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
22func ParseSvcClassInfo(reader *bitreader.Reader) SvcClassInfo { 21func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcCmdKeyValues struct { 5type SvcCmdKeyValues struct {
6 Length int32 6 Length uint32
7 Data []byte 7 Data []byte
8} 8}
9 9
10func ParseSvcCmdKeyValues(reader *bitreader.Reader) SvcCmdKeyValues { 10func 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 {
21func ParseSvcCreateStringTable(reader *bitreader.Reader) SvcCreateStringTable { 21func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcCrosshairAngle struct { 5type SvcCrosshairAngle struct {
6 Angle []int16 6 Angle crosshairAngles
7}
8
9type crosshairAngles struct {
10 X float32
11 Y float32
12 Z float32
7} 13}
8 14
9func ParseSvcCrosshairAngle(reader *bitreader.Reader) SvcCrosshairAngle { 15func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcEntityMessage struct { 5type 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
12func ParseSvcEntityMessage(reader *bitreader.Reader) SvcEntityMessage { 12func 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
5type SvcFixAngle struct { 5type SvcFixAngle struct {
6 Relative bool 6 Relative bool
7 Angle []int16 7 Angle fixAngles
8}
9
10type fixAngles struct {
11 X float32
12 Y float32
13 Z float32
8} 14}
9 15
10func ParseSvcFixAngle(reader *bitreader.Reader) SvcFixAngle { 16func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcGameEvent struct { 5type SvcGameEvent struct {
6 Length int16 6 Length uint16
7 Data []byte // TODO: GameEvent[] 7 Data []byte // TODO: GameEvent[]
8} 8}
9 9
10func ParseSvcGameEvent(reader *bitreader.Reader) SvcGameEvent { 10func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcGetCvarValue struct { 5type SvcGetCvarValue struct {
6 Cookie string 6 Cookie int32
7 CvarName string 7 CvarName string
8} 8}
9 9
10func ParseSvcGetCvarValue(reader *bitreader.Reader) SvcGetCvarValue { 10func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcMenu struct { 5type SvcMenu struct {
6 MenuType int16 6 Type uint16
7 Length int32 7 Length uint32
8 Data []byte 8 Data []byte
9} 9}
10 10
11func ParseSvcMenu(reader *bitreader.Reader) SvcMenu { 11func 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
7type SvcPacketEntities struct { 7type 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
18func ParseSvcPacketEntities(reader *bitreader.Reader) SvcPacketEntities { 18func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcPaintmapData struct { 5type SvcPaintmapData struct {
6 Length int32 6 Length uint32
7 Data []byte 7 Data []byte
8} 8}
9 9
10func ParseSvcPaintmapData(reader *bitreader.Reader) SvcPaintmapData { 10func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcSendTable struct { 5type SvcSendTable struct {
6 NeedsDecoder int8 6 NeedsDecoder bool
7 Length int8 7 Length uint8
8 Props int32 8 Props uint32
9} 9}
10 10
11func ParseSvcSendTable(reader *bitreader.Reader) SvcSendTable { 11func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcSetView struct { 5type SvcSetView struct {
6 EntityIndex int16 6 EntityIndex uint16
7} 7}
8 8
9func ParseSvcSetView(reader *bitreader.Reader) SvcSetView { 9func 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
5type SvcSounds struct { 5type 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcSplitScreen struct { 5type SvcSplitScreen struct {
6 Unk bool 6 RemoveUser bool
7 Length int16 7 Length uint16
8 Data []byte 8 Data []byte
9} 9}
10 10
11func ParseSvcSplitScreen(reader *bitreader.Reader) SvcSplitScreen { 11func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcTempEntities struct { 5type SvcTempEntities struct {
6 NumEntries int8 6 NumEntries uint8
7 Length int32 7 Length uint32
8 Data []byte 8 Data []byte
9} 9}
10 10
11func ParseSvcTempEntities(reader *bitreader.Reader) SvcTempEntities { 11func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcUpdateStringTable struct { 5type 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
12func ParseSvcUpdateStringTable(reader *bitreader.Reader) SvcUpdateStringTable { 12func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcUserMessage struct { 5type SvcUserMessage struct {
6 MsgType int8 6 Type int8
7 Length int16 7 Length int16
8 Data []byte 8 Data []byte
9} 9}
10 10
11type UserMessageType int
12
13const (
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
11func ParseSvcUserMessage(reader *bitreader.Reader) SvcUserMessage { 83func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcVoiceData struct { 5type 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
12func ParseSvcVoiceData(reader *bitreader.Reader) SvcVoiceData { 12func 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
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type SvcVoiceInit struct { 5type SvcVoiceInit struct {
6 Codec string 6 Codec string
7 Quality uint8 7 Quality uint8
8 Unk float32 8 SampleRate int32
9} 9}
10 10
11func ParseSvcVoiceInit(reader *bitreader.Reader) SvcVoiceInit { 11func 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}