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.

Revisions

  1. created this gist Dec 13, 2010.
    40 changes: 40 additions & 0 deletions gistfile1.diff
    Original 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);