Esempio n. 1
0
        public AddExpPacket(D2gsPacket packet)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            switch (id)
            {
            case 0x1A:
                Experience = reader.ReadByte();
                break;

            case 0x1B:
                Experience = reader.ReadUInt16();
                break;

            case 0x1C:
                Experience = reader.ReadUInt32();
                break;

            default:
                throw new D2GSPacketException("Unexpected packet id");
            }
            reader.Close();
            Log.Verbose($"(0x{id,2:X2}) Add Experience:\n" +
                        $"\tExperience: {Experience}");
        }
Esempio n. 2
0
        public BaseAttributePacket(D2gsPacket packet)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            Attribute = (Attribute)reader.ReadByte();
            switch (id)
            {
            case 0x1D:
                Value = reader.ReadByte();
                break;

            case 0x1E:
                Value = reader.ReadInt16();
                break;

            case 0x1F:
                Value = reader.ReadInt32();
                break;

            default:
                throw new D2GSPacketException("Unexpected packet id");
            }
            reader.Close();
            Log.Verbose($"(0x{id,2:X2}) Base Attribute:\n" +
                        $"\tAttribute: {Attribute}:" +
                        $"\t{Value}");
        }
Esempio n. 3
0
        public SetItemSkillPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            _      = reader.ReadUInt16();
            UnitId = reader.ReadUInt32();
            Skill  = (Skill)reader.ReadUInt16();
            switch (id)
            {
            case 0x21:
                BaseLevel = reader.ReadByte();
                goto case 0x22;

            case 0x22:
                Amount = reader.ReadByte();
                break;

            default:
                throw new D2GSPacketException("Invalid packet id");
            }
            reader.Close();

            Log.Verbose($"(0x{packet.Raw[0],2:X2}) Set Item Skill:\n" +
                        $"\tUnit ID: {UnitId}\n" +
                        $"\tSkill: {Skill}\n" +
                        $"\tAmount: {Amount}");
        }
Esempio n. 4
0
        public BaseAttributePacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            Attribute = (Attribute)reader.ReadByte();
            switch ((InComingPacket)id)
            {
            case InComingPacket.AddAttributeByte:
                Value = reader.ReadByte();
                break;

            case InComingPacket.AddAttributeWord:
                Value = reader.ReadInt16();
                break;

            case InComingPacket.AddAttributeDword:
                Value = reader.ReadInt32();
                break;

            default:
                throw new D2GSPacketException($"Invalid Packet Id {id}");
            }
            reader.Close();
        }
        public AddExpPacket(D2gsPacket packet)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            switch ((InComingPacket)id)
            {
            case InComingPacket.AddExperienceByte:
                Experience = reader.ReadByte();
                break;

            case InComingPacket.AddExperienceWord:
                Experience = reader.ReadUInt16();
                break;

            case InComingPacket.AddExperienceDword:
                Experience = reader.ReadUInt32();
                break;

            default:
                throw new D2GSPacketException($"Invalid Packet Id {id}");
            }
            reader.Close();
            Log.Verbose($"(0x{id,2:X2}) Add Experience:\n" +
                        $"\tExperience: {Experience}");
        }
Esempio n. 6
0
 internal void SendPacket(D2gsPacket packet)
 {
     if (IsInGame())
     {
         Connection.WritePacket(packet);
     }
 }
Esempio n. 7
0
        public ButtonActionPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);

            if ((InComingPacket)reader.ReadByte() != InComingPacket.ButtonAction)
            {
                throw new D2GSPacketException("Expected Packet Type Not Found");
            }
            Action = (ButtonAction)reader.ReadByte();
        }
        public GameHandshakePacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if (InComingPacket.GameHandshake != (InComingPacket)id)
            {
                throw new D2GSPacketException($"Invalid Packet Id {id}");
            }
        }
        public PartyAutomapInfoPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);

            if ((InComingPacket)reader.ReadByte() != InComingPacket.PartyAutomapInfo)
            {
                throw new D2GSPacketException("Expected Packet Type Not Found");
            }
            Id       = reader.ReadUInt32();
            Location = new Point((ushort)reader.ReadInt32(), (ushort)reader.ReadInt32());
        }
Esempio n. 10
0
 public ParseItemPacket(D2gsPacket packet) : base(packet.Raw)
 {
     Item = Parse(Raw.ToList());
     Log.Verbose($"{BitConverter.ToString(Raw)}");
     Log.Verbose($"(0x{packet.Type,2:X2}) Parse Item Packet:\n" +
                 $"\tLevel {Item.Level}, {Item.Quality}" + $" { (Item.Ethereal ? "Ethereal" : "")}" +
                 $"\t{ (Item.HasSockets ? $"Sockets: {Item.Sockets}" : "")}\n" +
                 $"\t[{Item.Type}] " + $"{ (Item.IsIdentified ? "" : "Unidentified")} " + $"{Item.Name}\n" +
                 $"\tItem ID: {Item.Id}\n" +
                 $"\tAction: {Item.Action}\n" +
                 $"\tContainer: {Item.Container}");
 }
        public PlayerLeftGamePacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if (InComingPacket.PlayerLeftGame != (InComingPacket)id)
            {
                throw new D2GSPacketException($"Invalid Packet Id {id}");
            }

            Id = reader.ReadUInt32();
        }
Esempio n. 12
0
        public CorpseAssignPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);

            if ((InComingPacket)reader.ReadByte() != InComingPacket.CorpseAssign)
            {
                throw new D2GSPacketException("Expected Packet Type Not Found");
            }
            CorpseAdded = reader.ReadBoolean();
            PlayerId    = reader.ReadUInt32();
            CorpseId    = reader.ReadUInt32();
        }
        public RemoveObjectPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if (InComingPacket.RemoveObject != (InComingPacket)id)
            {
                throw new D2GSPacketException($"Invalid Packet Id {id}");
            }
            EntityType = (EntityType)reader.ReadByte();
            EntityId   = reader.ReadUInt32();
            reader.Close();
        }
Esempio n. 14
0

        
Esempio n. 15
0
        private void HandleChatMessageEvent(Client client, D2gsPacket obj)
        {
            var packet = new ChatPacket(obj);

            if (packet.ChatType != 0x04)
            {
                Log.Debug(packet.RenderText());
                if (packet.CharacterName != client.Game.Me?.Name)
                {
                    SendMessage($"To {client.LoggedInUserName()} :" + packet.RenderText()).Wait();
                }
            }
        }
        public PlayerInGamePacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if (InComingPacket.PlayerInGame != (InComingPacket)id)
            {
                throw new D2GSPacketException($"Invalid Packet Id {id}");
            }
            reader.ReadUInt16(); // packet length
            Id    = reader.ReadUInt32();
            Class = (CharacterClass)reader.ReadByte();
            Name  = reader.ReadNullTerminatedString();
        }
        public MapRevealPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if ((InComingPacket)id != InComingPacket.MapReveal)
            {
                throw new D2GSPacketException($"Invalid Packet Id {id}");
            }
            X    = reader.ReadUInt16();
            Y    = reader.ReadUInt16();
            Area = (Area)reader.ReadByte();
            reader.Close();
        }
        public TownPortalStatePacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if ((InComingPacket)id != InComingPacket.TownPortalState)
            {
                throw new D2GSPacketException($"Invalid Packet Id {id}");
            }
            reader.ReadByte();
            Area       = (Act.Area)reader.ReadByte();
            TeleportId = reader.ReadUInt32();
            reader.Close();
        }
        public EventNotifyPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if ((InComingPacket)id != InComingPacket.EventMessage)
            {
                throw new D2GSPacketException($"Invalid Packet Id {id}");
            }

            EventType          = (EventType)reader.ReadByte();
            Action             = reader.ReadByte();
            EntityId           = reader.ReadUInt32();
            PlayerRelationType = (PlayerRelationType)reader.ReadByte();
        }
Esempio n. 20
0

        
Esempio n. 21
0
        public ObjectStatePacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if (InComingPacket.ObjectState != (InComingPacket)id)
            {
                throw new D2GSPacketException("Invalid Packet Id");
            }
            ObjectType = reader.ReadByte();
            ObjectId   = reader.ReadUInt32();
            reader.ReadByte();
            reader.ReadByte();
            State = (EntityState)reader.ReadUInt32();
        }
        public ReassignPlayerPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if ((InComingPacket)id != InComingPacket.ReassignPlayer)
            {
                throw new D2GSPacketException($"Invalid Packet Id {id}");
            }
            UnitType = (EntityType)reader.ReadByte();
            UnitId   = reader.ReadUInt32();
            Location = new Point(reader.ReadUInt16(), reader.ReadUInt16());
            _        = reader.ReadByte();
            reader.Close();
        }
Esempio n. 23
0
        public NpcHitPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if ((InComingPacket)id != InComingPacket.NPCHit)
            {
                throw new D2GSPacketException($"Invalid Packet Id {id}");
            }

            EntityType  = (EntityType)reader.ReadByte();
            EntityId    = reader.ReadUInt32();
            EntityState = (EntityState)reader.ReadByte();
            reader.ReadByte();
            LifePercentage = reader.ReadByte();
        }
        public NPCStopPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if ((InComingPacket)id != InComingPacket.NPCStop)
            {
                throw new D2GSPacketException($"Invalid Packet Id {id}");
            }

            EntityId = reader.ReadUInt32();
            var x = reader.ReadUInt16();
            var y = reader.ReadUInt16();

            Location = new Point(x, y);
        }
Esempio n. 25
0
        public PlayerStopPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if (InComingPacket.PlayerStop != (InComingPacket)id)
            {
                throw new D2GSPacketException($"Invalid Packet Id {id}");
            }
            EntityType   = (EntityType)reader.ReadByte();
            EntityId     = reader.ReadUInt32();
            EntityEffect = (EntityEffect)reader.ReadByte();
            Location     = new Point(reader.ReadUInt16(), reader.ReadUInt16());
            reader.ReadByte();
            reader.ReadByte();
        }
        public AssignObjectPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if (InComingPacket.AssignObject != (InComingPacket)id)
            {
                throw new D2GSPacketException($"Invalid Packet Id {id}");
            }
            EntityType      = (EntityType)reader.ReadByte();
            EntityId        = reader.ReadUInt32();
            ObjectCode      = (EntityCode)reader.ReadUInt16();
            Location        = new Point(reader.ReadUInt16(), reader.ReadUInt16());
            State           = (EntityState)reader.ReadByte();
            InteractionType = reader.ReadByte();
            reader.Close();
        }
Esempio n. 27
0
        public GameQuestInfoPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if (id != 0x29)
            {
                throw new D2GSPacketException("Invalid packet id found");
            }
            for (int i = 0; i < 96; i++)
            {
                Quests[i] = reader.ReadByte();
            }

            Log.Verbose($"(0x{id,2:X2}) Game Quest Info:\n" +
                        $"\tQuests: {Quests.Aggregate("", (s, i) => s + "," + $"{i,2:X2}")}");
        }
Esempio n. 28
0
        public AssignPlayerPacket(D2gsPacket packet)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);

            if (reader.ReadByte() != 0x59)
            {
                throw new D2GSPacketException("Expected Packet Type Not Found");
            }
            Id       = reader.ReadUInt32();
            Class    = (CharacterClass)reader.ReadByte();
            Name     = D2NG.Packet.ReadString(reader);
            Location = new Point(reader.ReadUInt16(), reader.ReadUInt16());
            Log.Verbose($"(0x{packet.Raw[0], 2:X2}) Assigning Player:\n" +
                        $"\tName: {Name}\n" +
                        $"\tClass: {Class}\n" +
                        $"\tId: {Id}\n" +
                        $"\tLocation: {Location}\n");
        }
        public UpdateEntityEffectsPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BitReader(packet.Raw);

            if ((InComingPacket)reader.ReadByte() != InComingPacket.UpdateEntityEffects)
            {
                throw new D2GSPacketException("Expected Packet Type Not Found");
            }
            EntityType = (EntityType)reader.ReadByte();
            EntityId   = reader.ReadUInt32();
            for (int i = 0; i < 160; i++)
            {
                if (reader.ReadBit())
                {
                    EntityEffects.Add((EntityEffect)i);
                }
            }
        }
Esempio n. 30
0
        public MapRevealPacket(D2gsPacket packet) : base(packet.Raw)
        {
            var reader = new BinaryReader(new MemoryStream(packet.Raw), Encoding.ASCII);
            var id     = reader.ReadByte();

            if (id != 0x07)
            {
                throw new D2GSPacketException("Invalid Packet Id");
            }
            X    = reader.ReadUInt16();
            Y    = reader.ReadUInt16();
            Area = (Area)reader.ReadByte();
            reader.Close();

            Log.Verbose($"(0x{ id,2:X2}) Map Reveal:\n" +
                        $"\tLocation: ({X}, {Y})\n" +
                        $"\tArea: {Area}");
        }