Fixed client crash at raid target icon update.

Some other updates.
This commit is contained in:
tomrus88 2010-02-07 00:27:18 +03:00
parent ceca56cf69
commit 0ef8305ebb
5 changed files with 13 additions and 9 deletions

View file

@ -908,7 +908,7 @@ void Group::CountTheRoll(Rolls::iterator rollI, uint32 NumberOfPlayers)
delete roll;
}
void Group::SetTargetIcon(uint8 id, uint64 guid)
void Group::SetTargetIcon(uint8 id, uint64 whoGuid, uint64 targetGuid)
{
if(id >= TARGETICONCOUNT)
return;
@ -917,12 +917,13 @@ void Group::SetTargetIcon(uint8 id, uint64 guid)
if( guid != 0 )
for(int i = 0; i < TARGETICONCOUNT; ++i)
if( m_targetIcons[i] == guid )
SetTargetIcon(i, 0);
SetTargetIcon(i, 0, 0);
m_targetIcons[id] = guid;
WorldPacket data(MSG_RAID_TARGET_UPDATE, (2+8));
data << uint8(0);
WorldPacket data(MSG_RAID_TARGET_UPDATE, (1+8+1+8));
data << uint8(0); // set targets
data << uint64(whoGuid);
data << uint8(id);
data << uint64(guid);
BroadcastPacket(&data, true);
@ -957,7 +958,7 @@ void Group::SendTargetIconList(WorldSession *session)
return;
WorldPacket data(MSG_RAID_TARGET_UPDATE, (1+TARGETICONCOUNT*9));
data << (uint8)1;
data << uint8(1); // list targets
for(int i = 0; i < TARGETICONCOUNT; ++i)
{

View file

@ -286,7 +286,7 @@ class MANGOS_DLL_SPEC Group
SendUpdate();
}
void SetTargetIcon(uint8 id, uint64 guid);
void SetTargetIcon(uint8 id, uint64 whoGuid, uint64 targetGuid);
Difficulty GetDifficulty(bool isRaid) const { return isRaid ? m_raidDifficulty : m_dungeonDifficulty; }
Difficulty GetDungeonDifficulty() const { return m_dungeonDifficulty; }

View file

@ -469,7 +469,7 @@ void WorldSession::HandleRaidTargetUpdateOpcode( WorldPacket & recv_data )
uint64 guid;
recv_data >> guid;
group->SetTargetIcon(x, guid);
group->SetTargetIcon(x, _player->GetGUID(), guid);
}
}

View file

@ -576,7 +576,7 @@ enum Opcodes
SMSG_GMTICKET_SYSTEMSTATUS = 0x21B,
CMSG_SPIRIT_HEALER_ACTIVATE = 0x21C,
CMSG_SET_STAT_CHEAT = 0x21D,
SMSG_SET_REST_START_OBSOLETE = 0x21E,
SMSG_QUEST_FORCE_REMOVE = 0x21E, // uint32 questid
CMSG_SKILL_BUY_STEP = 0x21F,
CMSG_SKILL_BUY_RANK = 0x220,
CMSG_XP_CHEAT = 0x221,

View file

@ -121,6 +121,7 @@ enum __QuestGiverStatus
enum __QuestFlags
{
// Flags used at server and sent to client
QUEST_FLAGS_NONE = 0x00000000,
QUEST_FLAGS_STAY_ALIVE = 0x00000001, // Not used currently
QUEST_FLAGS_PARTY_ACCEPT = 0x00000002, // If player in party, all players that can accept this quest will receive confirmation box to accept quest CMSG_QUEST_CONFIRM_ACCEPT/SMSG_QUEST_CONFIRM_ACCEPT
QUEST_FLAGS_EXPLORATION = 0x00000004, // Not used currently
@ -137,7 +138,9 @@ enum __QuestFlags
QUEST_FLAGS_UNK3 = 0x00002000, // activates PvP?
QUEST_FLAGS_UNK4 = 0x00004000, // ? Membership Card Renewal
QUEST_FLAGS_WEEKLY = 0x00008000, // Not used currently: Weekly quests
// 0x20000 - 1 quest in 3.3, 0x40000 - 1 quest in 3.3
QUEST_FLAGS_AUTOCOMPLETE = 0x00010000, // auto complete
QUEST_FLAGS_UNK5 = 0x00020000, // has something to do with ReqItemId and SrcItemId
QUEST_FLAGS_UNK6 = 0x00040000, // use Objective text as Complete text
QUEST_FLAGS_LOW_LEVEL = 0x00080000, // quests in starting areas
// Mangos flags for set SpecialFlags in DB if required but used only at server