Beispiel #1
0
        protected void HandleMessage(InPacket packet)
        {
            var    chatType     = (Client.Chat.Definitions.ChatMessageType)packet.ReadByte();
            var    language     = (Client.Chat.Definitions.Language)packet.ReadInt32();
            UInt64 senderGuid   = packet.ReadUInt64();
            var    unkInt       = packet.ReadUInt32();
            var    receiverGuid = packet.ReadUInt64();
            UInt32 messageLen   = packet.ReadUInt32();
            string message      = packet.ReadCString();

            Console.WriteLine(chatType + "." + language + "." + senderGuid + "." + message);
            if (message == "heal")
            {
                var response = new OutPacket(WorldCommand.CMSG_CAST_SPELL);
                response.Write((Byte)1);
                response.Write((UInt32)2050);
                response.Write((Byte)0x00000000);
                response.Write((UInt32)0x00000000);

                SendPacket(response);
                Console.WriteLine("SendPacket Heal!");
            }
            else if (message == "targetme")
            {
                TargetLeader();
            }
        }
Beispiel #2
0
        protected void HandleAllAchievementData(InPacket packet)
        {
            CompletedAchievements.Clear();
            AchievementCriterias.Clear();

            for (;;)
            {
                uint achievementId = packet.ReadUInt32();
                if (achievementId == 0xFFFFFFFF)
                {
                    break;
                }

                packet.ReadPackedTime();

                CompletedAchievements.Add(achievementId);
            }

            for (;;)
            {
                uint criteriaId = packet.ReadUInt32();
                if (criteriaId == 0xFFFFFFFF)
                {
                    break;
                }
                ulong criteriaCounter = packet.ReadPackedGuid();
                packet.ReadPackedGuid();
                packet.ReadInt32();
                packet.ReadPackedTime();
                packet.ReadInt32();
                packet.ReadInt32();

                AchievementCriterias[criteriaId] = criteriaCounter;
            }
        }
Beispiel #3
0
        protected void HandlePartyList(InPacket packet)
        {
            GroupType groupType = (GroupType)packet.ReadByte();

            packet.ReadByte();
            packet.ReadByte();
            packet.ReadByte();
            if (groupType.HasFlag(GroupType.GROUPTYPE_LFG))
            {
                packet.ReadByte();
                packet.ReadUInt32();
            }
            packet.ReadUInt64();
            packet.ReadUInt32();
            uint membersCount = packet.ReadUInt32();

            GroupMembersGuids.Clear();
            for (uint index = 0; index < membersCount; index++)
            {
                packet.ReadCString();
                UInt64 memberGuid = packet.ReadUInt64();
                GroupMembersGuids.Add(memberGuid);
                packet.ReadByte();
                packet.ReadByte();
                packet.ReadByte();
                packet.ReadByte();
            }
            GroupLeaderGuid = packet.ReadUInt64();
        }
Beispiel #4
0
        protected void HandleThreatUpdate(InPacket packet)
        {
            var guidMonster = packet.ReadPackedGuid();
            //Console.WriteLine("GuidMonster : " + guidMonster);

            var count = packet.ReadUInt32();

            for (int i = 0; i < count; i++)
            {
                //Console.WriteLine("first GUID : " + packet.ReadPackedGuid() + " Threat : " + packet.ReadUInt32());
            }


            /*var Guid = packet.ReadUInt64();
             * var boolean = packet.ReadBoolean();
             * if(cibleGuid != GroupLeaderGuid)
             * {
             *  if (Guid == cibleGuid)
             *  {
             *      var positionCible = packet.ReadVector3();
             *      Position pose = new Position(positionCible.X, positionCible.Y, positionCible.Z, 0, Player.MapID);
             *      MoveTo(pose);
             *      Console.WriteLine("Deplacement ver le monstre!");
             *  }
             * }*/
        }
Beispiel #5
0
        protected void HandleTradeStatus(InPacket packet)
        {
            if (Behavior.Begger)
            {
                TradeStatus status = (TradeStatus)packet.ReadUInt32();
                switch (status)
                {
                case TradeStatus.BeginTrade:
                    TraderGUID = packet.ReadUInt64();
                    // Stop moving
                    CancelActionsByFlag(ActionFlag.Movement);
                    // Accept trade
                    OutPacket beginTrade = new OutPacket(WorldCommand.CMSG_BEGIN_TRADE);
                    SendPacket(beginTrade);
                    break;

                case TradeStatus.Canceled:
                    EnableActionsByFlag(ActionFlag.Movement);
                    TraderGUID = 0;
                    break;

                case TradeStatus.Accept:
                    OutPacket acceptTrade = new OutPacket(WorldCommand.CMSG_ACCEPT_TRADE);
                    SendPacket(acceptTrade);
                    break;

                case TradeStatus.Tradecomplete:
                    DoSayChat("Thank you!");
                    EnableActionsByFlag(ActionFlag.Movement);
                    HandleTriggerInput(TriggerActionType.TradeCompleted, TraderGUID);
                    TraderGUID = 0;
                    break;
                }
            }
        }
Beispiel #6
0
        protected void HandleCriteriaUpdate(InPacket packet)
        {
            uint  criteriaId      = packet.ReadUInt32();
            ulong criteriaCounter = packet.ReadPackedGuid();

            AchievementCriterias[criteriaId] = criteriaCounter;
        }
Beispiel #7
0
 protected void HandleLoginVerifyWorld(InPacket packet)
 {
     Player.MapID = (int)packet.ReadUInt32();
     Player.X     = packet.ReadSingle();
     Player.Y     = packet.ReadSingle();
     Player.Z     = packet.ReadSingle();
     Player.O     = packet.ReadSingle();
 }
Beispiel #8
0
            public void HandleUpdatePacket(InPacket packet)
            {
                blockCount = packet.ReadUInt32();
                for (int blockIndex = 0; blockIndex < blockCount; blockIndex++)
                {
                    ResetData();

                    updateType = (ObjectUpdateType)packet.ReadByte();

                    switch (updateType)
                    {
                    case ObjectUpdateType.UPDATETYPE_VALUES:
                        guid = packet.ReadPackedGuid();
                        ReadValuesUpdateData(packet);
                        break;

                    case ObjectUpdateType.UPDATETYPE_MOVEMENT:
                        guid = packet.ReadPackedGuid();
                        ReadMovementUpdateData(packet);
                        break;

                    case ObjectUpdateType.UPDATETYPE_CREATE_OBJECT:
                    case ObjectUpdateType.UPDATETYPE_CREATE_OBJECT2:
                        guid       = packet.ReadPackedGuid();
                        objectType = (TypeID)packet.ReadByte();
                        ReadMovementUpdateData(packet);
                        ReadValuesUpdateData(packet);
                        break;

                    case ObjectUpdateType.UPDATETYPE_OUT_OF_RANGE_OBJECTS:
                        var guidCount = packet.ReadUInt32();
                        for (var guidIndex = 0; guidIndex < guidCount; guidIndex++)
                        {
                            outOfRangeGuids.Add(packet.ReadPackedGuid());
                        }
                        break;

                    case ObjectUpdateType.UPDATETYPE_NEAR_OBJECTS:
                        break;
                    }

                    HandleUpdateData();
                }
            }
Beispiel #9
0
        public MovementInfo(InPacket packet)
        {
            Flags    = (MovementFlags)packet.ReadUInt32();
            Flags2   = (MovementFlags2)packet.ReadUInt16();
            Time     = packet.ReadUInt32();
            Position = packet.ReadVector3();
            O        = packet.ReadSingle();

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_ONTRANSPORT))
            {
                TransportGuid     = packet.ReadPackedGuid();
                TransportPosition = packet.ReadVector3();
                TransportO        = packet.ReadSingle();
                TransportTime     = packet.ReadUInt32();
                TransportSeat     = packet.ReadByte();
                if (Flags2.HasFlag(MovementFlags2.MOVEMENTFLAG2_INTERPOLATED_MOVEMENT))
                {
                    TransportTime2 = packet.ReadUInt32();
                }
            }

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_SWIMMING) || Flags.HasFlag(MovementFlags.MOVEMENTFLAG_FLYING) ||
                Flags2.HasFlag(MovementFlags2.MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING))
            {
                Pitch = packet.ReadSingle();
            }

            FallTime = packet.ReadUInt32();

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_FALLING))
            {
                JumpZSpeed   = packet.ReadSingle();
                JumpSinAngle = packet.ReadSingle();
                JumpCosAngle = packet.ReadSingle();
                JumpXYSpeed  = packet.ReadSingle();
            }

            if (Flags.HasFlag(MovementFlags.MOVEMENTFLAG_SPLINE_ELEVATION))
            {
                SplineElevation = packet.ReadSingle();
            }
        }
Beispiel #10
0
        protected void HandleLogoutResponse(InPacket packet)
        {
            bool logoutOk = packet.ReadUInt32() == 0;
            bool instant  = packet.ReadByte() != 0;

            if (instant || !logoutOk)
            {
                Connected = false;
                LoggedIn  = false;
                Running   = false;
            }
        }
Beispiel #11
0
        protected void HandleMoveTeleportAck(InPacket packet)
        {
            var packGuid = packet.ReadPackedGuid();

            packet.ReadUInt32();
            var movementFlags      = packet.ReadUInt32();
            var extraMovementFlags = packet.ReadUInt16();
            var time = packet.ReadUInt32();

            Player.X = packet.ReadSingle();
            Player.Y = packet.ReadSingle();
            Player.Z = packet.ReadSingle();
            Player.O = packet.ReadSingle();

            OutPacket result = new OutPacket(WorldCommand.MSG_MOVE_TELEPORT_ACK);

            result.WritePacketGuid(Player.GUID);
            result.Write((UInt32)0);
            result.Write(time);
            SendPacket(result);
        }
Beispiel #12
0
        protected void HandleNewWorld(InPacket packet)
        {
            Player.MapID = (int)packet.ReadUInt32();
            Player.X     = packet.ReadSingle();
            Player.Y     = packet.ReadSingle();
            Player.Z     = packet.ReadSingle();
            Player.O     = packet.ReadSingle();

            OutPacket result = new OutPacket(WorldCommand.MSG_MOVE_WORLDPORT_ACK);

            SendPacket(result);
        }
Beispiel #13
0
        protected void HandleMoveTeleportAck(InPacket packet)
        {
            var packGuid = packet.ReadPackedGuid();

            packet.ReadUInt32();
            var movementFlags      = packet.ReadUInt32();
            var extraMovementFlags = packet.ReadUInt16();
            var time = packet.ReadUInt32();

            Player.X = packet.ReadSingle();
            Player.Y = packet.ReadSingle();
            Player.Z = packet.ReadSingle();
            Player.O = packet.ReadSingle();

            CancelActionsByFlag(ActionFlag.Movement, false);

            OutPacket result = new OutPacket(NetworkOperationCode.MSG_MOVE_TELEPORT_ACK);

            result.WritePacketGuid(Player.GUID);
            result.Write((UInt32)0);
            result.Write(time);
            SendPacket(result);
        }
        public Character(InPacket packet)
        {
            GUID    = packet.ReadUInt64();
            Name    = packet.ReadCString();
            Race    = (Race)packet.ReadByte();
            Class   = (Class)packet.ReadByte();
            Gender  = (Gender)packet.ReadByte();
            Bytes   = packet.ReadBytes(5);
            Level   = packet.ReadByte();
            ZoneId  = packet.ReadUInt32();
            MapId   = packet.ReadUInt32();
            X       = packet.ReadSingle();
            Y       = packet.ReadSingle();
            Z       = packet.ReadSingle();
            GuildId = packet.ReadUInt32();
            Flags   = packet.ReadUInt32();
            packet.ReadUInt32();                // customize (rename, etc)
            packet.ReadByte();                  // first login
            PetInfoId   = packet.ReadUInt32();
            PetLevel    = packet.ReadUInt32();
            PetFamilyId = packet.ReadUInt32();

            // read items
            for (int i = 0; i < Items.Length - 1; ++i)
            {
                Items[i] = new Item(packet);
            }

            // read bags
            for (int i = 0; i < 4; ++i)
            {
                packet.ReadUInt32();
                packet.ReadByte();
                packet.ReadUInt32();
            }
        }
Beispiel #15
0
            private void ReadValuesUpdateData(InPacket packet)
            {
                byte blockCount = packet.ReadByte();

                int[] updateMask = new int[blockCount];
                for (var i = 0; i < blockCount; i++)
                {
                    updateMask[i] = packet.ReadInt32();
                }
                var mask = new BitArray(updateMask);

                for (var i = 0; i < mask.Count; ++i)
                {
                    if (!mask[i])
                    {
                        continue;
                    }

                    updateFields[i] = packet.ReadUInt32();
                }
            }
Beispiel #16
0
 protected void HandleCorpseReclaimDelay(InPacket packet)
 {
     CorpseReclaim = DateTime.Now.AddMilliseconds(packet.ReadUInt32());
 }
 public Item(InPacket packet)
 {
     DisplayId     = packet.ReadUInt32();
     InventoryType = packet.ReadByte();
     packet.ReadUInt32();                // ???
 }
Beispiel #18
0
 protected void HandleTransferPending(InPacket packet)
 {
     Player.ResetPosition();
     var newMap = packet.ReadUInt32();
 }
Beispiel #19
0
            void ReadMovementUpdateData(InPacket packet)
            {
                flags = (ObjectUpdateFlags)packet.ReadUInt16();
                if (flags.HasFlag(ObjectUpdateFlags.UPDATEFLAG_LIVING))
                {
                    ReadMovementInfo(packet);

                    movementSpeeds = new Dictionary <UnitMoveType, float>();
                    movementSpeeds[UnitMoveType.MOVE_WALK]        = packet.ReadSingle();
                    movementSpeeds[UnitMoveType.MOVE_RUN]         = packet.ReadSingle();
                    movementSpeeds[UnitMoveType.MOVE_RUN_BACK]    = packet.ReadSingle();
                    movementSpeeds[UnitMoveType.MOVE_SWIM]        = packet.ReadSingle();
                    movementSpeeds[UnitMoveType.MOVE_SWIM_BACK]   = packet.ReadSingle();
                    movementSpeeds[UnitMoveType.MOVE_FLIGHT]      = packet.ReadSingle();
                    movementSpeeds[UnitMoveType.MOVE_FLIGHT_BACK] = packet.ReadSingle();
                    movementSpeeds[UnitMoveType.MOVE_TURN_RATE]   = packet.ReadSingle();
                    movementSpeeds[UnitMoveType.MOVE_PITCH_RATE]  = packet.ReadSingle();

                    if (movementInfo.Flags.HasFlag(MovementFlags.MOVEMENTFLAG_SPLINE_ENABLED))
                    {
                        splineFlags = (SplineFlags)packet.ReadUInt32();
                        if (splineFlags.HasFlag(SplineFlags.Final_Angle))
                        {
                            splineFacingAngle = packet.ReadSingle();
                        }
                        else if (splineFlags.HasFlag(SplineFlags.Final_Target))
                        {
                            splineFacingTargetGuid = packet.ReadUInt64();
                        }
                        else if (splineFlags.HasFlag(SplineFlags.Final_Point))
                        {
                            splineFacingPointX = packet.ReadVector3();
                        }

                        splineTimePassed = packet.ReadInt32();
                        splineDuration   = packet.ReadInt32();
                        splineId         = packet.ReadUInt32();
                        packet.ReadSingle();
                        packet.ReadSingle();
                        splineVerticalAcceleration = packet.ReadSingle();
                        splineEffectStartTime      = packet.ReadInt32();
                        uint splineCount = packet.ReadUInt32();
                        for (uint index = 0; index < splineCount; index++)
                        {
                            splinePoints.Add(packet.ReadVector3());
                        }
                        splineEvaluationMode = (SplineEvaluationMode)packet.ReadByte();
                        splineEndPoint       = packet.ReadVector3();
                    }
                }
                else if (flags.HasFlag(ObjectUpdateFlags.UPDATEFLAG_POSITION))
                {
                    transportGuid   = packet.ReadPackedGuid();
                    position        = packet.ReadVector3();
                    transportOffset = packet.ReadVector3();
                    o = packet.ReadSingle();
                    corpseOrientation = packet.ReadSingle();
                }
                else if (flags.HasFlag(ObjectUpdateFlags.UPDATEFLAG_STATIONARY_POSITION))
                {
                    position = packet.ReadVector3();
                    o        = packet.ReadSingle();
                }

                if (flags.HasFlag(ObjectUpdateFlags.UPDATEFLAG_UNKNOWN))
                {
                    packet.ReadUInt32();
                }

                if (flags.HasFlag(ObjectUpdateFlags.UPDATEFLAG_LOWGUID))
                {
                    lowGuid = packet.ReadUInt32();
                }

                if (flags.HasFlag(ObjectUpdateFlags.UPDATEFLAG_HAS_TARGET))
                {
                    targetGuid = packet.ReadPackedGuid();
                }

                if (flags.HasFlag(ObjectUpdateFlags.UPDATEFLAG_TRANSPORT))
                {
                    transportTimer = packet.ReadUInt32();
                }

                if (flags.HasFlag(ObjectUpdateFlags.UPDATEFLAG_VEHICLE))
                {
                    vehicledID         = packet.ReadUInt32();
                    vehicleOrientation = packet.ReadSingle();
                }

                if (flags.HasFlag(ObjectUpdateFlags.UPDATEFLAG_ROTATION))
                {
                    goRotation = packet.ReadInt64();
                }
            }