mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 10:37:03 +00:00
Implement CMSG_DISMISS_CRITTER handler
This commit is contained in:
parent
c74a8b9520
commit
29bbdd40bf
4 changed files with 24 additions and 2 deletions
|
|
@ -1252,7 +1252,7 @@ void InitializeOpcodes()
|
|||
//OPCODE(CMSG_REMOVE_GLYPH, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRemoveGlyphOpcode );
|
||||
//OPCODE(CMSG_DUMP_OBJECTS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
//OPCODE(SMSG_DUMP_OBJECTS_DATA, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
OPCODE(CMSG_DISMISS_CRITTER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
OPCODE(CMSG_DISMISS_CRITTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleDismissCritter);
|
||||
//OPCODE(SMSG_NOTIFY_DEST_LOC_SPELL_CAST, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
OPCODE(CMSG_AUCTION_LIST_PENDING_SALES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAuctionListPendingSales );
|
||||
OPCODE(SMSG_AUCTION_LIST_PENDING_SALES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
|
|
|
|||
|
|
@ -1236,7 +1236,7 @@ enum Opcodes
|
|||
CMSG_REMOVE_GLYPH = 0x0000,
|
||||
CMSG_DUMP_OBJECTS = 0x0000,
|
||||
SMSG_DUMP_OBJECTS_DATA = 0x0000,
|
||||
CMSG_DISMISS_CRITTER = 0x0000,
|
||||
CMSG_DISMISS_CRITTER = 0x4227, // 4.3.4 15595
|
||||
SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x0000,
|
||||
CMSG_AUCTION_LIST_PENDING_SALES = 0x2C17, // 4.3.4 15595
|
||||
SMSG_AUCTION_LIST_PENDING_SALES = 0x6A27, // 4.3.4 15595
|
||||
|
|
|
|||
|
|
@ -766,6 +766,7 @@ class WorldSession
|
|||
void HandlePetCastSpellOpcode(WorldPacket& recvPacket);
|
||||
void HandlePetLearnTalent(WorldPacket& recvPacket);
|
||||
void HandleLearnPreviewTalentsPet(WorldPacket& recvPacket);
|
||||
void HandleDismissCritter(WorldPacket& recvData);
|
||||
|
||||
void HandleSetActionBarTogglesOpcode(WorldPacket& recv_data);
|
||||
|
||||
|
|
|
|||
|
|
@ -768,3 +768,24 @@ void WorldSession::HandleLearnPreviewTalentsPet(WorldPacket& recv_data)
|
|||
|
||||
_player->SendTalentsInfoData(true);
|
||||
}
|
||||
|
||||
void WorldSession::HandleDismissCritter(WorldPacket& recvData)
|
||||
{
|
||||
ObjectGuid guid;
|
||||
recvData >> guid;
|
||||
|
||||
DEBUG_LOG("WORLD: Received CMSG_DISMISS_CRITTER for %s", guid.GetString().c_str());
|
||||
Unit* pet = _player->GetMap()->GetAnyTypeCreature(guid);
|
||||
if (!pet)
|
||||
{
|
||||
DEBUG_LOG("Vanitypet %s does not exist - Player %s (guid %u, account: %u) attempted to dismiss it (possibly lagged out)",
|
||||
guid.GetString().c_str(), GetPlayer()->GetName(), GetPlayer()->GetGUIDLow(), GetAccountId());
|
||||
return;
|
||||
}
|
||||
|
||||
if (_player->GetCritterGuid() == guid)
|
||||
{
|
||||
if (pet->GetTypeId() == TYPEID_UNIT && ((Creature*)pet)->IsTemporarySummon())
|
||||
((TemporarySummon*)pet)->UnSummon();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue