- Fixed SMSG_GROUP_LIST opcode once again (I hope so).

- Fixed typos in SQL update.
- Added some nice comments.
This commit is contained in:
tomrus88 2009-11-16 02:01:09 +03:00
parent b09ee8e571
commit 93332fb1a0
4 changed files with 37 additions and 27 deletions

View file

@ -1,4 +1,4 @@
DROP TABLE IF EXIST `quest_poi`; DROP TABLE IF EXISTS `quest_poi`;
CREATE TABLE `quest_poi` ( CREATE TABLE `quest_poi` (
`questid` int(11) unsigned NOT NULL DEFAULT '0', `questid` int(11) unsigned NOT NULL DEFAULT '0',
`objIndex` int(11) NOT NULL DEFAULT '0', `objIndex` int(11) NOT NULL DEFAULT '0',
@ -7,7 +7,7 @@ CREATE TABLE `quest_poi` (
PRIMARY KEY (`questid`,`objIndex`) PRIMARY KEY (`questid`,`objIndex`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8; ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXIST `quest_poi_points`; DROP TABLE IF EXISTS `quest_poi_points`;
CREATE TABLE `quest_poi_points` ( CREATE TABLE `quest_poi_points` (
`questId` int(11) unsigned NOT NULL DEFAULT '0', `questId` int(11) unsigned NOT NULL DEFAULT '0',
`objIndex` int(11) NOT NULL DEFAULT '0', `objIndex` int(11) NOT NULL DEFAULT '0',

View file

@ -364,8 +364,9 @@ uint32 Group::RemoveMember(const uint64 &guid, const uint8 &method)
} }
else else
{ {
data.Initialize(SMSG_GROUP_LIST, 24); data.Initialize(SMSG_GROUP_LIST, 1+1+1+1+8+4+4+8);
data << uint64(0) << uint64(0) << uint64(0); data << uint8(0x10) << uint8(0) << uint8(0) << uint8(0);
data << uint64(0) << uint32(0) << uint32(0) << uint64(0);
player->GetSession()->SendPacket(&data); player->GetSession()->SendPacket(&data);
} }
@ -447,8 +448,9 @@ void Group::Disband(bool hideDestroy)
} }
else else
{ {
data.Initialize(SMSG_GROUP_LIST, 24); data.Initialize(SMSG_GROUP_LIST, 1+1+1+1+8+4+4+8);
data << uint64(0) << uint64(0) << uint64(0); data << uint8(0x10) << uint8(0) << uint8(0) << uint8(0);
data << uint64(0) << uint32(0) << uint32(0) << uint64(0);
player->GetSession()->SendPacket(&data); player->GetSession()->SendPacket(&data);
} }
@ -979,11 +981,17 @@ void Group::SendUpdate()
continue; continue;
// guess size // guess size
WorldPacket data(SMSG_GROUP_LIST, (1+1+1+1+8+4+GetMembersCount()*20)); WorldPacket data(SMSG_GROUP_LIST, (1+1+1+1+8+4+GetMembersCount()*20));
data << (uint8)m_groupType; // group type data << uint8(m_groupType); // group type (flags in 3.3)
data << (uint8)(isBGGroup() ? 1 : 0); // 2.0.x, isBattleGroundGroup? data << uint8(isBGGroup() ? 1 : 0); // 2.0.x, isBattleGroundGroup?
data << (uint8)(citr->group); // groupid data << uint8(citr->group); // groupid
data << (uint8)(citr->assistant?0x01:0); // 0x2 main assist, 0x4 main tank 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 << uint64(0x50000000FFFFFFFELL); // related to voice chat?
data << uint32(0); // 3.3, may be some kind of time
data << uint32(GetMembersCount()-1); data << uint32(GetMembersCount()-1);
for(member_citerator citr2 = m_memberSlots.begin(); citr2 != m_memberSlots.end(); ++citr2) 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); onlineState = onlineState | ((isBGGroup()) ? MEMBER_STATUS_PVP : 0);
data << citr2->name; data << citr2->name;
data << (uint64)citr2->guid; data << uint64(citr2->guid);
// online-state // online-state
data << (uint8)(onlineState); data << uint8(onlineState);
data << (uint8)(citr2->group); // groupid data << uint8(citr2->group); // groupid
data << (uint8)(citr2->assistant?0x01:0); // 0x2 main assist, 0x4 main tank data << uint8(citr2->assistant?0x01:0); // 0x2 main assist, 0x4 main tank
data << uint8(0); // 3.3 data << uint8(0); // 3.3, role?
} }
data << uint64(m_leaderGuid); // leader guid data << uint64(m_leaderGuid); // leader guid
if(GetMembersCount()-1) if(GetMembersCount()-1)
{ {
data << (uint8)m_lootMethod; // loot method data << uint8(m_lootMethod); // loot method
data << (uint64)m_looterGuid; // looter guid data << uint64(m_looterGuid); // looter guid
data << (uint8)m_lootThreshold; // loot threshold data << uint8(m_lootThreshold); // loot threshold
data << (uint8)m_dungeonDifficulty; // Dungeon Difficulty data << uint8(m_dungeonDifficulty); // Dungeon Difficulty
data << (uint8)m_raidDifficulty; // Raid Difficulty data << uint8(m_raidDifficulty); // Raid Difficulty
data << uint8(0); // 3.3 data << uint8(0); // 3.3, dynamic difficulty?
} }
player->GetSession()->SendPacket( &data ); player->GetSession()->SendPacket( &data );
} }

View file

@ -57,11 +57,13 @@ enum GroupMemberOnlineStatus
enum GroupType // group type flags? enum GroupType // group type flags?
{ {
GROUPTYPE_NORMAL = 0, GROUPTYPE_NORMAL = 0x00,
GROUPTYPE_BG = 1, GROUPTYPE_BG = 0x01,
GROUPTYPE_RAID = 2, GROUPTYPE_RAID = 0x02,
GROUPTYPE_BGRAID = 3, GROUPTYPE_BGRAID = GROUPTYPE_BG | GROUPTYPE_RAID, // mask
GROUPTYPE_LFD = 4 // 0x04?
GROUPTYPE_LFD = 0x08,
// 0x10, leave/change group?, I saw this flag when leaving group and after leaving BG while in group
}; };
class BattleGround; class BattleGround;

View file

@ -20743,4 +20743,4 @@ void Player::SendDuelCountdown(uint32 counter)
WorldPacket data(SMSG_DUEL_COUNTDOWN, 4); WorldPacket data(SMSG_DUEL_COUNTDOWN, 4);
data << uint32(counter); // seconds data << uint32(counter); // seconds
GetSession()->SendPacket(&data); GetSession()->SendPacket(&data);
} }