示例#1
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;
            }
        }
示例#2
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!");
             *  }
             * }*/
        }
示例#3
0
        protected void HandleCriteriaUpdate(InPacket packet)
        {
            uint  criteriaId      = packet.ReadUInt32();
            ulong criteriaCounter = packet.ReadPackedGuid();

            AchievementCriterias[criteriaId] = criteriaCounter;
        }
示例#4
0
 public void HandleMovementPacket(InPacket packet)
 {
     ResetData();
     updateType = ObjectUpdateType.UPDATETYPE_MOVEMENT;
     guid       = packet.ReadPackedGuid();
     ReadMovementInfo(packet);
     HandleUpdateData();
 }
示例#5
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();
                }
            }
示例#6
0
            public void HandleMonsterMovementPacket(InPacket packet)
            {
                ResetData();
                updateType = ObjectUpdateType.UPDATETYPE_MOVEMENT;
                guid       = packet.ReadPackedGuid();
                byte        unk         = packet.ReadByte();
                WorldObject worldObject = game.Objects[guid];

                worldObject.Set(packet.ReadVector3());
            }
示例#7
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();
            }
        }
示例#8
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);
        }
示例#9
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);
        }
示例#10
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();
                }
            }