mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Groups: Store group member roles to DB
--HG-- branch : trunk
This commit is contained in:
@@ -1350,6 +1350,7 @@ CREATE TABLE `group_member` (
|
||||
`memberGuid` int(11) unsigned NOT NULL,
|
||||
`memberFlags` tinyint(2) unsigned NOT NULL,
|
||||
`subgroup` smallint(6) unsigned NOT NULL,
|
||||
`roles` smallint(6) unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (`memberGuid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Groups';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
1
sql/updates/9859_characters_group_member.sql
Normal file
1
sql/updates/9859_characters_group_member.sql
Normal file
@@ -0,0 +1 @@
|
||||
ALTER TABLE `group_member` ADD `roles` smallint(6) unsigned NOT NULL default '0';
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user