mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-17 21:50:50 -04:00
Core/PacketIO: Fixed a few more opcodes
This commit is contained in:
@@ -25720,9 +25720,56 @@ bool Player::SetHover(bool enable)
|
||||
|
||||
void Player::SendMovementSetCanFly(bool apply)
|
||||
{
|
||||
WorldPacket data(apply ? SMSG_MOVE_SET_CAN_FLY : SMSG_MOVE_UNSET_CAN_FLY, 12);
|
||||
data.append(GetPackGUID());
|
||||
data << uint32(0); //! movement counter
|
||||
ObjectGuid guid = GetGUID();
|
||||
WorldPacket data;
|
||||
if (apply)
|
||||
{
|
||||
data.Initialize(SMSG_MOVE_SET_CAN_FLY, 1 + 8 + 4);
|
||||
data.WriteBit(guid[1]);
|
||||
data.WriteBit(guid[6]);
|
||||
data.WriteBit(guid[5]);
|
||||
data.WriteBit(guid[0]);
|
||||
data.WriteBit(guid[7]);
|
||||
data.WriteBit(guid[4]);
|
||||
data.WriteBit(guid[2]);
|
||||
data.WriteBit(guid[3]);
|
||||
|
||||
data.WriteByteSeq(guid[6]);
|
||||
data.WriteByteSeq(guid[3]);
|
||||
|
||||
data << uint32(0); //! movement counter
|
||||
|
||||
data.WriteByteSeq(guid[2]);
|
||||
data.WriteByteSeq(guid[1]);
|
||||
data.WriteByteSeq(guid[4]);
|
||||
data.WriteByteSeq(guid[7]);
|
||||
data.WriteByteSeq(guid[0]);
|
||||
data.WriteByteSeq(guid[5]);
|
||||
}
|
||||
else
|
||||
{
|
||||
data.Initialize(SMSG_MOVE_UNSET_CAN_FLY, 1 + 8 + 4);
|
||||
data.WriteBit(guid[1]);
|
||||
data.WriteBit(guid[4]);
|
||||
data.WriteBit(guid[2]);
|
||||
data.WriteBit(guid[5]);
|
||||
data.WriteBit(guid[0]);
|
||||
data.WriteBit(guid[3]);
|
||||
data.WriteBit(guid[6]);
|
||||
data.WriteBit(guid[7]);
|
||||
|
||||
data.WriteByteSeq(guid[4]);
|
||||
data.WriteByteSeq(guid[6]);
|
||||
|
||||
data << uint32(0); //! movement counter
|
||||
|
||||
data.WriteByteSeq(guid[1]);
|
||||
data.WriteByteSeq(guid[0]);
|
||||
data.WriteByteSeq(guid[2]);
|
||||
data.WriteByteSeq(guid[3]);
|
||||
data.WriteByteSeq(guid[5]);
|
||||
data.WriteByteSeq(guid[7]);
|
||||
}
|
||||
SendDirectMessage(&data);
|
||||
}
|
||||
|
||||
|
||||
@@ -17129,11 +17129,47 @@ void Unit::UpdateObjectVisibility(bool forced)
|
||||
}
|
||||
}
|
||||
|
||||
void Unit::SendMoveKnockBack(Player* player, float speedXY, float speedZ, float vcos, float vsin)
|
||||
{
|
||||
ObjectGuid guid = GetGUID();
|
||||
WorldPacket data(SMSG_MOVE_KNOCK_BACK, (1+8+4+4+4+4+4));
|
||||
data.WriteBit(guid[0]);
|
||||
data.WriteBit(guid[3]);
|
||||
data.WriteBit(guid[6]);
|
||||
data.WriteBit(guid[7]);
|
||||
data.WriteBit(guid[2]);
|
||||
data.WriteBit(guid[5]);
|
||||
data.WriteBit(guid[1]);
|
||||
data.WriteBit(guid[4]);
|
||||
|
||||
data.WriteByteSeq(guid[1]);
|
||||
|
||||
data << float(vsin);
|
||||
data << uint32(0);
|
||||
|
||||
data.WriteByteSeq(bytes[6]);
|
||||
data.WriteByteSeq(bytes[7]);
|
||||
|
||||
data << float(speedXY);
|
||||
|
||||
data.WriteByteSeq(bytes[4]);
|
||||
data.WriteByteSeq(bytes[5]);
|
||||
data.WriteByteSeq(bytes[3]);
|
||||
|
||||
data << float(speedZ);
|
||||
data << float(vcos);
|
||||
|
||||
data.WriteByteSeq(bytes[2]);
|
||||
data.WriteByteSeq(bytes[0]);
|
||||
|
||||
player->GetSession()->SendPacket(&data);
|
||||
}
|
||||
|
||||
void Unit::KnockbackFrom(float x, float y, float speedXY, float speedZ)
|
||||
{
|
||||
Player* player = NULL;
|
||||
if (GetTypeId() == TYPEID_PLAYER)
|
||||
player = (Player*)this;
|
||||
player = ToPlayer();
|
||||
else if (Unit* charmer = GetCharmer())
|
||||
{
|
||||
player = charmer->ToPlayer();
|
||||
@@ -17142,43 +17178,12 @@ void Unit::KnockbackFrom(float x, float y, float speedXY, float speedZ)
|
||||
}
|
||||
|
||||
if (!player)
|
||||
{
|
||||
GetMotionMaster()->MoveKnockbackFrom(x, y, speedXY, speedZ);
|
||||
}
|
||||
else
|
||||
{
|
||||
float vcos, vsin;
|
||||
GetSinCos(x, y, vsin, vcos);
|
||||
|
||||
WorldPacket data(SMSG_MOVE_KNOCK_BACK, (1+8+4+4+4+4+4));
|
||||
uint64 guid = GetGUID();
|
||||
uint8* bytes = (uint8*)&guid;
|
||||
|
||||
data.WriteBit(bytes[5]);
|
||||
data.WriteBit(bytes[2]);
|
||||
data.WriteBit(bytes[6]);
|
||||
data.WriteBit(bytes[3]);
|
||||
data.WriteBit(bytes[1]);
|
||||
data.WriteBit(bytes[4]);
|
||||
data.WriteBit(bytes[0]);
|
||||
data.WriteBit(bytes[7]);
|
||||
|
||||
data.WriteByteSeq(bytes[0]);
|
||||
data << float(speedXY);
|
||||
data << uint32(0);
|
||||
data << float(-speedZ);
|
||||
data.WriteByteSeq(bytes[6]);
|
||||
data << float(vcos);
|
||||
data << float(vsin);
|
||||
data.WriteByteSeq(bytes[3]);
|
||||
data.WriteByteSeq(bytes[1]);
|
||||
data.WriteByteSeq(bytes[2]);
|
||||
data.WriteByteSeq(bytes[4]);
|
||||
data.WriteByteSeq(bytes[7]);
|
||||
data.WriteByteSeq(bytes[5]);
|
||||
data.WriteByteSeq(bytes[5]);
|
||||
|
||||
player->GetSession()->SendPacket(&data);
|
||||
SendMoveKnockBack(player, speedXY, -speedZ, vcos, vsin);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17489,35 +17494,7 @@ void Unit::JumpTo(float speedXY, float speedZ, bool forward)
|
||||
{
|
||||
float vcos = cos(angle+GetOrientation());
|
||||
float vsin = sin(angle+GetOrientation());
|
||||
|
||||
WorldPacket data(SMSG_MOVE_KNOCK_BACK, (1+8+4+4+4+4+4));
|
||||
uint64 guid = GetGUID();
|
||||
uint8* bytes = (uint8*)&guid;
|
||||
|
||||
data.WriteBit(bytes[5]);
|
||||
data.WriteBit(bytes[2]);
|
||||
data.WriteBit(bytes[6]);
|
||||
data.WriteBit(bytes[3]);
|
||||
data.WriteBit(bytes[1]);
|
||||
data.WriteBit(bytes[4]);
|
||||
data.WriteBit(bytes[0]);
|
||||
data.WriteBit(bytes[7]);
|
||||
|
||||
data.WriteByteSeq(bytes[0]);
|
||||
data << float(speedXY);
|
||||
data << uint32(0);
|
||||
data << float(-speedZ);
|
||||
data.WriteByteSeq(bytes[6]);
|
||||
data << float(vcos);
|
||||
data << float(vsin);
|
||||
data.WriteByteSeq(bytes[3]);
|
||||
data.WriteByteSeq(bytes[1]);
|
||||
data.WriteByteSeq(bytes[2]);
|
||||
data.WriteByteSeq(bytes[4]);
|
||||
data.WriteByteSeq(bytes[7]);
|
||||
data.WriteByteSeq(bytes[5]);
|
||||
|
||||
ToPlayer()->GetSession()->SendPacket(&data);
|
||||
SendMoveKnockBack(ToPlayer(), speedXY, -speedZ, vcos, vsin);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1594,6 +1594,7 @@ class Unit : public WorldObject
|
||||
void UpdateOrientation(float orientation);
|
||||
void UpdateHeight(float newZ);
|
||||
|
||||
void SendMoveKnockBack(Player* player, float speedXY, float speedZ, float vcos, float vsin);
|
||||
void KnockbackFrom(float x, float y, float speedXY, float speedZ);
|
||||
void JumpTo(float speedXY, float speedZ, bool forward = true);
|
||||
void JumpTo(WorldObject* obj, float speedZ);
|
||||
|
||||
@@ -975,12 +975,12 @@ void InitOpcodes()
|
||||
DEFINE_OPCODE_HANDLER(SMSG_MOVE_FEATHER_FALL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_MOVE_GRAVITY_DISABLE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_MOVE_GRAVITY_ENABLE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_MOVE_KNOCK_BACK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_MOVE_KNOCK_BACK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_MOVE_LAND_WALK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_MOVE_NORMAL_FALL, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_MOVE_ROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_ACTIVE_MOVER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_CAN_FLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_CAN_FLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_COLLISION_HEIGHT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_COMPOUND_STATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
@@ -995,7 +995,7 @@ void InitOpcodes()
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_TURN_RATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_MOVE_SET_WALK_SPEED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_MOVE_UNROOT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_MOVE_UNSET_CAN_FLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_MOVE_UNSET_CAN_FLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_MOVE_UNSET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_MOVE_UNSET_HOVER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
//DEFINE_OPCODE_HANDLER(SMSG_MOVE_UPDATE_COLLISION_HEIGHT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
|
||||
Reference in New Issue
Block a user