mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 08:28:32 +01:00
Core/Guilds: Prevent guild bank packet contents update hack from interfering with buying new bank tabs
Closes #30277
(cherry picked from commit e3d0b803d7)
This commit is contained in:
@@ -3633,6 +3633,12 @@ void Guild::SendBankList(WorldSession* session, uint8 tabId, bool fullUpdate) co
|
||||
if (!member) // Shouldn't happen, just in case
|
||||
return;
|
||||
|
||||
// HACK: client doesn't query entire tab content if it had received SMSG_GUILD_BANK_LIST in this session
|
||||
// but we broadcast bank updates to entire guild when *ANYONE* changes anything, incorrectly initializing clients
|
||||
// tab content with only data for that change
|
||||
if (!fullUpdate && tabId < _GetPurchasedTabsSize())
|
||||
fullUpdate = true;
|
||||
|
||||
WorldPackets::Guild::GuildBankQueryResults packet;
|
||||
|
||||
packet.Money = m_bankMoney;
|
||||
@@ -3674,7 +3680,7 @@ void Guild::SendBankList(WorldSession* session, uint8 tabId, bool fullUpdate) co
|
||||
WorldPackets::Guild::GuildBankItemInfo& itemInfo = packet.ItemInfo.emplace_back();
|
||||
|
||||
itemInfo.Slot = int32(slotId);
|
||||
itemInfo.Item.ItemID = tabItem->GetEntry();
|
||||
itemInfo.Item.Initialize(tabItem);
|
||||
itemInfo.Count = int32(tabItem->GetCount());
|
||||
itemInfo.Charges = int32(abs(tabItem->GetSpellCharges()));
|
||||
itemInfo.EnchantmentID = int32(tabItem->GetEnchantmentId(PERM_ENCHANTMENT_SLOT));
|
||||
|
||||
@@ -260,10 +260,7 @@ void WorldSession::HandleGuildBankQueryTab(WorldPackets::Guild::GuildBankQueryTa
|
||||
|
||||
if (GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK))
|
||||
if (Guild* guild = GetPlayer()->GetGuild())
|
||||
guild->SendBankList(this, packet.Tab, true /*packet.FullUpdate*/);
|
||||
// HACK: client doesn't query entire tab content if it had received SMSG_GUILD_BANK_LIST in this session
|
||||
// but we broadcast bank updates to entire guild when *ANYONE* changes anything, incorrectly initializing clients
|
||||
// tab content with only data for that change
|
||||
guild->SendBankList(this, packet.Tab, packet.FullUpdate);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildBankDepositMoney(WorldPackets::Guild::GuildBankDepositMoney& packet)
|
||||
|
||||
Reference in New Issue
Block a user