diff options
Diffstat (limited to 'src/server/game/Handlers/GuildHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/GuildHandler.cpp | 420 |
1 files changed, 111 insertions, 309 deletions
diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp index e0e44202c09..fb0968d8cd2 100644 --- a/src/server/game/Handlers/GuildHandler.cpp +++ b/src/server/game/Handlers/GuildHandler.cpp @@ -19,56 +19,45 @@ #include "Common.h" #include "Guild.h" #include "GuildMgr.h" +#include "GuildPackets.h" #include "Log.h" #include "ObjectMgr.h" #include "Player.h" #include "WorldPacket.h" -void WorldSession::HandleGuildQueryOpcode(WorldPacket& recvPacket) +void WorldSession::HandleGuildQueryOpcode(WorldPackets::Guild::QueryGuildInfo& query) { - uint32 guildId; - recvPacket >> guildId; - - TC_LOG_DEBUG("guild", "CMSG_GUILD_QUERY [%s]: Guild: %u", GetPlayerInfo().c_str(), guildId); - if (!guildId) + TC_LOG_DEBUG("guild", "CMSG_GUILD_QUERY [%s]: Guild: %u", GetPlayerInfo().c_str(), query.GuildId); + if (!query.GuildId) return; - if (Guild* guild = sGuildMgr->GetGuildById(guildId)) + if (Guild* guild = sGuildMgr->GetGuildById(query.GuildId)) guild->HandleQuery(this); } -void WorldSession::HandleGuildCreateOpcode(WorldPacket& recvPacket) +void WorldSession::HandleGuildCreateOpcode(WorldPackets::Guild::GuildCreate& packet) { - std::string name; - recvPacket >> name; - - TC_LOG_ERROR("entities.player.cheat", "CMSG_GUILD_CREATE: Possible hacking-attempt: %s tried to create a guild [Name: %s] using cheats", GetPlayerInfo().c_str(), name.c_str()); + TC_LOG_ERROR("entities.player.cheat", "CMSG_GUILD_CREATE: Possible hacking-attempt: %s tried to create a guild [Name: %s] using cheats", GetPlayerInfo().c_str(), packet.GuildName.c_str()); } -void WorldSession::HandleGuildInviteOpcode(WorldPacket& recvPacket) +void WorldSession::HandleGuildInviteOpcode(WorldPackets::Guild::GuildInviteByName& packet) { - std::string invitedName; - recvPacket >> invitedName; - - TC_LOG_DEBUG("guild", "CMSG_GUILD_INVITE [%s]: Invited: %s", GetPlayerInfo().c_str(), invitedName.c_str()); - if (normalizePlayerName(invitedName)) + TC_LOG_DEBUG("guild", "CMSG_GUILD_INVITE [%s]: Invited: %s", GetPlayerInfo().c_str(), packet.Name.c_str()); + if (normalizePlayerName(packet.Name)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleInviteMember(this, invitedName); + guild->HandleInviteMember(this, packet.Name); } -void WorldSession::HandleGuildRemoveOpcode(WorldPacket& recvPacket) +void WorldSession::HandleGuildRemoveOpcode(WorldPackets::Guild::GuildOfficerRemoveMember& packet) { - std::string playerName; - recvPacket >> playerName; + TC_LOG_DEBUG("guild", "CMSG_GUILD_REMOVE [%s]: Target: %s", GetPlayerInfo().c_str(), packet.Removee.c_str()); - TC_LOG_DEBUG("guild", "CMSG_GUILD_REMOVE [%s]: Target: %s", GetPlayerInfo().c_str(), playerName.c_str()); - - if (normalizePlayerName(playerName)) + if (normalizePlayerName(packet.Removee)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleRemoveMember(this, playerName); + guild->HandleRemoveMember(this, packet.Removee); } -void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/) +void WorldSession::HandleGuildAcceptOpcode(WorldPackets::Guild::AcceptGuildInvite& /*invite*/) { TC_LOG_DEBUG("guild", "CMSG_GUILD_ACCEPT [%s]", GetPlayer()->GetName().c_str()); @@ -77,7 +66,7 @@ void WorldSession::HandleGuildAcceptOpcode(WorldPacket& /*recvPacket*/) guild->HandleAcceptMember(this); } -void WorldSession::HandleGuildDeclineOpcode(WorldPacket& /*recvPacket*/) +void WorldSession::HandleGuildDeclineOpcode(WorldPackets::Guild::GuildDeclineInvitation& /*decline*/) { TC_LOG_DEBUG("guild", "CMSG_GUILD_DECLINE [%s]", GetPlayerInfo().c_str()); @@ -85,7 +74,7 @@ void WorldSession::HandleGuildDeclineOpcode(WorldPacket& /*recvPacket*/) GetPlayer()->SetInGuild(0); } -void WorldSession::HandleGuildInfoOpcode(WorldPacket& /*recvPacket*/) +void WorldSession::HandleGuildInfoOpcode(WorldPackets::Guild::GuildGetInfo& /*packet*/) { TC_LOG_DEBUG("guild", "CMSG_GUILD_INFO [%s]", GetPlayerInfo().c_str()); @@ -93,7 +82,7 @@ void WorldSession::HandleGuildInfoOpcode(WorldPacket& /*recvPacket*/) guild->SendInfo(this); } -void WorldSession::HandleGuildRosterOpcode(WorldPacket& /*recvPacket*/) +void WorldSession::HandleGuildRosterOpcode(WorldPackets::Guild::GuildGetRoster& /*packet*/) { TC_LOG_DEBUG("guild", "CMSG_GUILD_ROSTER [%s]", GetPlayerInfo().c_str()); @@ -103,31 +92,25 @@ void WorldSession::HandleGuildRosterOpcode(WorldPacket& /*recvPacket*/) Guild::SendCommandResult(this, GUILD_COMMAND_ROSTER, ERR_GUILD_PLAYER_NOT_IN_GUILD); } -void WorldSession::HandleGuildPromoteOpcode(WorldPacket& recvPacket) +void WorldSession::HandleGuildPromoteOpcode(WorldPackets::Guild::GuildPromoteMember& promote) { - std::string playerName; - recvPacket >> playerName; - - TC_LOG_DEBUG("guild", "CMSG_GUILD_PROMOTE [%s]: Target: %s", GetPlayerInfo().c_str(), playerName.c_str()); + TC_LOG_DEBUG("guild", "CMSG_GUILD_PROMOTE [%s]: Target: %s", GetPlayerInfo().c_str(), promote.Promotee.c_str()); - if (normalizePlayerName(playerName)) + if (normalizePlayerName(promote.Promotee)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleUpdateMemberRank(this, playerName, false); + guild->HandleUpdateMemberRank(this, promote.Promotee, false); } -void WorldSession::HandleGuildDemoteOpcode(WorldPacket& recvPacket) +void WorldSession::HandleGuildDemoteOpcode(WorldPackets::Guild::GuildDemoteMember& demote) { - std::string playerName; - recvPacket >> playerName; - - TC_LOG_DEBUG("guild", "CMSG_GUILD_DEMOTE [%s]: Target: %s", GetPlayerInfo().c_str(), playerName.c_str()); + TC_LOG_DEBUG("guild", "CMSG_GUILD_DEMOTE [%s]: Target: %s", GetPlayerInfo().c_str(), demote.Demotee.c_str()); - if (normalizePlayerName(playerName)) + if (normalizePlayerName(demote.Demotee)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleUpdateMemberRank(this, playerName, true); + guild->HandleUpdateMemberRank(this, demote.Demotee, true); } -void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/) +void WorldSession::HandleGuildLeaveOpcode(WorldPackets::Guild::GuildLeave& /*leave*/) { TC_LOG_DEBUG("guild", "CMSG_GUILD_LEAVE [%s]", GetPlayerInfo().c_str()); @@ -135,7 +118,7 @@ void WorldSession::HandleGuildLeaveOpcode(WorldPacket& /*recvPacket*/) guild->HandleLeaveMember(this); } -void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/) +void WorldSession::HandleGuildDisbandOpcode(WorldPackets::Guild::GuildDelete& /*packet*/) { TC_LOG_DEBUG("guild", "CMSG_GUILD_DISBAND [%s]", GetPlayerInfo().c_str()); @@ -143,138 +126,67 @@ void WorldSession::HandleGuildDisbandOpcode(WorldPacket& /*recvPacket*/) guild->HandleDisband(this); } -void WorldSession::HandleGuildLeaderOpcode(WorldPacket& recvPacket) +void WorldSession::HandleGuildLeaderOpcode(WorldPackets::Guild::GuildSetGuildMaster& packet) { - std::string name; - recvPacket >> name; + TC_LOG_DEBUG("guild", "CMSG_GUILD_LEADER [%s]: Target: %s", GetPlayerInfo().c_str(), packet.NewMasterName.c_str()); - TC_LOG_DEBUG("guild", "CMSG_GUILD_LEADER [%s]: Target: %s", GetPlayerInfo().c_str(), name.c_str()); - - if (normalizePlayerName(name)) + if (normalizePlayerName(packet.NewMasterName)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleSetLeader(this, name); + guild->HandleSetLeader(this, packet.NewMasterName); } -void WorldSession::HandleGuildMOTDOpcode(WorldPacket& recvPacket) +void WorldSession::HandleGuildMOTDOpcode(WorldPackets::Guild::GuildUpdateMotdText& packet) { - std::string motd; - recvPacket >> motd; - - TC_LOG_DEBUG("guild", "CMSG_GUILD_MOTD [%s]: MOTD: %s", GetPlayerInfo().c_str(), motd.c_str()); - - if (!DisallowHyperlinksAndMaybeKick(motd)) - return; - - if (motd.size() > 128) - return; + TC_LOG_DEBUG("guild", "CMSG_GUILD_MOTD [%s]: MOTD: %s", GetPlayerInfo().c_str(), packet.MotdText.c_str()); if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleSetMOTD(this, motd); + guild->HandleSetMOTD(this, packet.MotdText); } -void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket) +void WorldSession::HandleGuildSetPublicNoteOpcode(WorldPackets::Guild::GuildSetMemberNote& packet) { - std::string playerName; - std::string note; - recvPacket >> playerName >> note; - TC_LOG_DEBUG("guild", "CMSG_GUILD_SET_PUBLIC_NOTE [%s]: Target: %s, Note: %s", - GetPlayerInfo().c_str(), playerName.c_str(), note.c_str()); - - if (!DisallowHyperlinksAndMaybeKick(note)) - return; + GetPlayerInfo().c_str(), packet.NoteeName.c_str(), packet.Note.c_str()); - if (note.size() > 31) - return; - - if (normalizePlayerName(playerName)) + if (normalizePlayerName(packet.NoteeName)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleSetMemberNote(this, playerName, note, false); + guild->HandleSetMemberNote(this, packet.NoteeName, packet.Note, false); } -void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket) +void WorldSession::HandleGuildSetOfficerNoteOpcode(WorldPackets::Guild::GuildSetMemberNote& packet) { - std::string playerName; - std::string note; - recvPacket >> playerName >> note; - TC_LOG_DEBUG("guild", "CMSG_GUILD_SET_OFFICER_NOTE [%s]: Target: %s, Note: %s", - GetPlayerInfo().c_str(), playerName.c_str(), note.c_str()); + GetPlayerInfo().c_str(), packet.NoteeName.c_str(), packet.Note.c_str()); - if (!DisallowHyperlinksAndMaybeKick(note)) - return; - - if (note.size() > 31) - return; - - if (normalizePlayerName(playerName)) + if (normalizePlayerName(packet.NoteeName)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleSetMemberNote(this, playerName, note, true); + guild->HandleSetMemberNote(this, packet.NoteeName, packet.Note, true); } -void WorldSession::HandleGuildRankOpcode(WorldPacket& recvPacket) +void WorldSession::HandleGuildRankOpcode(WorldPackets::Guild::GuildSetRankPermissions& packet) { - uint32 rankId; - recvPacket >> rankId; - - uint32 rights; - recvPacket >> rights; - - std::string rankName; - recvPacket >> rankName; - - uint32 money; - recvPacket >> money; - - TC_LOG_DEBUG("guild", "CMSG_GUILD_RANK [%s]: Rank: %s (%u)", GetPlayerInfo().c_str(), rankName.c_str(), rankId); - - if (!DisallowHyperlinksAndMaybeKick(rankName)) - return; - - if (rankName.size() > 15) - return; - Guild* guild = GetPlayer()->GetGuild(); if (!guild) - { - recvPacket.rpos(recvPacket.wpos()); return; - } GuildBankRightsAndSlotsVec rightsAndSlots(GUILD_BANK_MAX_TABS); - for (uint8 tabId = 0; tabId < GUILD_BANK_MAX_TABS; ++tabId) - { - uint32 bankRights; - uint32 slots; + rightsAndSlots[tabId] = GuildBankRightsAndSlots(tabId, uint8(packet.TabFlags[tabId]), uint8(packet.TabWithdrawItemLimit[tabId])); - recvPacket >> bankRights; - recvPacket >> slots; + TC_LOG_DEBUG("guild", "CMSG_GUILD_RANK [%s]: Rank: %s (%u)", GetPlayerInfo().c_str(), packet.RankName.c_str(), packet.RankID); - rightsAndSlots[tabId] = GuildBankRightsAndSlots(tabId, bankRights, slots); - } - - guild->HandleSetRankInfo(this, rankId, rankName, rights, money, rightsAndSlots); + guild->HandleSetRankInfo(this, packet.RankID, packet.RankName, packet.Flags, packet.WithdrawGoldLimit, rightsAndSlots); } -void WorldSession::HandleGuildAddRankOpcode(WorldPacket& recvPacket) +void WorldSession::HandleGuildAddRankOpcode(WorldPackets::Guild::GuildAddRank& packet) { - std::string rankName; - recvPacket >> rankName; - - TC_LOG_DEBUG("guild", "CMSG_GUILD_ADD_RANK [%s]: Rank: %s", GetPlayerInfo().c_str(), rankName.c_str()); - - if (!DisallowHyperlinksAndMaybeKick(rankName)) - return; - - if (rankName.size() > 15) - return; + TC_LOG_DEBUG("guild", "CMSG_GUILD_ADD_RANK [%s]: Rank: %s", GetPlayerInfo().c_str(), packet.Name.c_str()); if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleAddNewRank(this, rankName); + guild->HandleAddNewRank(this, packet.Name); } -void WorldSession::HandleGuildDelRankOpcode(WorldPacket& /*recvPacket*/) +void WorldSession::HandleGuildDelRankOpcode(WorldPackets::Guild::GuildDeleteRank& /*packet*/) { TC_LOG_DEBUG("guild", "CMSG_GUILD_DEL_RANK [%s]", GetPlayerInfo().c_str()); @@ -282,37 +194,25 @@ void WorldSession::HandleGuildDelRankOpcode(WorldPacket& /*recvPacket*/) guild->HandleRemoveLowestRank(this); } -void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket) +void WorldSession::HandleGuildChangeInfoTextOpcode(WorldPackets::Guild::GuildUpdateInfoText& packet) { - std::string info; - recvPacket >> info; - - TC_LOG_DEBUG("guild", "CMSG_GUILD_INFO_TEXT [%s]: %s", GetPlayerInfo().c_str(), info.c_str()); - - if (!DisallowHyperlinksAndMaybeKick(info)) - return; - - if (info.size() > 500) - return; + TC_LOG_DEBUG("guild", "CMSG_GUILD_INFO_TEXT [%s]: %s", GetPlayerInfo().c_str(), packet.InfoText.c_str()); if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleSetInfo(this, info); + guild->HandleSetInfo(this, packet.InfoText); } -void WorldSession::HandleSaveGuildEmblemOpcode(WorldPacket& recvPacket) +void WorldSession::HandleSaveGuildEmblemOpcode(WorldPackets::Guild::SaveGuildEmblem& packet) { - ObjectGuid vendorGuid; - recvPacket >> vendorGuid; - EmblemInfo emblemInfo; - emblemInfo.ReadPacket(recvPacket); + emblemInfo.ReadPacket(packet); TC_LOG_DEBUG("guild", "MSG_SAVE_GUILD_EMBLEM [%s]: Guid: [%s] Style: %d, Color: %d, BorderStyle: %d, BorderColor: %d, BackgroundColor: %d" - , GetPlayerInfo().c_str(), vendorGuid.ToString().c_str(), emblemInfo.GetStyle() + , GetPlayerInfo().c_str(), packet.Vendor.ToString().c_str(), emblemInfo.GetStyle() , emblemInfo.GetColor(), emblemInfo.GetBorderStyle() , emblemInfo.GetBorderColor(), emblemInfo.GetBackgroundColor()); - if (GetPlayer()->GetNPCIfCanInteractWith(vendorGuid, UNIT_NPC_FLAG_TABARDDESIGNER)) + if (GetPlayer()->GetNPCIfCanInteractWith(packet.Vendor, UNIT_NPC_FLAG_TABARDDESIGNER)) { // Remove fake death if (GetPlayer()->HasUnitState(UNIT_STATE_DIED)) @@ -327,7 +227,7 @@ void WorldSession::HandleSaveGuildEmblemOpcode(WorldPacket& recvPacket) Guild::SendSaveEmblemResult(this, ERR_GUILDEMBLEM_INVALIDVENDOR); // "That's not an emblem vendor!" } -void WorldSession::HandleGuildEventLogQueryOpcode(WorldPacket& /* recvPacket */) +void WorldSession::HandleGuildEventLogQueryOpcode(WorldPackets::Guild::GuildEventLogQuery& /*packet*/) { TC_LOG_DEBUG("guild", "MSG_GUILD_EVENT_LOG_QUERY [%s]", GetPlayerInfo().c_str()); @@ -335,31 +235,27 @@ void WorldSession::HandleGuildEventLogQueryOpcode(WorldPacket& /* recvPacket */) guild->SendEventLog(this); } -void WorldSession::HandleGuildBankMoneyWithdrawn(WorldPacket & /* recvData */) +void WorldSession::HandleGuildBankMoneyWithdrawn(WorldPackets::Guild::GuildBankRemainingWithdrawMoneyQuery& /*packet*/) { - TC_LOG_DEBUG("guild", "MSG_GUILD_BANK_MONEY_WITHDRAWN [%s]", GetPlayerInfo().c_str()); - if (Guild* guild = GetPlayer()->GetGuild()) guild->SendMoneyInfo(this); } -void WorldSession::HandleGuildPermissions(WorldPacket& /* recvData */) +void WorldSession::HandleGuildPermissions(WorldPackets::Guild::GuildPermissionsQuery& /* packet */) { - TC_LOG_DEBUG("guild", "MSG_GUILD_PERMISSIONS [%s]", GetPlayerInfo().c_str()); - if (Guild* guild = GetPlayer()->GetGuild()) guild->SendPermissions(this); } // Called when clicking on Guild bank gameobject -void WorldSession::HandleGuildBankerActivate(WorldPacket& recvData) +void WorldSession::HandleGuildBankerActivate(WorldPackets::Guild::GuildBankActivate& packet) { - ObjectGuid guid; - bool sendAllSlots; - recvData >> guid >> sendAllSlots; - TC_LOG_DEBUG("guild", "CMSG_GUILD_BANKER_ACTIVATE [%s]: [%s] AllSlots: %u" - , GetPlayerInfo().c_str(), guid.ToString().c_str(), sendAllSlots); + , GetPlayerInfo().c_str(), packet.Banker.ToString().c_str(), packet.FullUpdate); + + GameObject const* const go = GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK); + if (!go) + return; Guild* const guild = GetPlayer()->GetGuild(); if (!guild) @@ -368,125 +264,65 @@ void WorldSession::HandleGuildBankerActivate(WorldPacket& recvData) return; } - guild->SendBankTabsInfo(this, sendAllSlots); + guild->SendBankTabsInfo(this, packet.FullUpdate); } // Called when opening guild bank tab only (first one) -void WorldSession::HandleGuildBankQueryTab(WorldPacket& recvData) +void WorldSession::HandleGuildBankQueryTab(WorldPackets::Guild::GuildBankQueryTab& packet) { - ObjectGuid guid; - uint8 tabId; - bool full; - - recvData >> guid >> tabId >> full; - TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_QUERY_TAB [%s]: %s, TabId: %u, ShowTabs: %u" - , GetPlayerInfo().c_str(), guid.ToString().c_str(), tabId, full); + , GetPlayerInfo().c_str(), packet.Banker.ToString().c_str(), packet.Tab, packet.FullUpdate); - if (GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK)) + if (GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->SendBankTabData(this, tabId); + guild->SendBankTabData(this, packet.Tab, packet.FullUpdate); } -void WorldSession::HandleGuildBankDepositMoney(WorldPacket& recvData) +void WorldSession::HandleGuildBankDepositMoney(WorldPackets::Guild::GuildBankDepositMoney& packet) { - ObjectGuid guid; - uint32 money; - recvData >> guid >> money; - TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_DEPOSIT_MONEY [%s]: [%s], money: %u", - 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& recvData) +void WorldSession::HandleGuildBankWithdrawMoney(WorldPackets::Guild::GuildBankWithdrawMoney& packet) { - ObjectGuid guid; - uint32 money; - recvData >> guid >> money; - TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_WITHDRAW_MONEY [%s]: [%s], money: %u", - 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& recvData) +void WorldSession::HandleGuildBankSwapItems(WorldPackets::Guild::GuildBankSwapItems& packet) { - TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_SWAP_ITEMS [%s]", GetPlayerInfo().c_str()); - - ObjectGuid GoGuid; - recvData >> GoGuid; - - if (!GetPlayer()->GetGameObjectIfCanInteractWith(GoGuid, GAMEOBJECT_TYPE_GUILD_BANK)) - { - recvData.rfinish(); // Prevent additional spam at rejected packet + if (!GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK)) return; - } Guild* guild = GetPlayer()->GetGuild(); if (!guild) - { - recvData.rfinish(); // Prevent additional spam at rejected packet return; - } - - uint8 bankToBank; - recvData >> bankToBank; - - uint8 tabId; - uint8 slotId; - uint32 itemEntry; - uint32 splitedAmount = 0; - - if (bankToBank) - { - uint8 destTabId; - recvData >> destTabId; - - uint8 destSlotId; - recvData >> destSlotId; - recvData.read_skip<uint32>(); // Always 0 - - recvData >> tabId; - recvData >> slotId; - recvData >> itemEntry; - recvData.read_skip<uint8>(); // Always 0 - recvData >> splitedAmount; - - guild->SwapItems(GetPlayer(), tabId, slotId, destTabId, destSlotId, splitedAmount); - } + if (packet.BankOnly) + guild->SwapItems(GetPlayer(), packet.BankTab1, packet.BankSlot1, packet.BankTab, packet.BankSlot, packet.BankItemCount); else { uint8 playerBag = NULL_BAG; uint8 playerSlotId = NULL_SLOT; uint8 toChar = 1; + uint32 splitedAmount = 0; - recvData >> tabId; - recvData >> slotId; - recvData >> itemEntry; - - uint8 autoStore; - recvData >> autoStore; - if (autoStore) - { - recvData.read_skip<uint32>(); // autoStoreCount - recvData.read_skip<uint8>(); // ToChar (?), always and expected to be 1 (autostore only triggered in Bank -> Char) - recvData.read_skip<uint32>(); // Always 0 - } - else + if (!packet.AutoStore) { - recvData >> playerBag; - recvData >> playerSlotId; - recvData >> toChar; - recvData >> splitedAmount; + playerBag = packet.ContainerSlot; + playerSlotId = packet.ContainerItemSlot; + toChar = packet.ToSlot; + splitedAmount = packet.StackCount; } // Player <-> Bank @@ -494,84 +330,50 @@ void WorldSession::HandleGuildBankSwapItems(WorldPacket& recvData) if (!Player::IsInventoryPos(playerBag, playerSlotId) && !(playerBag == NULL_BAG && playerSlotId == NULL_SLOT)) GetPlayer()->SendEquipError(EQUIP_ERR_NONE, nullptr); else - guild->SwapItemsWithInventory(GetPlayer(), toChar != 0, tabId, slotId, playerBag, playerSlotId, splitedAmount); + guild->SwapItemsWithInventory(GetPlayer(), toChar != 0, packet.BankTab, packet.BankSlot, playerBag, playerSlotId, splitedAmount); } } -void WorldSession::HandleGuildBankBuyTab(WorldPacket& recvData) +void WorldSession::HandleGuildBankBuyTab(WorldPackets::Guild::GuildBankBuyTab& packet) { - ObjectGuid guid; - uint8 tabId; + TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_BUY_TAB [%s]: [%s[, TabId: %u", GetPlayerInfo().c_str(), packet.Banker .ToString().c_str(), packet.BankTab); - recvData >> guid >> tabId; - - TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_BUY_TAB [%s]: [%s[, TabId: %u", GetPlayerInfo().c_str(), guid.ToString().c_str(), tabId); - - - if (GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK)) + if (GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleBuyBankTab(this, tabId); + guild->HandleBuyBankTab(this, packet.BankTab); } -void WorldSession::HandleGuildBankUpdateTab(WorldPacket& recvData) +void WorldSession::HandleGuildBankUpdateTab(WorldPackets::Guild::GuildBankUpdateTab& packet) { - ObjectGuid guid; - uint8 tabId; - std::string name, icon; - - recvData >> guid >> tabId >> name >> icon; - - if (!DisallowHyperlinksAndMaybeKick(name)) - return; - - if ((name.size() > 16) || (icon.size() > 128)) - return; - TC_LOG_DEBUG("guild", "CMSG_GUILD_BANK_UPDATE_TAB [%s]: [%s], TabId: %u, Name: %s, Icon: %s" - , GetPlayerInfo().c_str(), guid.ToString().c_str(), tabId, name.c_str(), icon.c_str()); + , GetPlayerInfo().c_str(), packet.Banker.ToString().c_str(), packet.BankTab, packet.Name.c_str(), packet.Icon.c_str()); - if (!name.empty() && !icon.empty()) - if (GetPlayer()->GetGameObjectIfCanInteractWith(guid, GAMEOBJECT_TYPE_GUILD_BANK)) + if (!packet.Name.empty() && !packet.Icon.empty()) + if (GetPlayer()->GetGameObjectIfCanInteractWith(packet.Banker, GAMEOBJECT_TYPE_GUILD_BANK)) if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleSetBankTabInfo(this, tabId, name, icon); + guild->HandleSetBankTabInfo(this, packet.BankTab, packet.Name, packet.Icon); } -void WorldSession::HandleGuildBankLogQuery(WorldPacket& recvData) +void WorldSession::HandleGuildBankLogQuery(WorldPackets::Guild::GuildBankLogQuery& packet) { - uint8 tabId; - recvData >> tabId; - - TC_LOG_DEBUG("guild", "MSG_GUILD_BANK_LOG_QUERY [%s]: TabId: %u", GetPlayerInfo().c_str(), tabId); + TC_LOG_DEBUG("guild", "MSG_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 &recvData) +void WorldSession::HandleQueryGuildBankTabText(WorldPackets::Guild::GuildBankTextQuery& packet) { - uint8 tabId; - recvData >> tabId; - - TC_LOG_DEBUG("guild", "MSG_QUERY_GUILD_BANK_TEXT [%s]: TabId: %u", GetPlayerInfo().c_str(), tabId); + TC_LOG_DEBUG("guild", "MSG_QUERY_GUILD_BANK_TEXT [%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 &recvData) +void WorldSession::HandleSetGuildBankTabText(WorldPackets::Guild::GuildBankSetTabText& packet) { - uint8 tabId; - std::string text; - recvData >> tabId >> text; - - if (!DisallowHyperlinksAndMaybeKick(text)) - return; - - if (text.size() > 500) - return; - - 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); } |