Example #1
0
        public void Save(string uri)
        {
            using (var writer = new BigEndianWriter(new StreamWriter(uri).BaseStream))
            {
                var indexTable = new BigEndianWriter();
                writer.Seek(4, SeekOrigin.Begin);

                foreach (var index in m_indexes)
                {
                    indexTable.WriteInt(index.Key);
                    indexTable.WriteInt((int)writer.Position);
                    writer.WriteUTF(index.Value);
                }

                var indexLen = (int)indexTable.Position;

                foreach (var index in m_textIndexes)
                {
                    indexTable.WriteUTF(index.Key);
                    indexTable.WriteInt((int)writer.Position);
                    writer.WriteUTF(index.Value);
                }

                var indexPos = (int)writer.Position;

                /* write index at end */
                var indexData = indexTable.Data;
                writer.WriteInt(indexLen);
                writer.WriteBytes(indexData);

                /* write index pos at begin */
                writer.Seek(0, SeekOrigin.Begin);
                writer.WriteInt(indexPos);
            }
        }
        public void FixChannels(string BRSTMPath, int amount)
        {
            BinaryReader br = new BinaryReader(File.Open(BRSTMPath, FileMode.Open), Encoding.ASCII);
            const string Magic = "DATA";
            int position = 0;
            for (int i = 0; i < br.BaseStream.Length; i += 4)
            {
                if (new String(br.ReadChars(4)) == Magic) //if we find the magic we can stop and we have our position
                {
                    position = i + 4;
                    br.Dispose();
                    br.Close();
                    break;
                }
            }

            BigEndianReader ber = new BigEndianReader(File.Open(BRSTMPath, FileMode.Open));
            ber.BaseStream.Seek(position, SeekOrigin.Begin);
            uint value = ber.ReadUInt32() + 0x20;
            ber.Dispose(); ber.Close();

            BigEndianWriter bw = new BigEndianWriter(File.Open(BRSTMPath, FileMode.Open));
            bw.Seek(position, SeekOrigin.Begin);
            bw.Write(value); bw.Flush(); bw.Close();

            BRSTMPath = '"' + BRSTMPath + '"'; //fix path
            DecodeBRSTM brstm = new DecodeBRSTM();
            brstm.DecodeBRSTMDSP(BRSTMPath, amount); //pass value
        }
        public TorControlConnection0(BigEndianReader i, BigEndianWriter o)
        {
            this.output = o;
            this.input  = i;

            // Synchronize the internal queue by default
            this.waiters = Queue.Synchronized(new Queue());
        }
Example #4
0
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteInt(Files.Length);
     foreach (var file in Files)
     {
         writer.WriteUTF(file);
     }
 }
 public NbtWriter(Stream stream)
 {
     if (stream == null)
         throw new ArgumentNullException("stream");
     if (!stream.CanWrite)
         throw new ArgumentException("Can't write to stream.", "stream");
     _writer = new BigEndianWriter(stream);
 }
Example #6
0
        public static void RawDataMessageTreatment(Message message, byte[] packetDatas, AccountUC account)
        {
            //TODO : Bypass this f*****g anti-bot
            Random random = new Random();
            int randomNumber = (int)Math.Floor(random.NextDouble() * 16777215);

            CheckIntegrityMessage checkIntegrityMessage = new CheckIntegrityMessage(new List<int>() {randomNumber} );

            using (BigEndianWriter writer = new BigEndianWriter())
            {
                checkIntegrityMessage.Serialize(writer);

                MessagePackaging messagePackaging = new MessagePackaging(writer);

                messagePackaging.Pack((int)checkIntegrityMessage.ProtocolID);

                account.SocketManager.Send(messagePackaging.Writer.Content);
            }
            //using (BigEndianReader reader = new BigEndianReader(packetDatas))
            //{
            //    byte[] content = reader.ReadBytes((int)reader.BytesAvailable);
            //    string d = DateTime.Now.ToShortDateString().Replace('\\', '-').Replace('/', '-');
            //    File.WriteAllBytes(@"F:\RDMs\" + d + "_RDM.swf", content);
            //    //account.SocketManager.Disconnect();
            //}

            //using (BigEndianWriter writer = new BigEndianWriter())
            //{
            //    TrustStatusMessage tsm = new TrustStatusMessage(true);
            //    tsm.Serialize(writer);
            //    writer.WriteUTF(account.Ticket);
            //    MessagePackaging pack = new MessagePackaging(writer);
            //    pack.Pack((int)tsm.ProtocolID);
            //    account.SocketManager.SendRaw(pack.Writer.Content);
            //}
            //using (BigEndianWriter writer = new BigEndianWriter())
            //{
            //    writer.WriteBytes(packetDatas);
            //    MessagePackaging pack = new MessagePackaging(writer);
            //    pack.Pack(6253);
            //    account.SocketManager.SendRaw(pack.Writer.Content);
            //}
            //    System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
            //    byte[] hash = md5.ComputeHash(pack.Writer.Content);
            //    StringBuilder sb = new StringBuilder();
            //    for (int i = 0; i < hash.Length; i++)
            //    {
            //        sb.Append(hash[i].ToString("X2"));
            //    }
            //    System.Windows.Forms.MessageBox.Show(sb.ToString());
            //}
        }
 public void ParseBuffer(byte[] data)
 {
     m_Reader.Add(data, 0, data.Length);
     if (m_Reader.BytesAvailable <= 0)
         return;
     while (m_Reader.BytesAvailable != 0)
     {
         if (Build())
         {
             if ((account.IsMITM) && (!ForbiddenHeaders.Contains((int)m_ProtocolID)))
             {
                 using (BigEndianWriter writer = new BigEndianWriter())
                 {
                     writer.WriteBytes(m_Data);
                     MessagePackaging pack = new MessagePackaging(writer);
                     pack.Pack((int)m_ProtocolID);
                     account.SocketManager.SendToDofusClient(pack.Writer.Content);
                     account.Log(new BotTextInformation("SND (-> Dof) " + m_ProtocolID), 0);
                 }
             }
             //using (
             // StreamWriter fileWriter =
             // new StreamWriter(
             // Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
             // @"\BlueSheep\Packets.txt", true))
             // fileWriter.WriteLine("[" + DateTime.Now.ToShortTimeString() + "] Paquet reçu : " + m_ProtocolID);
             Treatment.Treatment treatment = new Treatment.Treatment(account);
             if (m_ProtocolID == 6372)
             {
                 using (BigEndianWriter writer = new BigEndianWriter())
                 {
                     writer.WriteBytes(m_Data);
                     MessagePackaging pack = new MessagePackaging(writer);
                     pack.Pack(6372);
                     account.SocketManager.Send(pack.Writer.Content);
                 }
             }
             if (m_ProtocolID != null)
                 treatment.Treat(m_ProtocolID.Value, m_Data);
             m_Header = null;
             m_Length = null;
             m_Data = null;
             m_LenghtType = null;
             m_ProtocolID = null;
         }
         else
             break;
     }
 }
Example #8
0
 public void SendMessage(int channel, string content)
 {
     using (BigEndianWriter writer = new BigEndianWriter())
     {
         ChatClientMultiMessage msg = new ChatClientMultiMessage(content, (sbyte)channel);
         msg.Serialize(writer);
         writer.Content = account.HumanCheck.hash_function(writer.Content);
         MessagePackaging pack = new MessagePackaging(writer);
         pack.Pack((int)msg.ProtocolID);
         account.SocketManager.Send(pack.Writer.Content);
         if (account.DebugMode.Checked)
             account.Log(new DebugTextInformation("[SND] 861 (ChatClientMultiMessage)"), 0);
         account.FloodUC.Increase(false);
     }
 }
Example #9
0
 public byte[] hash_function(byte[] packet)
 {
     /* Hello Mr.Fourbasse :hap: */
     if (this._hashKey == null)
         return packet;
     using (BigEndianWriter writer = new BigEndianWriter())
     {
         writer.WriteBytes(packet);
         BigEndianWriter writer2 = new BigEndianWriter();
         writer2.WriteBytes(this.hash(packet));
         using (RijndaelManaged myRijndael = new RijndaelManaged())
         {
             myRijndael.GenerateIV();
             // Encrypt the string to an array of bytes.
             byte[] encrypted = EncryptStringToBytes(writer2.Content.ToString(), this._hashKey, myRijndael.IV);
         }
         writer.WriteBytes(writer2.Content);
         return writer.Content;
     }
 }
Example #10
0
    public void WriteTest()
    {
      List<byte> m = new List<byte>();
      MemoryStream ms = new MemoryStream();
      using (BigEndianWriter w = new BigEndianWriter(ms)) {
        w.Write((int)0x12345678);
        m.Add(0x12);
        m.Add(0x34);
        m.Add(0x56);
        m.Add(0x78);

        w.Write((short)0x2345);
        m.Add(0x23);
        m.Add(0x45);

        w.WriteBCD(12345678,4);
        m.Add(0x12);
        m.Add(0x34);
        m.Add(0x56);
        m.Add(0x78);
      }
      Assert.AreEqual(m.ToArray(), ms.ToArray());
    }
Example #11
0
 public BigEndianStream(Stream stream)
 {
     _reader = new BigEndianReader(stream);
     _writer = new BigEndianWriter(stream);
 }
Example #12
0
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteShort(ignoreAdded.TypeId);
     ignoreAdded.Serialize(writer);
     writer.WriteBoolean(session);
 }
Example #13
0
 public override void Serialize(BigEndianWriter writer)
 {
     base.Serialize(writer);
     writer.WriteUTF(loginToken);
 }
 public void WriteVarShort(int value)
 {
     byte _loc5_ = 0;
     if (value > short.MaxValue || value < short.MinValue)
     {
         throw new Exception("Forbidden value");
     }
     else
     {
         BigEndianWriter buffer = new BigEndianWriter();
         if (value >= 0 && value <= 127)
         {
             buffer.WriteByte((byte)value);
             this.WriteBytes(buffer.Content);
             return;
         }
         int tampon = value & 65535;
         BigEndianWriter subBuffer = new BigEndianWriter();
         while (tampon != 0)
         {
             subBuffer.WriteByte(Convert.ToByte(tampon & 127));
             subBuffer.m_BinaryWriter.Seek((int)subBuffer.m_BinaryWriter.BaseStream.Length, SeekOrigin.Begin);
             _loc5_ = (byte)subBuffer.m_BinaryWriter.BaseStream.ReadByte();
             tampon = tampon >> 7;
             if (tampon > 0)
             {
                 _loc5_ = Convert.ToByte(_loc5_ | 128);
             }
             buffer.WriteByte(_loc5_);
         }
         this.WriteBytes(buffer.Content);
         return;
     }
 }
 public override void Serialize(BigEndianWriter writer)
 {
     base.Serialize(writer);
     writer.WriteUTF(name);
     writer.WriteByte(level);
 }
 public override void Serialize(BigEndianWriter writer)
 {
 }
Example #17
0
 public override void Serialize(BigEndianWriter writer)
 {
     base.Serialize(writer);
 }
Example #18
0
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteVarShort(subAreaId);
     writer.WriteBoolean(join);
 }
 public override void Serialize(BigEndianWriter writer)
 {
     fight.Serialize(writer);
 }
Example #20
0
 public override void Serialize(BigEndianWriter writer)
 {
     base.Serialize(writer);
     writer.WriteShort(memberInformations.TypeId);
     memberInformations.Serialize(writer);
 }
 public override void Serialize(BigEndianWriter writer)
 {
     base.Serialize(writer);
     writer.WriteSByte(powerLevel);
 }
Example #22
0
 public virtual void Serialize(BigEndianWriter writer)
 {
     writer.WriteInt(modelId);
     writer.WriteUTF(name);
     writer.WriteUTF(ownerName);
 }
Example #23
0
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteInt(humanVendorId);
     writer.WriteInt(humanVendorCell);
 }
Example #24
0
 public MessagePackaging(BigEndianWriter writer)
 {
     m_Writer = writer;
 }
Example #25
0
        public byte[] GetBytes()
        {
            byte[] buffer = new byte[96];
            buffer[0] |= (byte)(PeripheralQualifier << 5);
            buffer[0] |= (byte)(PeripheralQualifier & 0x1F);
            if (RMB)
            {
                buffer[1] |= 0x80;
            }
            buffer[2] = Version;

            if (NormACA)
            {
                buffer[3] |= 0x20;
            }
            if (HiSup)
            {
                buffer[3] |= 0x10;
            }
            buffer[3] |= (byte)(ResponseDataFormat & 0x0F);

            buffer[4] = AdditionalLength;

            if (SCCS)
            {
                buffer[5] |= 0x80;
            }
            if (ACC)
            {
                buffer[5] |= 0x40;
            }
            buffer[5] |= (byte)((TPGS & 0x03) << 4);
            if (ThirdPartyCopy)
            {
                buffer[5] |= 0x08;
            }
            if (Protect)
            {
                buffer[5] |= 0x01;
            }

            if (EncServ)
            {
                buffer[6] |= 0x40;
            }
            if (VS1)
            {
                buffer[6] |= 0x20;
            }
            if (MultiP)
            {
                buffer[6] |= 0x10;
            }
            if (MChngr)
            {
                buffer[6] |= 0x08;
            }
            if (Addr16)
            {
                buffer[6] |= 0x01;
            }

            if (WBus16)
            {
                buffer[7] |= 0x20;
            }
            if (Sync)
            {
                buffer[7] |= 0x10;
            }
            if (CmdQue)
            {
                buffer[7] |= 0x02;
            }
            if (VS2)
            {
                buffer[7] |= 0x01;
            }

            ByteWriter.WriteAnsiString(buffer, 8, VendorIdentification, 8);
            ByteWriter.WriteAnsiString(buffer, 16, ProductIdentification, 16);
            ByteWriter.WriteAnsiString(buffer, 32, ProductRevisionLevel, 4);
            BigEndianWriter.WriteUInt64(buffer, 36, DriveSerialNumber);


            buffer[56] |= (byte)((Clocking & 0x03) << 2);
            if (QAS)
            {
                buffer[56] |= 0x02;
            }
            if (IUS)
            {
                buffer[56] |= 0x01;
            }

            for (int index = 0; index < 8; index++)
            {
                ushort versionDescriptor = 0;
                if (index < VersionDescriptors.Count)
                {
                    versionDescriptor = (ushort)VersionDescriptors[index];
                }
                BigEndianWriter.WriteUInt16(buffer, 58 + index * 2, versionDescriptor);
            }

            return(buffer);
        }
Example #26
0
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteUTF(OS);
     writer.WriteUTF(Username);
 }
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteUTF(search);
 }
Example #28
0
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteInt(kamasTotal);
 }
 public override void Serialize(BigEndianWriter writer)
 {
     member.Serialize(writer);
 }
Example #30
0
 public override void Serialize(BigEndianWriter writer)
 {
     @object.Serialize(writer);
 }
 public override void Serialize(BigEndianWriter writer)
 {
     base.Serialize(writer);
     writer.WriteInt(guildId);
     writer.WriteUTF(guildName);
 }
Example #32
0
 /// <summary>
 /// Serialize and pack the message, and send it.
 /// </summary>
 public void Send(BlueSheep.Engine.Types.Message msg)
 {
     using (BigEndianWriter writer = new BigEndianWriter())
     {
         msg.Serialize(writer);
         MessagePackaging pack = new MessagePackaging(writer);
         pack.Pack((int)msg.ProtocolID);
         account.SocketManager.Send(pack.Writer.Content);
         if (account.DebugMode.Checked)
             account.Log(new DebugTextInformation("[SND] " + msg.ProtocolID), 0);
     }
 }
 public override void Serialize(BigEndianWriter writer)
 {
     base.Serialize(writer);
     writer.WriteShort(spellId);
     writer.WriteSByte(spellLevel);
 }
        public void WriteVarInt(int value)
        {
            //byte _loc5_ = 0;
            //Byte[] _loc2_ = new Byte[1];
            //if (VarToWrite >= 0 && VarToWrite <= 127)
            //{
            //    this.WriteInt(VarToWrite);
            //    return;
            //}
            //int _loc3_ = VarToWrite;
            //Byte[] _loc4_ = new Byte[1];
            //while (_loc3_ != 0)
            //{
            //    _loc4_[_loc4_.Length -1] = (byte)(_loc3_ & 127);
            //    _loc5_ = _loc4_[_loc4_.Length - 1];
            //    _loc3_ = Convert.ToInt32(Convert.ToUInt32(_loc3_) >> 7);
            //    if (_loc3_ > 0)
            //    {
            //        _loc5_ = (byte)(_loc5_ | 128);
            //    }
            //    _loc2_[_loc4_.Length - 1] = _loc5_;
            //}
            //this.WriteBytes(_loc2_);

            //byte _loc_5 = 0;
            //List<byte> result = new List<byte>();
            //if ((VarToWrite >= 0 & VarToWrite <= 127))
            //{
            //    this.WriteBytes(new Byte[] {Convert.ToByte(VarToWrite)});
            //    return;
            //}
            //int _loc_3 = VarToWrite & 65535;
            //List<byte> _loc_4 = new List<byte>();
            //while ((_loc_3 != 0))
            //{
            //    _loc_4.Add(Convert.ToByte(_loc_3 & 127));
            //    //     _loc_4.BaseStream.Position = _loc_4.BytesToSend.Count - 1
            //    _loc_5 = _loc_4[_loc_4.Count - 1];
            //    _loc_4.RemoveAt(_loc_4.Count - 1);
            //    _loc_3 = _loc_3 >> 7;
            //    if ((_loc_3 > 0))
            //    {
            //        _loc_5 = Convert.ToByte(_loc_5 | 128);
            //    }
            //    result.Add(_loc_5);
            //}
            //this.WriteBytes(result.ToArray());

            var _loc5_ = 0;
            BigEndianWriter buffer = new BigEndianWriter();
            if (value >= 0 && value <= 127)
            {
                buffer.WriteByte((byte)value);
                this.WriteBytes(BitConverter.GetBytes(value));
                return;
            }
            int _loc3_ = value;
            BigEndianWriter subBuffer = new BigEndianWriter();
            while (_loc3_ != 0)
            {
                subBuffer.WriteByte(Convert.ToByte(_loc3_ & 127));
                subBuffer.m_BinaryWriter.Seek(0, SeekOrigin.End);
                //subBuffer.Seek((int)subBuffer.BaseStream.Length, SeekOrigin.Begin);
                _loc5_ = subBuffer.m_BinaryWriter.BaseStream.ReadByte();
                _loc3_ = _loc3_ >> 7;
                if (_loc3_ > 0)
                {
                    _loc5_ = _loc5_ | 128;
                }
                //buffer.WriteBytes(BitConverter.GetBytes(_loc5_));
                buffer.WriteByte((byte)_loc5_);
            }
            this.WriteBytes(buffer.Content);
        }
 public virtual void Serialize(BigEndianWriter writer)
 {
     writer.WriteUTF(this.value);
 }
 public override void Serialize(BigEndianWriter writer)
 {
     base.Serialize(writer);
     writer.WriteInt(targetId);
     writer.WriteShort(delta);
 }
Example #37
0
 public void WriteVarInt(int value)
 {
     BigEndianWriter buffer = new BigEndianWriter();
     if (value >= 0 && value <= 127)
     {
         WriteBytes(BitConverter.GetBytes(value));
         return;
     }
     int valueToWrite = value;
     while (valueToWrite != 0)
     {
         byte desiredValue = Convert.ToByte(valueToWrite & 127);// extract the first 7 bits
         valueToWrite = valueToWrite >> 7; //get the next 7 bits
         if (valueToWrite > 0) //we're not finished
         {
             desiredValue = (byte)(desiredValue | 128); //Set the continuation flag
         }
         buffer.WriteByte(desiredValue);
     }
     WriteBytes(buffer.Content);
 }
Example #38
0
 public void SendPrivateTo(string name, string content)
 {
     if (mods.Contains(name))
     {
         account.Log(new ErrorTextInformation("[Flood] Annulation de l'envoi d'un message privé à " + name + " (Modo)"), 0);
         return;
     }
     using (BigEndianWriter writer = new BigEndianWriter())
     {
         ChatClientPrivateMessage msg = new ChatClientPrivateMessage(content, name);
         msg.Serialize(writer);
         writer.Content = account.HumanCheck.hash_function(writer.Content);
         MessagePackaging pack = new MessagePackaging(writer);
         pack.Pack((int)msg.ProtocolID);
         account.SocketManager.Send(pack.Writer.Content);
         account.Log(new PrivateTextInformation("à " + name + " : " + content), 1);
         if (account.DebugMode.Checked)
             account.Log(new DebugTextInformation("[SND] 851 (ChatClientPrivateMessage)"), 0);
     }
 }
 public void SaveGroup(List<AccountUC> accounts, string groupname)
 {
     //m_GroupAccounts.Clear();
     //foreach (AccountUC bot in accounts)
     //{
     //    bot.AccountPassword = CryptageBS.EncryptBS(bot.AccountPassword);
     //    m_GroupAccounts.Add(bot);
     //}
     if (!Directory.Exists(m_SavingGroupDirectoryPath))
         Directory.CreateDirectory(m_SavingGroupDirectoryPath);
     //if (!File.Exists(m_SavingDirectoryPath + @"\" + groupname))
     // File.Create(m_SavingDirectoryPath + @"\" + groupname);
     m_GroupAccounts = accounts;
     using (BigEndianWriter writer = new BigEndianWriter(File.Create(Path.Combine(m_SavingGroupDirectoryPath, groupname))))
     {
         writer.WriteInt(m_GroupAccounts.Count);
         foreach (AccountUC accountObject in m_GroupAccounts)
         {
             writer.WriteUTF(accountObject.AccountName);
             writer.WriteUTF(CryptageBS.EncryptBS(accountObject.AccountPassword));
         }
         //IFormatter binaryFormatter = new BinaryFormatter();
         //using (Stream stream = new FileStream(m_SavingGroupDirectoryPath + @"\" + groupname, FileMode.Create, FileAccess.Write))
         //{
         //    binaryFormatter.Serialize(stream, writer);
         //}
     }
     //foreach (AccountUC bot in accounts)
     //    bot.AccountPassword = CryptageBS.DecryptBS(bot.AccountPassword);
 }
Example #40
0
 private byte[] hashKey_Gen(AccountUC account)
 {
     try
     {
         using (BigEndianWriter writer = new BigEndianWriter())
         {
             writer.WriteUTF(account.Ticket);
             byte[] key = hash(writer.Content);
             return key;
         }
     }
     catch (Exception ex)
     {
         account.Log(new ErrorTextInformation(ex.Message + ex.InnerException), 0);
         return null;
     }
 }
Example #41
0
 public abstract void Serialize(BigEndianWriter writer);
Example #42
0
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteSByte(error);
 }
Example #43
0
 public override void Serialize(BigEndianWriter writer)
 {
     base.Serialize(writer);
     writer.WriteShort(rank);
 }
Example #44
0
        public static void PartyMemberInFightMessageTreatment(Message message, byte[] packetDatas, AccountUC account)
        {
            PartyMemberInFightMessage msg = (PartyMemberInFightMessage)message;

            using (BigEndianReader reader = new BigEndianReader(packetDatas))
            {
                msg.Deserialize(reader);
            }
            if (msg.fightMap.mapId == account.Map.Id && msg.memberName == account.MyGroup.GetMaster().CharacterBaseInformations.name)
            {
                account.Wait(500, 1500);
                using (BigEndianWriter writer = new BigEndianWriter())
                {
                    GameFightJoinRequestMessage msg2 = new GameFightJoinRequestMessage(msg.memberId, msg.fightId);
                    account.SocketManager.Send(msg2);
                }
            }
        }
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteSByte(barType);
     writer.WriteSByte(slot);
 }
Example #46
0
        public void SaveAs(string destination, bool overwrite = true)
        {
            lock (m_linksToSave)
            {
                // save the links before
                while (m_linksToSave.Count > 0)
                {
                    D2pFile link = m_linksToSave.Dequeue();

                    // theorically the path is defined
                    link.Save();
                }
            }

            Stream stream;
            if (!File.Exists(destination))
                stream = File.Create(destination);
            else if (!overwrite)
                throw new InvalidOperationException(
                    "Cannot perform SaveAs : file already exist, notify overwrite parameter to true");
            else
                stream = File.OpenWrite(destination);

            using (var writer = new BigEndianWriter(stream))
            {
                // header
                writer.WriteByte(2);
                writer.WriteByte(1);

                D2pEntry[] entries = GetEntriesOfInstanceOnly();
                // avoid the header
                int offset = 2;

                foreach (D2pEntry entry in entries)
                {
                    byte[] data = ReadFile(entry);

                    entry.Index = (int) writer.Position - offset;
                    writer.WriteBytes(data);
                }

                var entriesDefOffset = (int) writer.Position;

                foreach (D2pEntry entry in entries)
                {
                    entry.WriteEntryDefinition(writer);
                }

                var propertiesOffset = (int) writer.Position;

                foreach (D2pProperty property in m_properties)
                {
                    property.WriteProperty(writer);
                }

                IndexTable.OffsetBase = offset;
                IndexTable.EntriesCount = entries.Length;
                IndexTable.EntriesDefinitionOffset = entriesDefOffset;
                IndexTable.PropertiesCount = m_properties.Count;
                IndexTable.PropertiesOffset = propertiesOffset;
                IndexTable.Size = IndexTable.EntriesDefinitionOffset - IndexTable.OffsetBase;

                IndexTable.WriteTable(writer);
            }
        }
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteBoolean(onlySuccess);
     writer.WriteVarInt(objectUID);
 }
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteSByte(presetId);
 }
Example #49
0
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteVarShort(questId);
     writer.WriteVarShort(objectiveId);
 }
Example #50
0
        public void WriteVarShort(int value)
        {
            if (value > short.MaxValue || value < short.MinValue)
            {
                throw new Exception("Forbidden value");
            }

            BigEndianWriter buffer = new BigEndianWriter();
            if (value >= 0 && value <= 127)
            {
                buffer.WriteByte((byte)value);
                WriteBytes(buffer.Content);
                return;
            }

            short valueToWrite = (short)(value & 65535);
            while (valueToWrite != 0)
            {
                byte byteToWrite = Convert.ToByte(valueToWrite & 127);
                valueToWrite = (short)(valueToWrite >> 7);
                if (valueToWrite > 0)
                {
                    byteToWrite = Convert.ToByte(byteToWrite | 128);
                }
                buffer.WriteByte(byteToWrite);
            }
            WriteBytes(buffer.Content);
        }
Example #51
0
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteInt(elemId);
     writer.WriteInt(skillInstanceUid);
 }
 public void SaveAccountsInfos(List<Bot> bots)
 {
     foreach (Bot bot in bots)
     {
         bot.Account.Password = CryptageBS.EncryptBS(bot.Account.Password);
         m_Accounts.Add(bot.Account);
     }
     if (!Directory.Exists(m_SavingDirectoryPath))
         Directory.CreateDirectory(m_SavingDirectoryPath);
     using (BigEndianWriter writer = new BigEndianWriter())
     {
         writer.WriteInt(m_Accounts.Count);
         foreach (Account accountObject in m_Accounts)
         {
             writer.WriteUTF(accountObject.Name);
             writer.WriteUTF(accountObject.Password);
         }
         IFormatter binaryFormatter = new BinaryFormatter();
         using (Stream stream = new FileStream(m_SavingFilePath, FileMode.Create, FileAccess.Write))
         {
             binaryFormatter.Serialize(stream, writer);
         }
     }
     foreach (Bot bot in bots)
         bot.Account.Password = CryptageBS.DecryptBS(bot.Account.Password);
 }
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteInt(houseId);
     writer.WriteBoolean(bought);
     writer.WriteInt(realPrice);
 }
 public override void Serialize(BigEndianWriter writer)
 {
     writer.WriteInt(id);
 }
Example #55
0
 public override void Serialize(BigEndianWriter writer)
 {
     base.Serialize(writer);
     writer.WriteBoolean(loyal);
 }