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 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 HandleAttackStart(InPacket packet) { var GuidAttackers = packet.ReadUInt64(); var GuidTarget = packet.ReadUInt64(); //Console.WriteLine("SMSG_ATTACKSTART : " + GuidAttackers + " | " + GuidTarget); if (GuidAttackers == GroupLeaderGuid) { //Console.WriteLine("GuidA : " + GuidAttackers + " | GuidT " + GuidTarget); AttackAssist(GuidTarget); cibleGuid = GuidTarget; } }
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 HandleDestroyObject(InPacket packet) { ulong guid = packet.ReadUInt64(); WorldObject worldObject; if (Objects.TryGetValue(guid, out worldObject)) { worldObject.ResetPosition(); Objects.Remove(guid); } }
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 < 19; ++i) { packet.ReadUInt32(); packet.ReadByte(); packet.ReadUInt32(); // ??? } // read bags for (int i = 0; i < 4; ++i) { packet.ReadUInt32(); packet.ReadByte(); packet.ReadUInt32(); } }
protected void HandlerResurrectRequest(InPacket packet) { var resurrectorGuid = packet.ReadUInt64(); OutPacket response = new OutPacket(WorldCommand.CMSG_RESURRECT_RESPONSE); response.Write(resurrectorGuid); if (Settings.Default.Behavior.AutoAcceptResurrectRequests) { response.Write((byte)1); SendPacket(response); OutPacket result = new OutPacket(WorldCommand.MSG_MOVE_TELEPORT_ACK); result.WritePacketGuid(Player.GUID); result.Write((UInt32)0); result.Write(DateTime.Now.Millisecond); SendPacket(result); } else { response.Write((byte)0); SendPacket(response); } }
protected void HandleResurrectRequest(InPacket packet) { var resurrectorGuid = packet.ReadUInt64(); OutPacket response = new OutPacket(NetworkOperationCode.CMSG_RESURRECT_RESPONSE); response.Write(resurrectorGuid); /*if (Behavior.AutoAcceptResurrectRequests) * { * response.Write((byte)1); * SendPacket(response); * * OutPacket result = new OutPacket(NetworkOperationCode.MSG_MOVE_TELEPORT_ACK); * result.WritePacketGuid(Player.GUID); * result.Write((UInt32)0); * result.Write(DateTime.Now.Millisecond); * SendPacket(result); * } * else * { * response.Write((byte)0); * SendPacket(response); * }*/ }
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(); } }