public void Deserialize(IUnrealStream stream) { _CompressedSize = stream.ReadInt32(); _UncompressedSize = stream.ReadInt32(); _CompressedData = new byte[_CompressedSize]; stream.Read(_CompressedData, 0, _CompressedSize); }
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)); }
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)); } } }
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 ); }