2 * Copyright (C) 2005-2008 MaNGOS <http://getmangos.com/>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #ifndef __WORLDSESSION_H
24 #define __WORLDSESSION_H
42 class LoginQueryHolder
;
43 class CharacterHandler
;
45 #define CHECK_PACKET_SIZE(P,S) if((P).size() < (S)) return SizeError((P),(S));
56 PARTY_RESULT_CANT_FIND_TARGET
= 1,
57 PARTY_RESULT_NOT_IN_YOUR_PARTY
= 2,
58 PARTY_RESULT_NOT_IN_YOUR_INSTANCE
= 3,
59 PARTY_RESULT_PARTY_FULL
= 4,
60 PARTY_RESULT_ALREADY_IN_GROUP
= 5,
61 PARTY_RESULT_YOU_NOT_IN_GROUP
= 6,
62 PARTY_RESULT_YOU_NOT_LEADER
= 7,
63 PARTY_RESULT_TARGET_UNFRIENDLY
= 8,
64 PARTY_RESULT_TARGET_IGNORE_YOU
= 9,
65 PARTY_RESULT_INVITE_RESTRICTED
= 13
68 /// Player session in the World
69 class MANGOS_DLL_SPEC WorldSession
71 friend class CharacterHandler
;
73 WorldSession(uint32 id
, WorldSocket
*sock
, uint32 sec
, uint8 expansion
, time_t mute_time
, LocaleConstant locale
);
76 bool PlayerLoading() const { return m_playerLoading
; }
77 bool PlayerLogout() const { return m_playerLogout
; }
79 void SizeError(WorldPacket
const& packet
, uint32 size
) const;
81 void SendPacket(WorldPacket
const* packet
);
82 void SendNotification(const char *format
,...) ATTR_PRINTF(2,3);
83 void SendNotification(int32 string_id
,...);
84 void SendPetNameInvalid(uint32 error
, std::string name
, DeclinedName
*declinedName
);
85 void SendLfgResult(uint32 type
, uint32 entry
, uint8 lfg_type
);
86 void SendPartyResult(PartyOperation operation
, std::string member
, PartyResult res
);
87 void SendAreaTriggerMessage(const char* Text
, ...) ATTR_PRINTF(2,3);
89 uint32
GetSecurity() const { return _security
; }
90 uint32
GetAccountId() const { return _accountId
; }
91 Player
* GetPlayer() const { return _player
; }
92 char const* GetPlayerName() const;
93 void SetSecurity(uint32 security
) { _security
= security
; }
94 std::string
& GetRemoteAddress() { return m_Address
; }
95 void SetPlayer(Player
*plr
) { _player
= plr
; }
96 uint8
Expansion() const { return m_expansion
; }
98 /// Session in auth.queue currently
99 void SetInQueue(bool state
) { m_inQueue
= state
; }
101 /// Is the user engaged in a log out process?
102 bool isLogingOut() const { return _logoutTime
|| m_playerLogout
; }
104 /// Engage the logout process for the user
105 void LogoutRequest(time_t requestTime
)
107 _logoutTime
= requestTime
;
110 /// Is logout cooldown expired?
111 bool ShouldLogOut(time_t currTime
) const
113 return (_logoutTime
> 0 && currTime
>= _logoutTime
+ 20);
116 void LogoutPlayer(bool Save
);
119 void QueuePacket(WorldPacket
* new_packet
);
120 bool Update(uint32 diff
);
122 /// Handle the authentication waiting queue (to be completed)
123 void SendAuthWaitQue(uint32 position
);
125 //void SendTestCreatureQueryOpcode( uint32 entry, uint64 guid, uint32 testvalue );
126 void SendNameQueryOpcode(Player
* p
);
127 void SendNameQueryOpcodeFromDB(uint64 guid
);
128 static void SendNameQueryOpcodeFromDBCallBack(QueryResult
*result
, uint32 accountId
);
130 void SendTrainerList( uint64 guid
);
131 void SendTrainerList( uint64 guid
,std::string strTitle
);
132 void SendListInventory( uint64 guid
);
133 void SendShowBank( uint64 guid
);
134 void SendTabardVendorActivate( uint64 guid
);
135 void SendSpiritResurrect();
136 void SendBindPoint(Creature
* npc
);
137 void SendGMTicketGetTicket(uint32 status
, char const* text
);
139 void SendAttackStop(Unit
const* enemy
);
141 void SendBattlegGroundList( uint64 guid
, uint32 bgTypeId
);
143 void SendTradeStatus(uint32 status
);
144 void SendCancelTrade();
146 void SendStablePet(uint64 guid
);
147 void SendPetitionQueryOpcode( uint64 petitionguid
);
148 void SendUpdateTrade();
151 void SendPetNameQuery(uint64 guid
, uint32 petnumber
);
154 //used with item_page table
155 bool SendItemInfo( uint32 itemid
, WorldPacket data
);
156 static void SendReturnToSender(uint8 messageType
, uint32 sender_acc
, uint32 sender_guid
, uint32 receiver_guid
, std::string subject
, uint32 itemTextId
, MailItemsInfo
*mi
, uint32 money
, uint16 mailTemplateId
= 0);
157 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);
160 void SendAuctionHello( uint64 guid
, Creature
* unit
);
161 void SendAuctionCommandResult( uint32 auctionId
, uint32 Action
, uint32 ErrorCode
, uint32 bidError
= 0);
162 void SendAuctionBidderNotification( uint32 location
, uint32 auctionId
, uint64 bidder
, uint32 bidSum
, uint32 diff
, uint32 item_template
);
163 void SendAuctionOwnerNotification( AuctionEntry
* auction
);
164 bool SendAuctionInfo(WorldPacket
& data
, AuctionEntry
* auction
);
165 void SendAuctionOutbiddedMail( AuctionEntry
* auction
, uint32 newPrice
);
166 void SendAuctionCancelledToBidderMail( AuctionEntry
* auction
);
169 void SendEnchantmentLog(uint64 Target
, uint64 Caster
,uint32 ItemID
,uint32 SpellID
);
170 void SendItemEnchantTimeUpdate(uint64 Playerguid
, uint64 Itemguid
,uint32 slot
,uint32 Duration
);
173 void SendTaxiStatus( uint64 guid
);
174 void SendTaxiMenu( Creature
* unit
);
175 void SendDoFlight( uint16 MountId
, uint32 path
, uint32 pathNode
= 0 );
176 bool SendLearnNewTaxiNode( Creature
* unit
);
179 void SendGuildCommandResult(uint32 typecmd
,std::string str
,uint32 cmdresult
);
180 void SendArenaTeamCommandResult(uint32 unk1
, std::string str1
, std::string str2
, uint32 unk3
);
181 void BuildArenaTeamEventPacket(WorldPacket
*data
, uint8 eventid
, uint8 str_count
, std::string str1
, std::string str2
, std::string str3
);
182 void SendNotInArenaTeamPacket(uint8 type
);
183 void SendPetitionShowList( uint64 guid
);
184 void SendSaveGuildEmblem( uint32 msg
);
187 // TRUE values set by client sending CMSG_LFG_SET_AUTOJOIN and CMSG_LFM_CLEAR_AUTOFILL before player login
188 bool LookingForGroup_auto_join
;
189 bool LookingForGroup_auto_add
;
191 void BuildPartyMemberStatsChangedPacket(Player
*player
, WorldPacket
*data
);
193 void DoLootRelease( uint64 lguid
);
199 LocaleConstant
GetSessionDbcLocale() const { return m_sessionDbcLocale
; }
200 int GetSessionDbLocaleIndex() const { return m_sessionDbLocaleIndex
; }
201 const char *GetMangosString(int32 entry
) const;
203 uint32
GetLatency() const { return m_latency
; }
204 void SetLatency(uint32 latency
) { m_latency
= latency
; }
205 uint32
getDialogStatus(Player
*pPlayer
, Object
* questgiver
, uint32 defstatus
);
207 public: // opcodes handlers
209 void Handle_NULL(WorldPacket
& recvPacket
); // not used
210 void Handle_EarlyProccess( WorldPacket
& recvPacket
);// just mark packets processed in WorldSocket::OnRead
211 void Handle_ServerSide(WorldPacket
& recvPacket
); // sever side only, can't be accepted from client
212 void Handle_Depricated(WorldPacket
& recvPacket
); // never used anymore by client
214 void HandleCharEnumOpcode(WorldPacket
& recvPacket
);
215 void HandleCharDeleteOpcode(WorldPacket
& recvPacket
);
216 void HandleCharCreateOpcode(WorldPacket
& recvPacket
);
217 void HandlePlayerLoginOpcode(WorldPacket
& recvPacket
);
218 void HandleCharEnum(QueryResult
* result
);
219 void HandlePlayerLogin(LoginQueryHolder
* holder
);
222 void HandlePlayedTime(WorldPacket
& recvPacket
);
225 void HandleMoveUnRootAck(WorldPacket
& recvPacket
);
226 void HandleMoveRootAck(WorldPacket
& recvPacket
);
227 void HandleLookingForGroup(WorldPacket
& recvPacket
);
230 void HandleInspectOpcode(WorldPacket
& recvPacket
);
233 void HandleInspectHonorStatsOpcode(WorldPacket
& recvPacket
);
235 void HandleMoveWaterWalkAck(WorldPacket
& recvPacket
);
236 void HandleFeatherFallAck(WorldPacket
&recv_data
);
238 void HandleMoveHoverAck( WorldPacket
& recv_data
);
240 void HandleMountSpecialAnimOpcode(WorldPacket
&recvdata
);
243 void HandleToggleHelmOpcode(WorldPacket
& recv_data
);
244 void HandleToggleCloakOpcode(WorldPacket
& recv_data
);
247 void HandleRepairItemOpcode(WorldPacket
& recvPacket
);
250 void HandleMoveKnockBackAck(WorldPacket
& recvPacket
);
252 void HandleMoveTeleportAck(WorldPacket
& recvPacket
);
253 void HandleForceSpeedChangeAck( WorldPacket
& recv_data
);
255 void HandlePingOpcode(WorldPacket
& recvPacket
);
256 void HandleAuthSessionOpcode(WorldPacket
& recvPacket
);
257 void HandleRepopRequestOpcode(WorldPacket
& recvPacket
);
258 void HandleAutostoreLootItemOpcode(WorldPacket
& recvPacket
);
259 void HandleLootMoneyOpcode(WorldPacket
& recvPacket
);
260 void HandleLootOpcode(WorldPacket
& recvPacket
);
261 void HandleLootReleaseOpcode(WorldPacket
& recvPacket
);
262 void HandleLootMasterGiveOpcode(WorldPacket
& recvPacket
);
263 void HandleWhoOpcode(WorldPacket
& recvPacket
);
264 void HandleLogoutRequestOpcode(WorldPacket
& recvPacket
);
265 void HandlePlayerLogoutOpcode(WorldPacket
& recvPacket
);
266 void HandleLogoutCancelOpcode(WorldPacket
& recvPacket
);
267 void HandleGMTicketGetTicketOpcode(WorldPacket
& recvPacket
);
268 void HandleGMTicketCreateOpcode(WorldPacket
& recvPacket
);
269 void HandleGMTicketSystemStatusOpcode(WorldPacket
& recvPacket
);
271 void HandleGMTicketDeleteOpcode(WorldPacket
& recvPacket
);
272 void HandleGMTicketUpdateTextOpcode(WorldPacket
& recvPacket
);
274 void HandleGMSurveySubmit(WorldPacket
& recvPacket
);
276 void HandleTogglePvP(WorldPacket
& recvPacket
);
278 void HandleZoneUpdateOpcode(WorldPacket
& recvPacket
);
279 void HandleSetTargetOpcode(WorldPacket
& recvPacket
);
280 void HandleSetSelectionOpcode(WorldPacket
& recvPacket
);
281 void HandleStandStateChangeOpcode(WorldPacket
& recvPacket
);
282 void HandleEmoteOpcode(WorldPacket
& recvPacket
);
283 void HandleFriendListOpcode(WorldPacket
& recvPacket
);
284 void HandleAddFriendOpcode(WorldPacket
& recvPacket
);
285 static void HandleAddFriendOpcodeCallBack(QueryResult
*result
, uint32 accountId
, std::string friendNote
);
286 void HandleDelFriendOpcode(WorldPacket
& recvPacket
);
287 void HandleAddIgnoreOpcode(WorldPacket
& recvPacket
);
288 static void HandleAddIgnoreOpcodeCallBack(QueryResult
*result
, uint32 accountId
);
289 void HandleDelIgnoreOpcode(WorldPacket
& recvPacket
);
290 void HandleSetFriendNoteOpcode(WorldPacket
& recvPacket
);
291 void HandleBugOpcode(WorldPacket
& recvPacket
);
292 void HandleSetAmmoOpcode(WorldPacket
& recvPacket
);
293 void HandleItemNameQueryOpcode(WorldPacket
& recvPacket
);
295 void HandleAreaTriggerOpcode(WorldPacket
& recvPacket
);
297 void HandleSetFactionAtWar( WorldPacket
& recv_data
);
298 void HandleSetFactionCheat( WorldPacket
& recv_data
);
299 void HandleSetWatchedFactionIndexOpcode(WorldPacket
& recv_data
);
300 void HandleSetWatchedFactionInactiveOpcode(WorldPacket
& recv_data
);
302 void HandleUpdateAccountData(WorldPacket
& recvPacket
);
303 void HandleRequestAccountData(WorldPacket
& recvPacket
);
304 void HandleSetActionButtonOpcode(WorldPacket
& recvPacket
);
306 void HandleGameObjectUseOpcode(WorldPacket
& recPacket
);
307 void HandleMeetingStoneInfo(WorldPacket
& recPacket
);
309 void HandleNameQueryOpcode(WorldPacket
& recvPacket
);
311 void HandleQueryTimeOpcode(WorldPacket
& recvPacket
);
313 void HandleCreatureQueryOpcode(WorldPacket
& recvPacket
);
315 void HandleGameObjectQueryOpcode(WorldPacket
& recvPacket
);
317 void HandleMoveWorldportAckOpcode(WorldPacket
& recvPacket
);
318 void HandleMoveWorldportAckOpcode(); // for server-side calls
320 void HandleMovementOpcodes(WorldPacket
& recvPacket
);
321 void HandleSetActiveMoverOpcode(WorldPacket
&recv_data
);
322 void HandleMoveTimeSkippedOpcode(WorldPacket
&recv_data
);
324 void HandleRequestRaidInfoOpcode( WorldPacket
& recv_data
);
326 void HandleBattlefieldStatusOpcode(WorldPacket
&recv_data
);
327 void HandleBattleMasterHelloOpcode(WorldPacket
&recv_data
);
329 void HandleGroupInviteOpcode(WorldPacket
& recvPacket
);
330 //void HandleGroupCancelOpcode(WorldPacket& recvPacket);
331 void HandleGroupAcceptOpcode(WorldPacket
& recvPacket
);
332 void HandleGroupDeclineOpcode(WorldPacket
& recvPacket
);
333 void HandleGroupUninviteNameOpcode(WorldPacket
& recvPacket
);
334 void HandleGroupUninviteGuidOpcode(WorldPacket
& recvPacket
);
335 void HandleGroupUninvite(uint64 guid
, std::string name
);
336 void HandleGroupSetLeaderOpcode(WorldPacket
& recvPacket
);
337 void HandleGroupLeaveOpcode(WorldPacket
& recvPacket
);
338 void HandleGroupPassOnLootOpcode( WorldPacket
&recv_data
);
339 void HandleLootMethodOpcode(WorldPacket
& recvPacket
);
340 void HandleLootRoll( WorldPacket
&recv_data
);
341 void HandleRequestPartyMemberStatsOpcode( WorldPacket
&recv_data
);
342 void HandleRaidIconTargetOpcode( WorldPacket
& recv_data
);
343 void HandleRaidReadyCheckOpcode( WorldPacket
& recv_data
);
344 void HandleRaidReadyCheckFinishOpcode( WorldPacket
& recv_data
);
345 void HandleRaidConvertOpcode( WorldPacket
& recv_data
);
346 void HandleGroupChangeSubGroupOpcode( WorldPacket
& recv_data
);
347 void HandleGroupAssistantOpcode( WorldPacket
& recv_data
);
348 void HandleGroupPromoteOpcode( WorldPacket
& recv_data
);
350 void HandlePetitionBuyOpcode(WorldPacket
& recv_data
);
351 void HandlePetitionShowSignOpcode(WorldPacket
& recv_data
);
352 void HandlePetitionQueryOpcode(WorldPacket
& recv_data
);
353 void HandlePetitionRenameOpcode(WorldPacket
& recv_data
);
354 void HandlePetitionSignOpcode(WorldPacket
& recv_data
);
355 void HandlePetitionDeclineOpcode(WorldPacket
& recv_data
);
356 void HandleOfferPetitionOpcode(WorldPacket
& recv_data
);
357 void HandleTurnInPetitionOpcode(WorldPacket
& recv_data
);
359 void HandleGuildQueryOpcode(WorldPacket
& recvPacket
);
360 void HandleGuildCreateOpcode(WorldPacket
& recvPacket
);
361 void HandleGuildInviteOpcode(WorldPacket
& recvPacket
);
362 void HandleGuildRemoveOpcode(WorldPacket
& recvPacket
);
363 void HandleGuildAcceptOpcode(WorldPacket
& recvPacket
);
364 void HandleGuildDeclineOpcode(WorldPacket
& recvPacket
);
365 void HandleGuildInfoOpcode(WorldPacket
& recvPacket
);
366 void HandleGuildEventLogOpcode(WorldPacket
& recvPacket
);
367 void HandleGuildRosterOpcode(WorldPacket
& recvPacket
);
368 void HandleGuildPromoteOpcode(WorldPacket
& recvPacket
);
369 void HandleGuildDemoteOpcode(WorldPacket
& recvPacket
);
370 void HandleGuildLeaveOpcode(WorldPacket
& recvPacket
);
371 void HandleGuildDisbandOpcode(WorldPacket
& recvPacket
);
372 void HandleGuildLeaderOpcode(WorldPacket
& recvPacket
);
373 void HandleGuildMOTDOpcode(WorldPacket
& recvPacket
);
374 void HandleGuildSetPublicNoteOpcode(WorldPacket
& recvPacket
);
375 void HandleGuildSetOfficerNoteOpcode(WorldPacket
& recvPacket
);
376 void HandleGuildRankOpcode(WorldPacket
& recvPacket
);
377 void HandleGuildAddRankOpcode(WorldPacket
& recvPacket
);
378 void HandleGuildDelRankOpcode(WorldPacket
& recvPacket
);
379 void HandleGuildChangeInfoOpcode(WorldPacket
& recvPacket
);
380 void HandleGuildSaveEmblemOpcode(WorldPacket
& recvPacket
);
382 void HandleTaxiNodeStatusQueryOpcode(WorldPacket
& recvPacket
);
383 void HandleTaxiQueryAvailableNodesOpcode(WorldPacket
& recvPacket
);
384 void HandleActivateTaxiOpcode(WorldPacket
& recvPacket
);
385 void HandleActivateTaxiFarOpcode(WorldPacket
& recvPacket
);
386 void HandleTaxiNextDestinationOpcode(WorldPacket
& recvPacket
);
388 void HandleTabardVendorActivateOpcode(WorldPacket
& recvPacket
);
389 void HandleBankerActivateOpcode(WorldPacket
& recvPacket
);
390 void HandleBuyBankSlotOpcode(WorldPacket
& recvPacket
);
391 void HandleTrainerListOpcode(WorldPacket
& recvPacket
);
392 void HandleTrainerBuySpellOpcode(WorldPacket
& recvPacket
);
393 void HandlePetitionShowListOpcode(WorldPacket
& recvPacket
);
394 void HandleGossipHelloOpcode(WorldPacket
& recvPacket
);
395 void HandleGossipSelectOptionOpcode(WorldPacket
& recvPacket
);
396 void HandleSpiritHealerActivateOpcode(WorldPacket
& recvPacket
);
397 void HandleNpcTextQueryOpcode(WorldPacket
& recvPacket
);
398 void HandleBinderActivateOpcode(WorldPacket
& recvPacket
);
399 void HandleListStabledPetsOpcode(WorldPacket
& recvPacket
);
400 void HandleStablePet(WorldPacket
& recvPacket
);
401 void HandleUnstablePet(WorldPacket
& recvPacket
);
402 void HandleBuyStableSlot(WorldPacket
& recvPacket
);
403 void HandleStableRevivePet(WorldPacket
& recvPacket
);
404 void HandleStableSwapPet(WorldPacket
& recvPacket
);
406 void HandleDuelAcceptedOpcode(WorldPacket
& recvPacket
);
407 void HandleDuelCancelledOpcode(WorldPacket
& recvPacket
);
409 void HandleAcceptTradeOpcode(WorldPacket
& recvPacket
);
410 void HandleBeginTradeOpcode(WorldPacket
& recvPacket
);
411 void HandleBusyTradeOpcode(WorldPacket
& recvPacket
);
412 void HandleCancelTradeOpcode(WorldPacket
& recvPacket
);
413 void HandleClearTradeItemOpcode(WorldPacket
& recvPacket
);
414 void HandleIgnoreTradeOpcode(WorldPacket
& recvPacket
);
415 void HandleInitiateTradeOpcode(WorldPacket
& recvPacket
);
416 void HandleSetTradeGoldOpcode(WorldPacket
& recvPacket
);
417 void HandleSetTradeItemOpcode(WorldPacket
& recvPacket
);
418 void HandleUnacceptTradeOpcode(WorldPacket
& recvPacket
);
420 void HandleAuctionHelloOpcode(WorldPacket
& recvPacket
);
421 void HandleAuctionListItems( WorldPacket
& recv_data
);
422 void HandleAuctionListBidderItems( WorldPacket
& recv_data
);
423 void HandleAuctionSellItem( WorldPacket
& recv_data
);
424 void HandleAuctionRemoveItem( WorldPacket
& recv_data
);
425 void HandleAuctionListOwnerItems( WorldPacket
& recv_data
);
426 void HandleAuctionPlaceBid( WorldPacket
& recv_data
);
428 void HandleGetMail( WorldPacket
& recv_data
);
429 void HandleSendMail( WorldPacket
& recv_data
);
430 void HandleTakeMoney( WorldPacket
& recv_data
);
431 void HandleTakeItem( WorldPacket
& recv_data
);
432 void HandleMarkAsRead( WorldPacket
& recv_data
);
433 void HandleReturnToSender( WorldPacket
& recv_data
);
434 void HandleMailDelete( WorldPacket
& recv_data
);
435 void HandleItemTextQuery( WorldPacket
& recv_data
);
436 void HandleMailCreateTextItem(WorldPacket
& recv_data
);
437 void HandleMsgQueryNextMailtime(WorldPacket
& recv_data
);
438 void HandleCancelChanneling(WorldPacket
& recv_data
);
440 void SendItemPageInfo( ItemPrototype
*itemProto
);
441 void HandleSplitItemOpcode(WorldPacket
& recvPacket
);
442 void HandleSwapInvItemOpcode(WorldPacket
& recvPacket
);
443 void HandleDestroyItemOpcode(WorldPacket
& recvPacket
);
444 void HandleAutoEquipItemOpcode(WorldPacket
& recvPacket
);
445 void HandleItemQuerySingleOpcode(WorldPacket
& recvPacket
);
446 void HandleSellItemOpcode(WorldPacket
& recvPacket
);
447 void HandleBuyItemInSlotOpcode(WorldPacket
& recvPacket
);
448 void HandleBuyItemOpcode(WorldPacket
& recvPacket
);
449 void HandleListInventoryOpcode(WorldPacket
& recvPacket
);
450 void HandleAutoStoreBagItemOpcode(WorldPacket
& recvPacket
);
451 void HandleReadItem(WorldPacket
& recvPacket
);
452 void HandleAutoEquipItemSlotOpcode(WorldPacket
& recvPacket
);
453 void HandleSwapItem( WorldPacket
& recvPacket
);
454 void HandleBuybackItem(WorldPacket
& recvPacket
);
455 void HandleAutoBankItemOpcode(WorldPacket
& recvPacket
);
456 void HandleAutoStoreBankItemOpcode(WorldPacket
& recvPacket
);
457 void HandleWrapItemOpcode(WorldPacket
& recvPacket
);
459 void HandleAttackSwingOpcode(WorldPacket
& recvPacket
);
460 void HandleAttackStopOpcode(WorldPacket
& recvPacket
);
461 void HandleSetSheathedOpcode(WorldPacket
& recvPacket
);
463 void HandleUseItemOpcode(WorldPacket
& recvPacket
);
464 void HandleOpenItemOpcode(WorldPacket
& recvPacket
);
465 void HandleCastSpellOpcode(WorldPacket
& recvPacket
);
466 void HandleCancelCastOpcode(WorldPacket
& recvPacket
);
467 void HandleCancelAuraOpcode(WorldPacket
& recvPacket
);
468 void HandleCancelGrowthAuraOpcode(WorldPacket
& recvPacket
);
469 void HandleCancelAutoRepeatSpellOpcode(WorldPacket
& recvPacket
);
471 void HandleLearnTalentOpcode(WorldPacket
& recvPacket
);
472 void HandleTalentWipeOpcode(WorldPacket
& recvPacket
);
473 void HandleUnlearnSkillOpcode(WorldPacket
& recvPacket
);
475 void HandleQuestgiverStatusQueryOpcode(WorldPacket
& recvPacket
);
476 void HandleQuestgiverStatusQueryMultipleOpcode(WorldPacket
& recvPacket
);
477 void HandleQuestgiverHelloOpcode(WorldPacket
& recvPacket
);
478 void HandleQuestgiverAcceptQuestOpcode(WorldPacket
& recvPacket
);
479 void HandleQuestgiverQuestQueryOpcode(WorldPacket
& recvPacket
);
480 void HandleQuestgiverChooseRewardOpcode(WorldPacket
& recvPacket
);
481 void HandleQuestgiverRequestRewardOpcode(WorldPacket
& recvPacket
);
482 void HandleQuestQueryOpcode(WorldPacket
& recvPacket
);
483 void HandleQuestgiverCancel(WorldPacket
& recv_data
);
484 void HandleQuestLogSwapQuest(WorldPacket
& recv_data
);
485 void HandleQuestLogRemoveQuest(WorldPacket
& recv_data
);
486 void HandleQuestConfirmAccept(WorldPacket
& recv_data
);
487 void HandleQuestComplete(WorldPacket
& recv_data
);
488 void HandleQuestAutoLaunch(WorldPacket
& recvPacket
);
489 void HandleQuestPushToParty(WorldPacket
& recvPacket
);
490 void HandleQuestPushResult(WorldPacket
& recvPacket
);
492 void HandleMessagechatOpcode(WorldPacket
& recvPacket
);
493 void HandleTextEmoteOpcode(WorldPacket
& recvPacket
);
494 void HandleChatIgnoredOpcode(WorldPacket
& recvPacket
);
496 void HandleCorpseReclaimOpcode( WorldPacket
& recvPacket
);
497 void HandleCorpseQueryOpcode( WorldPacket
& recvPacket
);
498 void HandleResurrectResponseOpcode(WorldPacket
& recvPacket
);
499 void HandleSummonResponseOpcode(WorldPacket
& recv_data
);
501 void HandleChannelJoin(WorldPacket
& recvPacket
);
502 void HandleChannelLeave(WorldPacket
& recvPacket
);
503 void HandleChannelList(WorldPacket
& recvPacket
);
504 void HandleChannelPassword(WorldPacket
& recvPacket
);
505 void HandleChannelSetOwner(WorldPacket
& recvPacket
);
506 void HandleChannelOwner(WorldPacket
& recvPacket
);
507 void HandleChannelModerator(WorldPacket
& recvPacket
);
508 void HandleChannelUnmoderator(WorldPacket
& recvPacket
);
509 void HandleChannelMute(WorldPacket
& recvPacket
);
510 void HandleChannelUnmute(WorldPacket
& recvPacket
);
511 void HandleChannelInvite(WorldPacket
& recvPacket
);
512 void HandleChannelKick(WorldPacket
& recvPacket
);
513 void HandleChannelBan(WorldPacket
& recvPacket
);
514 void HandleChannelUnban(WorldPacket
& recvPacket
);
515 void HandleChannelAnnounce(WorldPacket
& recvPacket
);
516 void HandleChannelModerate(WorldPacket
& recvPacket
);
517 void HandleChannelRosterQuery(WorldPacket
& recvPacket
);
518 void HandleChannelInfoQuery(WorldPacket
& recvPacket
);
519 void HandleChannelJoinNotify(WorldPacket
& recvPacket
);
521 void HandleCompleteCinema(WorldPacket
& recvPacket
);
522 void HandleNextCinematicCamera(WorldPacket
& recvPacket
);
524 void HandlePageQuerySkippedOpcode(WorldPacket
& recvPacket
);
525 void HandlePageQueryOpcode(WorldPacket
& recvPacket
);
527 void HandleTutorialFlag ( WorldPacket
& recv_data
);
528 void HandleTutorialClear( WorldPacket
& recv_data
);
529 void HandleTutorialReset( WorldPacket
& recv_data
);
532 void HandlePetAction( WorldPacket
& recv_data
);
533 void HandlePetNameQuery( WorldPacket
& recv_data
);
534 void HandlePetSetAction( WorldPacket
& recv_data
);
535 void HandlePetAbandon( WorldPacket
& recv_data
);
536 void HandlePetRename( WorldPacket
& recv_data
);
537 void HandlePetCancelAuraOpcode( WorldPacket
& recvPacket
);
538 void HandlePetUnlearnOpcode( WorldPacket
& recvPacket
);
539 void HandlePetSpellAutocastOpcode( WorldPacket
& recvPacket
);
540 void HandlePetCastSpellOpcode( WorldPacket
& recvPacket
);
542 void HandleSetActionBar(WorldPacket
& recv_data
);
544 void HandleChangePlayerNameOpcode(WorldPacket
& recv_data
);
545 void HandleDeclinedPlayerNameOpcode(WorldPacket
& recv_data
);
547 void HandleTotemDestroy(WorldPacket
& recv_data
);
550 void HandleBattleGroundHelloOpcode(WorldPacket
&recv_data
);
551 void HandleBattleGroundJoinOpcode(WorldPacket
&recv_data
);
552 void HandleBattleGroundPlayerPositionsOpcode(WorldPacket
& recv_data
);
553 void HandleBattleGroundPVPlogdataOpcode( WorldPacket
&recv_data
);
554 void HandleBattleGroundPlayerPortOpcode( WorldPacket
&recv_data
);
555 void HandleBattleGroundListOpcode( WorldPacket
&recv_data
);
556 void HandleBattleGroundLeaveOpcode( WorldPacket
&recv_data
);
557 void HandleBattleGroundArenaJoin( WorldPacket
&recv_data
);
558 void HandleBattleGroundReportAFK( WorldPacket
&recv_data
);
560 void HandleWardenDataOpcode(WorldPacket
& recv_data
);
561 void HandleWorldTeleportOpcode(WorldPacket
& recv_data
);
562 void HandleMinimapPingOpcode(WorldPacket
& recv_data
);
563 void HandleRandomRollOpcode(WorldPacket
& recv_data
);
564 void HandleFarSightOpcode(WorldPacket
& recv_data
);
565 void HandleSetLfgOpcode(WorldPacket
& recv_data
);
566 void HandleDungeonDifficultyOpcode(WorldPacket
& recv_data
);
567 void HandleMoveFlyModeChangeAckOpcode(WorldPacket
& recv_data
);
568 void HandleLfgAutoJoinOpcode(WorldPacket
& recv_data
);
569 void HandleLfgCancelAutoJoinOpcode(WorldPacket
& recv_data
);
570 void HandleLfmAutoAddMembersOpcode(WorldPacket
& recv_data
);
571 void HandleLfmCancelAutoAddmembersOpcode(WorldPacket
& recv_data
);
572 void HandleLfgClearOpcode(WorldPacket
& recv_data
);
573 void HandleLfmSetNoneOpcode(WorldPacket
& recv_data
);
574 void HandleLfmSetOpcode(WorldPacket
& recv_data
);
575 void HandleLfgSetCommentOpcode(WorldPacket
& recv_data
);
576 void HandleNewUnknownOpcode(WorldPacket
& recv_data
);
577 void HandleChooseTitleOpcode(WorldPacket
& recv_data
);
578 void HandleRealmStateRequestOpcode(WorldPacket
& recv_data
);
579 void HandleAllowMoveAckOpcode(WorldPacket
& recv_data
);
580 void HandleWhoisOpcode(WorldPacket
& recv_data
);
581 void HandleResetInstancesOpcode(WorldPacket
& recv_data
);
584 void HandleInspectArenaStatsOpcode(WorldPacket
& recv_data
);
585 void HandleArenaTeamQueryOpcode(WorldPacket
& recv_data
);
586 void HandleArenaTeamRosterOpcode(WorldPacket
& recv_data
);
587 void HandleArenaTeamAddMemberOpcode(WorldPacket
& recv_data
);
588 void HandleArenaTeamInviteAcceptOpcode(WorldPacket
& recv_data
);
589 void HandleArenaTeamInviteDeclineOpcode(WorldPacket
& recv_data
);
590 void HandleArenaTeamLeaveOpcode(WorldPacket
& recv_data
);
591 void HandleArenaTeamRemoveFromTeamOpcode(WorldPacket
& recv_data
);
592 void HandleArenaTeamDisbandOpcode(WorldPacket
& recv_data
);
593 void HandleArenaTeamPromoteToCaptainOpcode(WorldPacket
& recv_data
);
595 void HandleAreaSpiritHealerQueryOpcode(WorldPacket
& recv_data
);
596 void HandleAreaSpiritHealerQueueOpcode(WorldPacket
& recv_data
);
597 void HandleDismountOpcode(WorldPacket
& recv_data
);
598 void HandleSelfResOpcode(WorldPacket
& recv_data
);
599 void HandleReportSpamOpcode(WorldPacket
& recv_data
);
600 void HandleRequestPetInfoOpcode(WorldPacket
& recv_data
);
603 void HandleSocketOpcode(WorldPacket
& recv_data
);
605 void HandleCancelTempItemEnchantmentOpcode(WorldPacket
& recv_data
);
607 void HandleChannelEnableVoiceOpcode(WorldPacket
& recv_data
);
608 void HandleVoiceSettingsOpcode(WorldPacket
& recv_data
);
609 void HandleChannelVoiceChatQuery(WorldPacket
& recv_data
);
610 void HandleSetTaxiBenchmarkOpcode(WorldPacket
& recv_data
);
613 void HandleGuildBankGetRights(WorldPacket
& recv_data
);
614 void HandleGuildBankGetMoneyAmount(WorldPacket
& recv_data
);
615 void HandleGuildBankQuery(WorldPacket
& recv_data
);
616 void HandleGuildBankTabColon(WorldPacket
& recv_data
);
617 void HandleGuildBankLog(WorldPacket
& recv_data
);
618 void HandleGuildBankDeposit(WorldPacket
& recv_data
);
619 void HandleGuildBankWithdraw(WorldPacket
& recv_data
);
620 void HandleGuildBankDepositItem(WorldPacket
& recv_data
);
621 void HandleGuildBankModifyTab(WorldPacket
& recv_data
);
622 void HandleGuildBankBuyTab(WorldPacket
& recv_data
);
623 void HandleGuildBankTabText(WorldPacket
& recv_data
);
624 void HandleGuildBankSetTabText(WorldPacket
& recv_data
);
626 // private trade methods
627 void moveItems(Item
* myItems
[], Item
* hisItems
[]);
630 void logUnexpectedOpcode(WorldPacket
*packet
, const char * reason
);
633 WorldSocket
*m_Socket
;
634 std::string m_Address
;
641 bool m_inQueue
; // session wait in auth.queue
642 bool m_playerLoading
; // code processed in LoginPlayer
643 bool m_playerLogout
; // code processed in LogoutPlayer
644 bool m_playerRecentlyLogout
;
645 LocaleConstant m_sessionDbcLocale
;
646 int m_sessionDbLocaleIndex
;
649 ZThread::LockedQueue
<WorldPacket
*,ZThread::FastMutex
> _recvQueue
;