diff options
Diffstat (limited to '')
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "bytes" | ||
| 5 | |||
| 6 | "github.com/pektezol/bitreader" | ||
| 7 | "github.com/pektezol/demoparser/packets/messages/types" | ||
| 8 | ) | ||
| 9 | |||
| 10 | func 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 | |||
| 92 | type 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | type 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type NetSignOnState struct { | ||
| 8 | SignonState int8 | ||
| 9 | SpawnCount uint32 | ||
| 10 | NumServerPlayers uint32 | ||
| 11 | PlayersNetworkIds []byte | ||
| 12 | MapNameLength uint32 | ||
| 13 | MapName string | ||
| 14 | } | ||
| 15 | |||
| 16 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import "github.com/pektezol/bitreader" | ||
| 4 | |||
| 5 | type NetTick struct { | ||
| 6 | Tick uint32 | ||
| 7 | HostFrameTime float32 | ||
| 8 | HostFrameTimeStdDeviation float32 | ||
| 9 | } | ||
| 10 | |||
| 11 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcClassInfo struct { | ||
| 8 | CreateOnClient bool | ||
| 9 | ServerClasses []ServerClass | ||
| 10 | } | ||
| 11 | |||
| 12 | type ServerClass struct { | ||
| 13 | ClassId int32 | ||
| 14 | ClassName string | ||
| 15 | DataTableName string | ||
| 16 | } | ||
| 17 | |||
| 18 | func 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 | |||
| 42 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import "github.com/pektezol/bitreader" | ||
| 4 | |||
| 5 | type SvcCmdKeyValues struct { | ||
| 6 | Data []byte | ||
| 7 | } | ||
| 8 | |||
| 9 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type 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 | |||
| 18 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import "github.com/pektezol/bitreader" | ||
| 4 | |||
| 5 | type SvcEntityMessage struct { | ||
| 6 | EntityIndex int16 | ||
| 7 | ClassId int16 | ||
| 8 | Data []byte | ||
| 9 | } | ||
| 10 | |||
| 11 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import "github.com/pektezol/bitreader" | ||
| 4 | |||
| 5 | type SvcFixAngle struct { | ||
| 6 | Relative bool | ||
| 7 | Angle []int16 | ||
| 8 | } | ||
| 9 | |||
| 10 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcGameEvent struct { | ||
| 8 | Data []byte | ||
| 9 | } | ||
| 10 | |||
| 11 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import "github.com/pektezol/bitreader" | ||
| 4 | |||
| 5 | type SvcGameEventList struct { | ||
| 6 | Events int16 | ||
| 7 | Data []byte | ||
| 8 | } | ||
| 9 | |||
| 10 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import "github.com/pektezol/bitreader" | ||
| 4 | |||
| 5 | type SvcMenu struct { | ||
| 6 | MenuType int16 | ||
| 7 | Data []byte | ||
| 8 | } | ||
| 9 | |||
| 10 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type 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 | |||
| 17 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import "github.com/pektezol/bitreader" | ||
| 4 | |||
| 5 | type SvcPaintmapData struct { | ||
| 6 | Data []byte | ||
| 7 | } | ||
| 8 | |||
| 9 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import "github.com/pektezol/bitreader" | ||
| 4 | |||
| 5 | type SvcSendTable struct { | ||
| 6 | NeedsDecoder bool | ||
| 7 | Length uint8 | ||
| 8 | Props int32 | ||
| 9 | } | ||
| 10 | |||
| 11 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import "github.com/pektezol/bitreader" | ||
| 4 | |||
| 5 | type 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 | |||
| 24 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import "github.com/pektezol/bitreader" | ||
| 4 | |||
| 5 | type SvcSounds struct { | ||
| 6 | ReliableSound bool | ||
| 7 | Size int8 | ||
| 8 | Data []byte | ||
| 9 | } | ||
| 10 | |||
| 11 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import "github.com/pektezol/bitreader" | ||
| 4 | |||
| 5 | type SvcSplitScreen struct { | ||
| 6 | Unk bool | ||
| 7 | Data []byte | ||
| 8 | } | ||
| 9 | |||
| 10 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcTempEntities struct { | ||
| 8 | NumEntries uint8 | ||
| 9 | Data []byte | ||
| 10 | } | ||
| 11 | |||
| 12 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import "github.com/pektezol/bitreader" | ||
| 4 | |||
| 5 | type SvcUpdateStringTable struct { | ||
| 6 | TableId int8 | ||
| 7 | NumChangedEntries int16 | ||
| 8 | Data []byte | ||
| 9 | } | ||
| 10 | |||
| 11 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcUserMessage struct { | ||
| 8 | MsgType uint8 | ||
| 9 | Data []byte | ||
| 10 | } | ||
| 11 | |||
| 12 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import "github.com/pektezol/bitreader" | ||
| 4 | |||
| 5 | type SvcVoiceData struct { | ||
| 6 | Client int8 | ||
| 7 | Proximity int8 | ||
| 8 | Data []byte | ||
| 9 | } | ||
| 10 | |||
| 11 | func 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 @@ | |||
| 1 | package types | 1 | package messages |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| @@ -7,5 +7,7 @@ type NetDisconnect struct { | |||
| 7 | } | 7 | } |
| 8 | 8 | ||
| 9 | func ParseNetDisconnect(reader *bitreader.ReaderType) NetDisconnect { | 9 | func 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 @@ | |||
| 1 | package types | 1 | package messages |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type NetFile struct { | 5 | type NetFile struct { |
| 6 | TransferId uint32 | 6 | TransferId int32 |
| 7 | FileName string | 7 | FileName string |
| 8 | FileRequested bool | 8 | FileRequested bool |
| 9 | } | 9 | } |
| 10 | 10 | ||
| 11 | func ParseNetFile(reader *bitreader.ReaderType) NetFile { | 11 | func 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 @@ | |||
| 1 | package types | 1 | package messages |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type NetSetConVar struct { | 5 | type NetSetConVar struct { |
| 6 | ConVars []ConVar | 6 | Length int8 |
| 7 | ConVars []conVar | ||
| 7 | } | 8 | } |
| 8 | 9 | ||
| 9 | type ConVar struct { | 10 | type conVar struct { |
| 10 | Name string | 11 | Name string |
| 11 | Value string | 12 | Value string |
| 12 | } | 13 | } |
| 13 | 14 | ||
| 14 | func ParseNetSetConVar(reader *bitreader.ReaderType) NetSetConVar { | 15 | func 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 @@ | |||
| 1 | package types | 1 | package messages |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| 5 | type NetSplitScreenUser struct { | 5 | type NetSplitScreenUser struct { |
| 6 | PlayerSlot bool | 6 | Unknown bool |
| 7 | } | 7 | } |
| 8 | 8 | ||
| 9 | func ParseNetSplitScreenUser(reader *bitreader.ReaderType) NetSplitScreenUser { | 9 | func 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 @@ | |||
| 1 | package types | 1 | package messages |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "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 @@ | |||
| 1 | package types | 1 | package messages |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| @@ -8,10 +8,6 @@ type SvcCrosshairAngle struct { | |||
| 8 | 8 | ||
| 9 | func ParseSvcCrosshairAngle(reader *bitreader.ReaderType) SvcCrosshairAngle { | 9 | func 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 @@ | |||
| 1 | package types | 1 | package messages |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| @@ -8,8 +8,9 @@ type SvcGetCvarValue struct { | |||
| 8 | } | 8 | } |
| 9 | 9 | ||
| 10 | func ParseSvcGetCvarValue(reader *bitreader.ReaderType) SvcGetCvarValue { | 10 | func 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 @@ | |||
| 1 | package types | 1 | package messages |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "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 @@ | |||
| 1 | package types | 1 | package messages |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "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 @@ | |||
| 1 | package types | 1 | package messages |
| 2 | 2 | ||
| 3 | import ( | 3 | import "github.com/pektezol/bitreader" |
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | 4 | ||
| 7 | type SvcSetPause struct { | 5 | type SvcSetPause struct { |
| 8 | Paused bool | 6 | Paused bool |
| 9 | } | 7 | } |
| 10 | 8 | ||
| 11 | func ParseSvcSetPause(reader *bitreader.ReaderType) SvcSetPause { | 9 | func 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 @@ | |||
| 1 | package types | 1 | package messages |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "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 @@ | |||
| 1 | package types | 1 | package messages |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import "github.com/pektezol/bitreader" |
| 4 | 4 | ||
| @@ -9,12 +9,12 @@ type SvcVoiceInit struct { | |||
| 9 | } | 9 | } |
| 10 | 10 | ||
| 11 | func ParseSvcVoiceInit(reader *bitreader.ReaderType) SvcVoiceInit { | 11 | func 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 | } |