Implemented achievement inspection

This commit is contained in:
arrai 2008-10-29 21:44:55 +01:00
parent a1d83ebc6f
commit 2af3c01a23
4 changed files with 22 additions and 3 deletions

View file

@ -228,7 +228,7 @@ void AchievementMgr::SendAllAchievementData()
void AchievementMgr::SendRespondInspectAchievements(Player* player)
{
// since we don't know the exact size of the packed GUIDs this is just an approximation
WorldPacket data(SMSG_ALL_ACHIEVEMENT_DATA,4+4*2+m_completedAchievements.size()*4*2+m_completedAchievements.size()*7*4);
WorldPacket data(SMSG_RESPOND_INSPECT_ACHIEVEMENTS, 4+4*2+m_completedAchievements.size()*4*2+m_completedAchievements.size()*7*4);
data.append(GetPlayer()->GetPackGUID());
BuildAllDataPacket(&data);
player->GetSession()->SendPacket(&data);
@ -245,6 +245,7 @@ void AchievementMgr::BuildAllDataPacket(WorldPacket *data)
*data << uint32(secsToTimeBitFields(iter->second));
}
*data << int32(-1);
for(CriteriaProgressMap::iterator iter = m_criteriaProgress.begin(); iter!=m_criteriaProgress.end(); ++iter)
{
*data << uint32(iter->first);
@ -255,6 +256,7 @@ void AchievementMgr::BuildAllDataPacket(WorldPacket *data)
*data << uint32(0);
*data << uint32(0);
}
*data << int32(-1);
}

View file

@ -40,6 +40,7 @@
#include "SpellAuras.h"
#include "Pet.h"
#include "SocialMgr.h"
#include "Tools.h"
void WorldSession::HandleRepopRequestOpcode( WorldPacket & /*recv_data*/ )
{
@ -1850,3 +1851,18 @@ void WorldSession::HandleSpellClick( WorldPacket & recv_data )
_player->SetUInt64Value(UNIT_FIELD_CHARM, guid);
_player->SetUInt64Value(PLAYER_FARSIGHT, guid);
}
void WorldSession::HandleInspectAchievements( WorldPacket & recv_data )
{
sLog.outString("WorldSession::HandleInspectAchievements");
uint64 guid;
if(!readGUID(recv_data, guid))
return;
Player *player = objmgr.GetPlayer(guid);
if(!player)
return;
player->GetAchievementMgr().SendRespondInspectAchievements(_player);
}

View file

@ -1157,7 +1157,7 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] =
/*0x468*/ { "SMSG_ACHIEVEMENT_EARNED", STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x469*/ { "SMSG_DYNAMIC_DROP_ROLL_RESULT", STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x46A*/ { "SMSG_CRITERIA_UPDATE", STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x46B*/ { "CMSG_QUERY_INSPECT_ACHIEVEMENTS", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x46B*/ { "CMSG_QUERY_INSPECT_ACHIEVEMENTS", STATUS_LOGGEDIN, &WorldSession::HandleInspectAchievements },
/*0x46C*/ { "SMSG_RESPOND_INSPECT_ACHIEVEMENTS",STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x46D*/ { "CMSG_DISMISS_CONTROLLED_VEHICLE", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x46E*/ { "CMSG_COMPLETE_ACHIEVEMENT_CHEAT", STATUS_NEVER, &WorldSession::Handle_NULL },

View file

@ -654,6 +654,7 @@ class MANGOS_DLL_SPEC WorldSession
void HandleSpellClick(WorldPacket& recv_data);
void HandleAlterAppearance(WorldPacket& recv_data);
void HandleRemoveGlyph(WorldPacket& recv_data);
void HandleInspectAchievements(WorldPacket& recv_data);
private:
// private trade methods
void moveItems(Item* myItems[], Item* hisItems[]);