diff --git a/sql/330/2_quest_poi.sql b/sql/330/2_quest_poi.sql index 03e3360eb..b3b8dd2b0 100644 --- a/sql/330/2_quest_poi.sql +++ b/sql/330/2_quest_poi.sql @@ -1,4 +1,4 @@ -DROP TABLE IF EXIST `quest_poi`; +DROP TABLE IF EXISTS `quest_poi`; CREATE TABLE `quest_poi` ( `questid` int(11) unsigned NOT NULL DEFAULT '0', `objIndex` int(11) NOT NULL DEFAULT '0', @@ -7,7 +7,7 @@ CREATE TABLE `quest_poi` ( PRIMARY KEY (`questid`,`objIndex`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXIST `quest_poi_points`; +DROP TABLE IF EXISTS `quest_poi_points`; CREATE TABLE `quest_poi_points` ( `questId` int(11) unsigned NOT NULL DEFAULT '0', `objIndex` int(11) NOT NULL DEFAULT '0', diff --git a/src/game/Group.cpp b/src/game/Group.cpp index fce5a2478..f5a0094c2 100644 --- a/src/game/Group.cpp +++ b/src/game/Group.cpp @@ -364,8 +364,9 @@ uint32 Group::RemoveMember(const uint64 &guid, const uint8 &method) } else { - data.Initialize(SMSG_GROUP_LIST, 24); - data << uint64(0) << uint64(0) << uint64(0); + data.Initialize(SMSG_GROUP_LIST, 1+1+1+1+8+4+4+8); + data << uint8(0x10) << uint8(0) << uint8(0) << uint8(0); + data << uint64(0) << uint32(0) << uint32(0) << uint64(0); player->GetSession()->SendPacket(&data); } @@ -447,8 +448,9 @@ void Group::Disband(bool hideDestroy) } else { - data.Initialize(SMSG_GROUP_LIST, 24); - data << uint64(0) << uint64(0) << uint64(0); + data.Initialize(SMSG_GROUP_LIST, 1+1+1+1+8+4+4+8); + data << uint8(0x10) << uint8(0) << uint8(0) << uint8(0); + data << uint64(0) << uint32(0) << uint32(0) << uint64(0); player->GetSession()->SendPacket(&data); } @@ -979,11 +981,17 @@ void Group::SendUpdate() continue; // guess size WorldPacket data(SMSG_GROUP_LIST, (1+1+1+1+8+4+GetMembersCount()*20)); - data << (uint8)m_groupType; // group type - data << (uint8)(isBGGroup() ? 1 : 0); // 2.0.x, isBattleGroundGroup? - data << (uint8)(citr->group); // groupid - data << (uint8)(citr->assistant?0x01:0); // 0x2 main assist, 0x4 main tank + data << uint8(m_groupType); // group type (flags in 3.3) + data << uint8(isBGGroup() ? 1 : 0); // 2.0.x, isBattleGroundGroup? + data << uint8(citr->group); // groupid + data << uint8(citr->assistant ? 0x01 : 0x00); // 0x2 main assist, 0x4 main tank + if(m_groupType & GROUPTYPE_LFD) + { + data << uint8(0); + data << uint32(0); + } data << uint64(0x50000000FFFFFFFELL); // related to voice chat? + data << uint32(0); // 3.3, may be some kind of time data << uint32(GetMembersCount()-1); for(member_citerator citr2 = m_memberSlots.begin(); citr2 != m_memberSlots.end(); ++citr2) { @@ -994,23 +1002,23 @@ void Group::SendUpdate() onlineState = onlineState | ((isBGGroup()) ? MEMBER_STATUS_PVP : 0); data << citr2->name; - data << (uint64)citr2->guid; + data << uint64(citr2->guid); // online-state - data << (uint8)(onlineState); - data << (uint8)(citr2->group); // groupid - data << (uint8)(citr2->assistant?0x01:0); // 0x2 main assist, 0x4 main tank - data << uint8(0); // 3.3 + data << uint8(onlineState); + data << uint8(citr2->group); // groupid + data << uint8(citr2->assistant?0x01:0); // 0x2 main assist, 0x4 main tank + data << uint8(0); // 3.3, role? } data << uint64(m_leaderGuid); // leader guid if(GetMembersCount()-1) { - data << (uint8)m_lootMethod; // loot method - data << (uint64)m_looterGuid; // looter guid - data << (uint8)m_lootThreshold; // loot threshold - data << (uint8)m_dungeonDifficulty; // Dungeon Difficulty - data << (uint8)m_raidDifficulty; // Raid Difficulty - data << uint8(0); // 3.3 + data << uint8(m_lootMethod); // loot method + data << uint64(m_looterGuid); // looter guid + data << uint8(m_lootThreshold); // loot threshold + data << uint8(m_dungeonDifficulty); // Dungeon Difficulty + data << uint8(m_raidDifficulty); // Raid Difficulty + data << uint8(0); // 3.3, dynamic difficulty? } player->GetSession()->SendPacket( &data ); } diff --git a/src/game/Group.h b/src/game/Group.h index 2d59de813..b66ddbbcc 100644 --- a/src/game/Group.h +++ b/src/game/Group.h @@ -57,11 +57,13 @@ enum GroupMemberOnlineStatus enum GroupType // group type flags? { - GROUPTYPE_NORMAL = 0, - GROUPTYPE_BG = 1, - GROUPTYPE_RAID = 2, - GROUPTYPE_BGRAID = 3, - GROUPTYPE_LFD = 4 + GROUPTYPE_NORMAL = 0x00, + GROUPTYPE_BG = 0x01, + GROUPTYPE_RAID = 0x02, + GROUPTYPE_BGRAID = GROUPTYPE_BG | GROUPTYPE_RAID, // mask + // 0x04? + GROUPTYPE_LFD = 0x08, + // 0x10, leave/change group?, I saw this flag when leaving group and after leaving BG while in group }; class BattleGround; diff --git a/src/game/Player.cpp b/src/game/Player.cpp index e84392e18..b9405a11d 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -20743,4 +20743,4 @@ void Player::SendDuelCountdown(uint32 counter) WorldPacket data(SMSG_DUEL_COUNTDOWN, 4); data << uint32(counter); // seconds GetSession()->SendPacket(&data); -} \ No newline at end of file +}