Пример #1
0
                public void Deserialize(IUnrealStream stream)
                {
                    _CompressedSize   = stream.ReadInt32();
                    _UncompressedSize = stream.ReadInt32();

                    _CompressedData = new byte[_CompressedSize];
                    stream.Read(_CompressedData, 0, _CompressedSize);
                }
Пример #2
0
        public string GetData(int offset, int count)
        {
            if (_UnrealStream == null)
            {
                return("");
            }

            byte[] bytes       = new byte[count];
            var    prePosition = _UnrealStream.Position;

            _UnrealStream.Seek(offset, SeekOrigin.Begin);
            _UnrealStream.Read(bytes, 0, count);
            _UnrealStream.Position = prePosition;
            _UnrealStream.Seek(prePosition, SeekOrigin.Begin);

            if (_UnrealStream.BigEndianCode)
            {
                Array.Reverse(bytes);
            }

            return(BitConverter.ToString(bytes));
        }
Пример #3
0
        public void PreDecode(IUnrealStream stream)
        {
            Stream = stream;
            byte[] m_Data = new byte[22];
            m_Data = stream.UR.ReadBytes(22);
            //stream.Read(m_Data, 0, 22);
            string result = Encoding.Unicode.GetString(m_Data);

            if (result == "Lineage2Ver")
            {
                m_Data = new byte[6];
                stream.Read(m_Data, 0, 6);
                string archive_version = Encoding.Unicode.GetString(m_Data);
                switch (archive_version)
                {
                case "111": m_LineageKey = 0xAC; break;

                case "121":

                    string filename = Path.GetFileName(stream.Name).ToLower();
                    int    ind      = 0;
                    for (int i = 0; i < filename.Length; i++)
                    {
                        ind += filename[i];
                    }
                    int xb = ind & 0xFF;

                    this.m_LineageKey = (byte)(xb | xb << 8 | xb << 16 | xb << 24);

                    break;

                default:
                    throw new System.IO.IOException(String.Format("Unsupported version {0}", archive_version));
                }
            }
        }
Пример #4
0
        public void Deserialize(IUnrealStream stream)
        {
#if DCUO
            if (stream.Package.Build == UnrealPackage.GameBuild.BuildName.DCUO)
            {
                //DCUO doesn't null terminate name table entries
                int size     = stream.ReadInt32();
                var strBytes = new byte[size];
                stream.Read(strBytes, 0, size);
                if (stream.BigEndianCode)
                {
                    Array.Reverse(strBytes);
                }
                Name = System.Text.Encoding.ASCII.GetString(strBytes);
            }
            else
            {
#endif
            Name = stream.ReadText();
#if DCUO
        }
#endif
            Flags = stream.Version >= QWORDVersion?stream.ReadUInt64() : stream.ReadUInt32();

#if DEOBFUSCATE
            // De-obfuscate names that contain unprintable characters!
            foreach (char c in Name)
            {
                if (!char.IsLetterOrDigit(c))
                {
                    Name = "N" + TableIndex + "_OBF";
                    break;
                }
            }
#endif
        }
                public void Deserialize( IUnrealStream stream )
                {
                    _CompressedSize = stream.ReadInt32();
                    _UncompressedSize = stream.ReadInt32();

                    _CompressedData = new byte[_CompressedSize];
                    stream.Read( _CompressedData, 0, _CompressedSize );
                }