aboutsummaryrefslogtreecommitdiff
path: root/packets/messages
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--packets/messages/message.go94
-rw-r--r--packets/messages/types/NetNop.go3
-rw-r--r--packets/messages/types/NetSignOnState.go27
-rw-r--r--packets/messages/types/NetTick.go17
-rw-r--r--packets/messages/types/SvcClassInfo.go47
-rw-r--r--packets/messages/types/SvcCmdKeyValues.go14
-rw-r--r--packets/messages/types/SvcCreateStringTable.go34
-rw-r--r--packets/messages/types/SvcEntityMessage.go20
-rw-r--r--packets/messages/types/SvcFixAngle.go21
-rw-r--r--packets/messages/types/SvcGameEvent.go15
-rw-r--r--packets/messages/types/SvcGameEventList.go17
-rw-r--r--packets/messages/types/SvcMenu.go17
-rw-r--r--packets/messages/types/SvcPacketEntities.go39
-rw-r--r--packets/messages/types/SvcPaintmapData.go14
-rw-r--r--packets/messages/types/SvcSendTable.go17
-rw-r--r--packets/messages/types/SvcServerInfo.go43
-rw-r--r--packets/messages/types/SvcSounds.go30
-rw-r--r--packets/messages/types/SvcSplitScreen.go17
-rw-r--r--packets/messages/types/SvcTempEntities.go20
-rw-r--r--packets/messages/types/SvcUpdateStringTable.go21
-rw-r--r--packets/messages/types/SvcUserMessage.go19
-rw-r--r--packets/messages/types/SvcVoiceData.go19
-rw-r--r--pkg/messages/types/netDisconnect.go (renamed from packets/messages/types/NetDisconnect.go)6
-rw-r--r--pkg/messages/types/netFile.go (renamed from packets/messages/types/NetFile.go)6
-rw-r--r--pkg/messages/types/netSetConVar.go (renamed from packets/messages/types/NetSetConVar.go)17
-rw-r--r--pkg/messages/types/netSplitScreenUser.go (renamed from packets/messages/types/NetSplitScreenUser.go)6
-rw-r--r--pkg/messages/types/netStringCmd.go (renamed from packets/messages/types/NetStringCmd.go)2
-rw-r--r--pkg/messages/types/svcCrosshairAngle.go (renamed from packets/messages/types/SvcCrosshairAngle.go)8
-rw-r--r--pkg/messages/types/svcGetCvarValue.go (renamed from packets/messages/types/SvcGetCvarValue.go)7
-rw-r--r--pkg/messages/types/svcPrefetch.go (renamed from packets/messages/types/SvcPrefetch.go)2
-rw-r--r--pkg/messages/types/svcPrint.go (renamed from packets/messages/types/SvcPrint.go)2
-rw-r--r--pkg/messages/types/svcSetPause.go (renamed from packets/messages/types/SvcSetPause.go)10
-rw-r--r--pkg/messages/types/svcSetView.go (renamed from packets/messages/types/SvcSetView.go)2
-rw-r--r--pkg/messages/types/svcVoiceInit.go (renamed from packets/messages/types/SvcVoiceInit.go)12
34 files changed, 41 insertions, 604 deletions
diff --git a/packets/messages/message.go b/packets/messages/message.go
deleted file mode 100644
index 4a00212..0000000
--- a/packets/messages/message.go
+++ /dev/null
@@ -1,94 +0,0 @@
1package messages
2
3import (
4 "bytes"
5
6 "github.com/pektezol/bitreader"
7 "github.com/pektezol/demoparser/packets/messages/types"
8)
9
10func ParseMessage(data []byte) []Message {
11 reader := bitreader.Reader(bytes.NewReader(data), true)
12 var messages []Message
13 for {
14 messageType, err := reader.ReadBits(6)
15 if err != nil {
16 break
17 }
18 switch messageType {
19 case 0:
20 messages = append(messages, Message{Data: types.NetNop{}})
21 case 1:
22 messages = append(messages, Message{Data: types.ParseNetDisconnect(reader)})
23 case 2:
24 messages = append(messages, Message{Data: types.ParseNetFile(reader)})
25 case 3:
26 messages = append(messages, Message{Data: types.ParseNetSplitScreenUser(reader)})
27 case 4:
28 messages = append(messages, Message{Data: types.ParseNetTick(reader)})
29 case 5:
30 messages = append(messages, Message{Data: types.ParseNetStringCmd(reader)})
31 case 6:
32 messages = append(messages, Message{Data: types.ParseNetSetConVar(reader)})
33 case 7:
34 messages = append(messages, Message{Data: types.ParseNetSignOnState(reader)})
35 case 8:
36 messages = append(messages, Message{Data: types.ParseSvcServerInfo(reader)})
37 case 9:
38 messages = append(messages, Message{Data: types.ParseSvcSendTable(reader)})
39 case 10:
40 messages = append(messages, Message{Data: types.ParseSvcClassInfo(reader)})
41 case 11:
42 messages = append(messages, Message{Data: types.ParseSvcSetPause(reader)})
43 case 12:
44 messages = append(messages, Message{Data: types.ParseSvcCreateStringTable(reader)})
45 case 13:
46 messages = append(messages, Message{Data: types.ParseSvcUpdateStringTable(reader)})
47 case 14:
48 messages = append(messages, Message{Data: types.ParseSvcVoiceInit(reader)})
49 case 15:
50 messages = append(messages, Message{Data: types.ParseSvcVoiceData(reader)})
51 case 16:
52 messages = append(messages, Message{Data: types.ParseSvcPrint(reader)})
53 case 17:
54 messages = append(messages, Message{Data: types.ParseSvcSounds(reader)})
55 case 18:
56 messages = append(messages, Message{Data: types.ParseSvcSetView(reader)})
57 case 19:
58 messages = append(messages, Message{Data: types.ParseSvcFixAngle(reader)})
59 case 20:
60 messages = append(messages, Message{Data: types.ParseSvcCrosshairAngle(reader)})
61 case 21:
62 // TODO: SvcBspDecal
63 case 22:
64 messages = append(messages, Message{Data: types.ParseSvcSplitScreen(reader)})
65 case 23:
66 messages = append(messages, Message{Data: types.ParseSvcUserMessage(reader)})
67 case 24:
68 messages = append(messages, Message{Data: types.ParseSvcEntityMessage(reader)})
69 case 25:
70 messages = append(messages, Message{Data: types.ParseSvcGameEvent(reader)})
71 case 26:
72 messages = append(messages, Message{Data: types.ParseSvcPacketEntities(reader)})
73 case 27:
74 messages = append(messages, Message{Data: types.ParseSvcTempEntities(reader)})
75 case 28:
76 messages = append(messages, Message{Data: types.ParseSvcPrefetch(reader)})
77 case 29:
78 messages = append(messages, Message{Data: types.ParseSvcMenu(reader)})
79 case 30:
80 messages = append(messages, Message{Data: types.ParseSvcGameEventList(reader)})
81 case 31:
82 messages = append(messages, Message{Data: types.ParseSvcGetCvarValue(reader)})
83 case 32:
84 messages = append(messages, Message{Data: types.ParseSvcCmdKeyValues(reader)})
85 case 33:
86 messages = append(messages, Message{Data: types.ParseSvcPaintmapData(reader)})
87 }
88 }
89 return messages
90}
91
92type Message struct {
93 Data any
94}
diff --git a/packets/messages/types/NetNop.go b/packets/messages/types/NetNop.go
deleted file mode 100644
index d0a1f7a..0000000
--- a/packets/messages/types/NetNop.go
+++ /dev/null
@@ -1,3 +0,0 @@
1package types
2
3type NetNop struct{}
diff --git a/packets/messages/types/NetSignOnState.go b/packets/messages/types/NetSignOnState.go
deleted file mode 100644
index a8f3add..0000000
--- a/packets/messages/types/NetSignOnState.go
+++ /dev/null
@@ -1,27 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type NetSignOnState struct {
8 SignonState int8
9 SpawnCount uint32
10 NumServerPlayers uint32
11 PlayersNetworkIds []byte
12 MapNameLength uint32
13 MapName string
14}
15
16func ParseNetSignOnState(reader *bitreader.ReaderType) NetSignOnState {
17 netsignonstate := NetSignOnState{
18 SignonState: int8(reader.TryReadInt8()),
19 SpawnCount: reader.TryReadInt32(),
20 NumServerPlayers: reader.TryReadInt32(),
21 }
22 length := reader.TryReadInt32()
23 netsignonstate.PlayersNetworkIds = reader.TryReadBytesToSlice(int(length))
24 netsignonstate.MapNameLength = reader.TryReadInt32()
25 netsignonstate.MapName = reader.TryReadStringLen(int(netsignonstate.MapNameLength))
26 return netsignonstate
27}
diff --git a/packets/messages/types/NetTick.go b/packets/messages/types/NetTick.go
deleted file mode 100644
index 9dae14b..0000000
--- a/packets/messages/types/NetTick.go
+++ /dev/null
@@ -1,17 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type NetTick struct {
6 Tick uint32
7 HostFrameTime float32
8 HostFrameTimeStdDeviation float32
9}
10
11func ParseNetTick(reader *bitreader.ReaderType) NetTick {
12 return NetTick{
13 Tick: reader.TryReadInt32(),
14 HostFrameTime: float32(reader.TryReadInt16()) / 1e5,
15 HostFrameTimeStdDeviation: float32(reader.TryReadInt16()) / 1e5,
16 }
17}
diff --git a/packets/messages/types/SvcClassInfo.go b/packets/messages/types/SvcClassInfo.go
deleted file mode 100644
index df17bfc..0000000
--- a/packets/messages/types/SvcClassInfo.go
+++ /dev/null
@@ -1,47 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type SvcClassInfo struct {
8 CreateOnClient bool
9 ServerClasses []ServerClass
10}
11
12type ServerClass struct {
13 ClassId int32
14 ClassName string
15 DataTableName string
16}
17
18func ParseSvcClassInfo(reader *bitreader.ReaderType) SvcClassInfo {
19 length := reader.TryReadInt16()
20 createonclient := reader.TryReadBool()
21 var serverclasses []ServerClass
22 if !createonclient {
23 serverclasses := make([]ServerClass, length)
24 for i := 0; i < int(length); i++ {
25 id, err := reader.ReadBits(HighestBitIndex(uint(length)) + 1)
26 if err != nil {
27 panic(err)
28 }
29 serverclasses[i] = ServerClass{
30 ClassId: int32(id),
31 ClassName: reader.TryReadString(),
32 DataTableName: reader.TryReadString(),
33 }
34 }
35 }
36 return SvcClassInfo{
37 CreateOnClient: createonclient,
38 ServerClasses: serverclasses,
39 }
40}
41
42func HighestBitIndex(i uint) int {
43 var j int
44 for j = 31; j >= 0 && (i&(1<<j)) == 0; j-- {
45 }
46 return j
47}
diff --git a/packets/messages/types/SvcCmdKeyValues.go b/packets/messages/types/SvcCmdKeyValues.go
deleted file mode 100644
index 06504a2..0000000
--- a/packets/messages/types/SvcCmdKeyValues.go
+++ /dev/null
@@ -1,14 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcCmdKeyValues struct {
6 Data []byte
7}
8
9func ParseSvcCmdKeyValues(reader *bitreader.ReaderType) SvcCmdKeyValues {
10 length := reader.TryReadInt32()
11 return SvcCmdKeyValues{
12 Data: reader.TryReadBytesToSlice(int(length)),
13 }
14}
diff --git a/packets/messages/types/SvcCreateStringTable.go b/packets/messages/types/SvcCreateStringTable.go
deleted file mode 100644
index 72ab1a7..0000000
--- a/packets/messages/types/SvcCreateStringTable.go
+++ /dev/null
@@ -1,34 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type SvcCreateStringTable struct {
8 Name string
9 MaxEntries uint16
10 NumEntries uint8
11 UserDataFixedSize bool
12 UserDataSize uint16
13 UserDataSizeBits uint8
14 Flags uint8
15 StringData []byte
16}
17
18func ParseSvcCreateStringTable(reader *bitreader.ReaderType) SvcCreateStringTable {
19 svccreatestringtable := SvcCreateStringTable{
20 Name: reader.TryReadString(),
21 MaxEntries: reader.TryReadInt16(),
22 }
23 svccreatestringtable.NumEntries = uint8(reader.TryReadBits(HighestBitIndex(uint(svccreatestringtable.MaxEntries)) + 1))
24 length := reader.TryReadBits(20)
25 svccreatestringtable.UserDataFixedSize = reader.TryReadBool()
26 if svccreatestringtable.UserDataFixedSize {
27 svccreatestringtable.UserDataSize = uint16(reader.TryReadBits(12))
28 svccreatestringtable.UserDataSizeBits = uint8(reader.TryReadBits(4))
29 }
30 svccreatestringtable.Flags = uint8(reader.TryReadBits(2))
31 svccreatestringtable.StringData = reader.TryReadBitsToSlice(int(length))
32 return svccreatestringtable
33
34}
diff --git a/packets/messages/types/SvcEntityMessage.go b/packets/messages/types/SvcEntityMessage.go
deleted file mode 100644
index f4fb518..0000000
--- a/packets/messages/types/SvcEntityMessage.go
+++ /dev/null
@@ -1,20 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcEntityMessage struct {
6 EntityIndex int16
7 ClassId int16
8 Data []byte
9}
10
11func ParseSvcEntityMessage(reader *bitreader.ReaderType) SvcEntityMessage {
12 entityindex := reader.TryReadBits(11)
13 classid := reader.TryReadBits(9)
14 length := reader.TryReadBits(11)
15 return SvcEntityMessage{
16 EntityIndex: int16(entityindex),
17 ClassId: int16(classid),
18 Data: reader.TryReadBytesToSlice(int(length / 8)),
19 }
20}
diff --git a/packets/messages/types/SvcFixAngle.go b/packets/messages/types/SvcFixAngle.go
deleted file mode 100644
index d98dedd..0000000
--- a/packets/messages/types/SvcFixAngle.go
+++ /dev/null
@@ -1,21 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcFixAngle struct {
6 Relative bool
7 Angle []int16
8}
9
10func ParseSvcFixAngle(reader *bitreader.ReaderType) SvcFixAngle {
11 relative := reader.TryReadBool()
12 angles := []int16{
13 int16(reader.TryReadInt16()),
14 int16(reader.TryReadInt16()),
15 int16(reader.TryReadInt16()),
16 }
17 return SvcFixAngle{
18 Relative: relative,
19 Angle: angles,
20 }
21}
diff --git a/packets/messages/types/SvcGameEvent.go b/packets/messages/types/SvcGameEvent.go
deleted file mode 100644
index 1d6b0ea..0000000
--- a/packets/messages/types/SvcGameEvent.go
+++ /dev/null
@@ -1,15 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type SvcGameEvent struct {
8 Data []byte
9}
10
11func ParseSvcGameEvent(reader *bitreader.ReaderType) SvcGameEvent {
12 length := reader.TryReadBits(11)
13 reader.SkipBits(int(length))
14 return SvcGameEvent{} // TODO: Parse SvcGameEvent
15}
diff --git a/packets/messages/types/SvcGameEventList.go b/packets/messages/types/SvcGameEventList.go
deleted file mode 100644
index fea0be4..0000000
--- a/packets/messages/types/SvcGameEventList.go
+++ /dev/null
@@ -1,17 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcGameEventList struct {
6 Events int16
7 Data []byte
8}
9
10func ParseSvcGameEventList(reader *bitreader.ReaderType) SvcGameEventList {
11 events := reader.TryReadBits(9)
12 length := reader.TryReadBits(20)
13 return SvcGameEventList{
14 Events: int16(events),
15 Data: reader.TryReadBitsToSlice(int(length)),
16 }
17}
diff --git a/packets/messages/types/SvcMenu.go b/packets/messages/types/SvcMenu.go
deleted file mode 100644
index 312115a..0000000
--- a/packets/messages/types/SvcMenu.go
+++ /dev/null
@@ -1,17 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcMenu struct {
6 MenuType int16
7 Data []byte
8}
9
10func ParseSvcMenu(reader *bitreader.ReaderType) SvcMenu {
11 menutype := reader.TryReadInt16()
12 length := reader.TryReadInt32()
13 return SvcMenu{
14 MenuType: int16(menutype),
15 Data: reader.TryReadBytesToSlice(int(length / 8)),
16 }
17}
diff --git a/packets/messages/types/SvcPacketEntities.go b/packets/messages/types/SvcPacketEntities.go
deleted file mode 100644
index 9d8a8b0..0000000
--- a/packets/messages/types/SvcPacketEntities.go
+++ /dev/null
@@ -1,39 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type SvcPacketEntities struct {
8 MaxEntries uint16
9 IsDelta bool
10 DeltaFrom int32
11 BaseLine bool
12 UpdatedEntries uint16
13 UpdateBaseline bool
14 Data []byte
15}
16
17func ParseSvcPacketEntities(reader *bitreader.ReaderType) SvcPacketEntities {
18 maxentries := reader.TryReadBits(11)
19 isdelta := reader.TryReadBool()
20 var deltafrom int32
21 if isdelta {
22 deltafrom = int32(reader.TryReadInt32())
23 } else {
24 deltafrom = -1
25 }
26 baseline := reader.TryReadBool()
27 updatedentries := reader.TryReadBits(11)
28 length := reader.TryReadBits(20)
29 updatebaseline := reader.TryReadBool()
30 return SvcPacketEntities{
31 MaxEntries: uint16(maxentries),
32 IsDelta: isdelta,
33 DeltaFrom: deltafrom,
34 BaseLine: baseline,
35 UpdatedEntries: uint16(updatedentries),
36 UpdateBaseline: updatebaseline,
37 Data: reader.TryReadBitsToSlice(int(length)),
38 }
39}
diff --git a/packets/messages/types/SvcPaintmapData.go b/packets/messages/types/SvcPaintmapData.go
deleted file mode 100644
index f3bd1a3..0000000
--- a/packets/messages/types/SvcPaintmapData.go
+++ /dev/null
@@ -1,14 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcPaintmapData struct {
6 Data []byte
7}
8
9func ParseSvcPaintmapData(reader *bitreader.ReaderType) SvcPaintmapData {
10 length := reader.TryReadInt32()
11 return SvcPaintmapData{
12 Data: reader.TryReadBytesToSlice(int(length / 8)),
13 }
14}
diff --git a/packets/messages/types/SvcSendTable.go b/packets/messages/types/SvcSendTable.go
deleted file mode 100644
index f76aadb..0000000
--- a/packets/messages/types/SvcSendTable.go
+++ /dev/null
@@ -1,17 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcSendTable struct {
6 NeedsDecoder bool
7 Length uint8
8 Props int32
9}
10
11func ParseSvcSendTable(reader *bitreader.ReaderType) SvcSendTable {
12 return SvcSendTable{
13 NeedsDecoder: reader.TryReadBool(),
14 Length: reader.TryReadInt8(),
15 }
16 // No one cares about SvcSendTable
17}
diff --git a/packets/messages/types/SvcServerInfo.go b/packets/messages/types/SvcServerInfo.go
deleted file mode 100644
index 9d2648b..0000000
--- a/packets/messages/types/SvcServerInfo.go
+++ /dev/null
@@ -1,43 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcServerInfo struct {
6 Protocol uint16
7 ServerCount uint32
8 IsHltv bool
9 IsDedicated bool
10 ClientCrc int32
11 MaxClasses uint16
12 MapCrc uint32
13 PlayerSlot uint8
14 MaxClients uint8
15 Unk uint32
16 TickInterval float32
17 COs byte
18 GameDir string
19 MapName string
20 SkyName string
21 HostName string
22}
23
24func ParseSvcServerInfo(reader *bitreader.ReaderType) SvcServerInfo {
25 return SvcServerInfo{
26 Protocol: reader.TryReadInt16(),
27 ServerCount: reader.TryReadInt32(),
28 IsHltv: reader.TryReadBool(),
29 IsDedicated: reader.TryReadBool(),
30 ClientCrc: int32(reader.TryReadInt32()),
31 MaxClasses: reader.TryReadInt16(),
32 MapCrc: reader.TryReadInt32(),
33 PlayerSlot: reader.TryReadInt8(),
34 MaxClients: reader.TryReadInt8(),
35 Unk: reader.TryReadInt32(),
36 TickInterval: reader.TryReadFloat32(),
37 COs: reader.TryReadInt8(),
38 GameDir: reader.TryReadString(),
39 MapName: reader.TryReadString(),
40 SkyName: reader.TryReadString(),
41 HostName: reader.TryReadString(),
42 }
43}
diff --git a/packets/messages/types/SvcSounds.go b/packets/messages/types/SvcSounds.go
deleted file mode 100644
index 2dc7974..0000000
--- a/packets/messages/types/SvcSounds.go
+++ /dev/null
@@ -1,30 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcSounds struct {
6 ReliableSound bool
7 Size int8
8 Data []byte
9}
10
11func ParseSvcSounds(reader *bitreader.ReaderType) SvcSounds {
12 reliablesound := reader.TryReadBool()
13 var size int8
14 var length int16
15 if reliablesound {
16 size = 1
17 } else {
18 size = int8(reader.TryReadInt8())
19 }
20 if reliablesound {
21 length = int16(reader.TryReadInt8())
22 } else {
23 length = int16(reader.TryReadInt16())
24 }
25 return SvcSounds{
26 ReliableSound: reliablesound,
27 Size: size,
28 Data: reader.TryReadBitsToSlice(int(length)),
29 }
30}
diff --git a/packets/messages/types/SvcSplitScreen.go b/packets/messages/types/SvcSplitScreen.go
deleted file mode 100644
index 6727558..0000000
--- a/packets/messages/types/SvcSplitScreen.go
+++ /dev/null
@@ -1,17 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcSplitScreen struct {
6 Unk bool
7 Data []byte
8}
9
10func ParseSvcSplitScreen(reader *bitreader.ReaderType) SvcSplitScreen {
11 unk := reader.TryReadBool()
12 length := reader.TryReadBits(11)
13 return SvcSplitScreen{
14 Unk: unk,
15 Data: reader.TryReadBytesToSlice(int(length / 8)),
16 }
17}
diff --git a/packets/messages/types/SvcTempEntities.go b/packets/messages/types/SvcTempEntities.go
deleted file mode 100644
index 3bfae0c..0000000
--- a/packets/messages/types/SvcTempEntities.go
+++ /dev/null
@@ -1,20 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type SvcTempEntities struct {
8 NumEntries uint8
9 Data []byte
10}
11
12func ParseSvcTempEntities(reader *bitreader.ReaderType) SvcTempEntities {
13 numentries := reader.TryReadInt8()
14 length := reader.TryReadBits(17)
15 //reader.SkipBits(int(length)) // TODO: Read data properly
16 return SvcTempEntities{
17 NumEntries: numentries,
18 Data: reader.TryReadBitsToSlice(int(length)),
19 }
20}
diff --git a/packets/messages/types/SvcUpdateStringTable.go b/packets/messages/types/SvcUpdateStringTable.go
deleted file mode 100644
index 9f178a5..0000000
--- a/packets/messages/types/SvcUpdateStringTable.go
+++ /dev/null
@@ -1,21 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcUpdateStringTable struct {
6 TableId int8
7 NumChangedEntries int16
8 Data []byte
9}
10
11func ParseSvcUpdateStringTable(reader *bitreader.ReaderType) SvcUpdateStringTable {
12 svcupdatestringtable := SvcUpdateStringTable{
13 TableId: int8(reader.TryReadBits(5)),
14 }
15 if reader.TryReadBool() {
16 svcupdatestringtable.NumChangedEntries = int16(reader.TryReadInt16())
17 }
18 length := reader.TryReadBits(20)
19 svcupdatestringtable.Data = reader.TryReadBitsToSlice(int(length))
20 return svcupdatestringtable
21}
diff --git a/packets/messages/types/SvcUserMessage.go b/packets/messages/types/SvcUserMessage.go
deleted file mode 100644
index c7b0566..0000000
--- a/packets/messages/types/SvcUserMessage.go
+++ /dev/null
@@ -1,19 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type SvcUserMessage struct {
8 MsgType uint8
9 Data []byte
10}
11
12func ParseSvcUserMessage(reader *bitreader.ReaderType) SvcUserMessage {
13 msgtype := reader.TryReadInt8()
14 length := reader.TryReadBits(12)
15 return SvcUserMessage{
16 MsgType: msgtype,
17 Data: reader.TryReadBitsToSlice(int(length)),
18 }
19}
diff --git a/packets/messages/types/SvcVoiceData.go b/packets/messages/types/SvcVoiceData.go
deleted file mode 100644
index f99db38..0000000
--- a/packets/messages/types/SvcVoiceData.go
+++ /dev/null
@@ -1,19 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcVoiceData struct {
6 Client int8
7 Proximity int8
8 Data []byte
9}
10
11func ParseSvcVoiceData(reader *bitreader.ReaderType) SvcVoiceData {
12 svcvoicedata := SvcVoiceData{
13 Client: int8(reader.TryReadInt8()),
14 Proximity: int8(reader.TryReadInt8()),
15 }
16 length := reader.TryReadInt16()
17 svcvoicedata.Data = reader.TryReadBytesToSlice(int(length / 8))
18 return svcvoicedata
19}
diff --git a/packets/messages/types/NetDisconnect.go b/pkg/messages/types/netDisconnect.go
index 8b65568..69d4a67 100644
--- a/packets/messages/types/NetDisconnect.go
+++ b/pkg/messages/types/netDisconnect.go
@@ -1,4 +1,4 @@
1package types 1package messages
2 2
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
@@ -7,5 +7,7 @@ type NetDisconnect struct {
7} 7}
8 8
9func ParseNetDisconnect(reader *bitreader.ReaderType) NetDisconnect { 9func ParseNetDisconnect(reader *bitreader.ReaderType) NetDisconnect {
10 return NetDisconnect{Text: reader.TryReadString()} 10 return NetDisconnect{
11 Text: reader.TryReadString(),
12 }
11} 13}
diff --git a/packets/messages/types/NetFile.go b/pkg/messages/types/netFile.go
index c65873d..a41a0cf 100644
--- a/packets/messages/types/NetFile.go
+++ b/pkg/messages/types/netFile.go
@@ -1,16 +1,16 @@
1package types 1package messages
2 2
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type NetFile struct { 5type NetFile struct {
6 TransferId uint32 6 TransferId int32
7 FileName string 7 FileName string
8 FileRequested bool 8 FileRequested bool
9} 9}
10 10
11func ParseNetFile(reader *bitreader.ReaderType) NetFile { 11func ParseNetFile(reader *bitreader.ReaderType) NetFile {
12 return NetFile{ 12 return NetFile{
13 TransferId: reader.TryReadInt32(), 13 TransferId: int32(reader.TryReadBits(32)),
14 FileName: reader.TryReadString(), 14 FileName: reader.TryReadString(),
15 FileRequested: reader.TryReadBool(), 15 FileRequested: reader.TryReadBool(),
16 } 16 }
diff --git a/packets/messages/types/NetSetConVar.go b/pkg/messages/types/netSetConVar.go
index eca05e0..08042ae 100644
--- a/packets/messages/types/NetSetConVar.go
+++ b/pkg/messages/types/netSetConVar.go
@@ -1,26 +1,29 @@
1package types 1package messages
2 2
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type NetSetConVar struct { 5type NetSetConVar struct {
6 ConVars []ConVar 6 Length int8
7 ConVars []conVar
7} 8}
8 9
9type ConVar struct { 10type conVar struct {
10 Name string 11 Name string
11 Value string 12 Value string
12} 13}
13 14
14func ParseNetSetConVar(reader *bitreader.ReaderType) NetSetConVar { 15func ParseNetSetConVar(reader *bitreader.ReaderType) NetSetConVar {
15 length := reader.TryReadInt8() 16 length := reader.TryReadBits(8)
16 convars := make([]ConVar, length) 17 convars := []conVar{}
17 for i := 0; i < int(length); i++ { 18 for count := 0; count < int(length); count++ {
18 convars[i] = ConVar{ 19 convar := conVar{
19 Name: reader.TryReadString(), 20 Name: reader.TryReadString(),
20 Value: reader.TryReadString(), 21 Value: reader.TryReadString(),
21 } 22 }
23 convars = append(convars, convar)
22 } 24 }
23 return NetSetConVar{ 25 return NetSetConVar{
26 Length: int8(length),
24 ConVars: convars, 27 ConVars: convars,
25 } 28 }
26} 29}
diff --git a/packets/messages/types/NetSplitScreenUser.go b/pkg/messages/types/netSplitScreenUser.go
index d4d04b5..65e85f3 100644
--- a/packets/messages/types/NetSplitScreenUser.go
+++ b/pkg/messages/types/netSplitScreenUser.go
@@ -1,13 +1,13 @@
1package types 1package messages
2 2
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
5type NetSplitScreenUser struct { 5type NetSplitScreenUser struct {
6 PlayerSlot bool 6 Unknown bool
7} 7}
8 8
9func ParseNetSplitScreenUser(reader *bitreader.ReaderType) NetSplitScreenUser { 9func ParseNetSplitScreenUser(reader *bitreader.ReaderType) NetSplitScreenUser {
10 return NetSplitScreenUser{ 10 return NetSplitScreenUser{
11 PlayerSlot: reader.TryReadBool(), 11 Unknown: reader.TryReadBool(),
12 } 12 }
13} 13}
diff --git a/packets/messages/types/NetStringCmd.go b/pkg/messages/types/netStringCmd.go
index 1ee9f67..158658e 100644
--- a/packets/messages/types/NetStringCmd.go
+++ b/pkg/messages/types/netStringCmd.go
@@ -1,4 +1,4 @@
1package types 1package messages
2 2
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
diff --git a/packets/messages/types/SvcCrosshairAngle.go b/pkg/messages/types/svcCrosshairAngle.go
index 6584426..cf18212 100644
--- a/packets/messages/types/SvcCrosshairAngle.go
+++ b/pkg/messages/types/svcCrosshairAngle.go
@@ -1,4 +1,4 @@
1package types 1package messages
2 2
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
@@ -8,10 +8,6 @@ type SvcCrosshairAngle struct {
8 8
9func ParseSvcCrosshairAngle(reader *bitreader.ReaderType) SvcCrosshairAngle { 9func ParseSvcCrosshairAngle(reader *bitreader.ReaderType) SvcCrosshairAngle {
10 return SvcCrosshairAngle{ 10 return SvcCrosshairAngle{
11 Angle: []int16{ 11 Angle: []int16{int16(reader.TryReadBits(16)), int16(reader.TryReadBits(16)), int16(reader.TryReadBits(16))},
12 int16(reader.TryReadInt16()),
13 int16(reader.TryReadInt16()),
14 int16(reader.TryReadInt16()),
15 },
16 } 12 }
17} 13}
diff --git a/packets/messages/types/SvcGetCvarValue.go b/pkg/messages/types/svcGetCvarValue.go
index 2925da5..aef5c8e 100644
--- a/packets/messages/types/SvcGetCvarValue.go
+++ b/pkg/messages/types/svcGetCvarValue.go
@@ -1,4 +1,4 @@
1package types 1package messages
2 2
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
@@ -8,8 +8,9 @@ type SvcGetCvarValue struct {
8} 8}
9 9
10func ParseSvcGetCvarValue(reader *bitreader.ReaderType) SvcGetCvarValue { 10func ParseSvcGetCvarValue(reader *bitreader.ReaderType) SvcGetCvarValue {
11 return SvcGetCvarValue{ 11 svcGetCvarValue := SvcGetCvarValue{
12 Cookie: reader.TryReadStringLen(32), 12 Cookie: reader.TryReadStringLen(4),
13 CvarName: reader.TryReadString(), 13 CvarName: reader.TryReadString(),
14 } 14 }
15 return svcGetCvarValue
15} 16}
diff --git a/packets/messages/types/SvcPrefetch.go b/pkg/messages/types/svcPrefetch.go
index b277252..549f926 100644
--- a/packets/messages/types/SvcPrefetch.go
+++ b/pkg/messages/types/svcPrefetch.go
@@ -1,4 +1,4 @@
1package types 1package messages
2 2
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
diff --git a/packets/messages/types/SvcPrint.go b/pkg/messages/types/svcPrint.go
index c6d91ac..8aff927 100644
--- a/packets/messages/types/SvcPrint.go
+++ b/pkg/messages/types/svcPrint.go
@@ -1,4 +1,4 @@
1package types 1package messages
2 2
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
diff --git a/packets/messages/types/SvcSetPause.go b/pkg/messages/types/svcSetPause.go
index c71485c..94303b7 100644
--- a/packets/messages/types/SvcSetPause.go
+++ b/pkg/messages/types/svcSetPause.go
@@ -1,13 +1,13 @@
1package types 1package messages
2 2
3import ( 3import "github.com/pektezol/bitreader"
4 "github.com/pektezol/bitreader"
5)
6 4
7type SvcSetPause struct { 5type SvcSetPause struct {
8 Paused bool 6 Paused bool
9} 7}
10 8
11func ParseSvcSetPause(reader *bitreader.ReaderType) SvcSetPause { 9func ParseSvcSetPause(reader *bitreader.ReaderType) SvcSetPause {
12 return SvcSetPause{Paused: reader.TryReadBool()} 10 return SvcSetPause{
11 Paused: reader.TryReadBool(),
12 }
13} 13}
diff --git a/packets/messages/types/SvcSetView.go b/pkg/messages/types/svcSetView.go
index 5507eae..70d1e2b 100644
--- a/packets/messages/types/SvcSetView.go
+++ b/pkg/messages/types/svcSetView.go
@@ -1,4 +1,4 @@
1package types 1package messages
2 2
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
diff --git a/packets/messages/types/SvcVoiceInit.go b/pkg/messages/types/svcVoiceInit.go
index 3e18a7b..4c95aab 100644
--- a/packets/messages/types/SvcVoiceInit.go
+++ b/pkg/messages/types/svcVoiceInit.go
@@ -1,4 +1,4 @@
1package types 1package messages
2 2
3import "github.com/pektezol/bitreader" 3import "github.com/pektezol/bitreader"
4 4
@@ -9,12 +9,12 @@ type SvcVoiceInit struct {
9} 9}
10 10
11func ParseSvcVoiceInit(reader *bitreader.ReaderType) SvcVoiceInit { 11func ParseSvcVoiceInit(reader *bitreader.ReaderType) SvcVoiceInit {
12 svcvoiceinit := SvcVoiceInit{ 12 svcVoiceInit := SvcVoiceInit{
13 Codec: reader.TryReadString(), 13 Codec: reader.TryReadString(),
14 Quality: reader.TryReadInt8(), 14 Quality: uint8(reader.TryReadBits(8)),
15 } 15 }
16 if svcvoiceinit.Quality == 255 { 16 if svcVoiceInit.Quality == 0b11111111 {
17 svcvoiceinit.Unk = reader.TryReadFloat32() 17 svcVoiceInit.Unk = reader.TryReadFloat32()
18 } 18 }
19 return svcvoiceinit 19 return svcVoiceInit
20} 20}