aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp18
-rwxr-xr-xsrc/server/shared/Database/Implementation/CharacterDatabase.cpp1
-rwxr-xr-xsrc/server/shared/Database/Implementation/CharacterDatabase.h1
3 files changed, 13 insertions, 7 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 93df73ef928..6f42848c457 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -19114,13 +19114,17 @@ void Player::SendAttackSwingNotInRange()
void Player::SavePositionInDB(uint32 mapid, float x, float y, float z, float o, uint32 zone, uint64 guid)
{
- std::ostringstream ss;
- ss << "UPDATE characters SET position_x='" << x << "', position_y='" << y
- << "', position_z='" << z << "', orientation='" << o << "', map='" << mapid
- << "', zone='" << zone << "', trans_x='0', trans_y='0', trans_z='0', "
- << "transguid='0', taxi_path='' WHERE guid='" << GUID_LOPART(guid) << '\'';
- sLog->outDebug(LOG_FILTER_UNITS, "%s", ss.str().c_str());
- CharacterDatabase.Execute(ss.str().c_str());
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_POSITION);
+
+ stmt->setFloat(0, x);
+ stmt->setFloat(1, y);
+ stmt->setFloat(2, z);
+ stmt->setFloat(3, o);
+ stmt->setUInt16(4, uint16(mapid));
+ stmt->setUInt16(5, uint16(zone));
+ stmt->setUInt32(6, GUID_LOPART(guid));
+
+ CharacterDatabase.Execute(stmt);
}
void Player::SetUInt32ValueInArray(Tokens& tokens, uint16 index, uint32 value)
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
index 4e2964881a7..2e4270732e7 100755
--- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
@@ -381,5 +381,6 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PREPARE_STATEMENT(CHAR_INS_CHARACTER_SOCIAL, "INSERT INTO character_social (guid, friend, flags) VALUES (?, ?, ?)", CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_DEL_CHARACTER_SOCIAL, "DELETE FROM character_social WHERE guid = ? AND friend = ?", CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_UPD_CHARACTER_SOCIAL_NOTE, "UPDATE character_social SET note = ? WHERE guid = ? AND friend = ?", CONNECTION_ASYNC);
+ PREPARE_STATEMENT(CHAR_UPD_CHARACTER_POSITION, "UPDATE characters SET position_x = ?, position_y = ?, position_z = ?, orientation = ?, map = ?, zone = ?, trans_x = 0, trans_y = 0, trans_z = 0, transguid = 0, taxi_path = '' WHERE guid = ?", CONNECTION_ASYNC);
}
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h
index f0ac3e49d1e..8a95483044b 100755
--- a/src/server/shared/Database/Implementation/CharacterDatabase.h
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.h
@@ -343,6 +343,7 @@ enum CharacterDatabaseStatements
CHAR_INS_CHARACTER_SOCIAL,
CHAR_DEL_CHARACTER_SOCIAL,
CHAR_UPD_CHARACTER_SOCIAL_NOTE,
+ CHAR_UPD_CHARACTER_POSITION,
MAX_CHARACTERDATABASE_STATEMENTS,
};