mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 18:36:31 +01:00
Core/Packets: updated SMSG_GUILD_EVENT, SMSG_GUILD_MEMBER_DAILY_RESET, SMSG_GUILD_REPUTATION_WEEKLY_CAP and SMSG_GUILD_XP to packet class
This commit is contained in:
@@ -6435,7 +6435,7 @@ void Player::SendMessageToSet(WorldPacket* data, Player const* skipped_rcvr)
|
||||
Cell::VisitWorldObjects(this, notifier, GetVisibilityRange());
|
||||
}
|
||||
|
||||
void Player::SendDirectMessage(WorldPacket* data) const
|
||||
void Player::SendDirectMessage(WorldPacket const* data) const
|
||||
{
|
||||
m_session->SendPacket(data);
|
||||
}
|
||||
|
||||
@@ -2049,7 +2049,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
|
||||
void SendInitWorldStates(uint32 zone, uint32 area);
|
||||
void SendUpdateWorldState(uint32 Field, uint32 Value) const;
|
||||
void SendDirectMessage(WorldPacket* data) const;
|
||||
void SendDirectMessage(WorldPacket const* data) const;
|
||||
void SendBGWeekendWorldStates() const;
|
||||
void SendBattlefieldWorldStates() const;
|
||||
|
||||
|
||||
@@ -2501,11 +2501,10 @@ void Guild::SendLoginInfo(WorldSession* session)
|
||||
SMSG_GUILD_MEMBER_DAILY_RESET // bank withdrawal reset
|
||||
*/
|
||||
|
||||
WorldPacket data(SMSG_GUILD_EVENT, 1 + 1 + m_motd.size() + 1);
|
||||
data << uint8(GE_MOTD);
|
||||
data << uint8(1);
|
||||
data << m_motd;
|
||||
session->SendPacket(&data);
|
||||
WorldPackets::Guild::GuildEvent motd;
|
||||
motd.EventType = GE_MOTD;
|
||||
motd.Param.push_back(m_motd);
|
||||
session->SendPacket(motd.Write());
|
||||
|
||||
TC_LOG_DEBUG("guild", "SMSG_GUILD_EVENT [%s] MOTD", session->GetPlayerInfo().c_str());
|
||||
|
||||
@@ -2513,15 +2512,14 @@ void Guild::SendLoginInfo(WorldSession* session)
|
||||
_BroadcastEvent(GE_SIGNED_ON, player->GetGUID(), player->GetName().c_str());
|
||||
|
||||
// Send to self separately, player is not in world yet and is not found by _BroadcastEvent
|
||||
data.Initialize(SMSG_GUILD_EVENT, 1 + 1 + player->GetName().size() + 8);
|
||||
data << uint8(GE_SIGNED_ON);
|
||||
data << uint8(1);
|
||||
data << player->GetName();
|
||||
data << uint64(player->GetGUID());
|
||||
session->SendPacket(&data);
|
||||
WorldPackets::Guild::GuildEvent signedOn;
|
||||
signedOn.EventType = GE_SIGNED_ON;
|
||||
signedOn.Param.push_back(player->GetName());
|
||||
signedOn.GUID = player->GetGUID();
|
||||
session->SendPacket(signedOn.Write());
|
||||
|
||||
data.Initialize(SMSG_GUILD_MEMBER_DAILY_RESET, 0); // tells the client to request bank withdrawal limit
|
||||
session->SendPacket(&data);
|
||||
WorldPackets::Guild::GuildMemberDailyReset packet; // tells the client to request bank withdrawal limit
|
||||
session->SendPacket(packet.Write());
|
||||
|
||||
if (!sWorld->getBoolConfig(CONFIG_GUILD_LEVELING_ENABLED))
|
||||
return;
|
||||
@@ -2829,7 +2827,7 @@ void Guild::BroadcastAddonToGuild(WorldSession* session, bool officerOnly, std::
|
||||
}
|
||||
}
|
||||
|
||||
void Guild::BroadcastPacketToRank(WorldPacket* packet, uint8 rankId) const
|
||||
void Guild::BroadcastPacketToRank(WorldPacket const* packet, uint8 rankId) const
|
||||
{
|
||||
for (auto itr = m_members.begin(); itr != m_members.end(); ++itr)
|
||||
if (itr->second->IsRank(rankId))
|
||||
@@ -2837,14 +2835,14 @@ void Guild::BroadcastPacketToRank(WorldPacket* packet, uint8 rankId) const
|
||||
player->SendDirectMessage(packet);
|
||||
}
|
||||
|
||||
void Guild::BroadcastPacket(WorldPacket* packet) const
|
||||
void Guild::BroadcastPacket(WorldPacket const* packet) const
|
||||
{
|
||||
for (auto itr = m_members.begin(); itr != m_members.end(); ++itr)
|
||||
if (Player* player = itr->second->FindPlayer())
|
||||
player->SendDirectMessage(packet);
|
||||
}
|
||||
|
||||
void Guild::BroadcastPacketIfTrackingAchievement(WorldPacket* packet, uint32 criteriaId) const
|
||||
void Guild::BroadcastPacketIfTrackingAchievement(WorldPacket const* packet, uint32 criteriaId) const
|
||||
{
|
||||
for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
|
||||
if (itr->second->IsTrackingCriteriaId(criteriaId))
|
||||
@@ -3656,23 +3654,21 @@ void Guild::_SendBankContentUpdate(uint8 tabId, SlotIds slots) const
|
||||
|
||||
void Guild::_BroadcastEvent(GuildEvents guildEvent, ObjectGuid guid, char const* param1, char const* param2, char const* param3) const
|
||||
{
|
||||
uint8 count = !param3 ? (!param2 ? (!param1 ? 0 : 1) : 2) : 3;
|
||||
WorldPackets::Guild::GuildEvent packet;
|
||||
packet.EventType = guildEvent;
|
||||
if (param1)
|
||||
packet.Param.push_back(param1);
|
||||
|
||||
WorldPacket data(SMSG_GUILD_EVENT, 1 + 1 + count + (guid ? 8 : 0));
|
||||
data << uint8(guildEvent);
|
||||
data << uint8(count);
|
||||
if (param2)
|
||||
packet.Param.push_back(param2);
|
||||
|
||||
if (param3)
|
||||
data << param1 << param2 << param3;
|
||||
else if (param2)
|
||||
data << param1 << param2;
|
||||
else if (param1)
|
||||
data << param1;
|
||||
packet.Param.push_back(param3);
|
||||
|
||||
if (guid)
|
||||
data << uint64(guid);
|
||||
packet.GUID = guid;
|
||||
|
||||
BroadcastPacket(&data);
|
||||
BroadcastPacket(packet.Write());
|
||||
|
||||
if (sLog->ShouldLog("guild", LOG_LEVEL_DEBUG))
|
||||
TC_LOG_DEBUG("guild", "SMSG_GUILD_EVENT [Broadcast] Event: %s (%u)", _GetGuildEventString(guildEvent).c_str(), guildEvent);
|
||||
@@ -3969,25 +3965,25 @@ void Guild::GiveXP(uint32 xp, Player* source, bool rewardedByChallenge)
|
||||
SendGuildXP(player->GetSession());
|
||||
}
|
||||
|
||||
void Guild::SendGuildXP(WorldSession* session /* = nullptr */) const
|
||||
void Guild::SendGuildXP(WorldSession* session /*= nullptr*/) const
|
||||
{
|
||||
Member const* member = GetMember(session->GetPlayer()->GetGUID());
|
||||
|
||||
WorldPacket data(SMSG_GUILD_XP, 40);
|
||||
data << uint64(member ? member->GetTotalActivity() : 0);
|
||||
data << uint64(sGuildMgr->GetXPForGuildLevel(GetLevel()) - GetExperience()); // XP missing for next level
|
||||
data << uint64(GetTodayExperience());
|
||||
data << uint64(member ? member->GetWeekActivity() : 0);
|
||||
data << uint64(GetExperience());
|
||||
session->SendPacket(&data);
|
||||
WorldPackets::Guild::GuildXP packet;
|
||||
packet.TotalXP = uint64(member ? member->GetTotalActivity() : 0);
|
||||
packet.GuildRemainingXP = uint64(sGuildMgr->GetXPForGuildLevel(GetLevel()) - GetExperience());
|
||||
packet.GuildTodayXP = uint64(GetTodayExperience());
|
||||
packet.WeeklyXP = uint64(member ? member->GetWeekActivity() : 0);
|
||||
packet.GuildCurrentXP = uint64(GetExperience());
|
||||
session->SendPacket(packet.Write());
|
||||
}
|
||||
|
||||
void Guild::SendGuildReputationWeeklyCap(WorldSession* session, uint32 reputation) const
|
||||
{
|
||||
uint32 cap = sWorld->getIntConfig(CONFIG_GUILD_WEEKLY_REP_CAP) - reputation;
|
||||
WorldPacket data(SMSG_GUILD_REPUTATION_WEEKLY_CAP, 4);
|
||||
data << uint32(cap);
|
||||
session->SendPacket(&data);
|
||||
uint32 cap = std::max<uint32>(0, sWorld->getIntConfig(CONFIG_GUILD_WEEKLY_REP_CAP) - reputation);
|
||||
WorldPackets::Guild::GuildReputationWeeklyCap packet;
|
||||
packet.Cap = cap;
|
||||
session->SendPacket(packet.Write());
|
||||
TC_LOG_DEBUG("guild", "SMSG_GUILD_REPUTATION_WEEKLY_CAP [%s]: Left: %u",
|
||||
session->GetPlayerInfo().c_str(), cap);
|
||||
}
|
||||
|
||||
@@ -822,9 +822,9 @@ public:
|
||||
// Broadcasts
|
||||
void BroadcastToGuild(WorldSession* session, bool officerOnly, std::string const& msg, uint32 language = LANG_UNIVERSAL) const;
|
||||
void BroadcastAddonToGuild(WorldSession* session, bool officerOnly, std::string const& msg, std::string const& prefix) const;
|
||||
void BroadcastPacketToRank(WorldPacket* packet, uint8 rankId) const;
|
||||
void BroadcastPacket(WorldPacket* packet) const;
|
||||
void BroadcastPacketIfTrackingAchievement(WorldPacket* packet, uint32 criteriaId) const;
|
||||
void BroadcastPacketToRank(WorldPacket const* packet, uint8 rankId) const;
|
||||
void BroadcastPacket(WorldPacket const* packet) const;
|
||||
void BroadcastPacketIfTrackingAchievement(WorldPacket const* packet, uint32 criteriaId) const;
|
||||
|
||||
void MassInviteToEvent(WorldSession* session, uint32 minLevel, uint32 maxLevel, uint32 minRank);
|
||||
|
||||
|
||||
@@ -185,3 +185,32 @@ WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Guild::GuildEvent::Write()
|
||||
{
|
||||
_worldPacket << uint8(EventType);
|
||||
_worldPacket << uint8(Param.size());
|
||||
for (std::string param : Param)
|
||||
_worldPacket << param;
|
||||
_worldPacket << GUID;
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Guild::GuildReputationWeeklyCap::Write()
|
||||
{
|
||||
_worldPacket << uint32(Cap);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Guild::GuildXP::Write()
|
||||
{
|
||||
_worldPacket << uint64(TotalXP);
|
||||
_worldPacket << uint64(GuildRemainingXP);
|
||||
_worldPacket << uint64(GuildTodayXP);
|
||||
_worldPacket << uint64(WeeklyXP);
|
||||
_worldPacket << uint64(GuildCurrentXP);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -219,6 +219,50 @@ namespace WorldPackets
|
||||
uint64 Money = 0;
|
||||
bool FullUpdate = false;
|
||||
};
|
||||
|
||||
class GuildEvent final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
GuildEvent() : ServerPacket(SMSG_GUILD_EVENT, 3) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
uint8 EventType = 0;
|
||||
std::vector<std::string> Param;
|
||||
ObjectGuid GUID;
|
||||
};
|
||||
|
||||
class GuildMemberDailyReset final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
GuildMemberDailyReset() : ServerPacket(SMSG_GUILD_MEMBER_DAILY_RESET, 0) { }
|
||||
|
||||
WorldPacket const* Write() override { return &_worldPacket; }
|
||||
};
|
||||
|
||||
class GuildReputationWeeklyCap final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
GuildReputationWeeklyCap() : ServerPacket(SMSG_GUILD_REPUTATION_WEEKLY_CAP, 4) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
uint32 Cap = 0;
|
||||
};
|
||||
|
||||
class GuildXP final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
GuildXP() : ServerPacket(SMSG_GUILD_XP, 40) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
int64 WeeklyXP = 0;
|
||||
int64 TotalXP = 0;
|
||||
int64 GuildTodayXP = 0;
|
||||
int64 GuildRemainingXP = 0;
|
||||
int64 GuildCurrentXP;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user