SMSG_PET_CAST_FAILED: packet structure fix

This commit is contained in:
Olion 2017-07-10 01:09:13 +03:00 committed by Antz
parent 351b6f2349
commit 2eedb78a99
2 changed files with 26 additions and 5 deletions

View File

@ -8493,10 +8493,31 @@ void Unit::SendPetCastFail(uint32 spellid, SpellCastResult msg)
if (!owner || owner->GetTypeId() != TYPEID_PLAYER)
{ return; }
WorldPacket data(SMSG_PET_CAST_FAILED, 4 + 1);
WorldPacket data(SMSG_PET_CAST_FAILED, 4 + 1 + 1);
data << uint32(spellid);
data << uint8(0); // unknown, maybe unused
data << uint8(msg);
((Player*)owner)->GetSession()->SendPacket(&data);
switch (msg)
{
case SPELL_FAILED_EQUIPPED_ITEM_CLASS:
case SPELL_FAILED_EQUIPPED_ITEM_CLASS_MAINHAND:
case SPELL_FAILED_EQUIPPED_ITEM_CLASS_OFFHAND:
data << int32(0); // required and actual item class?
data << int32(0);
break;
case SPELL_FAILED_REQUIRES_SPELL_FOCUS:
data << int32(0); // required spellfocus id?
break;
case SPELL_FAILED_REQUIRES_AREA:
data << int32(GetAreaId()); // untested
break;
case SPELL_FAILED_PREVENTED_BY_MECHANIC:
data << int32(0); // mechanic id?
break;
default:
break;
}
owner->ToPlayer()->SendDirectMessage(&data);
}
void Unit::SendPetActionFeedback(uint8 msg)

View File

@ -369,10 +369,10 @@ void Opcodes::BuildOpcodeList()
/*0x132*/ StoreOpcode(SMSG_SPELL_GO, "SMSG_SPELL_GO", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*0x133*/ StoreOpcode(SMSG_SPELL_FAILURE, "SMSG_SPELL_FAILURE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*0x134*/ StoreOpcode(SMSG_SPELL_COOLDOWN, "SMSG_SPELL_COOLDOWN", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*[-ZERO] Need check */ /*0x135*/ StoreOpcode(SMSG_COOLDOWN_EVENT, "SMSG_COOLDOWN_EVENT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*0x135*/ StoreOpcode(SMSG_COOLDOWN_EVENT, "SMSG_COOLDOWN_EVENT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*[-ZERO] Need check */ /*0x136*/ StoreOpcode(CMSG_CANCEL_AURA, "CMSG_CANCEL_AURA", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelAuraOpcode);
/*[-ZERO] Need check */ /*0x137*/ StoreOpcode(SMSG_UPDATE_AURA_DURATION, "SMSG_UPDATE_AURA_DURATION", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*[-ZERO] Need check */ /*0x138*/ StoreOpcode(SMSG_PET_CAST_FAILED, "SMSG_PET_CAST_FAILED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*0x137*/ StoreOpcode(SMSG_UPDATE_AURA_DURATION, "SMSG_UPDATE_AURA_DURATION", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*0x138*/ StoreOpcode(SMSG_PET_CAST_FAILED, "SMSG_PET_CAST_FAILED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
/*0x139*/ StoreOpcode(MSG_CHANNEL_START, "MSG_CHANNEL_START", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL);
/*0x13A*/ StoreOpcode(MSG_CHANNEL_UPDATE, "MSG_CHANNEL_UPDATE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL);
/*[-ZERO] Need check */ /*0x13B*/ StoreOpcode(CMSG_CANCEL_CHANNELLING, "CMSG_CANCEL_CHANNELLING", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelChanneling);