/* * Copyright (C) 2005-2008 MaNGOS * * Copyright (C) 2008 Trinity * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /// \addtogroup u2w /// @{ /// \file #ifndef __WORLDSESSION_H #define __WORLDSESSION_H #include "Common.h" class MailItemsInfo; struct ItemPrototype; struct AuctionEntry; struct DeclinedName; struct MovementInfo; class Creature; class Item; class Object; class Player; class Unit; class WorldPacket; class WorldSocket; class WorldSession; class QueryResult; class LoginQueryHolder; class CharacterHandler; #define CHECK_PACKET_SIZE(P,S) if((P).size() < (S)) return SizeError((P),(S)); enum PartyOperation { PARTY_OP_INVITE = 0, PARTY_OP_LEAVE = 2 }; enum PartyResult { PARTY_RESULT_OK = 0, PARTY_RESULT_CANT_FIND_TARGET = 1, PARTY_RESULT_NOT_IN_YOUR_PARTY = 2, PARTY_RESULT_NOT_IN_YOUR_INSTANCE = 3, PARTY_RESULT_PARTY_FULL = 4, PARTY_RESULT_ALREADY_IN_GROUP = 5, PARTY_RESULT_YOU_NOT_IN_GROUP = 6, PARTY_RESULT_YOU_NOT_LEADER = 7, PARTY_RESULT_TARGET_UNFRIENDLY = 8, PARTY_RESULT_TARGET_IGNORE_YOU = 9, PARTY_RESULT_INVITE_RESTRICTED = 13 }; /// Player session in the World class TRINITY_DLL_SPEC WorldSession { friend class CharacterHandler; public: WorldSession(uint32 id, WorldSocket *sock, uint32 sec, uint8 expansion, time_t mute_time, LocaleConstant locale); ~WorldSession(); bool PlayerLoading() const { return m_playerLoading; } bool PlayerLogout() const { return m_playerLogout; } void SizeError(WorldPacket const& packet, uint32 size) const; void SendPacket(WorldPacket const* packet); void SendNotification(const char *format,...) ATTR_PRINTF(2,3); void SendNotification(int32 string_id,...); void SendPetNameInvalid(uint32 error, std::string name, DeclinedName *declinedName); void SendLfgResult(uint32 type, uint32 entry, uint8 lfg_type); void SendPartyResult(PartyOperation operation, std::string member, PartyResult res); void SendAreaTriggerMessage(const char* Text, ...) ATTR_PRINTF(2,3); uint32 GetSecurity() const { return _security; } uint32 GetAccountId() const { return _accountId; } Player* GetPlayer() const { return _player; } char const* GetPlayerName() const; void SetSecurity(uint32 security) { _security = security; } std::string& GetRemoteAddress() { return m_Address; } void SetPlayer(Player *plr) { _player = plr; } uint8 Expansion() const { return m_expansion; } /// Is the user engaged in a log out process? bool isLogingOut() const { return _logoutTime || m_playerLogout; } /// Engage the logout process for the user void LogoutRequest(time_t requestTime) { _logoutTime = requestTime; } /// Is logout cooldown expired? bool ShouldLogOut(time_t currTime) const { return (_logoutTime > 0 && currTime >= _logoutTime + 20); } void LogoutPlayer(bool Save); void KickPlayer(); void QueuePacket(WorldPacket* new_packet); bool Update(uint32 diff); /// Handle the authentication waiting queue (to be completed) void SendAuthWaitQue(uint32 position); //void SendTestCreatureQueryOpcode( uint32 entry, uint64 guid, uint32 testvalue ); void SendNameQueryOpcode(Player* p); void SendNameQueryOpcodeFromDB(uint64 guid); static void SendNameQueryOpcodeFromDBCallBack(QueryResult *result, uint32 accountId); void SendTrainerList( uint64 guid ); void SendTrainerList( uint64 guid,std::string strTitle ); void SendListInventory( uint64 guid ); void SendShowBank( uint64 guid ); void SendTabardVendorActivate( uint64 guid ); void SendSpiritResurrect(); void SendBindPoint(Creature* npc); void SendGMTicketGetTicket(uint32 status, char const* text); void SendAttackStop(Unit const* enemy); void SendBattlegGroundList( uint64 guid, uint32 bgTypeId ); void SendTradeStatus(uint32 status); void SendCancelTrade(); void SendStablePet(uint64 guid ); void SendPetitionQueryOpcode( uint64 petitionguid); void SendUpdateTrade(); //pet void SendPetNameQuery(uint64 guid, uint32 petnumber); //mail //used with item_page table bool SendItemInfo( uint32 itemid, WorldPacket data ); static void SendReturnToSender(uint8 messageType, uint32 sender_acc, uint32 sender_guid, uint32 receiver_guid, std::string subject, uint32 itemTextId, MailItemsInfo *mi, uint32 money, uint32 COD, uint16 mailTemplateId = 0); static void SendMailTo(Player* receiver, uint8 messageType, uint8 stationery, uint32 sender_guidlow_or_entry, uint32 received_guidlow, std::string subject, uint32 itemTextId, MailItemsInfo* mi, uint32 money, uint32 COD, uint32 checked, uint32 deliver_delay = 0, uint16 mailTemplateId = 0); //auction void SendAuctionHello( uint64 guid, Creature * unit ); void SendAuctionCommandResult( uint32 auctionId, uint32 Action, uint32 ErrorCode, uint32 bidError = 0); void SendAuctionBidderNotification( uint32 location, uint32 auctionId, uint64 bidder, uint32 bidSum, uint32 diff, uint32 item_template); void SendAuctionOwnerNotification( AuctionEntry * auction ); bool SendAuctionInfo(WorldPacket & data, AuctionEntry* auction); void SendAuctionOutbiddedMail( AuctionEntry * auction, uint32 newPrice ); void SendAuctionCancelledToBidderMail( AuctionEntry* auction ); //Item Enchantment void SendEnchantmentLog(uint64 Target, uint64 Caster,uint32 ItemID,uint32 SpellID); void SendItemEnchantTimeUpdate(uint64 Playerguid, uint64 Itemguid,uint32 slot,uint32 Duration); //Taxi void SendTaxiStatus( uint64 guid ); void SendTaxiMenu( Creature* unit ); void SendDoFlight( uint16 MountId, uint32 path, uint32 pathNode = 0 ); bool SendLearnNewTaxiNode( Creature* unit ); // Guild/Arena Team void SendGuildCommandResult(uint32 typecmd,std::string str,uint32 cmdresult); void SendArenaTeamCommandResult(uint32 unk1, std::string str1, std::string str2, uint32 unk3); void BuildArenaTeamEventPacket(WorldPacket *data, uint8 eventid, uint8 str_count, std::string str1, std::string str2, std::string str3); void SendNotInArenaTeamPacket(uint8 type); void SendPetitionShowList( uint64 guid ); void SendSaveGuildEmblem( uint32 msg ); // Looking For Group // TRUE values set by client sending CMSG_LFG_SET_AUTOJOIN and CMSG_LFM_CLEAR_AUTOFILL before player login bool LookingForGroup_auto_join; bool LookingForGroup_auto_add; void BuildPartyMemberStatsChangedPacket(Player *player, WorldPacket *data); void DoLootRelease( uint64 lguid ); // Account mute time time_t m_muteTime; // Locales LocaleConstant GetSessionDbcLocale() const { return m_sessionDbcLocale; } int GetSessionDbLocaleIndex() const { return m_sessionDbLocaleIndex; } const char *GetTrinityString(int32 entry) const; uint32 GetLatency() const { return m_latency; } void SetLatency(uint32 latency) { m_latency = latency; } uint32 getDialogStatus(Player *pPlayer, Object* questgiver, uint32 defstatus); public: // opcodes handlers void Handle_NULL(WorldPacket& recvPacket); // not used void Handle_EarlyProccess( WorldPacket& recvPacket);// just mark packets processed in WorldSocket::OnRead void Handle_ServerSide(WorldPacket& recvPacket); // sever side only, can't be accepted from client void Handle_Depricated(WorldPacket& recvPacket); // never used anymore by client void HandleCharEnumOpcode(WorldPacket& recvPacket); void HandleCharDeleteOpcode(WorldPacket& recvPacket); void HandleCharCreateOpcode(WorldPacket& recvPacket); void HandlePlayerLoginOpcode(WorldPacket& recvPacket); void HandleCharEnum(QueryResult * result); void HandlePlayerLogin(LoginQueryHolder * holder); // played time void HandlePlayedTime(WorldPacket& recvPacket); // new void HandleMoveUnRootAck(WorldPacket& recvPacket); void HandleMoveRootAck(WorldPacket& recvPacket); void HandleLookingForGroup(WorldPacket& recvPacket); // new inspect void HandleInspectOpcode(WorldPacket& recvPacket); // new party stats void HandleInspectHonorStatsOpcode(WorldPacket& recvPacket); void HandleMoveWaterWalkAck(WorldPacket& recvPacket); void HandleFeatherFallAck(WorldPacket &recv_data); void HandleMoveHoverAck( WorldPacket & recv_data ); void HandleMountSpecialAnimOpcode(WorldPacket &recvdata); // character view void HandleToggleHelmOpcode(WorldPacket& recv_data); void HandleToggleCloakOpcode(WorldPacket& recv_data); // repair void HandleRepairItemOpcode(WorldPacket& recvPacket); // Knockback void HandleMoveKnockBackAck(WorldPacket& recvPacket); void HandleMoveTeleportAck(WorldPacket& recvPacket); void HandleForceSpeedChangeAck( WorldPacket & recv_data ); void HandlePingOpcode(WorldPacket& recvPacket); void HandleAuthSessionOpcode(WorldPacket& recvPacket); void HandleRepopRequestOpcode(WorldPacket& recvPacket); void HandleAutostoreLootItemOpcode(WorldPacket& recvPacket); void HandleLootMoneyOpcode(WorldPacket& recvPacket); void HandleLootOpcode(WorldPacket& recvPacket); void HandleLootReleaseOpcode(WorldPacket& recvPacket); void HandleLootMasterGiveOpcode(WorldPacket& recvPacket); void HandleWhoOpcode(WorldPacket& recvPacket); void HandleLogoutRequestOpcode(WorldPacket& recvPacket); void HandlePlayerLogoutOpcode(WorldPacket& recvPacket); void HandleLogoutCancelOpcode(WorldPacket& recvPacket); void HandleGMTicketGetTicketOpcode(WorldPacket& recvPacket); void HandleGMTicketCreateOpcode(WorldPacket& recvPacket); void HandleGMTicketSystemStatusOpcode(WorldPacket& recvPacket); void HandleGMTicketDeleteOpcode(WorldPacket& recvPacket); void HandleGMTicketUpdateTextOpcode(WorldPacket& recvPacket); void HandleGMSurveySubmit(WorldPacket& recvPacket); void HandleTogglePvP(WorldPacket& recvPacket); void HandleZoneUpdateOpcode(WorldPacket& recvPacket); void HandleSetTargetOpcode(WorldPacket& recvPacket); void HandleSetSelectionOpcode(WorldPacket& recvPacket); void HandleStandStateChangeOpcode(WorldPacket& recvPacket); void HandleEmoteOpcode(WorldPacket& recvPacket); void HandleFriendListOpcode(WorldPacket& recvPacket); void HandleAddFriendOpcode(WorldPacket& recvPacket); static void HandleAddFriendOpcodeCallBack(QueryResult *result, uint32 accountId, std::string friendNote); void HandleDelFriendOpcode(WorldPacket& recvPacket); void HandleAddIgnoreOpcode(WorldPacket& recvPacket); static void HandleAddIgnoreOpcodeCallBack(QueryResult *result, uint32 accountId); void HandleDelIgnoreOpcode(WorldPacket& recvPacket); void HandleSetFriendNoteOpcode(WorldPacket& recvPacket); void HandleBugOpcode(WorldPacket& recvPacket); void HandleSetAmmoOpcode(WorldPacket& recvPacket); void HandleItemNameQueryOpcode(WorldPacket& recvPacket); void HandleAreaTriggerOpcode(WorldPacket& recvPacket); void HandleSetFactionAtWar( WorldPacket & recv_data ); void HandleSetFactionCheat( WorldPacket & recv_data ); void HandleSetWatchedFactionIndexOpcode(WorldPacket & recv_data); void HandleSetWatchedFactionInactiveOpcode(WorldPacket & recv_data); void HandleUpdateAccountData(WorldPacket& recvPacket); void HandleRequestAccountData(WorldPacket& recvPacket); void HandleSetActionButtonOpcode(WorldPacket& recvPacket); void HandleGameObjectUseOpcode(WorldPacket& recPacket); void HandleMeetingStoneInfo(WorldPacket& recPacket); void HandleNameQueryOpcode(WorldPacket& recvPacket); void HandleQueryTimeOpcode(WorldPacket& recvPacket); void HandleCreatureQueryOpcode(WorldPacket& recvPacket); void HandleGameObjectQueryOpcode(WorldPacket& recvPacket); void HandleMoveWorldportAckOpcode(WorldPacket& recvPacket); void HandleMoveWorldportAckOpcode(); // for server-side calls void HandleMovementOpcodes(WorldPacket& recvPacket); void HandlePossessedMovement(WorldPacket& recv_data, MovementInfo& movementInfo, uint32& MovementFlags); void HandleSetActiveMoverOpcode(WorldPacket &recv_data); void HandleNotActiveMoverOpcode(WorldPacket &recv_data); void HandleMoveTimeSkippedOpcode(WorldPacket &recv_data); void HandleRequestRaidInfoOpcode( WorldPacket & recv_data ); void HandleBattlefieldStatusOpcode(WorldPacket &recv_data); void HandleBattleMasterHelloOpcode(WorldPacket &recv_data); void HandleGroupInviteOpcode(WorldPacket& recvPacket); //void HandleGroupCancelOpcode(WorldPacket& recvPacket); void HandleGroupAcceptOpcode(WorldPacket& recvPacket); void HandleGroupDeclineOpcode(WorldPacket& recvPacket); void HandleGroupUninviteNameOpcode(WorldPacket& recvPacket); void HandleGroupUninviteGuidOpcode(WorldPacket& recvPacket); void HandleGroupUninvite(uint64 guid, std::string name); void HandleGroupSetLeaderOpcode(WorldPacket& recvPacket); void HandleGroupLeaveOpcode(WorldPacket& recvPacket); void HandleGroupPassOnLootOpcode( WorldPacket &recv_data ); void HandleLootMethodOpcode(WorldPacket& recvPacket); void HandleLootRoll( WorldPacket &recv_data ); void HandleRequestPartyMemberStatsOpcode( WorldPacket &recv_data ); void HandleRaidIconTargetOpcode( WorldPacket & recv_data ); void HandleRaidReadyCheckOpcode( WorldPacket & recv_data ); void HandleRaidReadyCheckFinishOpcode( WorldPacket & recv_data ); void HandleRaidConvertOpcode( WorldPacket & recv_data ); void HandleGroupChangeSubGroupOpcode( WorldPacket & recv_data ); void HandleGroupAssistantOpcode( WorldPacket & recv_data ); void HandleGroupPromoteOpcode( WorldPacket & recv_data ); void HandlePetitionBuyOpcode(WorldPacket& recv_data); void HandlePetitionShowSignOpcode(WorldPacket& recv_data); void HandlePetitionQueryOpcode(WorldPacket& recv_data); void HandlePetitionRenameOpcode(WorldPacket& recv_data); void HandlePetitionSignOpcode(WorldPacket& recv_data); void HandlePetitionDeclineOpcode(WorldPacket& recv_data); void HandleOfferPetitionOpcode(WorldPacket& recv_data); void HandleTurnInPetitionOpcode(WorldPacket& recv_data); void HandleGuildQueryOpcode(WorldPacket& recvPacket); void HandleGuildCreateOpcode(WorldPacket& recvPacket); void HandleGuildInviteOpcode(WorldPacket& recvPacket); void HandleGuildRemoveOpcode(WorldPacket& recvPacket); void HandleGuildAcceptOpcode(WorldPacket& recvPacket); void HandleGuildDeclineOpcode(WorldPacket& recvPacket); void HandleGuildInfoOpcode(WorldPacket& recvPacket); void HandleGuildEventLogOpcode(WorldPacket& recvPacket); void HandleGuildRosterOpcode(WorldPacket& recvPacket); void HandleGuildPromoteOpcode(WorldPacket& recvPacket); void HandleGuildDemoteOpcode(WorldPacket& recvPacket); void HandleGuildLeaveOpcode(WorldPacket& recvPacket); void HandleGuildDisbandOpcode(WorldPacket& recvPacket); void HandleGuildLeaderOpcode(WorldPacket& recvPacket); void HandleGuildMOTDOpcode(WorldPacket& recvPacket); void HandleGuildSetPublicNoteOpcode(WorldPacket& recvPacket); void HandleGuildSetOfficerNoteOpcode(WorldPacket& recvPacket); void HandleGuildRankOpcode(WorldPacket& recvPacket); void HandleGuildAddRankOpcode(WorldPacket& recvPacket); void HandleGuildDelRankOpcode(WorldPacket& recvPacket); void HandleGuildChangeInfoOpcode(WorldPacket& recvPacket); void HandleGuildSaveEmblemOpcode(WorldPacket& recvPacket); void HandleTaxiNodeStatusQueryOpcode(WorldPacket& recvPacket); void HandleTaxiQueryAvailableNodesOpcode(WorldPacket& recvPacket); void HandleActivateTaxiOpcode(WorldPacket& recvPacket); void HandleActivateTaxiFarOpcode(WorldPacket& recvPacket); void HandleTaxiNextDestinationOpcode(WorldPacket& recvPacket); void HandleTabardVendorActivateOpcode(WorldPacket& recvPacket); void HandleBankerActivateOpcode(WorldPacket& recvPacket); void HandleBuyBankSlotOpcode(WorldPacket& recvPacket); void HandleTrainerListOpcode(WorldPacket& recvPacket); void HandleTrainerBuySpellOpcode(WorldPacket& recvPacket); void HandlePetitionShowListOpcode(WorldPacket& recvPacket); void HandleGossipHelloOpcode(WorldPacket& recvPacket); void HandleGossipSelectOptionOpcode(WorldPacket& recvPacket); void HandleSpiritHealerActivateOpcode(WorldPacket& recvPacket); void HandleNpcTextQueryOpcode(WorldPacket& recvPacket); void HandleBinderActivateOpcode(WorldPacket& recvPacket); void HandleListStabledPetsOpcode(WorldPacket& recvPacket); void HandleStablePet(WorldPacket& recvPacket); void HandleUnstablePet(WorldPacket& recvPacket); void HandleBuyStableSlot(WorldPacket& recvPacket); void HandleStableRevivePet(WorldPacket& recvPacket); void HandleStableSwapPet(WorldPacket& recvPacket); void HandleDuelAcceptedOpcode(WorldPacket& recvPacket); void HandleDuelCancelledOpcode(WorldPacket& recvPacket); void HandleAcceptTradeOpcode(WorldPacket& recvPacket); void HandleBeginTradeOpcode(WorldPacket& recvPacket); void HandleBusyTradeOpcode(WorldPacket& recvPacket); void HandleCancelTradeOpcode(WorldPacket& recvPacket); void HandleClearTradeItemOpcode(WorldPacket& recvPacket); void HandleIgnoreTradeOpcode(WorldPacket& recvPacket); void HandleInitiateTradeOpcode(WorldPacket& recvPacket); void HandleSetTradeGoldOpcode(WorldPacket& recvPacket); void HandleSetTradeItemOpcode(WorldPacket& recvPacket); void HandleUnacceptTradeOpcode(WorldPacket& recvPacket); void HandleAuctionHelloOpcode(WorldPacket& recvPacket); void HandleAuctionListItems( WorldPacket & recv_data ); void HandleAuctionListBidderItems( WorldPacket & recv_data ); void HandleAuctionSellItem( WorldPacket & recv_data ); void HandleAuctionRemoveItem( WorldPacket & recv_data ); void HandleAuctionListOwnerItems( WorldPacket & recv_data ); void HandleAuctionPlaceBid( WorldPacket & recv_data ); void HandleGetMail( WorldPacket & recv_data ); void HandleSendMail( WorldPacket & recv_data ); void HandleTakeMoney( WorldPacket & recv_data ); void HandleTakeItem( WorldPacket & recv_data ); void HandleMarkAsRead( WorldPacket & recv_data ); void HandleReturnToSender( WorldPacket & recv_data ); void HandleMailDelete( WorldPacket & recv_data ); void HandleItemTextQuery( WorldPacket & recv_data); void HandleMailCreateTextItem(WorldPacket & recv_data ); void HandleMsgQueryNextMailtime(WorldPacket & recv_data ); void HandleCancelChanneling(WorldPacket & recv_data ); void SendItemPageInfo( ItemPrototype *itemProto ); void HandleSplitItemOpcode(WorldPacket& recvPacket); void HandleSwapInvItemOpcode(WorldPacket& recvPacket); void HandleDestroyItemOpcode(WorldPacket& recvPacket); void HandleAutoEquipItemOpcode(WorldPacket& recvPacket); void HandleItemQuerySingleOpcode(WorldPacket& recvPacket); void HandleSellItemOpcode(WorldPacket& recvPacket); void HandleBuyItemInSlotOpcode(WorldPacket& recvPacket); void HandleBuyItemOpcode(WorldPacket& recvPacket); void HandleListInventoryOpcode(WorldPacket& recvPacket); void HandleAutoStoreBagItemOpcode(WorldPacket& recvPacket); void HandleReadItem(WorldPacket& recvPacket); void HandleAutoEquipItemSlotOpcode(WorldPacket & recvPacket); void HandleSwapItem( WorldPacket & recvPacket); void HandleBuybackItem(WorldPacket & recvPacket); void HandleAutoBankItemOpcode(WorldPacket& recvPacket); void HandleAutoStoreBankItemOpcode(WorldPacket& recvPacket); void HandleWrapItemOpcode(WorldPacket& recvPacket); void HandleAttackSwingOpcode(WorldPacket& recvPacket); void HandleAttackStopOpcode(WorldPacket& recvPacket); void HandleSetSheathedOpcode(WorldPacket& recvPacket); void HandleUseItemOpcode(WorldPacket& recvPacket); void HandleOpenItemOpcode(WorldPacket& recvPacket); void HandleCastSpellOpcode(WorldPacket& recvPacket); void HandleCancelCastOpcode(WorldPacket& recvPacket); void HandleCancelAuraOpcode(WorldPacket& recvPacket); void HandleCancelGrowthAuraOpcode(WorldPacket& recvPacket); void HandleCancelAutoRepeatSpellOpcode(WorldPacket& recvPacket); void HandleLearnTalentOpcode(WorldPacket& recvPacket); void HandleTalentWipeOpcode(WorldPacket& recvPacket); void HandleUnlearnSkillOpcode(WorldPacket& recvPacket); void HandleQuestgiverStatusQueryOpcode(WorldPacket& recvPacket); void HandleQuestgiverStatusQueryMultipleOpcode(WorldPacket& recvPacket); void HandleQuestgiverHelloOpcode(WorldPacket& recvPacket); void HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvPacket); void HandleQuestgiverQuestQueryOpcode(WorldPacket& recvPacket); void HandleQuestgiverChooseRewardOpcode(WorldPacket& recvPacket); void HandleQuestgiverRequestRewardOpcode(WorldPacket& recvPacket); void HandleQuestQueryOpcode(WorldPacket& recvPacket); void HandleQuestgiverCancel(WorldPacket& recv_data ); void HandleQuestLogSwapQuest(WorldPacket& recv_data ); void HandleQuestLogRemoveQuest(WorldPacket& recv_data); void HandleQuestConfirmAccept(WorldPacket& recv_data); void HandleQuestComplete(WorldPacket& recv_data); void HandleQuestAutoLaunch(WorldPacket& recvPacket); void HandleQuestPushToParty(WorldPacket& recvPacket); void HandleQuestPushResult(WorldPacket& recvPacket); void HandleMessagechatOpcode(WorldPacket& recvPacket); void HandleTextEmoteOpcode(WorldPacket& recvPacket); void HandleChatIgnoredOpcode(WorldPacket& recvPacket); void HandleCorpseReclaimOpcode( WorldPacket& recvPacket ); void HandleCorpseQueryOpcode( WorldPacket& recvPacket ); void HandleResurrectResponseOpcode(WorldPacket& recvPacket); void HandleSummonResponseOpcode(WorldPacket& recv_data); void HandleChannelJoin(WorldPacket& recvPacket); void HandleChannelLeave(WorldPacket& recvPacket); void HandleChannelList(WorldPacket& recvPacket); void HandleChannelPassword(WorldPacket& recvPacket); void HandleChannelSetOwner(WorldPacket& recvPacket); void HandleChannelOwner(WorldPacket& recvPacket); void HandleChannelModerator(WorldPacket& recvPacket); void HandleChannelUnmoderator(WorldPacket& recvPacket); void HandleChannelMute(WorldPacket& recvPacket); void HandleChannelUnmute(WorldPacket& recvPacket); void HandleChannelInvite(WorldPacket& recvPacket); void HandleChannelKick(WorldPacket& recvPacket); void HandleChannelBan(WorldPacket& recvPacket); void HandleChannelUnban(WorldPacket& recvPacket); void HandleChannelAnnounce(WorldPacket& recvPacket); void HandleChannelModerate(WorldPacket& recvPacket); void HandleChannelRosterQuery(WorldPacket& recvPacket); void HandleChannelInfoQuery(WorldPacket& recvPacket); void HandleChannelJoinNotify(WorldPacket& recvPacket); void HandleCompleteCinema(WorldPacket& recvPacket); void HandleNextCinematicCamera(WorldPacket& recvPacket); void HandlePageQuerySkippedOpcode(WorldPacket& recvPacket); void HandlePageQueryOpcode(WorldPacket& recvPacket); void HandleTutorialFlag ( WorldPacket & recv_data ); void HandleTutorialClear( WorldPacket & recv_data ); void HandleTutorialReset( WorldPacket & recv_data ); //Pet void HandlePetAction( WorldPacket & recv_data ); void HandlePetNameQuery( WorldPacket & recv_data ); void HandlePetSetAction( WorldPacket & recv_data ); void HandlePetAbandon( WorldPacket & recv_data ); void HandlePetRename( WorldPacket & recv_data ); void HandlePetCancelAuraOpcode( WorldPacket& recvPacket ); void HandlePetUnlearnOpcode( WorldPacket& recvPacket ); void HandlePetSpellAutocastOpcode( WorldPacket& recvPacket ); void HandlePetCastSpellOpcode( WorldPacket& recvPacket ); void HandleSetActionBar(WorldPacket& recv_data); void HandleChangePlayerNameOpcode(WorldPacket& recv_data); void HandleDeclinedPlayerNameOpcode(WorldPacket& recv_data); void HandleTotemDestroy(WorldPacket& recv_data); //BattleGround void HandleBattleGroundHelloOpcode(WorldPacket &recv_data); void HandleBattleGroundJoinOpcode(WorldPacket &recv_data); void HandleBattleGroundPlayerPositionsOpcode(WorldPacket& recv_data); void HandleBattleGroundPVPlogdataOpcode( WorldPacket &recv_data ); void HandleBattleGroundPlayerPortOpcode( WorldPacket &recv_data ); void HandleBattleGroundListOpcode( WorldPacket &recv_data ); void HandleBattleGroundLeaveOpcode( WorldPacket &recv_data ); void HandleBattleGroundArenaJoin( WorldPacket &recv_data ); void HandleBattleGroundReportAFK( WorldPacket &recv_data ); void HandleWardenDataOpcode(WorldPacket& recv_data); void HandleWorldTeleportOpcode(WorldPacket& recv_data); void HandleMinimapPingOpcode(WorldPacket& recv_data); void HandleRandomRollOpcode(WorldPacket& recv_data); void HandleFarSightOpcode(WorldPacket& recv_data); void HandleSetLfgOpcode(WorldPacket& recv_data); void HandleDungeonDifficultyOpcode(WorldPacket& recv_data); void HandleMoveFlyModeChangeAckOpcode(WorldPacket& recv_data); void HandleLfgAutoJoinOpcode(WorldPacket& recv_data); void HandleLfgCancelAutoJoinOpcode(WorldPacket& recv_data); void HandleLfmAutoAddMembersOpcode(WorldPacket& recv_data); void HandleLfmCancelAutoAddmembersOpcode(WorldPacket& recv_data); void HandleLfgClearOpcode(WorldPacket& recv_data); void HandleLfmSetNoneOpcode(WorldPacket& recv_data); void HandleLfmSetOpcode(WorldPacket& recv_data); void HandleLfgSetCommentOpcode(WorldPacket& recv_data); void HandleNewUnknownOpcode(WorldPacket& recv_data); void HandleChooseTitleOpcode(WorldPacket& recv_data); void HandleRealmStateRequestOpcode(WorldPacket& recv_data); void HandleAllowMoveAckOpcode(WorldPacket& recv_data); void HandleWhoisOpcode(WorldPacket& recv_data); void HandleResetInstancesOpcode(WorldPacket& recv_data); // Arena Team void HandleInspectArenaStatsOpcode(WorldPacket& recv_data); void HandleArenaTeamQueryOpcode(WorldPacket& recv_data); void HandleArenaTeamRosterOpcode(WorldPacket& recv_data); void HandleArenaTeamAddMemberOpcode(WorldPacket& recv_data); void HandleArenaTeamInviteAcceptOpcode(WorldPacket& recv_data); void HandleArenaTeamInviteDeclineOpcode(WorldPacket& recv_data); void HandleArenaTeamLeaveOpcode(WorldPacket& recv_data); void HandleArenaTeamRemoveFromTeamOpcode(WorldPacket& recv_data); void HandleArenaTeamDisbandOpcode(WorldPacket& recv_data); void HandleArenaTeamPromoteToCaptainOpcode(WorldPacket& recv_data); void HandleAreaSpiritHealerQueryOpcode(WorldPacket& recv_data); void HandleAreaSpiritHealerQueueOpcode(WorldPacket& recv_data); void HandleDismountOpcode(WorldPacket& recv_data); void HandleSelfResOpcode(WorldPacket& recv_data); void HandleReportSpamOpcode(WorldPacket& recv_data); void HandleRequestPetInfoOpcode(WorldPacket& recv_data); // Socket gem void HandleSocketOpcode(WorldPacket& recv_data); void HandleCancelTempItemEnchantmentOpcode(WorldPacket& recv_data); void HandleChannelEnableVoiceOpcode(WorldPacket & recv_data); void HandleVoiceSettingsOpcode(WorldPacket& recv_data); void HandleChannelVoiceChatQuery(WorldPacket& recv_data); void HandleSetTaxiBenchmarkOpcode(WorldPacket& recv_data); // Guild Bank void HandleGuildBankGetRights(WorldPacket& recv_data); void HandleGuildBankGetMoneyAmount(WorldPacket& recv_data); void HandleGuildBankQuery(WorldPacket& recv_data); void HandleGuildBankTabColon(WorldPacket& recv_data); void HandleGuildBankLog(WorldPacket& recv_data); void HandleGuildBankDeposit(WorldPacket& recv_data); void HandleGuildBankWithdraw(WorldPacket& recv_data); void HandleGuildBankDepositItem(WorldPacket& recv_data); void HandleGuildBankModifyTab(WorldPacket& recv_data); void HandleGuildBankBuyTab(WorldPacket& recv_data); void HandleGuildBankTabText(WorldPacket& recv_data); void HandleGuildBankSetTabText(WorldPacket& recv_data); private: // private trade methods void moveItems(Item* myItems[], Item* hisItems[]); // logging helper void logUnexpectedOpcode(WorldPacket *packet, const char * reason); Player *_player; WorldSocket *m_Socket; std::string m_Address; uint32 _security; uint32 _accountId; uint8 m_expansion; time_t _logoutTime; bool m_playerLoading; // code processed in LoginPlayer bool m_playerLogout; // code processed in LogoutPlayer bool m_playerRecentlyLogout; LocaleConstant m_sessionDbcLocale; int m_sessionDbLocaleIndex; uint32 m_latency; ZThread::LockedQueue _recvQueue; }; #endif /// @}