[Fix] Clear GuildOnlineStatus on world boot (#4306)

Ensure that the guild member online status is set to offline (0) when world boots.
This commit is contained in:
Mitch Freeman 2024-05-12 16:02:06 -03:00 committed by GitHub
parent d302b9c02e
commit b49b564940
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 20 additions and 1 deletions

View File

@ -2089,3 +2089,8 @@ void Database::PurgeCharacterParcels()
RuleI(Parcel, ParcelPruneDelay)
);
}
void Database::ClearGuildOnlineStatus()
{
GuildMembersRepository::ClearOnlineStatus(*this);
}

View File

@ -243,6 +243,7 @@ public:
void SetRaidGroupLeaderInfo(uint32 group_id, uint32 raid_id);
void PurgeAllDeletedDataBuckets();
void ClearGuildOnlineStatus();
/* Database Variables */

View File

@ -190,6 +190,17 @@ public:
return UpdateOne(db, m);
}
static void ClearOnlineStatus(Database &db)
{
auto results = db.QueryDatabase(
fmt::format(
"UPDATE {} SET `online` = 0 "
"WHERE `online` = 1;",
TableName()
)
);
}
};
#endif //EQEMU_GUILD_MEMBERS_REPOSITORY_H

View File

@ -138,7 +138,7 @@ void ClientListEntry::SetOnline(CLE_Status iOnline)
"Online status [{}] ({}) status [{}] ({})",
AccountName(),
AccountID(),
CLEStatusString[CLE_Status::Online],
CLEStatusString[iOnline],
static_cast<int>(iOnline)
);

View File

@ -284,6 +284,8 @@ bool WorldBoot::DatabaseLoadRoutines(int argc, char **argv)
database.ClearRaid();
database.ClearRaidDetails();
database.ClearRaidLeader();
LogInfo("Clearing guild online status");
database.ClearGuildOnlineStatus();
LogInfo("Clearing inventory snapshots");
database.ClearInvSnapshots();
LogInfo("Loading items");