Пример #1
0
        private byte[] ReadFileData(uint dataOffset, uint dataSize)
        {
            try
            {
                //current position to seek back to when done
                var getBack = PakStreamReader.BaseStream.Position;

                //seek to file data location
                PakStreamReader.BaseStream.Seek(dataOffset, SeekOrigin.Begin);

                //extract data from specified information
                var data = PakStreamReader.ReadBytes(Convert.ToInt32(dataSize));

                //seek back to original location
                PakStreamReader.BaseStream.Seek(getBack, SeekOrigin.Begin);

                //return result
                return(data);
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Error whilst attempting PAK extraction:\n\n{ex}");
            }

            //default
            return(null);
        }
Пример #2
0
        private string ReadFileName(uint nameOffset)
        {
            //current position to seek back to when done
            var getBack = PakStreamReader.BaseStream.Position;

            //debugging
            //MessageBox.Show(getBack.ToString());
            //MessageBox.Show(offset.ToString());

            //seek to the name offset
            PakStreamReader.BaseStream.Seek(nameOffset, SeekOrigin.Begin);

            //verify UTF-8
            if (PakStreamReader.ReadByte() > 240)
            {
                return("");
            }

            //seek back to the name offset
            PakStreamReader.BaseStream.Seek(nameOffset, SeekOrigin.Begin);

            //where the name is stored
            var array = new byte[200];

            //the loop kill switch
            var flag = true;

            //size of name data array
            var newSize = 0;

            while (flag)
            {
                var num = PakStreamReader.ReadByte();

                //is is null?
                if (num == 0)
                {
                    Array.Resize(ref array, newSize);
                    flag = false;
                }
                else
                {
                    array[newSize] = num;
                    ++newSize;
                }
            }

            //go back to the previous position
            PakStreamReader.BaseStream.Seek(getBack, SeekOrigin.Begin);

            //return UTF-8 encoded string
            return(Encoding.UTF8.GetString(array, 0, array.Length));
        }