diff options
| author | kaelima <kaelima@live.se> | 2012-07-25 11:59:05 +0200 |
|---|---|---|
| committer | kaelima <kaelima@live.se> | 2012-07-25 11:59:05 +0200 |
| commit | 443f1e71d8660307ebf17f20abc954bf4b9eba74 (patch) | |
| tree | 2b4b91aea798ef1f56c8b6a183b6eaadce303512 /src/server/game/Entities/Creature | |
| parent | 62015f79a5980a21f2b10ad264ecd923fd62bd38 (diff) | |
Core/PacketIO: Fix a couple of spline packets
Diffstat (limited to 'src/server/game/Entities/Creature')
| -rwxr-xr-x | src/server/game/Entities/Creature/Creature.cpp | 147 |
1 files changed, 138 insertions, 9 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 9fd48bfc320..6d0dee92e38 100755 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2480,9 +2480,52 @@ bool Creature::SetWalk(bool enable) if (!Unit::SetWalk(enable)) return false; - WorldPacket data(enable ? SMSG_SPLINE_MOVE_SET_WALK_MODE : SMSG_SPLINE_MOVE_SET_RUN_MODE, 9); - data.append(GetPackGUID()); - SendMessageToSet(&data, false); + ObjectGuid guid = GetGUID(); + if (enable) + { + WorldPacket data(SMSG_SPLINE_MOVE_SET_WALK_MODE, 9); + data.WriteBit(guid[7]); + data.WriteBit(guid[6]); + data.WriteBit(guid[5]); + data.WriteBit(guid[1]); + data.WriteBit(guid[3]); + data.WriteBit(guid[4]); + data.WriteBit(guid[2]); + data.WriteBit(guid[0]); + data.FlushBits(); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[3]); + SendMessageToSet(&data, false); + } + else + { + WorldPacket data(SMSG_SPLINE_MOVE_SET_RUN_MODE, 9); + data.WriteBit(guid[5]); + data.WriteBit(guid[6]); + data.WriteBit(guid[3]); + data.WriteBit(guid[2]); + data.WriteBit(guid[0]); + data.WriteBit(guid[7]); + data.WriteBit(guid[4]); + data.WriteBit(guid[1]); + data.FlushBits(); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[3]); + SendMessageToSet(&data, false); + } + return true; } @@ -2496,9 +2539,52 @@ bool Creature::SetDisableGravity(bool disable, bool packetOnly/*=false*/) if (!movespline->Initialized()) return true; - WorldPacket data(disable ? SMSG_SPLINE_MOVE_GRAVITY_DISABLE : SMSG_SPLINE_MOVE_GRAVITY_ENABLE, 9); - data.append(GetPackGUID()); - SendMessageToSet(&data, false); + ObjectGuid guid = GetGUID(); + if (disable) + { + WorldPacket data(SMSG_SPLINE_MOVE_GRAVITY_DISABLE, 9); + data.WriteBit(guid[7]); + data.WriteBit(guid[3]); + data.WriteBit(guid[4]); + data.WriteBit(guid[2]); + data.WriteBit(guid[5]); + data.WriteBit(guid[1]); + data.WriteBit(guid[0]); + data.WriteBit(guid[6]); + data.FlushBits(); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[0]); + SendMessageToSet(&data, false); + } + else + { + WorldPacket data(SMSG_SPLINE_MOVE_GRAVITY_ENABLE, 9); + data.WriteBit(guid[5]); + data.WriteBit(guid[4]); + data.WriteBit(guid[7]); + data.WriteBit(guid[1]); + data.WriteBit(guid[3]); + data.WriteBit(guid[6]); + data.WriteBit(guid[2]); + data.WriteBit(guid[0]); + data.FlushBits(); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[5]); + SendMessageToSet(&data, false); + } + return true; } @@ -2517,8 +2603,51 @@ bool Creature::SetHover(bool enable) return true; //! Not always a packet is sent - WorldPacket data(enable ? SMSG_SPLINE_MOVE_SET_HOVER : SMSG_SPLINE_MOVE_UNSET_HOVER, 9); - data.append(GetPackGUID()); - SendMessageToSet(&data, false); + ObjectGuid guid = GetGUID(); + if (enable) + { + WorldPacket data(SMSG_SPLINE_MOVE_SET_HOVER, 9); + data.WriteBit(guid[3]); + data.WriteBit(guid[7]); + data.WriteBit(guid[0]); + data.WriteBit(guid[1]); + data.WriteBit(guid[4]); + data.WriteBit(guid[6]); + data.WriteBit(guid[2]); + data.WriteBit(guid[5]); + data.FlushBits(); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[1]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[6]); + SendMessageToSet(&data, false); + } + else + { + WorldPacket data(SMSG_SPLINE_MOVE_UNSET_HOVER, 9); + data.WriteBit(guid[6]); + data.WriteBit(guid[7]); + data.WriteBit(guid[0]); + data.WriteBit(guid[3]); + data.WriteBit(guid[1]); + data.WriteBit(guid[4]); + data.WriteBit(guid[5]); + data.WriteBit(guid[2]); + data.FlushBits(); + data.WriteByteSeq(guid[4]); + data.WriteByteSeq(guid[5]); + data.WriteByteSeq(guid[3]); + data.WriteByteSeq(guid[0]); + data.WriteByteSeq(guid[2]); + data.WriteByteSeq(guid[7]); + data.WriteByteSeq(guid[6]); + data.WriteByteSeq(guid[1]); + SendMessageToSet(&data, false); + } + return true; } |
