mirror of
https://github.com/mangosfour/server.git
synced 2025-12-21 19:37:02 +00:00
[10870] Properly remove deleted character from friends of online players.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
parent
9b5dd492da
commit
73859988ad
2 changed files with 22 additions and 1 deletions
|
|
@ -4288,6 +4288,9 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
|
||||||
// Get guids of character's pets, will deleted in transaction
|
// Get guids of character's pets, will deleted in transaction
|
||||||
QueryResult *resultPets = CharacterDatabase.PQuery("SELECT id FROM character_pet WHERE owner = '%u'", lowguid);
|
QueryResult *resultPets = CharacterDatabase.PQuery("SELECT id FROM character_pet WHERE owner = '%u'", lowguid);
|
||||||
|
|
||||||
|
// delete char from friends list when selected chars is online (non existing - error)
|
||||||
|
QueryResult *resultFriend = CharacterDatabase.PQuery("SELECT DISTINCT guid FROM character_social WHERE friend = '%u'", lowguid);
|
||||||
|
|
||||||
// NOW we can finally clear other DB data related to character
|
// NOW we can finally clear other DB data related to character
|
||||||
CharacterDatabase.BeginTransaction();
|
CharacterDatabase.BeginTransaction();
|
||||||
if (resultPets)
|
if (resultPets)
|
||||||
|
|
@ -4301,6 +4304,24 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
|
||||||
delete resultPets;
|
delete resultPets;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// cleanup friends for online players, offline case will cleanup later in code
|
||||||
|
if (resultFriend)
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
Field* fieldsFriend = resultFriend->Fetch();
|
||||||
|
if (Player* sFriend = sObjectAccessor.FindPlayer(ObjectGuid(HIGHGUID_PLAYER, fieldsFriend[0].GetUInt32())))
|
||||||
|
{
|
||||||
|
if (sFriend->IsInWorld())
|
||||||
|
{
|
||||||
|
sFriend->GetSocial()->RemoveFromSocialList(playerguid, false);
|
||||||
|
sSocialMgr.SendFriendStatus(sFriend, FRIEND_REMOVED, playerguid, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while (resultFriend->NextRow());
|
||||||
|
delete resultFriend;
|
||||||
|
}
|
||||||
|
|
||||||
CharacterDatabase.PExecute("DELETE FROM characters WHERE guid = '%u'", lowguid);
|
CharacterDatabase.PExecute("DELETE FROM characters WHERE guid = '%u'", lowguid);
|
||||||
CharacterDatabase.PExecute("DELETE FROM character_account_data WHERE guid = '%u'", lowguid);
|
CharacterDatabase.PExecute("DELETE FROM character_account_data WHERE guid = '%u'", lowguid);
|
||||||
CharacterDatabase.PExecute("DELETE FROM character_declinedname WHERE guid = '%u'", lowguid);
|
CharacterDatabase.PExecute("DELETE FROM character_declinedname WHERE guid = '%u'", lowguid);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "10869"
|
#define REVISION_NR "10870"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue