From dee29f95d41b78c744af887e43e119732d3c8376 Mon Sep 17 00:00:00 2001 From: Olion17 Date: Wed, 19 Jul 2017 17:02:01 +0300 Subject: [PATCH] More SMSGs Minor structure corrections, some constants, comments, syntax --- src/game/Object/Guild.h | 12 +- src/game/Object/Player.cpp | 42 +++---- src/game/Object/Player.h | 2 +- src/game/Server/Opcodes.cpp | 130 ++++++++++---------- src/game/Server/Opcodes.h | 2 +- src/game/Server/SharedDefines.h | 1 + src/game/Server/WorldSession.cpp | 4 +- src/game/WorldHandlers/GuildHandler.cpp | 4 +- src/game/WorldHandlers/ItemHandler.cpp | 13 +- src/game/WorldHandlers/MailHandler.cpp | 31 ++--- src/game/WorldHandlers/NPCHandler.cpp | 5 - src/game/WorldHandlers/PetitionsHandler.cpp | 31 ++--- 12 files changed, 132 insertions(+), 145 deletions(-) diff --git a/src/game/Object/Guild.h b/src/game/Object/Guild.h index 25292a6c..9b746275 100644 --- a/src/game/Object/Guild.h +++ b/src/game/Object/Guild.h @@ -122,20 +122,14 @@ enum GuildEvents GE_SIGNED_OFF = 0x0D, // ERR_FRIEND_OFFLINE_S }; -enum PetitionTurns -{ - PETITION_TURN_OK = 0, - PETITION_TURN_ALREADY_IN_GUILD = 2, - PETITION_TURN_NEED_MORE_SIGNATURES = 4, -}; - enum PetitionSigns { PETITION_SIGN_OK = 0, PETITION_SIGN_ALREADY_SIGNED = 1, PETITION_SIGN_ALREADY_IN_GUILD = 2, PETITION_SIGN_CANT_SIGN_OWN = 3, - PETITION_SIGN_NOT_SERVER = 4, + PETITION_SIGN_NEED_MORE = 4, + PETITION_SIGN_NOT_SERVER = 5, }; enum GuildEventLogTypes @@ -155,7 +149,7 @@ enum GuildEmblem ERR_GUILDEMBLEM_NOGUILD = 2, ERR_GUILDEMBLEM_NOTGUILDMASTER = 3, ERR_GUILDEMBLEM_NOTENOUGHMONEY = 4, - ERR_GUILDEMBLEM_INVALIDVENDOR = 5 + ERR_GUILDEMBLEM_FAIL_NO_MESSAGE = 5 }; struct GuildEventLogEntry diff --git a/src/game/Object/Player.cpp b/src/game/Object/Player.cpp index 5893d7b7..1b6cf94e 100644 --- a/src/game/Object/Player.cpp +++ b/src/game/Object/Player.cpp @@ -165,16 +165,8 @@ void PlayerTaxi::LoadTaxiMask(const char* data) void PlayerTaxi::AppendTaximaskTo(ByteBuffer& data, bool all) { - if (all) - { - for (uint8 i = 0; i < TaxiMaskSize; ++i) - { data << uint32(sTaxiNodesMask[i]); } // all existing nodes - } - else - { - for (uint8 i = 0; i < TaxiMaskSize; ++i) - { data << uint32(m_taximask[i]); } // known nodes - } + for (uint8 i = 0; i < TaxiMaskSize; ++i) + { data << uint32(all ? sTaxiNodesMask[i] : m_taximask[i]); } // all or just known existing nodes } bool PlayerTaxi::LoadTaxiDestinationsFromString(const std::string& values, Team team) @@ -2742,17 +2734,17 @@ void Player::RemoveMail(uint32 id) void Player::SendMailResult(uint32 mailId, MailResponseType mailAction, MailResponseResult mailError, uint32 equipError, uint32 item_guid, uint32 item_count) { - WorldPacket data(SMSG_SEND_MAIL_RESULT, (4 + 4 + 4 + (mailError == MAIL_ERR_EQUIP_ERROR ? 4 : (mailAction == MAIL_ITEM_TAKEN ? 4 + 4 : 0)))); + WorldPacket data(SMSG_SEND_MAIL_RESULT, (4 + 4 + 4 + (mailError == MAIL_ERR_EQUIP_ERROR ? 4 : 0))); data << (uint32) mailId; data << (uint32) mailAction; data << (uint32) mailError; if (mailError == MAIL_ERR_EQUIP_ERROR) { data << (uint32) equipError; } - else if (mailAction == MAIL_ITEM_TAKEN) - { - data << (uint32) item_guid; // item guid low? - data << (uint32) item_count; // item count? - } + //else if (mailAction == MAIL_ITEM_TAKEN) // [-ZERO] + //{ + // data << (uint32) item_guid; // item guid low? + // data << (uint32) item_count; // item count? + //} GetSession()->SendPacket(&data); } @@ -11220,26 +11212,26 @@ void Player::SendOpenContainer() GetSession()->SendPacket(&data); } -void Player::SendBuyError(BuyResult msg, Creature* pCreature, uint32 item, uint32 param) +void Player::SendBuyError(BuyResult msg, Creature* pCreature, uint32 item, uint32 /*param*/) { DEBUG_LOG("WORLD: Sent SMSG_BUY_FAILED"); - WorldPacket data(SMSG_BUY_FAILED, (8 + 4 + 4 + 1)); + WorldPacket data(SMSG_BUY_FAILED, (8 + 4 + 1)); data << (pCreature ? pCreature->GetObjectGuid() : ObjectGuid()); data << uint32(item); - if (param > 0) - { data << uint32(param); } + //if (param > 0) + // { data << uint32(param); } // [-ZERO] data << uint8(msg); GetSession()->SendPacket(&data); } -void Player::SendSellError(SellResult msg, Creature* pCreature, ObjectGuid itemGuid, uint32 param) +void Player::SendSellError(SellResult msg, Creature* pCreature, ObjectGuid itemGuid, uint32 /*param*/) { DEBUG_LOG("WORLD: Sent SMSG_SELL_ITEM"); - WorldPacket data(SMSG_SELL_ITEM, (8 + 8 + (param ? 4 : 0) + 1)); // last check 2.0.10 + WorldPacket data(SMSG_SELL_ITEM, (8 + 8 + /*(param ? 4 : 0) +*/ 1)); // last check [ZERO] data << (pCreature ? pCreature->GetObjectGuid() : ObjectGuid()); data << ObjectGuid(itemGuid); - if (param > 0) - { data << uint32(param); } + //if (param > 0) + // { data << uint32(param); } // [-ZERO] data << uint8(msg); GetSession()->SendPacket(&data); } @@ -18014,7 +18006,7 @@ void Player::SendInitialPacketsBeforeAddToMap() /* This packet seems useless... * TODO: Work out if we need SMSG_SET_REST_START */ WorldPacket data(SMSG_SET_REST_START, 4); - data << uint32(0); // unknown, may be rest state time or experience + data << uint32(0); // rest state time GetSession()->SendPacket(&data); /* Send information about player's home binding */ diff --git a/src/game/Object/Player.h b/src/game/Object/Player.h index f730ef05..09a659a7 100644 --- a/src/game/Object/Player.h +++ b/src/game/Object/Player.h @@ -442,7 +442,7 @@ enum MirrorTimerType { FATIGUE_TIMER = 0, BREATH_TIMER = 1, - FIRE_TIMER = 2 + FIRE_TIMER = 2 // probably mistake. More like to FEIGN_DEATH_TIMER }; #define MAX_TIMERS 3 #define DISABLED_MIRROR_TIMER -1 diff --git a/src/game/Server/Opcodes.cpp b/src/game/Server/Opcodes.cpp index 3a6eabf0..59e85cbf 100644 --- a/src/game/Server/Opcodes.cpp +++ b/src/game/Server/Opcodes.cpp @@ -468,145 +468,145 @@ void Opcodes::BuildOpcodeList() /*0x195*/ StoreOpcode(SMSG_QUESTLOG_FULL, "SMSG_QUESTLOG_FULL", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x196*/ StoreOpcode(SMSG_QUESTUPDATE_FAILED, "SMSG_QUESTUPDATE_FAILED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x197*/ StoreOpcode(SMSG_QUESTUPDATE_FAILEDTIMER, "SMSG_QUESTUPDATE_FAILEDTIMER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x198*/ StoreOpcode(SMSG_QUESTUPDATE_COMPLETE, "SMSG_QUESTUPDATE_COMPLETE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x199*/ StoreOpcode(SMSG_QUESTUPDATE_ADD_KILL, "SMSG_QUESTUPDATE_ADD_KILL", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x19A*/ StoreOpcode(SMSG_QUESTUPDATE_ADD_ITEM, "SMSG_QUESTUPDATE_ADD_ITEM", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x198*/ StoreOpcode(SMSG_QUESTUPDATE_COMPLETE, "SMSG_QUESTUPDATE_COMPLETE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x199*/ StoreOpcode(SMSG_QUESTUPDATE_ADD_KILL, "SMSG_QUESTUPDATE_ADD_KILL", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x19A*/ StoreOpcode(SMSG_QUESTUPDATE_ADD_ITEM, "SMSG_QUESTUPDATE_ADD_ITEM", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x19B*/ StoreOpcode(CMSG_QUEST_CONFIRM_ACCEPT, "CMSG_QUEST_CONFIRM_ACCEPT", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestConfirmAccept); - /*[-ZERO] Need check */ /*0x19C*/ StoreOpcode(SMSG_QUEST_CONFIRM_ACCEPT, "SMSG_QUEST_CONFIRM_ACCEPT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x19C*/ StoreOpcode(SMSG_QUEST_CONFIRM_ACCEPT, "SMSG_QUEST_CONFIRM_ACCEPT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x19D*/ StoreOpcode(CMSG_PUSHQUESTTOPARTY, "CMSG_PUSHQUESTTOPARTY", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePushQuestToParty); /*[-ZERO] Need check */ /*0x19E*/ StoreOpcode(CMSG_LIST_INVENTORY, "CMSG_LIST_INVENTORY", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleListInventoryOpcode); - /*[-ZERO] Need check */ /*0x19F*/ StoreOpcode(SMSG_LIST_INVENTORY, "SMSG_LIST_INVENTORY", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x19F*/ StoreOpcode(SMSG_LIST_INVENTORY, "SMSG_LIST_INVENTORY", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1A0*/ StoreOpcode(CMSG_SELL_ITEM, "CMSG_SELL_ITEM", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSellItemOpcode); - /*[-ZERO] Need check */ /*0x1A1*/ StoreOpcode(SMSG_SELL_ITEM, "SMSG_SELL_ITEM", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1A1*/ StoreOpcode(SMSG_SELL_ITEM, "SMSG_SELL_ITEM", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1A2*/ StoreOpcode(CMSG_BUY_ITEM, "CMSG_BUY_ITEM", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBuyItemOpcode); /*[-ZERO] Need check */ /*0x1A3*/ StoreOpcode(CMSG_BUY_ITEM_IN_SLOT, "CMSG_BUY_ITEM_IN_SLOT", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBuyItemInSlotOpcode); - /*[-ZERO] Need check */ /*0x1A4*/ StoreOpcode(SMSG_BUY_ITEM, "SMSG_BUY_ITEM", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1A5*/ StoreOpcode(SMSG_BUY_FAILED, "SMSG_BUY_FAILED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1A4*/ StoreOpcode(SMSG_BUY_ITEM, "SMSG_BUY_ITEM", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1A5*/ StoreOpcode(SMSG_BUY_FAILED, "SMSG_BUY_FAILED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x1A6*/ StoreOpcode(CMSG_TAXICLEARALLNODES, "CMSG_TAXICLEARALLNODES", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*0x1A7*/ StoreOpcode(CMSG_TAXIENABLEALLNODES, "CMSG_TAXIENABLEALLNODES", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*0x1A8*/ StoreOpcode(CMSG_TAXISHOWNODES, "CMSG_TAXISHOWNODES", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); - /*[-ZERO] Need check */ /*0x1A9*/ StoreOpcode(SMSG_SHOWTAXINODES, "SMSG_SHOWTAXINODES", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1A9*/ StoreOpcode(SMSG_SHOWTAXINODES, "SMSG_SHOWTAXINODES", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1AA*/ StoreOpcode(CMSG_TAXINODE_STATUS_QUERY, "CMSG_TAXINODE_STATUS_QUERY", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTaxiNodeStatusQueryOpcode); - /*[-ZERO] Need check */ /*0x1AB*/ StoreOpcode(SMSG_TAXINODE_STATUS, "SMSG_TAXINODE_STATUS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1AB*/ StoreOpcode(SMSG_TAXINODE_STATUS, "SMSG_TAXINODE_STATUS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1AC*/ StoreOpcode(CMSG_TAXIQUERYAVAILABLENODES, "CMSG_TAXIQUERYAVAILABLENODES", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTaxiQueryAvailableNodes); /*[-ZERO] Need check */ /*0x1AD*/ StoreOpcode(CMSG_ACTIVATETAXI, "CMSG_ACTIVATETAXI", STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleActivateTaxiOpcode); - /*[-ZERO] Need check */ /*0x1AE*/ StoreOpcode(SMSG_ACTIVATETAXIREPLY, "SMSG_ACTIVATETAXIREPLY", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1AF*/ StoreOpcode(SMSG_NEW_TAXI_PATH, "SMSG_NEW_TAXI_PATH", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1AE*/ StoreOpcode(SMSG_ACTIVATETAXIREPLY, "SMSG_ACTIVATETAXIREPLY", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1AF*/ StoreOpcode(SMSG_NEW_TAXI_PATH, "SMSG_NEW_TAXI_PATH", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1B0*/ StoreOpcode(CMSG_TRAINER_LIST, "CMSG_TRAINER_LIST", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleTrainerListOpcode); - /*[-ZERO] Need check */ /*0x1B1*/ StoreOpcode(SMSG_TRAINER_LIST, "SMSG_TRAINER_LIST", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1B1*/ StoreOpcode(SMSG_TRAINER_LIST, "SMSG_TRAINER_LIST", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1B2*/ StoreOpcode(CMSG_TRAINER_BUY_SPELL, "CMSG_TRAINER_BUY_SPELL", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleTrainerBuySpellOpcode); - /*[-ZERO] Need check */ /*0x1B3*/ StoreOpcode(SMSG_TRAINER_BUY_SUCCEEDED, "SMSG_TRAINER_BUY_SUCCEEDED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1B4*/ StoreOpcode(SMSG_TRAINER_BUY_FAILED, "SMSG_TRAINER_BUY_FAILED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*[-ZERO] No effect */ /*0x1B3*/ StoreOpcode(SMSG_TRAINER_BUY_SUCCEEDED, "SMSG_TRAINER_BUY_SUCCEEDED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1B4*/ StoreOpcode(SMSG_TRAINER_BUY_FAILED, "SMSG_TRAINER_BUY_FAILED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1B5*/ StoreOpcode(CMSG_BINDER_ACTIVATE, "CMSG_BINDER_ACTIVATE", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleBinderActivateOpcode); - /*[-ZERO] Need check */ /*0x1B6*/ StoreOpcode(SMSG_PLAYERBINDERROR, "SMSG_PLAYERBINDERROR", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1B6*/ StoreOpcode(SMSG_PLAYERBINDERROR, "SMSG_PLAYERBINDERROR", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1B7*/ StoreOpcode(CMSG_BANKER_ACTIVATE, "CMSG_BANKER_ACTIVATE", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleBankerActivateOpcode); /*0x1B8*/ StoreOpcode(SMSG_SHOW_BANK, "SMSG_SHOW_BANK", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x1B9*/ StoreOpcode(CMSG_BUY_BANK_SLOT, "CMSG_BUY_BANK_SLOT", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleBuyBankSlotOpcode); /*0x1BA*/ StoreOpcode(SMSG_BUY_BANK_SLOT_RESULT, "SMSG_BUY_BANK_SLOT_RESULT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1BB*/ StoreOpcode(CMSG_PETITION_SHOWLIST, "CMSG_PETITION_SHOWLIST", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandlePetitionShowListOpcode); - /*[-ZERO] Need check */ /*0x1BC*/ StoreOpcode(SMSG_PETITION_SHOWLIST, "SMSG_PETITION_SHOWLIST", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1BC*/ StoreOpcode(SMSG_PETITION_SHOWLIST, "SMSG_PETITION_SHOWLIST", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1BD*/ StoreOpcode(CMSG_PETITION_BUY, "CMSG_PETITION_BUY", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandlePetitionBuyOpcode); /*[-ZERO] Need check */ /*0x1BE*/ StoreOpcode(CMSG_PETITION_SHOW_SIGNATURES, "CMSG_PETITION_SHOW_SIGNATURES", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandlePetitionShowSignOpcode); - /*[-ZERO] Need check */ /*0x1BF*/ StoreOpcode(SMSG_PETITION_SHOW_SIGNATURES, "SMSG_PETITION_SHOW_SIGNATURES", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1BF*/ StoreOpcode(SMSG_PETITION_SHOW_SIGNATURES, "SMSG_PETITION_SHOW_SIGNATURES", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1C0*/ StoreOpcode(CMSG_PETITION_SIGN, "CMSG_PETITION_SIGN", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandlePetitionSignOpcode); - /*[-ZERO] Need check */ /*0x1C1*/ StoreOpcode(SMSG_PETITION_SIGN_RESULTS, "SMSG_PETITION_SIGN_RESULTS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1C2*/ StoreOpcode(MSG_PETITION_DECLINE, "MSG_PETITION_DECLINE", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandlePetitionDeclineOpcode); + /*0x1C1*/ StoreOpcode(SMSG_PETITION_SIGN_RESULTS, "SMSG_PETITION_SIGN_RESULTS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1C2*/ StoreOpcode(MSG_PETITION_DECLINE, "MSG_PETITION_DECLINE", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandlePetitionDeclineOpcode); /*[-ZERO] Need check */ /*0x1C3*/ StoreOpcode(CMSG_OFFER_PETITION, "CMSG_OFFER_PETITION", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleOfferPetitionOpcode); /*[-ZERO] Need check */ /*0x1C4*/ StoreOpcode(CMSG_TURN_IN_PETITION, "CMSG_TURN_IN_PETITION", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleTurnInPetitionOpcode); - /*[-ZERO] Need check */ /*0x1C5*/ StoreOpcode(SMSG_TURN_IN_PETITION_RESULTS, "SMSG_TURN_IN_PETITION_RESULTS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1C5*/ StoreOpcode(SMSG_TURN_IN_PETITION_RESULTS, "SMSG_TURN_IN_PETITION_RESULTS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1C6*/ StoreOpcode(CMSG_PETITION_QUERY, "CMSG_PETITION_QUERY", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandlePetitionQueryOpcode); - /*[-ZERO] Need check */ /*0x1C7*/ StoreOpcode(SMSG_PETITION_QUERY_RESPONSE, "SMSG_PETITION_QUERY_RESPONSE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1C8*/ StoreOpcode(SMSG_FISH_NOT_HOOKED, "SMSG_FISH_NOT_HOOKED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1C9*/ StoreOpcode(SMSG_FISH_ESCAPED, "SMSG_FISH_ESCAPED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1C7*/ StoreOpcode(SMSG_PETITION_QUERY_RESPONSE, "SMSG_PETITION_QUERY_RESPONSE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1C8*/ StoreOpcode(SMSG_FISH_NOT_HOOKED, "SMSG_FISH_NOT_HOOKED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1C9*/ StoreOpcode(SMSG_FISH_ESCAPED, "SMSG_FISH_ESCAPED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1CA*/ StoreOpcode(CMSG_BUG, "CMSG_BUG", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleBugOpcode); /*0x1CB*/ StoreOpcode(SMSG_NOTIFICATION, "SMSG_NOTIFICATION", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1CC*/ StoreOpcode(CMSG_PLAYED_TIME, "CMSG_PLAYED_TIME", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandlePlayedTime); /*0x1CD*/ StoreOpcode(SMSG_PLAYED_TIME, "SMSG_PLAYED_TIME", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1CE*/ StoreOpcode(CMSG_QUERY_TIME, "CMSG_QUERY_TIME", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleQueryTimeOpcode); - /*[-ZERO] Need check */ /*0x1CF*/ StoreOpcode(SMSG_QUERY_TIME_RESPONSE, "SMSG_QUERY_TIME_RESPONSE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1D0*/ StoreOpcode(SMSG_LOG_XPGAIN, "SMSG_LOG_XPGAIN", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1CF*/ StoreOpcode(SMSG_QUERY_TIME_RESPONSE, "SMSG_QUERY_TIME_RESPONSE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1D0*/ StoreOpcode(SMSG_LOG_XPGAIN, "SMSG_LOG_XPGAIN", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1D1*/ StoreOpcode(SMSG_AURACASTLOG, "SMSG_AURACASTLOG", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x1D2*/ StoreOpcode(CMSG_RECLAIM_CORPSE, "CMSG_RECLAIM_CORPSE", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleReclaimCorpseOpcode); /*[-ZERO] Need check */ /*0x1D3*/ StoreOpcode(CMSG_WRAP_ITEM, "CMSG_WRAP_ITEM", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleWrapItemOpcode); - /*[-ZERO] Need check */ /*0x1D4*/ StoreOpcode(SMSG_LEVELUP_INFO, "SMSG_LEVELUP_INFO", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1D5*/ StoreOpcode(MSG_MINIMAP_PING, "MSG_MINIMAP_PING", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMinimapPingOpcode); - /*[-ZERO] Need check */ /*0x1D6*/ StoreOpcode(SMSG_RESISTLOG, "SMSG_RESISTLOG", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1D7*/ StoreOpcode(SMSG_ENCHANTMENTLOG, "SMSG_ENCHANTMENTLOG", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1D4*/ StoreOpcode(SMSG_LEVELUP_INFO, "SMSG_LEVELUP_INFO", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1D5*/ StoreOpcode(MSG_MINIMAP_PING, "MSG_MINIMAP_PING", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMinimapPingOpcode); + /*0x1D6*/ StoreOpcode(SMSG_RESISTLOG, "SMSG_RESISTLOG", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1D7*/ StoreOpcode(SMSG_ENCHANTMENTLOG, "SMSG_ENCHANTMENTLOG", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x1D8*/ StoreOpcode(CMSG_SET_SKILL_CHEAT, "CMSG_SET_SKILL_CHEAT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); - /*[-ZERO] Need check */ /*0x1D9*/ StoreOpcode(SMSG_START_MIRROR_TIMER, "SMSG_START_MIRROR_TIMER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1DA*/ StoreOpcode(SMSG_PAUSE_MIRROR_TIMER, "SMSG_PAUSE_MIRROR_TIMER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1DB*/ StoreOpcode(SMSG_STOP_MIRROR_TIMER, "SMSG_STOP_MIRROR_TIMER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1D9*/ StoreOpcode(SMSG_START_MIRROR_TIMER, "SMSG_START_MIRROR_TIMER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1DA*/ StoreOpcode(SMSG_PAUSE_MIRROR_TIMER, "SMSG_PAUSE_MIRROR_TIMER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1DB*/ StoreOpcode(SMSG_STOP_MIRROR_TIMER, "SMSG_STOP_MIRROR_TIMER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1DC*/ StoreOpcode(CMSG_PING, "CMSG_PING", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess); - /*[-ZERO] Need check */ /*0x1DD*/ StoreOpcode(SMSG_PONG, "SMSG_PONG", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1DE*/ StoreOpcode(SMSG_CLEAR_COOLDOWN, "SMSG_CLEAR_COOLDOWN", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1DF*/ StoreOpcode(SMSG_GAMEOBJECT_PAGETEXT, "SMSG_GAMEOBJECT_PAGETEXT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*[ZERO] To check */ /*0x1DD*/ StoreOpcode(SMSG_PONG, "SMSG_PONG", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1DE*/ StoreOpcode(SMSG_CLEAR_COOLDOWN, "SMSG_CLEAR_COOLDOWN", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1DF*/ StoreOpcode(SMSG_GAMEOBJECT_PAGETEXT, "SMSG_GAMEOBJECT_PAGETEXT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1E0*/ StoreOpcode(CMSG_SETSHEATHED, "CMSG_SETSHEATHED", STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSetSheathedOpcode); /*0x1E1*/ StoreOpcode(SMSG_COOLDOWN_CHEAT, "SMSG_COOLDOWN_CHEAT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x1E2*/ StoreOpcode(SMSG_SPELL_DELAYED, "SMSG_SPELL_DELAYED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x1E3*/ StoreOpcode(CMSG_PLAYER_MACRO_OBSOLETE, "CMSG_PLAYER_MACRO_OBSOLETE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); - /*0x1E4*/ StoreOpcode(SMSG_PLAYER_MACRO_OBSOLETE, "SMSG_PLAYER_MACRO_OBSOLETE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*[-ZERO] Need check */ /*0x1E4*/ StoreOpcode(SMSG_PLAYER_MACRO_OBSOLETE, "SMSG_PLAYER_MACRO_OBSOLETE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x1E5*/ StoreOpcode(CMSG_GHOST, "CMSG_GHOST", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*0x1E6*/ StoreOpcode(CMSG_GM_INVIS, "CMSG_GM_INVIS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*[-ZERO] Need check */ /*0x1E7*/ StoreOpcode(SMSG_INVALID_PROMOTION_CODE, "SMSG_INVALID_PROMOTION_CODE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*0x1E8*/ StoreOpcode(MSG_GM_BIND_OTHER, "MSG_GM_BIND_OTHER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); - /*0x1E9*/ StoreOpcode(MSG_GM_SUMMON, "MSG_GM_SUMMON", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); - /*[-ZERO] Need check */ /*0x1EA*/ StoreOpcode(SMSG_ITEM_TIME_UPDATE, "SMSG_ITEM_TIME_UPDATE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1EB*/ StoreOpcode(SMSG_ITEM_ENCHANT_TIME_UPDATE, "SMSG_ITEM_ENCHANT_TIME_UPDATE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*[-ZERO] Need check */ /*0x1E8*/ StoreOpcode(MSG_GM_BIND_OTHER, "MSG_GM_BIND_OTHER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); + /*[-ZERO] Need check */ /*0x1E9*/ StoreOpcode(MSG_GM_SUMMON, "MSG_GM_SUMMON", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); + /*0x1EA*/ StoreOpcode(SMSG_ITEM_TIME_UPDATE, "SMSG_ITEM_TIME_UPDATE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1EB*/ StoreOpcode(SMSG_ITEM_ENCHANT_TIME_UPDATE, "SMSG_ITEM_ENCHANT_TIME_UPDATE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x1EC*/ StoreOpcode(SMSG_AUTH_CHALLENGE, "SMSG_AUTH_CHALLENGE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x1ED*/ StoreOpcode(CMSG_AUTH_SESSION, "CMSG_AUTH_SESSION", STATUS_NEVER, PROCESS_THREADSAFE, &WorldSession::Handle_EarlyProccess); - /*0x1EE*/ StoreOpcode(SMSG_AUTH_RESPONSE, "SMSG_AUTH_RESPONSE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*0x1EF*/ StoreOpcode(MSG_GM_SHOWLABEL, "MSG_GM_SHOWLABEL", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); + StoreOpcode(SMSG_AUTH_RESPONSE, "SMSG_AUTH_RESPONSE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*[-ZERO] Need check */ /*0x1EF*/ StoreOpcode(MSG_GM_SHOWLABEL, "MSG_GM_SHOWLABEL", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*[-ZERO] Need check */ /*0x1F0*/ StoreOpcode(CMSG_PET_CAST_SPELL, "CMSG_PET_CAST_SPELL", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetCastSpellOpcode); - /*[-ZERO] Need check */ /*0x1F1*/ StoreOpcode(MSG_SAVE_GUILD_EMBLEM, "MSG_SAVE_GUILD_EMBLEM", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSaveGuildEmblemOpcode); - /*[-ZERO] Need check */ /*0x1F2*/ StoreOpcode(MSG_TABARDVENDOR_ACTIVATE, "MSG_TABARDVENDOR_ACTIVATE", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTabardVendorActivateOpcode); + /*0x1F1*/ StoreOpcode(MSG_SAVE_GUILD_EMBLEM, "MSG_SAVE_GUILD_EMBLEM", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSaveGuildEmblemOpcode); + /*0x1F2*/ StoreOpcode(MSG_TABARDVENDOR_ACTIVATE, "MSG_TABARDVENDOR_ACTIVATE", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTabardVendorActivateOpcode); /*0x1F3*/ StoreOpcode(SMSG_PLAY_SPELL_VISUAL, "SMSG_PLAY_SPELL_VISUAL", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x1F4*/ StoreOpcode(CMSG_ZONEUPDATE, "CMSG_ZONEUPDATE", STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleZoneUpdateOpcode); /*0x1F5*/ StoreOpcode(SMSG_PARTYKILLLOG, "SMSG_PARTYKILLLOG", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x1F6*/ StoreOpcode(SMSG_COMPRESSED_UPDATE_OBJECT, "SMSG_COMPRESSED_UPDATE_OBJECT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x1F7*/ StoreOpcode(SMSG_PLAY_SPELL_IMPACT, "SMSG_PLAY_SPELL_IMPACT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x1F8*/ StoreOpcode(SMSG_EXPLORATION_EXPERIENCE, "SMSG_EXPLORATION_EXPERIENCE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x1F8*/ StoreOpcode(SMSG_EXPLORATION_EXPERIENCE, "SMSG_EXPLORATION_EXPERIENCE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x1F9*/ StoreOpcode(CMSG_GM_SET_SECURITY_GROUP, "CMSG_GM_SET_SECURITY_GROUP", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*0x1FA*/ StoreOpcode(CMSG_GM_NUKE, "CMSG_GM_NUKE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*0x1FB*/ StoreOpcode(MSG_RANDOM_ROLL, "MSG_RANDOM_ROLL", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomRollOpcode); - /*[-ZERO] Need check */ /*0x1FC*/ StoreOpcode(SMSG_ENVIRONMENTALDAMAGELOG, "SMSG_ENVIRONMENTALDAMAGELOG", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*0x1FD*/ StoreOpcode(CMSG_RWHOIS_OBSOLETE, "CMSG_RWHOIS_OBSOLETE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); + /*0x1FC*/ StoreOpcode(SMSG_ENVIRONMENTALDAMAGELOG, "SMSG_ENVIRONMENTALDAMAGELOG", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*[-ZERO] Need check */ /*0x1FD*/ StoreOpcode(CMSG_RWHOIS_OBSOLETE, "CMSG_RWHOIS_OBSOLETE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*0x1FE*/ StoreOpcode(SMSG_RWHOIS, "SMSG_RWHOIS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x201*/ StoreOpcode(CMSG_UNLEARN_SPELL, "CMSG_UNLEARN_SPELL", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*[-ZERO] Need check */ /*0x202*/ StoreOpcode(CMSG_UNLEARN_SKILL, "CMSG_UNLEARN_SKILL", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnlearnSkillOpcode); - /*[-ZERO] Need check */ /*0x203*/ StoreOpcode(SMSG_REMOVED_SPELL, "SMSG_REMOVED_SPELL", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x203*/ StoreOpcode(SMSG_REMOVED_SPELL, "SMSG_REMOVED_SPELL", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x204*/ StoreOpcode(CMSG_DECHARGE, "CMSG_DECHARGE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*[-ZERO] Need check */ /*0x205*/ StoreOpcode(CMSG_GMTICKET_CREATE, "CMSG_GMTICKET_CREATE", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketCreateOpcode); - /*[-ZERO] Need check */ /*0x206*/ StoreOpcode(SMSG_GMTICKET_CREATE, "SMSG_GMTICKET_CREATE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x206*/ StoreOpcode(SMSG_GMTICKET_CREATE, "SMSG_GMTICKET_CREATE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x207*/ StoreOpcode(CMSG_GMTICKET_UPDATETEXT, "CMSG_GMTICKET_UPDATETEXT", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketUpdateTextOpcode); - /*[-ZERO] Need check */ /*0x208*/ StoreOpcode(SMSG_GMTICKET_UPDATETEXT, "SMSG_GMTICKET_UPDATETEXT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x208*/ StoreOpcode(SMSG_GMTICKET_UPDATETEXT, "SMSG_GMTICKET_UPDATETEXT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x209*/ StoreOpcode(SMSG_ACCOUNT_DATA_TIMES, "SMSG_ACCOUNT_DATA_TIMES", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x20A*/ StoreOpcode(CMSG_REQUEST_ACCOUNT_DATA, "CMSG_REQUEST_ACCOUNT_DATA", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestAccountData); /*[-ZERO] Need check */ /*0x20B*/ StoreOpcode(CMSG_UPDATE_ACCOUNT_DATA, "CMSG_UPDATE_ACCOUNT_DATA", STATUS_LOGGEDIN_OR_RECENTLY_LOGGEDOUT, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateAccountData); - /*[-ZERO] Need check */ /*0x20C*/ StoreOpcode(SMSG_UPDATE_ACCOUNT_DATA, "SMSG_UPDATE_ACCOUNT_DATA", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x20D*/ StoreOpcode(SMSG_CLEAR_FAR_SIGHT_IMMEDIATE, "SMSG_CLEAR_FAR_SIGHT_IMMEDIATE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x20C*/ StoreOpcode(SMSG_UPDATE_ACCOUNT_DATA, "SMSG_UPDATE_ACCOUNT_DATA", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x20D*/ StoreOpcode(SMSG_CLEAR_FAR_SIGHT_IMMEDIATE, "SMSG_CLEAR_FAR_SIGHT_IMMEDIATE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x20E*/ StoreOpcode(SMSG_POWERGAINLOG_OBSOLETE, "SMSG_POWERGAINLOG_OBSOLETE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x20F*/ StoreOpcode(CMSG_GM_TEACH, "CMSG_GM_TEACH", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*0x210*/ StoreOpcode(CMSG_GM_CREATE_ITEM_TARGET, "CMSG_GM_CREATE_ITEM_TARGET", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); - /*[-ZERO] Need check */ /*0x211*/ StoreOpcode(CMSG_GMTICKET_GETTICKET, "CMSG_GMTICKET_GETTICKET", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketGetTicketOpcode); - /*[-ZERO] Need check */ /*0x212*/ StoreOpcode(SMSG_GMTICKET_GETTICKET, "SMSG_GMTICKET_GETTICKET", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x211*/ StoreOpcode(CMSG_GMTICKET_GETTICKET, "CMSG_GMTICKET_GETTICKET", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketGetTicketOpcode); + /*0x212*/ StoreOpcode(SMSG_GMTICKET_GETTICKET, "SMSG_GMTICKET_GETTICKET", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x213*/ StoreOpcode(CMSG_UNLEARN_TALENTS, "CMSG_UNLEARN_TALENTS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*[-ZERO] Need check */ /*0x214*/ StoreOpcode(SMSG_GAMEOBJECT_SPAWN_ANIM_OBSOLETE, "SMSG_GAMEOBJECT_SPAWN_ANIM_OBSOLETE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x215*/ StoreOpcode(SMSG_GAMEOBJECT_DESPAWN_ANIM, "SMSG_GAMEOBJECT_DESPAWN_ANIM", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x215*/ StoreOpcode(SMSG_GAMEOBJECT_DESPAWN_ANIM, "SMSG_GAMEOBJECT_DESPAWN_ANIM", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x216*/ StoreOpcode(MSG_CORPSE_QUERY, "MSG_CORPSE_QUERY", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleCorpseQueryOpcode); /*[-ZERO] Need check */ /*0x217*/ StoreOpcode(CMSG_GMTICKET_DELETETICKET, "CMSG_GMTICKET_DELETETICKET", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketDeleteTicketOpcode); - /*[-ZERO] Need check */ /*0x218*/ StoreOpcode(SMSG_GMTICKET_DELETETICKET, "SMSG_GMTICKET_DELETETICKET", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x219*/ StoreOpcode(SMSG_CHAT_WRONG_FACTION, "SMSG_CHAT_WRONG_FACTION", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x218*/ StoreOpcode(SMSG_GMTICKET_DELETETICKET, "SMSG_GMTICKET_DELETETICKET", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x219*/ StoreOpcode(SMSG_CHAT_WRONG_FACTION, "SMSG_CHAT_WRONG_FACTION", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x21A*/ StoreOpcode(CMSG_GMTICKET_SYSTEMSTATUS, "CMSG_GMTICKET_SYSTEMSTATUS", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGMTicketSystemStatusOpcode); - /*[-ZERO] Need check */ /*0x21B*/ StoreOpcode(SMSG_GMTICKET_SYSTEMSTATUS, "SMSG_GMTICKET_SYSTEMSTATUS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x21B*/ StoreOpcode(SMSG_GMTICKET_SYSTEMSTATUS, "SMSG_GMTICKET_SYSTEMSTATUS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x21C*/ StoreOpcode(CMSG_SPIRIT_HEALER_ACTIVATE, "CMSG_SPIRIT_HEALER_ACTIVATE", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSpiritHealerActivateOpcode); /*0x21D*/ StoreOpcode(CMSG_SET_STAT_CHEAT, "CMSG_SET_STAT_CHEAT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); - /*[-ZERO] Need check */ /*0x21E*/ StoreOpcode(SMSG_SET_REST_START, "SMSG_SET_REST_START", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x21E*/ StoreOpcode(SMSG_SET_REST_START, "SMSG_SET_REST_START", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x21F*/ StoreOpcode(CMSG_SKILL_BUY_STEP, "CMSG_SKILL_BUY_STEP", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*0x220*/ StoreOpcode(CMSG_SKILL_BUY_RANK, "CMSG_SKILL_BUY_RANK", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*0x221*/ StoreOpcode(CMSG_XP_CHEAT, "CMSG_XP_CHEAT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); - /*[-ZERO] Need check */ /*0x222*/ StoreOpcode(SMSG_SPIRIT_HEALER_CONFIRM, "SMSG_SPIRIT_HEALER_CONFIRM", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x222*/ StoreOpcode(SMSG_SPIRIT_HEALER_CONFIRM, "SMSG_SPIRIT_HEALER_CONFIRM", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x223*/ StoreOpcode(CMSG_CHARACTER_POINT_CHEAT, "CMSG_CHARACTER_POINT_CHEAT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); - /*[-ZERO] Need check */ /*0x224*/ StoreOpcode(SMSG_GOSSIP_POI, "SMSG_GOSSIP_POI", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x224*/ StoreOpcode(SMSG_GOSSIP_POI, "SMSG_GOSSIP_POI", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x225*/ StoreOpcode(CMSG_CHAT_IGNORED, "CMSG_CHAT_IGNORED", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleChatIgnoredOpcode); /*0x226*/ StoreOpcode(CMSG_GM_VISION, "CMSG_GM_VISION", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*0x227*/ StoreOpcode(CMSG_SERVER_COMMAND, "CMSG_SERVER_COMMAND", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -618,16 +618,16 @@ void Opcodes::BuildOpcodeList() /*0x22D*/ StoreOpcode(CMSG_GM_FREEZE, "CMSG_GM_FREEZE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*0x22E*/ StoreOpcode(CMSG_GM_UBERINVIS, "CMSG_GM_UBERINVIS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*0x22F*/ StoreOpcode(CMSG_GM_REQUEST_PLAYER_INFO, "CMSG_GM_REQUEST_PLAYER_INFO", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); - /*0x230*/ StoreOpcode(SMSG_GM_PLAYER_INFO, "SMSG_GM_PLAYER_INFO", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); + /*[-ZERO] Need check */ /*0x230*/ StoreOpcode(SMSG_GM_PLAYER_INFO, "SMSG_GM_PLAYER_INFO", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*[-ZERO] Need check */ /*0x231*/ StoreOpcode(CMSG_GUILD_RANK, "CMSG_GUILD_RANK", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRankOpcode); /*[-ZERO] Need check */ /*0x232*/ StoreOpcode(CMSG_GUILD_ADD_RANK, "CMSG_GUILD_ADD_RANK", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildAddRankOpcode); /*[-ZERO] Need check */ /*0x233*/ StoreOpcode(CMSG_GUILD_DEL_RANK, "CMSG_GUILD_DEL_RANK", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildDelRankOpcode); /*[-ZERO] Need check */ /*0x234*/ StoreOpcode(CMSG_GUILD_SET_PUBLIC_NOTE, "CMSG_GUILD_SET_PUBLIC_NOTE", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetPublicNoteOpcode); /*[-ZERO] Need check */ /*0x235*/ StoreOpcode(CMSG_GUILD_SET_OFFICER_NOTE, "CMSG_GUILD_SET_OFFICER_NOTE", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetOfficerNoteOpcode); - /*[-ZERO] Need check */ /*0x236*/ StoreOpcode(SMSG_LOGIN_VERIFY_WORLD, "SMSG_LOGIN_VERIFY_WORLD", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x236*/ StoreOpcode(SMSG_LOGIN_VERIFY_WORLD, "SMSG_LOGIN_VERIFY_WORLD", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x237*/ StoreOpcode(CMSG_CLEAR_EXPLORATION, "CMSG_CLEAR_EXPLORATION", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL); /*[-ZERO] Need check */ /*0x238*/ StoreOpcode(CMSG_SEND_MAIL, "CMSG_SEND_MAIL", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSendMail); - /*[-ZERO] Need check */ /*0x239*/ StoreOpcode(SMSG_SEND_MAIL_RESULT, "SMSG_SEND_MAIL_RESULT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x239*/ StoreOpcode(SMSG_SEND_MAIL_RESULT, "SMSG_SEND_MAIL_RESULT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*0x23A*/ StoreOpcode(CMSG_GET_MAIL_LIST, "CMSG_GET_MAIL_LIST", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGetMailList); /*0x23B*/ StoreOpcode(SMSG_MAIL_LIST_RESULT, "SMSG_MAIL_LIST_RESULT", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x23C*/ StoreOpcode(CMSG_BATTLEFIELD_LIST, "CMSG_BATTLEFIELD_LIST", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlefieldListOpcode); diff --git a/src/game/Server/Opcodes.h b/src/game/Server/Opcodes.h index ab86560e..4cb08d31 100644 --- a/src/game/Server/Opcodes.h +++ b/src/game/Server/Opcodes.h @@ -521,7 +521,7 @@ enum OpcodesList CMSG_WRAP_ITEM = 0x1D3, SMSG_LEVELUP_INFO = 0x1D4, MSG_MINIMAP_PING = 0x1D5, - SMSG_RESISTLOG = 0x1D6, + SMSG_RESISTLOG = 0x1D6,// GUID, GUID, int32, float, float, int32, int32 SMSG_ENCHANTMENTLOG = 0x1D7, CMSG_SET_SKILL_CHEAT = 0x1D8, SMSG_START_MIRROR_TIMER = 0x1D9, diff --git a/src/game/Server/SharedDefines.h b/src/game/Server/SharedDefines.h index ecb58583..d2ea0615 100644 --- a/src/game/Server/SharedDefines.h +++ b/src/game/Server/SharedDefines.h @@ -2454,6 +2454,7 @@ enum MailResponseResult MAIL_ERR_INTERNAL_ERROR = 6, MAIL_ERR_DISABLED_FOR_TRIAL_ACC = 14, MAIL_ERR_RECIPIENT_CAP_REACHED = 15, + //in SMSG_SEND_MAIL_RESULT, 7-13 and 16+: "Mail database error" MAIL_ERR_CANT_SEND_WRAPPED_COD = 16, MAIL_ERR_MAIL_AND_CHAT_SUSPENDED = 17, MAIL_ERR_TOO_MANY_ATTACHMENTS = 18, diff --git a/src/game/Server/WorldSession.cpp b/src/game/Server/WorldSession.cpp index 7dac04d5..cbf9737a 100644 --- a/src/game/Server/WorldSession.cpp +++ b/src/game/Server/WorldSession.cpp @@ -698,10 +698,10 @@ void WorldSession::SendAuthWaitQue(uint32 position) } else { - WorldPacket packet(SMSG_AUTH_RESPONSE, 6); + WorldPacket packet(SMSG_AUTH_RESPONSE, 1 + 4); packet << uint8(AUTH_WAIT_QUEUE); packet << uint32(position); - packet << uint8(0); // unk + //packet << uint8(0); // [-ZERO] unk SendPacket(&packet); } } diff --git a/src/game/WorldHandlers/GuildHandler.cpp b/src/game/WorldHandlers/GuildHandler.cpp index 5720c2bf..795779fb 100644 --- a/src/game/WorldHandlers/GuildHandler.cpp +++ b/src/game/WorldHandlers/GuildHandler.cpp @@ -733,8 +733,8 @@ void WorldSession::HandleSaveGuildEmblemOpcode(WorldPacket& recvPacket) Creature* pCreature = GetPlayer()->GetNPCIfCanInteractWith(vendorGuid, UNIT_NPC_FLAG_TABARDDESIGNER); if (!pCreature) { - //"That's not an emblem vendor!" - SendSaveGuildEmblem(ERR_GUILDEMBLEM_INVALIDVENDOR); + //[-ZERO] fails silently, not "That's not an emblem vendor!" + SendSaveGuildEmblem(ERR_GUILDEMBLEM_FAIL_NO_MESSAGE); DEBUG_LOG("WORLD: HandleSaveGuildEmblemOpcode - %s not found or you can't interact with him.", vendorGuid.GetString().c_str()); return; } diff --git a/src/game/WorldHandlers/ItemHandler.cpp b/src/game/WorldHandlers/ItemHandler.cpp index 7f7df3a4..5050824a 100644 --- a/src/game/WorldHandlers/ItemHandler.cpp +++ b/src/game/WorldHandlers/ItemHandler.cpp @@ -1046,8 +1046,14 @@ void WorldSession::HandleBuyBankSlotOpcode(WorldPacket& recvPacket) ObjectGuid guid; recvPacket >> guid; + WorldPacket data(SMSG_BUY_BANK_SLOT_RESULT, 4); + if (!CheckBanker(guid)) - { return; } + { + data << uint32(ERR_BANKSLOT_NOTBANKER); + SendPacket(&data); + return; + } uint32 slot = _player->GetBankBagSlotCount(); @@ -1058,8 +1064,6 @@ void WorldSession::HandleBuyBankSlotOpcode(WorldPacket& recvPacket) BankBagSlotPricesEntry const* slotEntry = sBankBagSlotPricesStore.LookupEntry(slot); - WorldPacket data(SMSG_BUY_BANK_SLOT_RESULT, 4); - if (!slotEntry) { data << uint32(ERR_BANKSLOT_FAILED_TOO_MANY); @@ -1078,9 +1082,6 @@ void WorldSession::HandleBuyBankSlotOpcode(WorldPacket& recvPacket) _player->SetBankBagSlotCount(slot); _player->ModifyMoney(-int32(price)); - - data << uint32(ERR_BANKSLOT_OK); - SendPacket(&data); } void WorldSession::HandleAutoBankItemOpcode(WorldPacket& recvPacket) diff --git a/src/game/WorldHandlers/MailHandler.cpp b/src/game/WorldHandlers/MailHandler.cpp index d922684d..a566eb5d 100644 --- a/src/game/WorldHandlers/MailHandler.cpp +++ b/src/game/WorldHandlers/MailHandler.cpp @@ -591,20 +591,23 @@ void WorldSession::HandleGetMailList(WorldPacket& recv_data) // 1.12.1 can have only single item Item* item = (*itr)->items.size() > 0 ? _player->GetMItem((*itr)->items[0].item_guid) : NULL; - data << uint32(item ? item->GetEntry() : 0); // entry - // permanent enchantment - data << uint32(item ? item->GetEnchantmentId((EnchantmentSlot)PERM_ENCHANTMENT_SLOT) : 0); - // can be negative - data << uint32(item ? item->GetItemRandomPropertyId() : 0); - // unk - data << uint32(item ? item->GetItemSuffixFactor() : 0); - // stack count - data << (uint8)(item ? item->GetCount() : 0); - data << uint32(item ? item->GetSpellCharges() : 0); // charges - // durability - data << uint32(item ? item->GetUInt32Value(ITEM_FIELD_MAXDURABILITY) : 0); - // durability - data << uint32(item ? item->GetUInt32Value(ITEM_FIELD_DURABILITY) : 0); + + if (item) + { + data << uint32(item->GetEntry()); + data << uint32(item->GetEnchantmentId((EnchantmentSlot)PERM_ENCHANTMENT_SLOT)); // permanent enchantment + data << uint32(item->GetItemRandomPropertyId()); // can be negative + data << uint32(item->GetItemSuffixFactor()); // unk + data << uint8(item->GetCount()); // stack count + data << uint32(item->GetSpellCharges()); // charges + data << uint32(item->GetUInt32Value(ITEM_FIELD_MAXDURABILITY)); // durability max + data << uint32(item->GetUInt32Value(ITEM_FIELD_DURABILITY)); // durability current + } + else + { + data << uint32(0) << uint32(0) << uint32(0) << uint32(0) << uint8(0) << uint32(0) << uint32(0) << uint32(0); + } + data << uint32((*itr)->money); // copper data << uint32((*itr)->COD); // Cash on delivery data << uint32((*itr)->checked); // flags diff --git a/src/game/WorldHandlers/NPCHandler.cpp b/src/game/WorldHandlers/NPCHandler.cpp index d0de60fb..941ca55d 100644 --- a/src/game/WorldHandlers/NPCHandler.cpp +++ b/src/game/WorldHandlers/NPCHandler.cpp @@ -552,11 +552,6 @@ void WorldSession::SendBindPoint(Creature* npc) // send spell for bind 3286 bind magic npc->CastSpell(_player, 3286, true); // Bind - WorldPacket data(SMSG_TRAINER_BUY_SUCCEEDED, (8 + 4)); - data << npc->GetObjectGuid(); - data << uint32(3286); // Bind - SendPacket(&data); - _player->PlayerTalkClass->CloseGossip(); } diff --git a/src/game/WorldHandlers/PetitionsHandler.cpp b/src/game/WorldHandlers/PetitionsHandler.cpp index f2562f10..f8b090a1 100644 --- a/src/game/WorldHandlers/PetitionsHandler.cpp +++ b/src/game/WorldHandlers/PetitionsHandler.cpp @@ -259,7 +259,7 @@ void WorldSession::SendPetitionQueryOpcode(ObjectGuid petitionguid) data << uint32(petitionLowGuid); // guild/team guid (in mangos always same as GUID_LOPART(petition guid) data << ObjectGuid(ownerGuid); // charter owner guid data << name; // name (guild/arena team) - data << uint8(0); // 1 + data << uint8(0); // CString data << uint32(1); data << uint32(9); data << uint32(9); // bypass client - side limitation, a different value is needed here for each petition @@ -267,11 +267,13 @@ void WorldSession::SendPetitionQueryOpcode(ObjectGuid petitionguid) data << uint32(0); // 6 data << uint32(0); // 7 data << uint32(0); // 8 - data << uint16(0); // 9 2 bytes field - data << uint32(0); // 10 + data << uint32(0); // 9 + data << uint16(0); // 10 2 bytes field data << uint32(0); // 11 - data << uint32(0); // 13 count of next strings? - data << uint32(0); // 14 + data << uint32(0); // 12 + data << uint32(0); // 13 count of next strings; if 0, no data for strings, only 1 uint32 below + // for (int i=0; iGetObjectGuid()) + if (ownerGuid == _player->GetObjectGuid()) // TODO here send SMSG_PETITION_SIGN_RESULTS with PETITION_SIGN_CANT_SIGN_OWN { return; } // not let enemies sign guild charter @@ -356,7 +358,7 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket& recv_data) return; } - if (_player->GetGuildId()) + if (_player->GetGuildId()) // TODO here, and maybe below, send SMSG_PETITION_SIGN_RESULTS with PETITION_SIGN_ALREADY_IN_GUILD { SendGuildCommandResult(GUILD_INVITE_S, _player->GetName(), ERR_ALREADY_IN_GUILD_S); return; @@ -485,7 +487,7 @@ void WorldSession::HandleOfferPetitionOpcode(WorldPacket& recv_data) { signs = (uint8)result->GetRowCount(); } /// Send response - WorldPacket data(SMSG_PETITION_SHOW_SIGNATURES, (8 + 8 + 4 + signs + signs * 12)); + WorldPacket data(SMSG_PETITION_SHOW_SIGNATURES, (8 + 8 + 4 + 1 + signs * 12)); data << ObjectGuid(petitionGuid); // petition guid data << ObjectGuid(_player->GetObjectGuid()); // owner guid data << uint32(petitionGuid.GetCounter()); // guild guid (in mangos always same as low part of petition guid) @@ -539,7 +541,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket& recv_data) if (_player->GetGuildId()) { WorldPacket data(SMSG_TURN_IN_PETITION_RESULTS, 4); - data << uint32(PETITION_TURN_ALREADY_IN_GUILD); // already in guild + data << uint32(PETITION_SIGN_ALREADY_IN_GUILD); // already in guild _player->GetSession()->SendPacket(&data); return; } @@ -555,7 +557,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket& recv_data) if (signs < count) { WorldPacket data(SMSG_TURN_IN_PETITION_RESULTS, 4); - data << uint32(PETITION_TURN_NEED_MORE_SIGNATURES); // need more signatures... + data << uint32(PETITION_SIGN_NEED_MORE); // need more signatures... SendPacket(&data); delete result; return; @@ -616,7 +618,7 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket& recv_data) DEBUG_LOG("TURN IN PETITION %s", petitionGuid.GetString().c_str()); WorldPacket data(SMSG_TURN_IN_PETITION_RESULTS, 4); - data << uint32(PETITION_TURN_OK); + data << uint32(PETITION_SIGN_OK); SendPacket(&data); } @@ -648,21 +650,20 @@ void WorldSession::SendPetitionShowList(ObjectGuid guid) WorldPacket data(SMSG_PETITION_SHOWLIST, 8 + 1 + 4 * 6); data << ObjectGuid(guid); // npc guid - data << count; // count + data << count; // count; allowed values 1-10 data << uint32(1); // index data << uint32(GUILD_CHARTER); // charter entry data << uint32(CHARTER_DISPLAY_ID); // charter display id data << uint32(GUILD_CHARTER_COST); // charter cost data << uint32(1); // unknown - data << uint32(9); // required signs? + //data << uint32(9); // [-ZERO] required signs? // for(uint8 i = 0; i < count; ++i) //{ // data << uint32(i); // index // data << uint32(GUILD_CHARTER); // charter entry // data << uint32(CHARTER_DISPLAY_ID); // charter display id // data << uint32(GUILD_CHARTER_COST+i); // charter cost - // data << uint32(0); // unknown - // data << uint32(9); // required signs? + // data << uint32(1); // unknown //} SendPacket(&data); DEBUG_LOG("Sent SMSG_PETITION_SHOWLIST");