diff options
| -rw-r--r-- | go.mod | 2 | ||||
| -rw-r--r-- | go.sum | 10 | ||||
| -rw-r--r-- | packets/classes/datatable.go | 2 | ||||
| -rw-r--r-- | packets/messages/message.go | 12 | ||||
| -rw-r--r-- | packets/messages/types/SvcCreateStringTable.go | 9 | ||||
| -rw-r--r-- | packets/messages/types/SvcGameEvent.go | 15 | ||||
| -rw-r--r-- | packets/messages/types/SvcGameEventList.go | 3 | ||||
| -rw-r--r-- | packets/messages/types/SvcPacketEntities.go | 5 | ||||
| -rw-r--r-- | packets/messages/types/SvcSounds.go | 4 | ||||
| -rw-r--r-- | packets/messages/types/SvcTempEntities.go | 4 | ||||
| -rw-r--r-- | packets/messages/types/SvcUpdateStringTable.go | 3 | ||||
| -rw-r--r-- | packets/messages/types/SvcUserMessage.go | 3 | ||||
| -rw-r--r-- | packets/packet.go | 43 | ||||
| -rw-r--r-- | packets/types.go | 7 |
14 files changed, 54 insertions, 68 deletions
| @@ -2,4 +2,4 @@ module github.com/pektezol/demoparser | |||
| 2 | 2 | ||
| 3 | go 1.19 | 3 | go 1.19 |
| 4 | 4 | ||
| 5 | require github.com/pektezol/bitreader v1.2.5 | 5 | require github.com/pektezol/bitreader v1.2.9 |
| @@ -1,8 +1,2 @@ | |||
| 1 | github.com/pektezol/bitreader v1.2.2 h1:NtRAoG48Wbnu/A300lGsQuo0ajLHKJXat884esWMrLo= | 1 | github.com/pektezol/bitreader v1.2.9 h1:DnCe5vDt6vC9zRVaeX47XjlcgK1i0jDPhYd8cimyPvo= |
| 2 | github.com/pektezol/bitreader v1.2.2/go.mod h1:RKAUiA//jCPJzO10P+VSkBq4wfY38TaNjpCjQ+DmbcQ= | 2 | github.com/pektezol/bitreader v1.2.9/go.mod h1:RKAUiA//jCPJzO10P+VSkBq4wfY38TaNjpCjQ+DmbcQ= |
| 3 | github.com/pektezol/bitreader v1.2.3 h1:NeE3H+5AMeDXNN19DyaE/U3nmNgSeq3W5MfZn+/SZZQ= | ||
| 4 | github.com/pektezol/bitreader v1.2.3/go.mod h1:RKAUiA//jCPJzO10P+VSkBq4wfY38TaNjpCjQ+DmbcQ= | ||
| 5 | github.com/pektezol/bitreader v1.2.4 h1:davStm+5TMY4rpXwNpXA1JYN3sZ39+XV3tke2y74TxQ= | ||
| 6 | github.com/pektezol/bitreader v1.2.4/go.mod h1:RKAUiA//jCPJzO10P+VSkBq4wfY38TaNjpCjQ+DmbcQ= | ||
| 7 | github.com/pektezol/bitreader v1.2.5 h1:mQA94kFvw4ViSg3drGxWhtIh09Zvr7dwmJXI8KoLEkk= | ||
| 8 | github.com/pektezol/bitreader v1.2.5/go.mod h1:RKAUiA//jCPJzO10P+VSkBq4wfY38TaNjpCjQ+DmbcQ= | ||
diff --git a/packets/classes/datatable.go b/packets/classes/datatable.go index 07cbd00..405dae6 100644 --- a/packets/classes/datatable.go +++ b/packets/classes/datatable.go | |||
| @@ -30,8 +30,6 @@ type ServerClassInfo struct { | |||
| 30 | func ParseDataTable(data []byte) DataTable { | 30 | func ParseDataTable(data []byte) DataTable { |
| 31 | reader := bitreader.Reader(bytes.NewReader(data), true) | 31 | reader := bitreader.Reader(bytes.NewReader(data), true) |
| 32 | sendtable := parseSendTable(reader) | 32 | sendtable := parseSendTable(reader) |
| 33 | fmt.Println("AAA") | ||
| 34 | fmt.Println(reader.TryReadBits(8)) | ||
| 35 | serverclassinfo := parseServerClassInfo(reader) | 33 | serverclassinfo := parseServerClassInfo(reader) |
| 36 | return DataTable{ | 34 | return DataTable{ |
| 37 | SendTable: sendtable, | 35 | SendTable: sendtable, |
diff --git a/packets/messages/message.go b/packets/messages/message.go index 376a3d5..4a00212 100644 --- a/packets/messages/message.go +++ b/packets/messages/message.go | |||
| @@ -7,15 +7,6 @@ import ( | |||
| 7 | "github.com/pektezol/demoparser/packets/messages/types" | 7 | "github.com/pektezol/demoparser/packets/messages/types" |
| 8 | ) | 8 | ) |
| 9 | 9 | ||
| 10 | // TODO: Read data properly in: | ||
| 11 | // SvcCreateStringTable | ||
| 12 | // SvcGameEventList | ||
| 13 | // SvcPacketEntities | ||
| 14 | // SvcSounds | ||
| 15 | // SvcTempEntities | ||
| 16 | // SvcUpdateStringTable | ||
| 17 | // SvcUserMessage | ||
| 18 | |||
| 19 | func ParseMessage(data []byte) []Message { | 10 | func ParseMessage(data []byte) []Message { |
| 20 | reader := bitreader.Reader(bytes.NewReader(data), true) | 11 | reader := bitreader.Reader(bytes.NewReader(data), true) |
| 21 | var messages []Message | 12 | var messages []Message |
| @@ -24,7 +15,6 @@ func ParseMessage(data []byte) []Message { | |||
| 24 | if err != nil { | 15 | if err != nil { |
| 25 | break | 16 | break |
| 26 | } | 17 | } |
| 27 | // fmt.Printf("Reading message type: %d\n", messageType) | ||
| 28 | switch messageType { | 18 | switch messageType { |
| 29 | case 0: | 19 | case 0: |
| 30 | messages = append(messages, Message{Data: types.NetNop{}}) | 20 | messages = append(messages, Message{Data: types.NetNop{}}) |
| @@ -77,7 +67,7 @@ func ParseMessage(data []byte) []Message { | |||
| 77 | case 24: | 67 | case 24: |
| 78 | messages = append(messages, Message{Data: types.ParseSvcEntityMessage(reader)}) | 68 | messages = append(messages, Message{Data: types.ParseSvcEntityMessage(reader)}) |
| 79 | case 25: | 69 | case 25: |
| 80 | // TODO: SvcGameEvent | 70 | messages = append(messages, Message{Data: types.ParseSvcGameEvent(reader)}) |
| 81 | case 26: | 71 | case 26: |
| 82 | messages = append(messages, Message{Data: types.ParseSvcPacketEntities(reader)}) | 72 | messages = append(messages, Message{Data: types.ParseSvcPacketEntities(reader)}) |
| 83 | case 27: | 73 | case 27: |
diff --git a/packets/messages/types/SvcCreateStringTable.go b/packets/messages/types/SvcCreateStringTable.go index 336b3e0..72ab1a7 100644 --- a/packets/messages/types/SvcCreateStringTable.go +++ b/packets/messages/types/SvcCreateStringTable.go | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | package types | 1 | package types |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import ( |
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 4 | 6 | ||
| 5 | type SvcCreateStringTable struct { | 7 | type SvcCreateStringTable struct { |
| 6 | Name string | 8 | Name string |
| @@ -10,7 +12,7 @@ type SvcCreateStringTable struct { | |||
| 10 | UserDataSize uint16 | 12 | UserDataSize uint16 |
| 11 | UserDataSizeBits uint8 | 13 | UserDataSizeBits uint8 |
| 12 | Flags uint8 | 14 | Flags uint8 |
| 13 | StringData int | 15 | StringData []byte |
| 14 | } | 16 | } |
| 15 | 17 | ||
| 16 | func ParseSvcCreateStringTable(reader *bitreader.ReaderType) SvcCreateStringTable { | 18 | func ParseSvcCreateStringTable(reader *bitreader.ReaderType) SvcCreateStringTable { |
| @@ -26,8 +28,7 @@ func ParseSvcCreateStringTable(reader *bitreader.ReaderType) SvcCreateStringTabl | |||
| 26 | svccreatestringtable.UserDataSizeBits = uint8(reader.TryReadBits(4)) | 28 | svccreatestringtable.UserDataSizeBits = uint8(reader.TryReadBits(4)) |
| 27 | } | 29 | } |
| 28 | svccreatestringtable.Flags = uint8(reader.TryReadBits(2)) | 30 | svccreatestringtable.Flags = uint8(reader.TryReadBits(2)) |
| 29 | reader.SkipBits(int(length)) // TODO: Read data properly | 31 | svccreatestringtable.StringData = reader.TryReadBitsToSlice(int(length)) |
| 30 | // svccreatestringtable.StringData = int(reader.TryReadBits(int(length / 8))) | ||
| 31 | return svccreatestringtable | 32 | return svccreatestringtable |
| 32 | 33 | ||
| 33 | } | 34 | } |
diff --git a/packets/messages/types/SvcGameEvent.go b/packets/messages/types/SvcGameEvent.go new file mode 100644 index 0000000..1d6b0ea --- /dev/null +++ b/packets/messages/types/SvcGameEvent.go | |||
| @@ -0,0 +1,15 @@ | |||
| 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 index 3952517..fea0be4 100644 --- a/packets/messages/types/SvcGameEventList.go +++ b/packets/messages/types/SvcGameEventList.go | |||
| @@ -10,9 +10,8 @@ type SvcGameEventList struct { | |||
| 10 | func ParseSvcGameEventList(reader *bitreader.ReaderType) SvcGameEventList { | 10 | func ParseSvcGameEventList(reader *bitreader.ReaderType) SvcGameEventList { |
| 11 | events := reader.TryReadBits(9) | 11 | events := reader.TryReadBits(9) |
| 12 | length := reader.TryReadBits(20) | 12 | length := reader.TryReadBits(20) |
| 13 | reader.SkipBits(int(length)) // TODO: Read data properly | ||
| 14 | return SvcGameEventList{ | 13 | return SvcGameEventList{ |
| 15 | Events: int16(events), | 14 | Events: int16(events), |
| 16 | //Data: reader.TryReadBytesToSlice(int(length)), | 15 | Data: reader.TryReadBitsToSlice(int(length)), |
| 17 | } | 16 | } |
| 18 | } | 17 | } |
diff --git a/packets/messages/types/SvcPacketEntities.go b/packets/messages/types/SvcPacketEntities.go index 6621c3a..9d8a8b0 100644 --- a/packets/messages/types/SvcPacketEntities.go +++ b/packets/messages/types/SvcPacketEntities.go | |||
| @@ -20,12 +20,13 @@ func ParseSvcPacketEntities(reader *bitreader.ReaderType) SvcPacketEntities { | |||
| 20 | var deltafrom int32 | 20 | var deltafrom int32 |
| 21 | if isdelta { | 21 | if isdelta { |
| 22 | deltafrom = int32(reader.TryReadInt32()) | 22 | deltafrom = int32(reader.TryReadInt32()) |
| 23 | } else { | ||
| 24 | deltafrom = -1 | ||
| 23 | } | 25 | } |
| 24 | baseline := reader.TryReadBool() | 26 | baseline := reader.TryReadBool() |
| 25 | updatedentries := reader.TryReadBits(11) | 27 | updatedentries := reader.TryReadBits(11) |
| 26 | length := reader.TryReadBits(20) | 28 | length := reader.TryReadBits(20) |
| 27 | updatebaseline := reader.TryReadBool() | 29 | updatebaseline := reader.TryReadBool() |
| 28 | reader.SkipBits(int(length)) // TODO: Read data properly | ||
| 29 | return SvcPacketEntities{ | 30 | return SvcPacketEntities{ |
| 30 | MaxEntries: uint16(maxentries), | 31 | MaxEntries: uint16(maxentries), |
| 31 | IsDelta: isdelta, | 32 | IsDelta: isdelta, |
| @@ -33,6 +34,6 @@ func ParseSvcPacketEntities(reader *bitreader.ReaderType) SvcPacketEntities { | |||
| 33 | BaseLine: baseline, | 34 | BaseLine: baseline, |
| 34 | UpdatedEntries: uint16(updatedentries), | 35 | UpdatedEntries: uint16(updatedentries), |
| 35 | UpdateBaseline: updatebaseline, | 36 | UpdateBaseline: updatebaseline, |
| 36 | // Data: reader.TryReadBytesToSlice(int(length / 8)), | 37 | Data: reader.TryReadBitsToSlice(int(length)), |
| 37 | } | 38 | } |
| 38 | } | 39 | } |
diff --git a/packets/messages/types/SvcSounds.go b/packets/messages/types/SvcSounds.go index 4d858bf..2dc7974 100644 --- a/packets/messages/types/SvcSounds.go +++ b/packets/messages/types/SvcSounds.go | |||
| @@ -22,11 +22,9 @@ func ParseSvcSounds(reader *bitreader.ReaderType) SvcSounds { | |||
| 22 | } else { | 22 | } else { |
| 23 | length = int16(reader.TryReadInt16()) | 23 | length = int16(reader.TryReadInt16()) |
| 24 | } | 24 | } |
| 25 | reader.SkipBits(int(length)) // TODO: Read data properly | ||
| 26 | //data := reader.TryReadBytesToSlice(int(length / 8)) | ||
| 27 | return SvcSounds{ | 25 | return SvcSounds{ |
| 28 | ReliableSound: reliablesound, | 26 | ReliableSound: reliablesound, |
| 29 | Size: size, | 27 | Size: size, |
| 30 | //Data: data, | 28 | Data: reader.TryReadBitsToSlice(int(length)), |
| 31 | } | 29 | } |
| 32 | } | 30 | } |
diff --git a/packets/messages/types/SvcTempEntities.go b/packets/messages/types/SvcTempEntities.go index 105e014..3bfae0c 100644 --- a/packets/messages/types/SvcTempEntities.go +++ b/packets/messages/types/SvcTempEntities.go | |||
| @@ -12,9 +12,9 @@ type SvcTempEntities struct { | |||
| 12 | func ParseSvcTempEntities(reader *bitreader.ReaderType) SvcTempEntities { | 12 | func ParseSvcTempEntities(reader *bitreader.ReaderType) SvcTempEntities { |
| 13 | numentries := reader.TryReadInt8() | 13 | numentries := reader.TryReadInt8() |
| 14 | length := reader.TryReadBits(17) | 14 | length := reader.TryReadBits(17) |
| 15 | reader.SkipBits(int(length)) // TODO: Read data properly | 15 | //reader.SkipBits(int(length)) // TODO: Read data properly |
| 16 | return SvcTempEntities{ | 16 | return SvcTempEntities{ |
| 17 | NumEntries: numentries, | 17 | NumEntries: numentries, |
| 18 | //Data: reader.TryReadBytesToSlice(int(length/8) + int(length%8)), | 18 | Data: reader.TryReadBitsToSlice(int(length)), |
| 19 | } | 19 | } |
| 20 | } | 20 | } |
diff --git a/packets/messages/types/SvcUpdateStringTable.go b/packets/messages/types/SvcUpdateStringTable.go index d1ca9bb..9f178a5 100644 --- a/packets/messages/types/SvcUpdateStringTable.go +++ b/packets/messages/types/SvcUpdateStringTable.go | |||
| @@ -16,7 +16,6 @@ func ParseSvcUpdateStringTable(reader *bitreader.ReaderType) SvcUpdateStringTabl | |||
| 16 | svcupdatestringtable.NumChangedEntries = int16(reader.TryReadInt16()) | 16 | svcupdatestringtable.NumChangedEntries = int16(reader.TryReadInt16()) |
| 17 | } | 17 | } |
| 18 | length := reader.TryReadBits(20) | 18 | length := reader.TryReadBits(20) |
| 19 | reader.SkipBits(int(length)) // TODO: Read data properly | 19 | svcupdatestringtable.Data = reader.TryReadBitsToSlice(int(length)) |
| 20 | //svcupdatestringtable.Data = reader.TryReadBytesToSlice(int(length / 8)) | ||
| 21 | return svcupdatestringtable | 20 | return svcupdatestringtable |
| 22 | } | 21 | } |
diff --git a/packets/messages/types/SvcUserMessage.go b/packets/messages/types/SvcUserMessage.go index 6d09fa1..c7b0566 100644 --- a/packets/messages/types/SvcUserMessage.go +++ b/packets/messages/types/SvcUserMessage.go | |||
| @@ -12,9 +12,8 @@ type SvcUserMessage struct { | |||
| 12 | func ParseSvcUserMessage(reader *bitreader.ReaderType) SvcUserMessage { | 12 | func ParseSvcUserMessage(reader *bitreader.ReaderType) SvcUserMessage { |
| 13 | msgtype := reader.TryReadInt8() | 13 | msgtype := reader.TryReadInt8() |
| 14 | length := reader.TryReadBits(12) | 14 | length := reader.TryReadBits(12) |
| 15 | reader.SkipBits(int(length)) // TODO: Read data properly | ||
| 16 | return SvcUserMessage{ | 15 | return SvcUserMessage{ |
| 17 | MsgType: msgtype, | 16 | MsgType: msgtype, |
| 18 | //Data: reader.TryReadBytesToSlice(int(length / 8)), | 17 | Data: reader.TryReadBitsToSlice(int(length)), |
| 19 | } | 18 | } |
| 20 | } | 19 | } |
diff --git a/packets/packet.go b/packets/packet.go index cc94e62..8f4a262 100644 --- a/packets/packet.go +++ b/packets/packet.go | |||
| @@ -14,25 +14,26 @@ func ParsePacket(reader *bitreader.ReaderType) (status int) { | |||
| 14 | messageType := reader.TryReadInt8() | 14 | messageType := reader.TryReadInt8() |
| 15 | messageTick := reader.TryReadInt32() | 15 | messageTick := reader.TryReadInt32() |
| 16 | messageSlot := reader.TryReadInt8() | 16 | messageSlot := reader.TryReadInt8() |
| 17 | _ = messageSlot | ||
| 17 | switch messageType { | 18 | switch messageType { |
| 18 | case 1: // TODO: SignOn - Data | 19 | case 1: |
| 19 | signOn := SignOn{ | 20 | signOn := SignOn{ |
| 20 | PacketInfo: classes.ParseCmdInfo(reader, MSSC), | 21 | PacketInfo: classes.ParseCmdInfo(reader, MSSC), |
| 21 | InSequence: int32(reader.TryReadInt32()), | 22 | InSequence: int32(reader.TryReadInt32()), |
| 22 | OutSequence: int32(reader.TryReadInt32()), | 23 | OutSequence: int32(reader.TryReadInt32()), |
| 23 | Size: int32(reader.TryReadInt32()), | ||
| 24 | } | 24 | } |
| 25 | signOn.Data = messages.ParseMessage(reader.TryReadBytesToSlice(int(signOn.Size))) | 25 | size := int(reader.TryReadInt32()) |
| 26 | fmt.Printf("[%d] (%d) {%d} SignOn: %v\n", messageTick, messageType, messageSlot, signOn) | 26 | signOn.Data = messages.ParseMessage(reader.TryReadBytesToSlice(size)) |
| 27 | // fmt.Printf("[%d] (%d) {%d} SignOn: %v\n", messageTick, messageType, messageSlot, signOn) | ||
| 27 | return 1 | 28 | return 1 |
| 28 | case 2: // TODO: Packet - Data | 29 | case 2: |
| 29 | packet := Packet{ | 30 | packet := Packet{ |
| 30 | PacketInfo: classes.ParseCmdInfo(reader, MSSC), | 31 | PacketInfo: classes.ParseCmdInfo(reader, MSSC), |
| 31 | InSequence: int32(reader.TryReadInt32()), | 32 | InSequence: int32(reader.TryReadInt32()), |
| 32 | OutSequence: int32(reader.TryReadInt32()), | 33 | OutSequence: int32(reader.TryReadInt32()), |
| 33 | Size: int32(reader.TryReadInt32()), | ||
| 34 | } | 34 | } |
| 35 | packet.Data = messages.ParseMessage(reader.TryReadBytesToSlice(int(packet.Size))) | 35 | size := int(reader.TryReadInt32()) |
| 36 | packet.Data = messages.ParseMessage(reader.TryReadBytesToSlice(size)) | ||
| 36 | // fmt.Printf("[%d] (%d) Packet: %v\n", messageTick, messageType, packet) | 37 | // fmt.Printf("[%d] (%d) Packet: %v\n", messageTick, messageType, packet) |
| 37 | return 2 | 38 | return 2 |
| 38 | case 3: | 39 | case 3: |
| @@ -40,26 +41,25 @@ func ParsePacket(reader *bitreader.ReaderType) (status int) { | |||
| 40 | fmt.Printf("[%d] (%d) SyncTick: %v\n", messageTick, messageType, syncTick) | 41 | fmt.Printf("[%d] (%d) SyncTick: %v\n", messageTick, messageType, syncTick) |
| 41 | return 3 | 42 | return 3 |
| 42 | case 4: | 43 | case 4: |
| 43 | consoleCmd := ConsoleCmd{ | 44 | size := int(reader.TryReadInt32()) |
| 44 | Size: int32(reader.TryReadInt32()), | 45 | var consoleCmd ConsoleCmd |
| 45 | } | 46 | consoleCmd.Data = reader.TryReadStringLen(size) |
| 46 | consoleCmd.Data = reader.TryReadStringLen(int(consoleCmd.Size)) | ||
| 47 | // fmt.Printf("[%d] (%d) ConsoleCmd: %s\n", messageTick, messageType, consoleCmd.Data) | 47 | // fmt.Printf("[%d] (%d) ConsoleCmd: %s\n", messageTick, messageType, consoleCmd.Data) |
| 48 | return 4 | 48 | return 4 |
| 49 | case 5: // TODO: UserCmd - Buttons | 49 | case 5: // TODO: UserCmd - Buttons |
| 50 | userCmd := UserCmd{ | 50 | userCmd := UserCmd{ |
| 51 | Cmd: int32(reader.TryReadInt32()), | 51 | Cmd: int32(reader.TryReadInt32()), |
| 52 | Size: int32(reader.TryReadInt32()), | ||
| 53 | } | 52 | } |
| 54 | userCmd.Data = classes.ParseUserCmdInfo(reader.TryReadBytesToSlice(int(userCmd.Size))) | 53 | size := int(reader.TryReadInt32()) |
| 54 | userCmd.Data = classes.ParseUserCmdInfo(reader.TryReadBytesToSlice(size)) | ||
| 55 | // fmt.Printf("[%d] (%d) UserCmd: %v\n", messageTick, messageType, userCmd) | 55 | // fmt.Printf("[%d] (%d) UserCmd: %v\n", messageTick, messageType, userCmd) |
| 56 | return 5 | 56 | return 5 |
| 57 | case 6: // TODO: DataTables | 57 | case 6: // TODO: DataTables |
| 58 | // datatables := DataTables{ | 58 | // datatables := DataTables{ |
| 59 | // Size: int32(reader.TryReadInt32()), | 59 | // Size: int32(reader.TryReadInt32()), |
| 60 | // } | 60 | // } |
| 61 | val := reader.TryReadInt32() | 61 | size := int(reader.TryReadInt32()) |
| 62 | reader.SkipBytes(int(val)) | 62 | reader.SkipBytes(size) |
| 63 | // datatables.Data = classes.ParseDataTable(reader.TryReadBytesToSlice(int(datatables.Size))) | 63 | // datatables.Data = classes.ParseDataTable(reader.TryReadBytesToSlice(int(datatables.Size))) |
| 64 | // fmt.Printf("[%d] (%d) DataTables: %v\n", messageTick, messageType, datatables) | 64 | // fmt.Printf("[%d] (%d) DataTables: %v\n", messageTick, messageType, datatables) |
| 65 | return 6 | 65 | return 6 |
| @@ -71,15 +71,14 @@ func ParsePacket(reader *bitreader.ReaderType) (status int) { | |||
| 71 | return 7 | 71 | return 7 |
| 72 | case 8: // TODO: CustomData | 72 | case 8: // TODO: CustomData |
| 73 | reader.SkipBytes(4) | 73 | reader.SkipBytes(4) |
| 74 | val := reader.TryReadInt32() | 74 | size := int(reader.TryReadInt32()) |
| 75 | reader.SkipBytes(int(val)) | 75 | reader.SkipBytes(size) |
| 76 | // fmt.Printf("[%d] (%d) CustomData: \n", messageTick, messageType) | 76 | // fmt.Printf("[%d] (%d) CustomData: \n", messageTick, messageType) |
| 77 | return 8 | 77 | return 8 |
| 78 | case 9: // TODO: StringTables - Data | 78 | case 9: // TODO: StringTables - Data |
| 79 | stringTables := StringTables{ | 79 | var stringTables StringTables |
| 80 | Size: int32(reader.TryReadInt32()), | 80 | size := int(reader.TryReadInt32()) |
| 81 | } | 81 | stringTables.Data = classes.ParseStringTable(reader.TryReadBytesToSlice(size)) |
| 82 | stringTables.Data = classes.ParseStringTable(reader.TryReadBytesToSlice(int(stringTables.Size))) | ||
| 83 | // fmt.Printf("[%d] (%d) StringTables: %v\n", messageTick, messageType, stringTables) | 82 | // fmt.Printf("[%d] (%d) StringTables: %v\n", messageTick, messageType, stringTables) |
| 84 | return 9 | 83 | return 9 |
| 85 | default: | 84 | default: |
diff --git a/packets/types.go b/packets/types.go index 79cc5c2..41d633a 100644 --- a/packets/types.go +++ b/packets/types.go | |||
| @@ -23,7 +23,6 @@ type SignOn struct { | |||
| 23 | PacketInfo []classes.CmdInfo | 23 | PacketInfo []classes.CmdInfo |
| 24 | InSequence int32 | 24 | InSequence int32 |
| 25 | OutSequence int32 | 25 | OutSequence int32 |
| 26 | Size int32 | ||
| 27 | Data []messages.Message | 26 | Data []messages.Message |
| 28 | } | 27 | } |
| 29 | 28 | ||
| @@ -31,25 +30,21 @@ type Packet struct { | |||
| 31 | PacketInfo []classes.CmdInfo | 30 | PacketInfo []classes.CmdInfo |
| 32 | InSequence int32 | 31 | InSequence int32 |
| 33 | OutSequence int32 | 32 | OutSequence int32 |
| 34 | Size int32 | ||
| 35 | Data []messages.Message | 33 | Data []messages.Message |
| 36 | } | 34 | } |
| 37 | 35 | ||
| 38 | type SyncTick struct{} | 36 | type SyncTick struct{} |
| 39 | 37 | ||
| 40 | type ConsoleCmd struct { | 38 | type ConsoleCmd struct { |
| 41 | Size int32 | ||
| 42 | Data string | 39 | Data string |
| 43 | } | 40 | } |
| 44 | 41 | ||
| 45 | type UserCmd struct { | 42 | type UserCmd struct { |
| 46 | Cmd int32 | 43 | Cmd int32 |
| 47 | Size int32 | ||
| 48 | Data classes.UserCmdInfo | 44 | Data classes.UserCmdInfo |
| 49 | } | 45 | } |
| 50 | 46 | ||
| 51 | type DataTables struct { | 47 | type DataTables struct { |
| 52 | Size int32 | ||
| 53 | Data classes.DataTable | 48 | Data classes.DataTable |
| 54 | } | 49 | } |
| 55 | 50 | ||
| @@ -59,11 +54,9 @@ type Stop struct { | |||
| 59 | 54 | ||
| 60 | type CustomData struct { | 55 | type CustomData struct { |
| 61 | Unknown int32 | 56 | Unknown int32 |
| 62 | Size int32 | ||
| 63 | Data []byte | 57 | Data []byte |
| 64 | } | 58 | } |
| 65 | 59 | ||
| 66 | type StringTables struct { | 60 | type StringTables struct { |
| 67 | Size int32 | ||
| 68 | Data []classes.StringTable | 61 | Data []classes.StringTable |
| 69 | } | 62 | } |