52 TC_LOG_ERROR(
"misc",
"Group storage ID overflow!! Can't continue, shutting down server. ");
90 TC_LOG_ERROR(
"misc",
"Group guid overflow!! Can't continue, shutting down server. ");
113 for (std::pair<ObjectGuid::LowType const, Group*>
const& group :
GroupStore)
114 group.second->Update(diff);
133 CharacterDatabase.DirectExecute(
"DELETE FROM group_member WHERE memberGuid NOT IN (SELECT guid FROM characters)");
135 CharacterDatabase.DirectExecute(
"DELETE FROM `groups` WHERE leaderGuid NOT IN (SELECT guid FROM characters)");
137 CharacterDatabase.DirectExecute(
"DELETE FROM `groups` WHERE guid NOT IN (SELECT guid FROM group_member GROUP BY guid HAVING COUNT(guid) > 1)");
139 CharacterDatabase.DirectExecute(
"DELETE FROM group_member WHERE guid NOT IN (SELECT guid FROM `groups`)");
142 QueryResult result =
CharacterDatabase.Query(
"SELECT g.leaderGuid, g.lootMethod, g.looterGuid, g.lootThreshold, g.icon1, g.icon2, g.icon3, g.icon4, g.icon5, g.icon6"
144 ", g.icon7, g.icon8, g.groupType, g.difficulty, g.raiddifficulty, g.legacyRaidDifficulty, g.masterLooterGuid, g.guid, lfg.dungeon, lfg.state FROM `groups` g LEFT JOIN lfg_data lfg ON lfg.guid = g.guid ORDER BY g.guid ASC");
147 TC_LOG_INFO(
"server.loading",
">> Loaded 0 group definitions. DB table `groups` is empty!");
154 Field* fields = result->Fetch();
170 while (result->NextRow());
175 TC_LOG_INFO(
"server.loading",
"Loading Group members...");
183 TC_LOG_INFO(
"server.loading",
">> Loaded 0 group members. DB table `group_member` is empty!");
191 Field* fields = result->Fetch();
195 group->
LoadMemberFromDB(fields[1].GetUInt64(), fields[2].GetUInt8(), fields[3].GetUInt8(), fields[4].GetUInt8());
197 TC_LOG_ERROR(
"misc",
"GroupMgr::LoadGroups: Consistency failed, can't find group (storage id: {})", fields[0].GetUInt32());
201 while (result->NextRow());
std::shared_ptr< ResultSet > QueryResult
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
#define TC_LOG_ERROR(filterType__,...)
#define TC_LOG_INFO(filterType__,...)
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Class used to access individual fields of database query result.
static GroupMgr * instance()
void FreeGroupDbStoreId(Group *group)
Group * GetGroupByDbStoreId(uint32 storageId) const
uint32 GenerateNewGroupDbStoreId()
Group * GetGroupByGUID(ObjectGuid const &guid) const
void RemoveGroup(Group *group)
ObjectGuid::LowType NextGroupId
GroupDbContainer GroupDbStore
uint32 NextGroupDbStoreId
void AddGroup(Group *group)
ObjectGuid::LowType GenerateGroupId()
void RegisterGroupDbStoreId(uint32 storageId, Group *group)
GroupContainer GroupStore
void LoadGroupFromDB(Field *field)
ObjectGuid GetGUID() const
void LoadMemberFromDB(ObjectGuid::LowType guidLow, uint8 memberFlags, uint8 subgroup, uint8 roles)
uint32 GetDbStoreId() const
LowType GetCounter() const
static void StopNow(uint8 exitcode)