From f108a577658c9aab8496da4ebd0fb4f0216093e8 Mon Sep 17 00:00:00 2001 From: BiSaXa <1669855+BiSaXa@users.noreply.github.com> Date: Sat, 27 Aug 2022 13:02:35 +0300 Subject: init --- messages/messages.go | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++ messages/types.go | 36 +++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 messages/messages.go create mode 100644 messages/types.go (limited to 'messages') diff --git a/messages/messages.go b/messages/messages.go new file mode 100644 index 0000000..db9d027 --- /dev/null +++ b/messages/messages.go @@ -0,0 +1,89 @@ +package messages + +import ( + "fmt" + "os" + "parser/classes" + "parser/utils" +) + +func MessageTypeCheck(file *os.File) (statusCode int) { + var MSSC int32 = 2 + Type := make([]byte, 1) + Tick := make([]byte, 4) + Slot := make([]byte, 1) + file.Read(Type) + file.Read(Tick) + file.Read(Slot) + switch Type[0] { + case 0x01: // SignOn + var packet Packet + var cmdinfo classes.CmdInfo + packet.PacketInfo = utils.ReadByteFromFile(file, 76*MSSC) + packet.InSequence = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + packet.OutSequence = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + packet.Size = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + packet.Data = utils.ReadByteFromFile(file, packet.Size) + cmdinfo = classes.CmdInfoInit(packet.PacketInfo) + fmt.Println(cmdinfo) + return 1 + case 0x02: // Packet + var packet Packet + var cmdinfo classes.CmdInfo + packet.PacketInfo = utils.ReadByteFromFile(file, 76*MSSC) + packet.InSequence = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + packet.OutSequence = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + packet.Size = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + packet.Data = utils.ReadByteFromFile(file, packet.Size) + cmdinfo = classes.CmdInfoInit(packet.PacketInfo) + fmt.Printf("[%d] %v\n", utils.IntFromBytes(Tick), cmdinfo) + return 2 + case 0x03: // SyncTick + return 3 + case 0x04: // Consolecmd + var consolecmd ConsoleCmd + consolecmd.Size = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + consolecmd.Data = string(utils.ReadByteFromFile(file, consolecmd.Size)) + fmt.Printf("[%d] %s\n", utils.IntFromBytes(Tick), consolecmd.Data) + return 4 + case 0x05: // Usercmd FIXME: Correct bit-packing inside classes + var usercmd UserCmd + //var usercmdinfo classes.UserCmdInfo + usercmd.Cmd = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + usercmd.Size = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + usercmd.Data = utils.ReadByteFromFile(file, usercmd.Size) + //usercmdinfo = classes.UserCmdInfoInit(usercmd.Data, int(usercmd.Size)) + //fmt.Printf("[%d] UserCmd: %v\n", utils.IntFromBytes(Tick), usercmdinfo) + return 5 + case 0x06: // DataTables + var datatables DataTables + //var stringtable classes.StringTable + datatables.Size = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) + datatables.Data = utils.ReadByteFromFile(file, datatables.Size) + // stringtable = classes.StringTableInit(Data) + // fmt.Printf("[%d] DataTables: %v\n", utils.IntFromBytes(Size), stringtable) + return 6 + case 0x07: // Stop + fmt.Println("Stop") + return 7 + case 0x08: // CustomData + Unknown := make([]byte, 4) + file.Read(Unknown) + Size := make([]byte, 4) + file.Read(Size) + Data := make([]byte, utils.IntFromBytes(Size)) + file.Read(Data) + return 8 + case 0x09: // StringTables + Size := make([]byte, 4) + file.Read(Size) + Data := make([]byte, utils.IntFromBytes(Size)) + file.Read(Data) + return 9 + default: + return 0 + } + //fmt.Println(Type[0]) + //fmt.Println(utils.IntFromBytes(Tick)) + //fmt.Println(Slot[0]) +} diff --git a/messages/types.go b/messages/types.go new file mode 100644 index 0000000..ee42a96 --- /dev/null +++ b/messages/types.go @@ -0,0 +1,36 @@ +package messages + +type Packet struct { + PacketInfo []byte + InSequence int32 + OutSequence int32 + Size int32 + Data []byte +} + +type ConsoleCmd struct { + Size int32 + Data string +} + +type UserCmd struct { + Cmd int32 + Size int32 + Data []byte +} + +type DataTables struct { + Size int32 + Data []byte +} + +type CustomData struct { + Unknown int32 + Size int32 + Data []byte +} + +type StringTables struct { + Size int32 + Data []byte +} -- cgit v1.2.3