From edeb6bf284e9f7ab501f6c3273221dbf02d60084 Mon Sep 17 00:00:00 2001 From: n0n4m3 Date: Wed, 13 Jan 2010 15:01:39 +0300 Subject: [PATCH] Use replace into for character saves. This prevent crash on SaveToDB cause mtmaps. --HG-- branch : trunk --- src/game/Player.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 94d4387f8e..7ea674f7f2 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -17016,15 +17016,11 @@ void Player::SaveToDB() sLog.outDebug("The value of player %s at save: ", m_name.c_str()); outDebugValues(); - CharacterDatabase.BeginTransaction(); - - CharacterDatabase.PExecute("DELETE FROM characters WHERE guid = '%u'",GetGUIDLow()); - std::string sql_name = m_name; CharacterDatabase.escape_string(sql_name); std::ostringstream ss; - ss << "INSERT INTO characters (guid,account,name,race,class,gender,level,xp,money,playerBytes,playerBytes2,playerFlags," + ss << "REPLACE INTO characters (guid,account,name,race,class,gender,level,xp,money,playerBytes,playerBytes2,playerFlags," "map, instance_id, dungeon_difficulty, position_x, position_y, position_z, orientation, data, " "taximask, online, cinematic, " "totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, resettalents_time, " @@ -17116,6 +17112,8 @@ void Player::SaveToDB() ss << uint32(m_activeSpec); ss << ")"; + CharacterDatabase.BeginTransaction(); + CharacterDatabase.Execute( ss.str().c_str() ); if (m_mailsUpdated) //save mails only when needed