diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 91558a56ca4..c60c2df9657 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -3632,9 +3632,9 @@ void Guild::_SendBankContentUpdate(uint8 tabId, SlotIds slots) const { if (uint32 enchantId = tabItem->GetEnchantmentId(EnchantmentSlot(enchSlot))) { - WorldPackets::Item::ItemGemData gem; - gem.EnchantmentId = enchantId; - gem.Slot = slotIndex; + WorldPackets::Guild::GuildBankItemInfo::GuildBankSocketEnchant gem; + gem.SocketIndex = slotIndex; + gem.SocketEnchantID = enchantId; itemInfo.SocketEnchant.push_back(gem); } slotIndex++; @@ -3741,9 +3741,9 @@ void Guild::SendBankList(WorldSession* session, uint8 tabId, bool fullUpdate) co { if (uint32 enchantId = tabItem->GetEnchantmentId(EnchantmentSlot(enchSlot))) { - WorldPackets::Item::ItemGemData gem; - gem.EnchantmentId = enchantId; - gem.Slot = slotIndex; + WorldPackets::Guild::GuildBankItemInfo::GuildBankSocketEnchant gem; + gem.SocketIndex = slotIndex; + gem.SocketEnchantID = enchantId; itemInfo.SocketEnchant.push_back(gem); } slotIndex++; diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp index b2e603180a5..3e780b12f74 100644 --- a/src/server/game/Handlers/GuildHandler.cpp +++ b/src/server/game/Handlers/GuildHandler.cpp @@ -379,17 +379,17 @@ void WorldSession::HandleGuildEventLogQueryOpcode(WorldPacket& /* recvPacket */) guild->SendEventLog(this); } -void WorldSession::HandleGuildBankMoneyWithdrawn(WorldPacket& /* recvPacket */) +void WorldSession::HandleGuildBankMoneyWithdrawn(WorldPackets::Guild::GuildBankRemainingWithdrawMoneyQuery& /*recvPacket */) { - TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_MONEY_WITHDRAWN [%s]", GetPlayerInfo().c_str()); + TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY [%s]", GetPlayerInfo().c_str()); if (Guild* guild = GetPlayer()->GetGuild()) guild->SendMoneyInfo(this); } -void WorldSession::HandleGuildPermissions(WorldPacket& /* recvPacket */) +void WorldSession::HandleGuildPermissionsQuery(WorldPackets::Guild::GuildPermissionsQuery& /*packet*/) { - TC_LOG_DEBUG("guild", "CMSG_GUILD_PERMISSIONS [%s]", GetPlayerInfo().c_str()); + TC_LOG_DEBUG("guild", "CMSG_GUILD_PERMISSIONS_QUERY [%s]", GetPlayerInfo().c_str()); if (Guild* guild = GetPlayer()->GetGuild()) guild->SendPermissions(this); @@ -426,114 +426,50 @@ void WorldSession::HandleGuildBankQueryTab(WorldPackets::Guild::GuildBankQueryTa guild->SendBankList(this, packet.Tab, packet.FullUpdate); } -void WorldSession::HandleGuildBankDepositMoney(WorldPacket& recvPacket) +void WorldSession::HandleGuildBankDepositMoney(WorldPackets::Guild::GuildBankDepositMoney& packet) { - ObjectGuid guid; - uint64 money; - recvPacket >> guid >> money; - TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_DEPOSIT_MONEY [%s]: [%s], money: " UI64FMTD, - GetPlayerInfo().c_str(), guid.ToString().c_str(), money); + GetPlayerInfo().c_str(), packet.Banker.ToString().c_str(), packet.Money); - if (GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK)) - if (money && GetPlayer()->HasEnoughMoney(money)) + if (GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK)) + if (packet.Money && GetPlayer()->HasEnoughMoney(packet.Money)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleMemberDepositMoney(this, money); + guild->HandleMemberDepositMoney(this, packet.Money); } -void WorldSession::HandleGuildBankWithdrawMoney(WorldPacket& recvPacket) +void WorldSession::HandleGuildBankWithdrawMoney(WorldPackets::Guild::GuildBankWithdrawMoney& packet) { - ObjectGuid guid; - uint64 money; - recvPacket >> guid >> money; - TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_WITHDRAW_MONEY [%s]: [%s], money: " UI64FMTD, - GetPlayerInfo().c_str(), guid.ToString().c_str(), money); + GetPlayerInfo().c_str(), packet.Banker.ToString().c_str(), packet.Money); - if (money && GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK)) + if (packet.Money && GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleMemberWithdrawMoney(this, money); + guild->HandleMemberWithdrawMoney(this, packet.Money); } -void WorldSession::HandleGuildBankSwapItems(WorldPacket& recvPacket) +void WorldSession::HandleGuildBankSwapItems(WorldPackets::Guild::GuildBankSwapItems& packet) { TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_SWAP_ITEMS [%s]", GetPlayerInfo().c_str()); - ObjectGuid GoGuid; - recvPacket >> GoGuid; - - if (!GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK)) - { - recvPacket.rfinish(); // Prevent additional spam at rejected packet + if (!GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK)) return; - } Guild* guild = GetPlayer()->GetGuild(); if (!guild) - { - recvPacket.rfinish(); // Prevent additional spam at rejected packet return; - } - uint8 bankToBank; - recvPacket >> bankToBank; - - uint8 tabId; - uint8 slotId; - uint32 itemEntry; - uint32 splitedAmount = 0; - - if (bankToBank) + if (packet.BankOnly) { - uint8 destTabId; - recvPacket >> destTabId; - - uint8 destSlotId; - recvPacket >> destSlotId; - - uint32 destItemEntry; - recvPacket >> destItemEntry; - - recvPacket >> tabId; - recvPacket >> slotId; - recvPacket >> itemEntry; - recvPacket.read_skip(); // Always 0 - recvPacket >> splitedAmount; - - guild->SwapItems(GetPlayer(), tabId, slotId, destTabId, destSlotId, splitedAmount); + guild->SwapItems(GetPlayer(), packet.BankTab1, packet.BankSlot1, packet.BankTab, packet.BankSlot, packet.StackCount); } else { - uint8 playerBag = NULL_BAG; - uint8 playerSlotId = NULL_SLOT; - uint8 toChar = 1; - - recvPacket >> tabId; - recvPacket >> slotId; - recvPacket >> itemEntry; - - uint8 autoStore; - recvPacket >> autoStore; - if (autoStore) - { - recvPacket.read_skip(); // autoStoreCount - recvPacket.read_skip(); // ToChar (?), always and expected to be 1 (autostore only triggered in Bank -> Char) - recvPacket.read_skip(); // Always 0 - } - else - { - recvPacket >> playerBag; - recvPacket >> playerSlotId; - recvPacket >> toChar; - recvPacket >> splitedAmount; - } - // Player <-> Bank // Allow to work with inventory only - if (!Player::IsInventoryPos(playerBag, playerSlotId) && !(playerBag == NULL_BAG && playerSlotId == NULL_SLOT)) + if (!Player::IsInventoryPos(packet.ContainerSlot, packet.ContainerItemSlot) && !packet.AutoStore) GetPlayer()->SendEquipError(EQUIP_ERR_INTERNAL_BAG_ERROR, nullptr); else - guild->SwapItemsWithInventory(GetPlayer(), toChar != 0, tabId, slotId, playerBag, playerSlotId, splitedAmount); + guild->SwapItemsWithInventory(GetPlayer(), packet.ToSlot != 0, packet.BankTab, packet.BankSlot, packet.ContainerSlot, packet.ContainerItemSlot, packet.StackCount); } } @@ -556,69 +492,35 @@ void WorldSession::HandleGuildBankUpdateTab(WorldPackets::Guild::GuildBankUpdate guild->HandleSetBankTabInfo(this, packet.BankTab, packet.Name, packet.Icon); } -void WorldSession::HandleGuildBankLogQuery(WorldPacket& recvPacket) +void WorldSession::HandleGuildBankLogQuery(WorldPackets::Guild::GuildBankLogQuery& packet) { - uint32 tabId; - recvPacket >> tabId; - - TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_LOG_QUERY [%s]: TabId: %u", GetPlayerInfo().c_str(), tabId); + TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_LOG_QUERY [%s]: TabId: %u", GetPlayerInfo().c_str(), packet.Tab); if (Guild* guild = GetPlayer()->GetGuild()) - guild->SendBankLog(this, tabId); + guild->SendBankLog(this, packet.Tab); } -void WorldSession::HandleQueryGuildBankTabText(WorldPacket &recvPacket) +void WorldSession::HandleGuildBankTextQuery(WorldPackets::Guild::GuildBankTextQuery& packet) { - uint8 tabId; - recvPacket >> tabId; - - TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_QUERY_TEXT [%s]: TabId: %u", GetPlayerInfo().c_str(), tabId); + TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_TEXT_QUERY [%s]: TabId: %u", GetPlayerInfo().c_str(), packet.Tab); if (Guild* guild = GetPlayer()->GetGuild()) - guild->SendBankTabText(this, tabId); + guild->SendBankTabText(this, packet.Tab); } -void WorldSession::HandleSetGuildBankTabText(WorldPacket& recvPacket) +void WorldSession::HandleGuildBankSetTabText(WorldPackets::Guild::GuildBankSetTabText& packet) { - uint32 tabId; - recvPacket >> tabId; - - uint32 textLen = recvPacket.ReadBits(14); - std::string text = recvPacket.ReadString(textLen); - - TC_LOG_DEBUG("guild", "CMSG_SET_GUILD_BANK_TEXT [%s]: TabId: %u, Text: %s", GetPlayerInfo().c_str(), tabId, text.c_str()); + TC_LOG_DEBUG("guild", "CMSG_SET_GUILD_BANK_TEXT [%s]: TabId: %u, Text: %s", GetPlayerInfo().c_str(), packet.Tab, packet.TabText.c_str()); if (Guild* guild = GetPlayer()->GetGuild()) - guild->SetBankTabText(tabId, text); + guild->SetBankTabText(packet.Tab, packet.TabText); } -void WorldSession::HandleGuildQueryXPOpcode(WorldPacket& recvPacket) +void WorldSession::HandleGuildXPQueryOpcode(WorldPackets::Guild::GuildXPQuery& packet) { - TC_LOG_DEBUG("network", "WORLD: Received CMSG_QUERY_GUILD_XP"); + TC_LOG_DEBUG("guild", "CMSG_QUERY_GUILD_XP [%s]: Guild: %s", GetPlayerInfo().c_str(), packet.GuildGUID.ToString().c_str()); - ObjectGuid guildGuid; - - guildGuid[2] = recvPacket.ReadBit(); - guildGuid[1] = recvPacket.ReadBit(); - guildGuid[0] = recvPacket.ReadBit(); - guildGuid[5] = recvPacket.ReadBit(); - guildGuid[4] = recvPacket.ReadBit(); - guildGuid[7] = recvPacket.ReadBit(); - guildGuid[6] = recvPacket.ReadBit(); - guildGuid[3] = recvPacket.ReadBit(); - - recvPacket.ReadByteSeq(guildGuid[7]); - recvPacket.ReadByteSeq(guildGuid[2]); - recvPacket.ReadByteSeq(guildGuid[3]); - recvPacket.ReadByteSeq(guildGuid[6]); - recvPacket.ReadByteSeq(guildGuid[1]); - recvPacket.ReadByteSeq(guildGuid[5]); - recvPacket.ReadByteSeq(guildGuid[0]); - recvPacket.ReadByteSeq(guildGuid[4]); - - TC_LOG_DEBUG("guild", "CMSG_QUERY_GUILD_XP [%s]: Guild: %s", GetPlayerInfo().c_str(), guildGuid.ToString().c_str()); - - if (Guild* guild = sGuildMgr->GetGuildByGuid(guildGuid)) + if (Guild* guild = sGuildMgr->GetGuildByGuid(packet.GuildGUID)) if (guild->IsMember(_player->GetGUID())) guild->SendGuildXP(this); } diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index 613dedcbc35..f35abf5e7db 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -44,6 +44,94 @@ void WorldPackets::Guild::GuildBankUpdateTab::Read() _worldPacket >> Icon; } +void WorldPackets::Guild::GuildBankDepositMoney::Read() +{ + _worldPacket >> Banker; + _worldPacket >> Money; +} + +void WorldPackets::Guild::GuildBankWithdrawMoney::Read() +{ + _worldPacket >> Banker; + _worldPacket >> Money; +} + +void WorldPackets::Guild::GuildBankLogQuery::Read() +{ + _worldPacket >> Tab; +} + +void WorldPackets::Guild::GuildBankSwapItems::Read() +{ + _worldPacket >> Banker; + _worldPacket >> BankOnly; + + if (BankOnly) + { + _worldPacket >> BankTab; + _worldPacket >> BankSlot; + _worldPacket >> ItemID; + _worldPacket >> BankTab1; + _worldPacket >> BankSlot1; + _worldPacket >> ItemID1; + _worldPacket >> ToSlot; + _worldPacket >> StackCount; + } + else + { + _worldPacket >> BankTab; + _worldPacket >> BankSlot; + _worldPacket >> ItemID; + _worldPacket >> AutoStore; + if (AutoStore) + { + _worldPacket >> StackCount; + _worldPacket >> ToSlot; + _worldPacket >> BankItemCount; + } + else + { + _worldPacket >> ContainerSlot; + _worldPacket >> ContainerItemSlot; + _worldPacket >> ToSlot; + _worldPacket >> StackCount; + } + } +} + +void WorldPackets::Guild::GuildBankTextQuery::Read() +{ + _worldPacket >> Tab; +} + +void WorldPackets::Guild::GuildBankSetTabText::Read() +{ + _worldPacket >> Tab; + uint32 length = _worldPacket.ReadBits(14); + TabText = _worldPacket.ReadString(length); +} + +void WorldPackets::Guild::GuildXPQuery::Read() +{ + GuildGUID[2] = _worldPacket.ReadBit(); + GuildGUID[1] = _worldPacket.ReadBit(); + GuildGUID[0] = _worldPacket.ReadBit(); + GuildGUID[5] = _worldPacket.ReadBit(); + GuildGUID[4] = _worldPacket.ReadBit(); + GuildGUID[7] = _worldPacket.ReadBit(); + GuildGUID[6] = _worldPacket.ReadBit(); + GuildGUID[3] = _worldPacket.ReadBit(); + + _worldPacket.ReadByteSeq(GuildGUID[7]); + _worldPacket.ReadByteSeq(GuildGUID[2]); + _worldPacket.ReadByteSeq(GuildGUID[3]); + _worldPacket.ReadByteSeq(GuildGUID[6]); + _worldPacket.ReadByteSeq(GuildGUID[1]); + _worldPacket.ReadByteSeq(GuildGUID[5]); + _worldPacket.ReadByteSeq(GuildGUID[0]); + _worldPacket.ReadByteSeq(GuildGUID[4]); +} + WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write() { _worldPacket.WriteBit(FullUpdate); @@ -73,8 +161,11 @@ WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write() for (GuildBankItemInfo const& item : ItemInfo) { - for (Item::ItemGemData const& socketEnchant : item.SocketEnchant) - _worldPacket << socketEnchant; + for (Guild::GuildBankItemInfo::GuildBankSocketEnchant const& socketEnchant : item.SocketEnchant) + { + _worldPacket << socketEnchant.SocketIndex; + _worldPacket << socketEnchant.SocketEnchantID; + } _worldPacket << uint32(item.EnchantmentID); _worldPacket << uint32(item.ReforgeEnchantmentID); diff --git a/src/server/game/Server/Packets/GuildPackets.h b/src/server/game/Server/Packets/GuildPackets.h index b14a95e7513..10135c6d084 100644 --- a/src/server/game/Server/Packets/GuildPackets.h +++ b/src/server/game/Server/Packets/GuildPackets.h @@ -74,8 +74,116 @@ namespace WorldPackets std::string Icon; }; + class GuildBankDepositMoney final : public ClientPacket + { + public: + GuildBankDepositMoney(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_DEPOSIT_MONEY, std::move(packet)) { } + + void Read() override; + + ObjectGuid Banker; + uint64 Money = 0; + }; + + class GuildBankWithdrawMoney final : public ClientPacket + { + public: + GuildBankWithdrawMoney(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_WITHDRAW_MONEY, std::move(packet)) { } + + void Read() override; + + ObjectGuid Banker; + uint64 Money = 0; + }; + + class GuildPermissionsQuery final : public ClientPacket + { + public: + GuildPermissionsQuery(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_PERMISSIONS_QUERY, std::move(packet)) { } + + void Read() override { } + }; + + class GuildBankRemainingWithdrawMoneyQuery final : public ClientPacket + { + public: + GuildBankRemainingWithdrawMoneyQuery(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY, std::move(packet)) { } + + void Read() override { } + }; + + class GuildBankLogQuery final : public ClientPacket + { + public: + GuildBankLogQuery(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_LOG_QUERY, std::move(packet)) { } + + void Read() override; + + int32 Tab = 0; + }; + + class GuildBankSwapItems final : public ClientPacket + { + public: + GuildBankSwapItems(WorldPacket&& packet) : ClientPacket(std::move(packet)) { } + + void Read() override; + + ObjectGuid Banker; + int32 StackCount = 0; + int32 BankItemCount = 0; + uint32 ItemID = 0; + uint32 ItemID1 = 0; + uint8 ToSlot = 0; + uint8 BankSlot = 0; + uint8 BankSlot1 = 0; + uint8 BankTab = 0; + uint8 BankTab1 = 0; + uint8 ContainerSlot = 0; + uint8 ContainerItemSlot = 0; + bool AutoStore = false; + bool BankOnly = false; + }; + + class GuildBankTextQuery final : public ClientPacket + { + public: + GuildBankTextQuery(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_TEXT_QUERY, std::move(packet)) { } + + void Read() override; + + int32 Tab = 0; + }; + + class GuildBankSetTabText final : public ClientPacket + { + public: + GuildBankSetTabText(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_BANK_SET_TAB_TEXT, std::move(packet)) { } + + void Read() override; + + int32 Tab = 0; + std::string TabText; + }; + + class GuildXPQuery final : public ClientPacket + { + public: + GuildXPQuery(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_XP_QUERY, std::move(packet)) { } + + ObjectGuid GuildGUID; + + void Read() override; + }; + struct GuildBankItemInfo { + struct GuildBankSocketEnchant + { + int32 SocketIndex = 0; + int32 SocketEnchantID = 0; + }; + WorldPackets::Item::ItemInstance Item; int32 Slot = 0; int32 Count = 0; @@ -87,7 +195,7 @@ namespace WorldPackets int32 RandomPropertiesSeed = 0; int32 Flags = 0; bool Locked = false; - std::vector SocketEnchant; + std::vector SocketEnchant; }; struct GuildBankTabInfo diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 76d7b2c4c3b..8403dabd218 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -323,9 +323,10 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_GUILD_BANK_BUY_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankBuyTab ); DEFINE_HANDLER(CMSG_GUILD_BANK_DEPOSIT_MONEY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankDepositMoney ); DEFINE_HANDLER(CMSG_GUILD_BANK_LOG_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankLogQuery ); - DEFINE_HANDLER(CMSG_GUILD_BANK_MONEY_WITHDRAWN_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankMoneyWithdrawn ); + DEFINE_HANDLER(CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankMoneyWithdrawn ); DEFINE_HANDLER(CMSG_GUILD_BANK_QUERY_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankQueryTab ); - DEFINE_HANDLER(CMSG_GUILD_BANK_QUERY_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQueryGuildBankTabText ); + DEFINE_HANDLER(CMSG_GUILD_BANK_TEXT_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankTextQuery ); + DEFINE_HANDLER(CMSG_GUILD_BANK_SET_TAB_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankSetTabText ); DEFINE_HANDLER(CMSG_GUILD_BANK_SWAP_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankSwapItems ); DEFINE_HANDLER(CMSG_GUILD_BANK_UPDATE_TAB, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankUpdateTab ); DEFINE_HANDLER(CMSG_GUILD_BANK_WITHDRAW_MONEY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildBankWithdrawMoney ); @@ -341,7 +342,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_GUILD_MEMBER_SEND_SOR_REQUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_GUILD_MOTD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildMOTDOpcode ); DEFINE_HANDLER(CMSG_GUILD_NEWS_UPDATE_STICKY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleGuildNewsUpdateStickyOpcode); - DEFINE_HANDLER(CMSG_GUILD_PERMISSIONS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildPermissions ); + DEFINE_HANDLER(CMSG_GUILD_PERMISSIONS_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildPermissionsQuery ); DEFINE_HANDLER(CMSG_GUILD_PROMOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildPromoteOpcode ); DEFINE_HANDLER(CMSG_GUILD_QUERY, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryOpcode ); DEFINE_HANDLER(CMSG_GUILD_QUERY_NEWS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryNewsOpcode ); @@ -357,6 +358,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_GUILD_SET_NOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetNoteOpcode ); DEFINE_HANDLER(CMSG_GUILD_SET_RANK_PERMISSIONS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetRankPermissionsOpcode); DEFINE_HANDLER(CMSG_GUILD_SWITCH_RANK, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSwitchRank ); + DEFINE_HANDLER(CMSG_GUILD_XP_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildXPQueryOpcode ); DEFINE_HANDLER(CMSG_HEARTH_AND_RESURRECT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleHearthAndResurrect ); DEFINE_HANDLER(CMSG_IGNORE_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleIgnoreTradeOpcode ); DEFINE_HANDLER(CMSG_INITIATE_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInitiateTradeOpcode ); @@ -493,7 +495,6 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_QUERY_GUILD_MEMBER_RECIPES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_QUERY_GUILD_RECIPES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_QUERY_GUILD_REWARDS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleGuildRewardsQueryOpcode ); - DEFINE_HANDLER(CMSG_QUERY_GUILD_XP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryXPOpcode ); // STATUS_AUTHED DEFINE_HANDLER(CMSG_QUERY_INSPECT_ACHIEVEMENTS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryInspectAchievements ); DEFINE_HANDLER(CMSG_QUERY_QUESTS_COMPLETED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryQuestsCompleted ); DEFINE_HANDLER(CMSG_QUERY_TIME, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryTimeOpcode ); @@ -562,7 +563,6 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_SET_EVERYONE_IS_ASSISTANT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_SET_FACTION_ATWAR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionAtWar ); DEFINE_HANDLER(CMSG_SET_FACTION_INACTIVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetFactionInactiveOpcode ); - DEFINE_HANDLER(CMSG_SET_GUILD_BANK_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetGuildBankTabText ); DEFINE_HANDLER(CMSG_SET_PET_SLOT, STATUS_LOGGEDIN , PROCESS_THREADUNSAFE, &WorldSession::HandleSetPetSlot ); DEFINE_HANDLER(CMSG_SET_PLAYER_DECLINED_NAMES, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetPlayerDeclinedNames ); DEFINE_HANDLER(CMSG_SET_PREFERED_CEMETERY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 0a001ef673d..78398419827 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -238,10 +238,11 @@ enum Opcodes : uint16 CMSG_GUILD_BANK_BUY_TAB = 0x0C37, CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x0707, CMSG_GUILD_BANK_LOG_QUERY = 0x3224, - CMSG_GUILD_BANK_MONEY_WITHDRAWN_QUERY = 0x1225, + CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY = 0x1225, CMSG_GUILD_BANK_NOTE = 0x0000, CMSG_GUILD_BANK_QUERY_TAB = 0x2E35, - CMSG_GUILD_BANK_QUERY_TEXT = 0x3220, + CMSG_GUILD_BANK_TEXT_QUERY = 0x3220, + CMSG_GUILD_BANK_SET_TAB_TEXT = 0x3023, CMSG_GUILD_BANK_SWAP_ITEMS = 0x2315, CMSG_GUILD_BANK_UPDATE_TAB = 0x0106, CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x0037, @@ -258,7 +259,7 @@ enum Opcodes : uint16 CMSG_GUILD_MEMBER_SEND_SOR_REQUEST = 0x3225, CMSG_GUILD_MOTD = 0x1035, CMSG_GUILD_NEWS_UPDATE_STICKY = 0x3223, - CMSG_GUILD_PERMISSIONS = 0x3022, + CMSG_GUILD_PERMISSIONS_QUERY = 0x3022, CMSG_GUILD_PROMOTE = 0x1030, CMSG_GUILD_QUERY = 0x4426, CMSG_GUILD_QUERY_NEWS = 0x3020, @@ -274,6 +275,7 @@ enum Opcodes : uint16 CMSG_GUILD_SET_NOTE = 0x1233, CMSG_GUILD_SET_RANK_PERMISSIONS = 0x1024, CMSG_GUILD_SWITCH_RANK = 0x1221, + CMSG_GUILD_XP_QUERY = 0x1237, CMSG_HEARTH_AND_RESURRECT = 0x4B34, CMSG_IGNORE_TRADE = 0x7112, CMSG_INITIATE_TRADE = 0x7916, @@ -420,7 +422,6 @@ enum Opcodes : uint16 CMSG_QUERY_GUILD_MEMBER_RECIPES = 0x1037, CMSG_QUERY_GUILD_RECIPES = 0x3033, CMSG_QUERY_GUILD_REWARDS = 0x3012, - CMSG_QUERY_GUILD_XP = 0x1237, CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x4D27, CMSG_QUERY_QUESTS_COMPLETED = 0x2317, CMSG_QUERY_TIME = 0x0A36, @@ -499,7 +500,6 @@ enum Opcodes : uint16 CMSG_SET_FACTION_ATWAR = 0x0706, CMSG_SET_FACTION_CHEAT = 0x0000, CMSG_SET_FACTION_INACTIVE = 0x0E37, - CMSG_SET_GUILD_BANK_TEXT = 0x3023, CMSG_SET_LFG_COMMENT = 0x0000, CMSG_SET_PET_SLOT = 0x3A04, CMSG_SET_PLAYER_DECLINED_NAMES = 0x6316, diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 1c88fff1ab6..c8cb74af785 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -1316,7 +1316,7 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co case CMSG_TAXIQUERYAVAILABLENODES: // 0 1.5 case CMSG_QUESTGIVER_QUERY_QUEST: // 0 1.5 case CMSG_PAGE_TEXT_QUERY: // 0 1.5 - case CMSG_GUILD_BANK_QUERY_TEXT: // 0 1.5 + case CMSG_GUILD_BANK_TEXT_QUERY: // 0 1.5 case MSG_CORPSE_QUERY: // 0 1.5 case MSG_MOVE_SET_FACING: // 0 1.5 case CMSG_REQUEST_PARTY_MEMBER_STATS: // 0 1.5 @@ -1495,7 +1495,7 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co case CMSG_GUILD_BANK_WITHDRAW_MONEY: // not profiled case CMSG_GUILD_BANK_BUY_TAB: // not profiled case CMSG_GUILD_BANK_UPDATE_TAB: // not profiled - case CMSG_SET_GUILD_BANK_TEXT: // not profiled + case CMSG_GUILD_BANK_SET_TAB_TEXT: // not profiled case MSG_SAVE_GUILD_EMBLEM: // not profiled case MSG_PETITION_RENAME: // not profiled case MSG_TALENT_WIPE_CONFIRM: // not profiled diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 39b663ea044..cfc8ce61407 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -104,6 +104,15 @@ namespace WorldPackets class GuildBankQueryTab; class GuildBankBuyTab; class GuildBankUpdateTab; + class GuildBankDepositMoney; + class GuildBankWithdrawMoney; + class GuildPermissionsQuery; + class GuildBankRemainingWithdrawMoneyQuery; + class GuildBankLogQuery; + class GuildBankSwapItems; + class GuildBankTextQuery; + class GuildBankSetTabText; + class GuildXPQuery; } } @@ -725,6 +734,7 @@ class TC_GAME_API WorldSession void HandleAutoDeclineGuildInvites(WorldPacket& recvPacket); void HandleGuildSwitchRankOpcode(WorldPacket& recvPacket); void HandleGuildRequestChallengeUpdate(WorldPacket& recvPacket); + void HandleGuildXPQueryOpcode(WorldPackets::Guild::GuildXPQuery& packet); // Guild Finder void HandleGuildFinderAddRecruit(WorldPacket& recvPacket); @@ -1029,19 +1039,18 @@ class TC_GAME_API WorldSession void HandleSetTaxiBenchmarkOpcode(WorldPacket& recvData); // Guild Bank - void HandleGuildPermissions(WorldPacket& recvData); - void HandleGuildBankMoneyWithdrawn(WorldPacket& recvData); + void HandleGuildPermissionsQuery(WorldPackets::Guild::GuildPermissionsQuery& packet); + void HandleGuildBankMoneyWithdrawn(WorldPackets::Guild::GuildBankRemainingWithdrawMoneyQuery& packet); void HandleGuildBankActivate(WorldPackets::Guild::GuildBankActivate& packet); void HandleGuildBankQueryTab(WorldPackets::Guild::GuildBankQueryTab& packet); - void HandleGuildBankLogQuery(WorldPacket& recvData); - void HandleGuildBankDepositMoney(WorldPacket& recvData); - void HandleGuildBankWithdrawMoney(WorldPacket& recvData); - void HandleGuildBankSwapItems(WorldPacket& recvData); + void HandleGuildBankLogQuery(WorldPackets::Guild::GuildBankLogQuery& packet); + void HandleGuildBankDepositMoney(WorldPackets::Guild::GuildBankDepositMoney& packet); + void HandleGuildBankWithdrawMoney(WorldPackets::Guild::GuildBankWithdrawMoney& packet); + void HandleGuildBankSwapItems(WorldPackets::Guild::GuildBankSwapItems& packet); void HandleGuildBankUpdateTab(WorldPackets::Guild::GuildBankUpdateTab& packet); void HandleGuildBankBuyTab(WorldPackets::Guild::GuildBankBuyTab& packet); - void HandleQueryGuildBankTabText(WorldPacket& recvData); - void HandleSetGuildBankTabText(WorldPacket& recvData); - void HandleGuildQueryXPOpcode(WorldPacket& recvData); + void HandleGuildBankTextQuery(WorldPackets::Guild::GuildBankTextQuery& packet); + void HandleGuildBankSetTabText(WorldPackets::Guild::GuildBankSetTabText& packet); // Refer-a-Friend void HandleGrantLevel(WorldPacket& recvData);