aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorn0n4m3 <none@none>2010-01-13 15:01:39 +0300
committern0n4m3 <none@none>2010-01-13 15:01:39 +0300
commitedeb6bf284e9f7ab501f6c3273221dbf02d60084 (patch)
tree205edb66103fab54740ff9bfa57e2c60f68e4b10 /src
parent1d015cac28ef785a4b4b4507e643437c74797515 (diff)
Use replace into for character saves. This prevent crash on SaveToDB cause mtmaps.
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/Player.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 94d4387f8e7..7ea674f7f2c 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