Implement SMSG_MOUNTRESULT, SMSG_DISMOUNTRESULT (yet unused)

This commit is contained in:
Olion 2017-06-29 20:27:19 +03:00 committed by Antz
parent c3d42291b5
commit 202bc62be0
3 changed files with 41 additions and 2 deletions

View File

@ -17242,6 +17242,20 @@ void Player::Unmount(bool from_aura)
}
}
void Player::SendMountResult(PlayerMountResult result)
{
WorldPacket data(SMSG_MOUNTRESULT, 4);
data << uint32(result);
GetSession()->SendPacket(&data);
}
void Player::SendDismountResult(PlayerDismountResult result)
{
WorldPacket data(SMSG_DISMOUNTRESULT, 4);
data << uint32(result);
GetSession()->SendPacket(&data);
}
void Player::ProhibitSpellSchool(SpellSchoolMask idSchoolMask, uint32 unTimeMs)
{
// last check 1.12

View File

@ -725,6 +725,29 @@ enum PlayerRestState
REST_STATE_RAF_LINKED = 0x04 // Exact use unknown
};
enum PlayerMountResult
{
MOUNTRESULT_INVALIDMOUNTEE = 0, // You can't mount that unit!
MOUNTRESULT_TOOFARAWAY = 1, // That mount is too far away!
MOUNTRESULT_ALREADYMOUNTED = 2, // You're already mounted!
MOUNTRESULT_NOTMOUNTABLE = 3, // That unit can't be mounted!
MOUNTRESULT_NOTYOURPET = 4, // That mount isn't your pet!
MOUNTRESULT_OTHER = 5, // internal
MOUNTRESULT_LOOTING = 6, // You can't mount while looting!
MOUNTRESULT_RACECANTMOUNT = 7, // You can't mount because of your race!
MOUNTRESULT_SHAPESHIFTED = 8, // You can't mount while shapeshifted!
MOUNTRESULT_FORCEDDISMOUNT = 9, // You dismount before continuing.
MOUNTRESULT_OK = 10 // no error
};
enum PlayerDismountResult
{
DISMOUNTRESULT_NOPET = 0, // internal
DISMOUNTRESULT_NOTMOUNTED = 1, // You're not mounted!
DISMOUNTRESULT_NOTYOURPET = 2, // internal
DISMOUNTRESULT_OK = 3 // no error
};
class PlayerTaxi
{
public:
@ -994,6 +1017,8 @@ class Player : public Unit
void ContinueTaxiFlight();
void Mount(uint32 mount, uint32 spellId = 0) override;
void Unmount(bool from_aura = false) override;
void SendMountResult(PlayerMountResult result);
void SendDismountResult(PlayerDismountResult result);
bool isAcceptTickets() const { return GetSession()->GetSecurity() >= SEC_GAMEMASTER && (m_ExtraFlags & PLAYER_EXTRA_GM_ACCEPT_TICKETS); }
void SetAcceptTicket(bool on) { if (on) { m_ExtraFlags |= PLAYER_EXTRA_GM_ACCEPT_TICKETS; } else { m_ExtraFlags &= ~PLAYER_EXTRA_GM_ACCEPT_TICKETS; } }
bool isAcceptWhispers() const { return m_ExtraFlags & PLAYER_EXTRA_ACCEPT_WHISPERS; }

View File

@ -426,8 +426,8 @@ void Opcodes::BuildOpcodeList()
/*[-ZERO] Need check */ /*0x16B*/ StoreOpcode(SMSG_DUEL_WINNER, "SMSG_DUEL_WINNER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*[-ZERO] Need check */ /*0x16C*/ StoreOpcode(CMSG_DUEL_ACCEPTED, "CMSG_DUEL_ACCEPTED", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDuelAcceptedOpcode);
/*[-ZERO] Need check */ /*0x16D*/ StoreOpcode(CMSG_DUEL_CANCELLED, "CMSG_DUEL_CANCELLED", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDuelCancelledOpcode);
/*[-ZERO] Need check */ /*0x16E*/ StoreOpcode(SMSG_MOUNTRESULT, "SMSG_MOUNTRESULT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*[-ZERO] Need check */ /*0x16F*/ StoreOpcode(SMSG_DISMOUNTRESULT, "SMSG_DISMOUNTRESULT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*0x16E*/ StoreOpcode(SMSG_MOUNTRESULT, "SMSG_MOUNTRESULT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*0x16F*/ StoreOpcode(SMSG_DISMOUNTRESULT, "SMSG_DISMOUNTRESULT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*[-ZERO] Need check */ /*0x170*/ StoreOpcode(SMSG_PUREMOUNT_CANCELLED_OBSOLETE, "SMSG_PUREMOUNT_CANCELLED_OBSOLETE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*[-ZERO] Need check */ /*0x171*/ StoreOpcode(CMSG_MOUNTSPECIAL_ANIM, "CMSG_MOUNTSPECIAL_ANIM", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleMountSpecialAnimOpcode);
/*[-ZERO] Need check */ /*0x172*/ StoreOpcode(SMSG_MOUNTSPECIAL_ANIM, "SMSG_MOUNTSPECIAL_ANIM", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);