Core/PacketIO: Update and enabled SMSG_PARTY_KILL_LOG opcode

This commit is contained in:
Vincent-Michael
2015-08-02 20:35:01 +02:00
parent f3d44b0309
commit d8850f0536
4 changed files with 31 additions and 11 deletions
+11 -10
View File
@@ -67,6 +67,8 @@
#include "CombatPackets.h"
#include "CombatLogPackets.h"
#include "VehiclePackets.h"
#include "LootPackets.h"
#include "PartyPackets.h"
#include <cmath>
@@ -13453,9 +13455,9 @@ void Unit::Kill(Unit* victim, bool durabilityLoss)
// call kill spell proc event (before real die and combat stop to triggering auras removed at death/combat stop)
if (isRewardAllowed && player && player != victim)
{
WorldPacket data(SMSG_PARTY_KILL_LOG, (8+8)); // send event PARTY_KILL
data << player->GetGUID(); // player with killing blow
data << victim->GetGUID(); // victim
WorldPackets::Party::PartyKillLog partyKillLog;
partyKillLog.Player = player->GetGUID();
partyKillLog.Victim = victim->GetGUID();
Player* looter = player;
Group* group = player->GetGroup();
@@ -13463,7 +13465,7 @@ void Unit::Kill(Unit* victim, bool durabilityLoss)
if (group)
{
group->BroadcastPacket(&data, group->GetMemberGroup(player->GetGUID()) != 0);
group->BroadcastPacket(partyKillLog.Write(), group->GetMemberGroup(player->GetGUID()) != 0);
if (creature)
{
@@ -13481,15 +13483,14 @@ void Unit::Kill(Unit* victim, bool durabilityLoss)
}
else
{
player->SendDirectMessage(&data);
player->SendDirectMessage(partyKillLog.Write());
if (creature)
{
WorldPacket data2(SMSG_LOOT_LIST, 8 + 1 + 1);
data2 << creature->GetGUID();
data2 << uint8(0); // unk1
data2 << uint8(0); // no group looter
player->SendMessageToSet(&data2, true);
WorldPackets::Loot::LootList lootList;
lootList.Owner = creature->GetGUID();
player->SendMessageToSet(lootList.Write(), true);
}
}
@@ -541,6 +541,14 @@ void WorldPackets::Party::PartyMemberStats::Initialize(Player const* player)
}
}
WorldPacket const* WorldPackets::Party::PartyKillLog::Write()
{
_worldPacket << Player;
_worldPacket << Victim;
return &_worldPacket;
}
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::GroupPhase const& phase)
{
data << phase.Flags;
@@ -594,6 +594,17 @@ namespace WorldPackets
std::vector<RaidMarker*> RaidMarkers;
};
class PartyKillLog final : public ServerPacket
{
public:
PartyKillLog() : ServerPacket(SMSG_PARTY_KILL_LOG, 2 * 16) { }
WorldPacket const* Write() override;
ObjectGuid Player;
ObjectGuid Victim;
};
}
}
+1 -1
View File
@@ -1430,7 +1430,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAGE_TEXT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_COMMAND_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_INVITE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_KILL_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_KILL_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_MEMBER_STATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAUSE_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);