diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Groups/Group.cpp | 11 | ||||
-rw-r--r-- | src/server/game/Groups/Group.h | 4 |
3 files changed, 12 insertions, 12 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 8ce16622f6a..f917084215e 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -3621,8 +3621,8 @@ void ObjectMgr::LoadGroups() sLog.outString(">> Loaded %u group definitions", count); // ----------------------- Load member - // 0 1 2 3 - result = CharacterDatabase.Query("SELECT guid, memberGuid, memberFlags, subgroup FROM group_member ORDER BY guid"); + // 0 1 2 3 4 + result = CharacterDatabase.Query("SELECT guid, memberGuid, memberFlags, subgroup, roles FROM group_member ORDER BY guid"); if (!result) { barGoLink bar2(1); @@ -3644,10 +3644,9 @@ void ObjectMgr::LoadGroups() { groupLowGuid = fields[0].GetUInt32(); group = GetGroupByGUID(groupLowGuid); - // group will never be NULL (we have run consistency sql's before loading) } - if (group) - group->LoadMemberFromDB(fields[1].GetUInt32(), fields[2].GetUInt8(), fields[3].GetUInt8()); + if (group) // Should never be null + group->LoadMemberFromDB(fields[1].GetUInt32(), fields[2].GetUInt8(), fields[3].GetUInt8(), fields[4].GetUInt8()); else sLog.outError("ObjectMgr::LoadGroups: Consistency failed, can't find group (lowguid %u)", groupLowGuid); ++count; diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 4a701b25699..a6e69cf3649 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -174,14 +174,15 @@ bool Group::LoadGroupFromDB(const uint32 &groupGuid, QueryResult_AutoPtr result, if (loadMembers) { - result = CharacterDatabase.PQuery("SELECT memberGuid, memberFlags, subgroup FROM group_member WHERE guid=%u", groupGuid); + // 0 1 2 3 + result = CharacterDatabase.PQuery("SELECT memberGuid, memberFlags, subgroup, roles FROM group_member WHERE guid=%u", groupGuid); if (!result) return false; do { fields = result->Fetch(); - LoadMemberFromDB(fields[0].GetUInt32(), fields[1].GetUInt8(), fields[2].GetUInt8()); + LoadMemberFromDB(fields[0].GetUInt32(), fields[1].GetUInt8(), fields[2].GetUInt8(), fields[3].GetUInt8()); } while (result->NextRow()); if (GetMembersCount() < 2) // group too small @@ -191,7 +192,7 @@ bool Group::LoadGroupFromDB(const uint32 &groupGuid, QueryResult_AutoPtr result, return true; } -bool Group::LoadMemberFromDB(uint32 guidLow, uint8 memberFlags, uint8 subgroup) +bool Group::LoadMemberFromDB(uint32 guidLow, uint8 memberFlags, uint8 subgroup, uint8 roles) { MemberSlot member; member.guid = MAKE_NEW_GUID(guidLow, 0, HIGHGUID_PLAYER); @@ -205,7 +206,7 @@ bool Group::LoadMemberFromDB(uint32 guidLow, uint8 memberFlags, uint8 subgroup) member.group = subgroup; member.flags = memberFlags; - member.roles = 0; + member.roles = roles; m_memberSlots.push_back(member); @@ -1277,7 +1278,7 @@ bool Group::_addMember(const uint64 &guid, const char* name, uint8 group) if (!isBGGroup()) { // insert into group table - CharacterDatabase.PExecute("INSERT INTO group_member(guid,memberGuid,memberFlags,subgroup) VALUES(%u,%u,%u,%u)", GUID_LOPART(m_guid), GUID_LOPART(member.guid), member.flags, member.group); + CharacterDatabase.PExecute("INSERT INTO group_member (guid, memberGuid, memberFlags, subgroup, roles) VALUES(%u, %u, %u, %u, %u)", GUID_LOPART(m_guid), GUID_LOPART(member.guid), member.flags, member.group, member.roles); } return true; diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h index a30d1998466..a3d0ab614b5 100644 --- a/src/server/game/Groups/Group.h +++ b/src/server/game/Groups/Group.h @@ -184,8 +184,8 @@ class Group // group manipulation methods bool Create(const uint64 &guid, const char * name); - bool LoadGroupFromDB(const uint32 &guid, QueryResult_AutoPtr result = QueryResult_AutoPtr(NULL), bool loadMembers = true); - bool LoadMemberFromDB(uint32 guidLow, uint8 memberFlags, uint8 subgroup); + bool LoadGroupFromDB(const uint32 &guid, QueryResult_AutoPtr result, bool loadMembers = true); + bool LoadMemberFromDB(uint32 guidLow, uint8 memberFlags, uint8 subgroup, uint8 roles); bool AddInvite(Player *player); uint32 RemoveInvite(Player *player); void RemoveAllInvites(); |