From 9e02c214abefbd8c23e4ea84ef2e90fb0dfdc61a Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Fri, 11 Nov 2022 01:15:51 +0300 Subject: fixed net/svc messages, not reading data atm but working --- packets/classes/cmdinfo.go | 4 +-- packets/classes/datatable.go | 68 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 packets/classes/datatable.go (limited to 'packets/classes') diff --git a/packets/classes/cmdinfo.go b/packets/classes/cmdinfo.go index 52df05c..d11bebc 100644 --- a/packets/classes/cmdinfo.go +++ b/packets/classes/cmdinfo.go @@ -15,7 +15,7 @@ type CmdInfo struct { func ParseCmdInfo(reader *bitreader.ReaderType, MSSC int) []CmdInfo { var out []CmdInfo for i := 0; i < MSSC; i++ { - flags := reader.TryReadInt32() + flags := int32(reader.TryReadInt32()) viewOrigin := []float32{ reader.TryReadFloat32(), reader.TryReadFloat32(), @@ -47,7 +47,7 @@ func ParseCmdInfo(reader *bitreader.ReaderType, MSSC int) []CmdInfo { reader.TryReadFloat32(), } cmdInfo := CmdInfo{ - Flags: int32(flags), + Flags: flags, ViewOrigin: viewOrigin, ViewAngles: viewAngles, LocalViewAngles: localViewAngles, diff --git a/packets/classes/datatable.go b/packets/classes/datatable.go new file mode 100644 index 0000000..07cbd00 --- /dev/null +++ b/packets/classes/datatable.go @@ -0,0 +1,68 @@ +package classes + +import ( + "bytes" + "fmt" + + "github.com/pektezol/bitreader" +) + +type DataTable struct { + SendTable []SendTable + ServerClassInfo []ServerClassInfo +} + +type SendTable struct { + NeedsDecoder bool + NetTableName string + NumOfProps uint16 + SendPropType int8 + SendPropName string + SendPropFlags int16 +} + +type ServerClassInfo struct { + ClassId int16 + ClassName string + DataTableName string +} + +func ParseDataTable(data []byte) DataTable { + reader := bitreader.Reader(bytes.NewReader(data), true) + sendtable := parseSendTable(reader) + fmt.Println("AAA") + fmt.Println(reader.TryReadBits(8)) + serverclassinfo := parseServerClassInfo(reader) + return DataTable{ + SendTable: sendtable, + ServerClassInfo: serverclassinfo, + } +} + +func parseSendTable(reader *bitreader.ReaderType) []SendTable { + var sendtables []SendTable + for reader.TryReadBool() { + sendtables = append(sendtables, SendTable{ + NeedsDecoder: reader.TryReadBool(), + NetTableName: reader.TryReadString(), + NumOfProps: uint16(reader.TryReadBits(10)), + SendPropType: int8(reader.TryReadBits(5)), + SendPropName: reader.TryReadString(), + SendPropFlags: int16(reader.TryReadInt16()), + }) + } + return sendtables +} +func parseServerClassInfo(reader *bitreader.ReaderType) []ServerClassInfo { + var serverclassinfo []ServerClassInfo + numofclasses := reader.TryReadInt16() + fmt.Println(numofclasses) + for i := 0; i < int(numofclasses); i++ { + serverclassinfo = append(serverclassinfo, ServerClassInfo{ + ClassId: int16(reader.TryReadInt16()), + ClassName: reader.TryReadString(), + DataTableName: reader.TryReadString(), + }) + } + return serverclassinfo +} -- cgit v1.2.3