Created
December 13, 2010 02:09
-
-
Save Emtec/738573 to your computer and use it in GitHub Desktop.
Revisions
-
created this gist
Dec 13, 2010 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,40 @@ 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);