Skip to content

Instantly share code, notes, and snippets.

@Emtec
Created December 13, 2010 02:09
Show Gist options
  • Save Emtec/738573 to your computer and use it in GitHub Desktop.
Save Emtec/738573 to your computer and use it in GitHub Desktop.
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 9bc810f..5240e3d 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -4310,6 +4310,11 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
// Get guids of character's pets, will deleted in transaction
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 guid FROM character_social as social"
+ "LEFT JOIN characters as char ON(char.guid = social.guid) WHERE social.friend = '%u'", lowguid);
+
// NOW we can finally clear other DB data related to character
CharacterDatabase.BeginTransaction();
if (resultPets)
@@ -4323,6 +4328,23 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
delete resultPets;
}
+ if (resultFriend)
+ {
+ do
+ {
+ Field* fieldsFriend = resultFriend->Fetch();
+ if(Player* sFriend = sObjectAccessor.FindPlayer(fieldsFriend[0].GetUInt32()))
+ {
+ if(sFriend -> IsInWorld())
+ {
+ sFriend->GetSocial()->RemoveFromSocialList(lowguid, false);
+ sSocialMgr.SendFriendStatus(sFriend, FRIEND_REMOVED, lowguid, false);
+ }
+ }
+ } while (resultFriend->NextRow());
+ delete resultFriend;
+ }
+
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_declinedname WHERE guid = '%u'", lowguid);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment