[6858] Prevent cheating with ignore waiting in login queue.
[getmangos.git] / src / game / WorldSession.h
blob6bc8fc967b021c8335e261211c7b9b6a44a38850
1 /*
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
19 /// \addtogroup u2w
20 /// @{
21 /// \file
23 #ifndef __WORLDSESSION_H
24 #define __WORLDSESSION_H
26 #include "Common.h"
28 class MailItemsInfo;
29 struct ItemPrototype;
30 struct AuctionEntry;
31 struct DeclinedName;
33 class Creature;
34 class Item;
35 class Object;
36 class Player;
37 class Unit;
38 class WorldPacket;
39 class WorldSocket;
40 class WorldSession;
41 class QueryResult;
42 class LoginQueryHolder;
43 class CharacterHandler;
45 #define CHECK_PACKET_SIZE(P,S) if((P).size() < (S)) return SizeError((P),(S));
47 enum PartyOperation
49 PARTY_OP_INVITE = 0,
50 PARTY_OP_LEAVE = 2
53 enum PartyResult
55 PARTY_RESULT_OK = 0,
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;
72 public:
73 WorldSession(uint32 id, WorldSocket *sock, uint32 sec, uint8 expansion, time_t mute_time, LocaleConstant locale);
74 ~WorldSession();
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);
117 void KickPlayer();
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();
150 //pet
151 void SendPetNameQuery(uint64 guid, uint32 petnumber);
153 //mail
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);
159 //auction
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 );
168 //Item Enchantment
169 void SendEnchantmentLog(uint64 Target, uint64 Caster,uint32 ItemID,uint32 SpellID);
170 void SendItemEnchantTimeUpdate(uint64 Playerguid, uint64 Itemguid,uint32 slot,uint32 Duration);
172 //Taxi
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 );
178 // Guild/Arena Team
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 );
186 // Looking For Group
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 );
195 // Account mute time
196 time_t m_muteTime;
198 // Locales
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);
221 // played time
222 void HandlePlayedTime(WorldPacket& recvPacket);
224 // new
225 void HandleMoveUnRootAck(WorldPacket& recvPacket);
226 void HandleMoveRootAck(WorldPacket& recvPacket);
227 void HandleLookingForGroup(WorldPacket& recvPacket);
229 // new inspect
230 void HandleInspectOpcode(WorldPacket& recvPacket);
232 // new party stats
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);
242 // character view
243 void HandleToggleHelmOpcode(WorldPacket& recv_data);
244 void HandleToggleCloakOpcode(WorldPacket& recv_data);
246 // repair
247 void HandleRepairItemOpcode(WorldPacket& recvPacket);
249 // Knockback
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 );
531 //Pet
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);
549 //BattleGround
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);
583 // Arena Team
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);
602 // Socket gem
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);
612 // Guild Bank
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);
625 private:
626 // private trade methods
627 void moveItems(Item* myItems[], Item* hisItems[]);
629 // logging helper
630 void logUnexpectedOpcode(WorldPacket *packet, const char * reason);
632 Player *_player;
633 WorldSocket *m_Socket;
634 std::string m_Address;
636 uint32 _security;
637 uint32 _accountId;
638 uint8 m_expansion;
640 time_t _logoutTime;
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;
647 uint32 m_latency;
649 ZThread::LockedQueue<WorldPacket*,ZThread::FastMutex> _recvQueue;
651 #endif
652 /// @}