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(); } }
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 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(); }
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 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; } } }
protected void HandleCriteriaUpdate(InPacket packet) { uint criteriaId = packet.ReadUInt32(); ulong criteriaCounter = packet.ReadPackedGuid(); AchievementCriterias[criteriaId] = criteriaCounter; }
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(); }
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 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 HandleLogoutResponse(InPacket packet) { bool logoutOk = packet.ReadUInt32() == 0; bool instant = packet.ReadByte() != 0; if (instant || !logoutOk) { Connected = false; LoggedIn = false; Running = false; } }
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 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); }
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(); } }
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(); } }
protected void HandleCorpseReclaimDelay(InPacket packet) { CorpseReclaim = DateTime.Now.AddMilliseconds(packet.ReadUInt32()); }
public Item(InPacket packet) { DisplayId = packet.ReadUInt32(); InventoryType = packet.ReadByte(); packet.ReadUInt32(); // ??? }
protected void HandleTransferPending(InPacket packet) { Player.ResetPosition(); var newMap = packet.ReadUInt32(); }
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(); } }