From 8352bfc1d8deedd4d6a0a5b0698fe1f8b9a06e88 Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Mon, 7 Nov 2022 18:42:28 +0300 Subject: stringtable done, can't see data properly --- packets/classes/stringtable.go | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'packets/classes/stringtable.go') diff --git a/packets/classes/stringtable.go b/packets/classes/stringtable.go index df8e840..64e8496 100644 --- a/packets/classes/stringtable.go +++ b/packets/classes/stringtable.go @@ -1,5 +1,39 @@ package classes -func ParseStringTable() { +import ( + "bytes" + "github.com/pektezol/bitreader" +) + +func ParseStringTable(data []byte) []StringTable { + reader := bitreader.Reader(bytes.NewReader(data), true) + var stringTables []StringTable + numOfTables := reader.TryReadInt8() + for i := 0; i < int(numOfTables); i++ { + var stringTable StringTable + stringTable.TableName = reader.TryReadString() + stringTable.NumOfEntries = int16(reader.TryReadInt16()) + stringTable.EntryName = reader.TryReadString() + if reader.TryReadBool() { + stringTable.EntrySize = int16(reader.TryReadInt16()) + } + if reader.TryReadBool() { + stringTable.EntryData = reader.TryReadBytesToSlice(int(stringTable.EntrySize)) + } + if reader.TryReadBool() { + stringTable.NumOfClientEntries = int16(reader.TryReadInt16()) + } + if reader.TryReadBool() { + stringTable.ClientEntryName = reader.TryReadString() + } + if reader.TryReadBool() { + stringTable.ClientEntrySize = int16(reader.TryReadInt16()) + } + if reader.TryReadBool() { + stringTable.ClientEntryData = reader.TryReadBytesToSlice(int(stringTable.ClientEntrySize)) + } + stringTables = append(stringTables, stringTable) + } + return stringTables } -- cgit v1.2.3