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; } }
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!"); * } * }*/ }
protected void HandleCriteriaUpdate(InPacket packet) { uint criteriaId = packet.ReadUInt32(); ulong criteriaCounter = packet.ReadPackedGuid(); AchievementCriterias[criteriaId] = criteriaCounter; }
public void HandleMovementPacket(InPacket packet) { ResetData(); updateType = ObjectUpdateType.UPDATETYPE_MOVEMENT; guid = packet.ReadPackedGuid(); ReadMovementInfo(packet); HandleUpdateData(); }
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(); } }
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()); }
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(); } }
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); }
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); }
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(); } }