Core/Quest: Fix SMSG_QUESTGIVER_STATUS(_MULTIPLE)

Closes #4437
This commit is contained in:
weclub
2011-12-22 15:00:06 +00:00
committed by Nay
parent 3310bd0c40
commit 304fa1d53f
6 changed files with 29 additions and 27 deletions

View File

@@ -284,11 +284,11 @@ void PlayerMenu::SendQuestGiverQuestList(QEmote eEmote, const std::string& Title
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent SMSG_QUESTGIVER_QUEST_LIST NPC Guid=%u", GUID_LOPART(npcGUID));
}
void PlayerMenu::SendQuestGiverStatus(uint8 questStatus, uint64 npcGUID) const
void PlayerMenu::SendQuestGiverStatus(uint32 questStatus, uint64 npcGUID) const
{
WorldPacket data(SMSG_QUESTGIVER_STATUS, 9);
WorldPacket data(SMSG_QUESTGIVER_STATUS, 8 + 4);
data << uint64(npcGUID);
data << uint8(questStatus);
data << uint32(questStatus);
_session->SendPacket(&data);
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Sent SMSG_QUESTGIVER_STATUS NPC Guid=%u, status=%u", GUID_LOPART(npcGUID), questStatus);

View File

@@ -267,7 +267,7 @@ class PlayerMenu
/*********************************************************/
/*** QUEST SYSTEM ***/
/*********************************************************/
void SendQuestGiverStatus(uint8 questStatus, uint64 npcGUID) const;
void SendQuestGiverStatus(uint32 questStatus, uint64 npcGUID) const;
void SendQuestGiverQuestList(QEmote eEmote, const std::string& Title, uint64 npcGUID);

View File

@@ -109,17 +109,18 @@ enum QuestStatus
enum __QuestGiverStatus
{
DIALOG_STATUS_NONE = 0,
DIALOG_STATUS_UNAVAILABLE = 1,
DIALOG_STATUS_LOW_LEVEL_AVAILABLE = 2,
DIALOG_STATUS_LOW_LEVEL_REWARD_REP = 3,
DIALOG_STATUS_LOW_LEVEL_AVAILABLE_REP = 4,
DIALOG_STATUS_INCOMPLETE = 5,
DIALOG_STATUS_REWARD_REP = 6,
DIALOG_STATUS_AVAILABLE_REP = 7,
DIALOG_STATUS_AVAILABLE = 8,
DIALOG_STATUS_REWARD2 = 9, // no yellow dot on minimap
DIALOG_STATUS_REWARD = 10 // yellow dot on minimap
DIALOG_STATUS_NONE = 0x000,
DIALOG_STATUS_UNK = 0x001,
DIALOG_STATUS_UNAVAILABLE = 0x002,
DIALOG_STATUS_LOW_LEVEL_AVAILABLE = 0x004,
DIALOG_STATUS_LOW_LEVEL_REWARD_REP = 0x008,
DIALOG_STATUS_LOW_LEVEL_AVAILABLE_REP = 0x010,
DIALOG_STATUS_INCOMPLETE = 0x020,
DIALOG_STATUS_REWARD_REP = 0x040,
DIALOG_STATUS_AVAILABLE_REP = 0x080,
DIALOG_STATUS_AVAILABLE = 0x100,
DIALOG_STATUS_REWARD2 = 0x200, // no yellow dot on minimap
DIALOG_STATUS_REWARD = 0x400 // yellow dot on minimap
};
enum __QuestFlags

View File

@@ -37,8 +37,8 @@ void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPacket & recv_data)
{
uint64 guid;
recv_data >> guid;
uint8 questStatus = DIALOG_STATUS_NONE;
uint8 defstatus = DIALOG_STATUS_NONE;
uint32 questStatus = DIALOG_STATUS_NONE;
uint32 defstatus = DIALOG_STATUS_NONE;
Object* questgiver = ObjectAccessor::GetObjectByTypeMask(*_player, guid, TYPEMASK_UNIT|TYPEMASK_GAMEOBJECT);
if (!questgiver)
@@ -730,13 +730,13 @@ void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPacket& /*recvPacket
uint32 count = 0;
WorldPacket data(SMSG_QUESTGIVER_STATUS_MULTIPLE, 4);
WorldPacket data(SMSG_QUESTGIVER_STATUS_MULTIPLE, 4 + 8 + 4);
data << uint32(count); // placeholder
for (Player::ClientGUIDs::const_iterator itr = _player->m_clientGUIDs.begin(); itr != _player->m_clientGUIDs.end(); ++itr)
{
uint8 questStatus = DIALOG_STATUS_NONE;
uint8 defstatus = DIALOG_STATUS_NONE;
uint32 questStatus = DIALOG_STATUS_NONE;
uint32 defstatus = DIALOG_STATUS_NONE;
if (IS_CRE_OR_VEH_OR_PET_GUID(*itr))
{
@@ -751,7 +751,7 @@ void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPacket& /*recvPacket
questStatus = getDialogStatus(_player, questgiver, defstatus);
data << uint64(questgiver->GetGUID());
data << uint8(questStatus);
data << uint32(questStatus);
++count;
}
else if (IS_GAMEOBJECT_GUID(*itr))
@@ -766,7 +766,7 @@ void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPacket& /*recvPacket
questStatus = getDialogStatus(_player, questgiver, defstatus);
data << uint64(questgiver->GetGUID());
data << uint8(questStatus);
data << uint32(questStatus);
++count;
}
}

View File

@@ -449,7 +449,7 @@ void InitOpcodes()
DEFINE_OPCODE_HANDLER(SMSG_NPC_TEXT_UPDATE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(SMSG_NPC_WONT_TALK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(CMSG_QUESTGIVER_STATUS_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverStatusQueryOpcode);
//DEFINE_OPCODE_HANDLER(SMSG_QUESTGIVER_STATUS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_QUESTGIVER_STATUS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(CMSG_QUESTGIVER_HELLO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverHelloOpcode );
//DEFINE_OPCODE_HANDLER(SMSG_QUESTGIVER_QUEST_LIST, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(CMSG_QUESTGIVER_QUERY_QUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverQueryQuestOpcode);
@@ -1110,7 +1110,7 @@ void InitOpcodes()
//DEFINE_OPCODE_HANDLER(CMSG_EXPIRE_RAID_INSTANCE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
//DEFINE_OPCODE_HANDLER(CMSG_NO_SPELL_VARIANCE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverStatusMultipleQuery);
//DEFINE_OPCODE_HANDLER(SMSG_QUESTGIVER_STATUS_MULTIPLE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_QUESTGIVER_STATUS_MULTIPLE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(CMSG_SET_PLAYER_DECLINED_NAMES, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetPlayerDeclinedNames );
//DEFINE_OPCODE_HANDLER(SMSG_SET_PLAYER_DECLINED_NAMES_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(CMSG_QUERY_SERVER_BUCK_DATA, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );

View File

@@ -61,6 +61,7 @@ enum Opcodes
CMSG_AUCTION_REMOVE_ITEM = 0xCEC3,
CMSG_AUCTION_SELL_ITEM = 0xCE6,
CMSG_AUTH_SESSION = 0x1019,
CMSG_AUTOBANK_ITEM = 0x8C56,
CMSG_AUTOEQUIP_GROUND_ITEM = 0x00,
CMSG_AUTOEQUIP_ITEM = 0x8E66,
CMSG_AUTOEQUIP_ITEM_SLOT = 0x00,
@@ -77,7 +78,7 @@ enum Opcodes
MSG_BATTLEGROUND_PLAYER_POSITIONS = 0x00,
CMSG_BATTLEMASTER_JOIN_ARENA = 0x00,
CMSG_BEGIN_TRADE = 0x00,
CMSG_BINDER_ACTIVATE = 0x00,
CMSG_BINDER_ACTIVATE = 0x58FB,
CMSG_BOT_DETECTED2 = 0x00,
CMSG_BUG = 0x1A77,
CMSG_BUSY_TRADE = 0x00,
@@ -343,7 +344,7 @@ enum Opcodes
CMSG_QUESTGIVER_CANCEL = 0xC86A,
CMSG_QUESTGIVER_CHOOSE_REWARD = 0x18F3,
CMSG_QUESTGIVER_COMPLETE_QUEST = 0xCCE3,
CMSG_QUESTGIVER_HELLO = 0x00,
CMSG_QUESTGIVER_HELLO = 0xC86A,
CMSG_QUESTGIVER_QUERY_QUEST = 0x8CE7,
CMSG_QUESTGIVER_QUEST_AUTOLAUNCH = 0x00,
CMSG_QUESTGIVER_REQUEST_REWARD = 0xD8E7,
@@ -770,7 +771,7 @@ enum Opcodes
SMSG_ITEM_TEXT_QUERY_RESPONSE = 0x00,
SMSG_ITEM_TIME_UPDATE = 0x00,
SMSG_JOINED_BATTLEGROUND_QUEUE = 0x00,
SMSG_LEARNED_DANCE_MOVES = 0x00,
SMSG_LEARNED_DANCE_MOVES = 0xE52,
SMSG_LEARNED_SPELL = 0x00,
SMSG_LEVELUP_INFO = 0x00,
SMSG_LFG_DISABLED = 0x00,