diff options
author | Kargatum <dowlandtop@yandex.com> | 2022-02-05 06:37:11 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-05 00:37:11 +0100 |
commit | de13bf426e162ee10cbd5470cec74122d1d4afa0 (patch) | |
tree | 407c1051b09fea21f946c4ad3b3e4727fca5c400 | |
parent | d6ead1d1e019bd7afd8230b305ae4dd98babd353 (diff) |
feat(Core/DBLayer): replace `char const*` to `std::string_view` (#10211)
* feat(Core/DBLayer): replace `char const*` to `std::string_view`
* CString
* 1
* chore(Core/Misc): code cleanup
* cl
* db fix
* fmt style sql
* to fmt
* py
* del old
* 1
* 2
* 3
* 1
* 1
140 files changed, 4966 insertions, 4793 deletions
diff --git a/apps/Fmt/FormatReplace.py b/apps/Fmt/FormatReplace.py index 1e4e90da9e..a25a02ed51 100644 --- a/apps/Fmt/FormatReplace.py +++ b/apps/Fmt/FormatReplace.py @@ -41,26 +41,26 @@ def islog(line): # else : # return False -# def isPQuery(line): -# substring = 'PQuery' -# if substring in line: -# return True -# else : -# return False +def isPQuery(line): + substring = 'PQuery' + if substring in line: + return True + else : + return False -# def isPExecute(line): -# substring = 'PExecute' -# if substring in line: -# return True -# else : -# return False +def isPExecute(line): + substring = 'PExecute' + if substring in line: + return True + else : + return False -# def isPAppend(line): -# substring = 'PAppend' -# if substring in line: -# return True -# else : -# return False +def isPAppend(line): + substring = 'PAppend' + if substring in line: + return True + else : + return False # def isStringFormat(line): # substring = 'StringFormat' @@ -83,12 +83,15 @@ def checkSoloLine(line): return handleCleanup(line), False elif islog(line): return handleCleanup(line), False - # elif isPExecute(line): - # return handleCleanup(line), False - # elif isPQuery(line): - # return handleCleanup(line), False - # elif isPAppend(line): - # return handleCleanup(line), False + elif isPExecute(line): + line = line.replace("PExecute", "Execute"); + return handleCleanup(line), False + elif isPQuery(line): + line = line.replace("PQuery", "Query"); + return handleCleanup(line), False + elif isPAppend(line): + line = line.replace("PAppend", "Append"); + return handleCleanup(line), False # elif isSendSysMessage(line): # return handleCleanup(line), False # elif isPSendSysMessage(line): @@ -110,12 +113,15 @@ def startMultiLine(line): # return handleCleanup(line), True # elif isPSendSysMessage(line): # return handleCleanup(line), True - # elif isPQuery(line): - # return handleCleanup(line), True - # elif isPExecute(line): - # return handleCleanup(line), True - # elif isPAppend(line): - # return handleCleanup(line), True + elif isPQuery(line): + line = line.replace("PQuery", "Query"); + return handleCleanup(line), True + elif isPExecute(line): + line = line.replace("PExecute", "Execute"); + return handleCleanup(line), True + elif isPAppend(line): + line = line.replace("PAppend", "Append"); + return handleCleanup(line), True # elif isStringFormat(line): # return handleCleanup(line), True else : diff --git a/data/sql/updates/pending_db_world/rev_1643662892603722900.sql b/data/sql/updates/pending_db_world/rev_1643662892603722900.sql new file mode 100644 index 0000000000..5f530983db --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1643662892603722900.sql @@ -0,0 +1,5 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1643662892603722900'); + +UPDATE `creature_template` SET `RegenHealth` = 0 WHERE `RegenHealth` >= 2; +UPDATE `creature_onkill_reputation` SET `IsTeamAward1` = 0 WHERE `IsTeamAward1` >= 2; +UPDATE `creature_onkill_reputation` SET `IsTeamAward2` = 0 WHERE `IsTeamAward2` >= 2; diff --git a/doc/changelog/pendings/changes_1643570355041139200.md b/doc/changelog/pendings/changes_1643570355041139200.md new file mode 100644 index 0000000000..1e2f018488 --- /dev/null +++ b/doc/changelog/pendings/changes_1643570355041139200.md @@ -0,0 +1,118 @@ +## How to upgrade +- `PrepareStatment` + +```diff +- setNull(...) ++ SetData(...) +``` +```diff +- setBool(...) ++ SetData(...) +``` +```diff +- setUInt8(...) ++ SetData(...) +``` +```diff +- setInt8(...) ++ SetData(...) +``` +```diff +- setUInt16(...) ++ SetData(...) +``` +```diff +- setInt16(...) ++ SetData(...) +``` +```diff +- setUInt32(...) ++ SetData(...) +``` +```diff +- setUInt64(...) ++ SetData(...) +``` +```diff +- setInt64(...) ++ SetData(...) +``` +```diff +- setFloat(...) ++ SetData(...) +``` +```diff +- setDouble(...) ++ SetData(...) +``` +```diff +- setString(...) ++ SetData(...) +``` +```diff +- setStringView(...) ++ SetData(...) +``` +```diff +- setBinary(...) ++ SetData(...) +``` + +- `Fields` + +```diff +- GetBool() ++ Get<bool>() +``` +```diff +- GetUInt8() ++ Get<uint8>() +``` +```diff +- GetInt8() ++ Get<int8>() +``` +```diff +- GetUInt16() ++ Get<uint16>() +``` +```diff +- GetInt16() ++ Get<int16>() +``` +```diff +- GetUInt32() ++ Get<uint32>() +``` +```diff +- GetInt32() ++ Get<int32>() +``` +```diff +- GetUInt64() ++ Get<uint64>() +``` +```diff +- GetInt64() ++ Get<int64>() +``` +```diff +- GetFloat() ++ Get<float>() +``` +```diff +- GetDouble() ++ Get<double>() +``` +```diff +- GetString() ++ Get<std::string>() +``` +```diff +- GetStringView() ++ Get<std::string_view>() +``` +```diff +- GetBinary() ++ Get<Binary>() +``` diff --git a/src/cmake/compiler/msvc/settings.cmake b/src/cmake/compiler/msvc/settings.cmake index b6986158dd..8d859b828e 100644 --- a/src/cmake/compiler/msvc/settings.cmake +++ b/src/cmake/compiler/msvc/settings.cmake @@ -107,6 +107,12 @@ target_compile_options(acore-compile-option-interface /wd4351 # C4351: new behavior: elements of array 'x' will be default initialized /wd4091) # C4091: 'typedef ': ignored on left of '' when no variable is declared +# Define NOMINMAX +target_compile_definitions(acore-compile-option-interface + INTERFACE + -DNOMINMAX) +message(STATUS "MSVC: Enable NOMINMAX") + if(NOT WITH_WARNINGS) target_compile_options(acore-warning-interface INTERFACE diff --git a/src/common/Common.h b/src/common/Common.h index 4393f93f62..1811d65e6a 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -95,15 +95,6 @@ AC_COMMON_API extern char const* localeNames[TOTAL_LOCALES]; AC_COMMON_API LocaleConstant GetLocaleByName(const std::string& name); AC_COMMON_API void CleanStringForMysqlQuery(std::string& str); -// we always use stdlibc++ std::max/std::min, undefine some not C++ standard defines (Win API and some other platforms) -#ifdef max -#undef max -#endif - -#ifdef min -#undef min -#endif - #define MAX_QUERY_LEN 32*1024 namespace Acore diff --git a/src/common/Utilities/StringFormat.h b/src/common/Utilities/StringFormat.h index e7f6fab3e0..e0e4d1aac9 100644 --- a/src/common/Utilities/StringFormat.h +++ b/src/common/Utilities/StringFormat.h @@ -19,7 +19,7 @@ #define _STRING_FORMAT_H_ #include "Define.h" -#include <fmt/core.h> +#include <fmt/format.h> #include <fmt/printf.h> namespace Acore diff --git a/src/common/Utilities/Util.h b/src/common/Utilities/Util.h index ec65748c4d..3648c850d7 100644 --- a/src/common/Utilities/Util.h +++ b/src/common/Utilities/Util.h @@ -78,7 +78,7 @@ inline T ApplyPct(T& base, U pct) template <class T> inline T RoundToInterval(T& num, T floor, T ceil) { - return num = std::min(std::max(num, floor), ceil); + return num = std::min<T>(std::max<T>(num, floor), ceil); } // UTF8 handling diff --git a/src/server/authserver/Server/AuthSession.cpp b/src/server/authserver/Server/AuthSession.cpp index 81e55f3d6b..2940086488 100644 --- a/src/server/authserver/Server/AuthSession.cpp +++ b/src/server/authserver/Server/AuthSession.cpp @@ -149,15 +149,15 @@ void AccountInfo::LoadResult(Field* fields) // aa.gmlevel (, more query-specific fields) // FROM account a LEFT JOIN account_access aa ON a.id = aa.id LEFT JOIN account_banned ab ON ab.id = a.id AND ab.active = 1 LEFT JOIN ip_banned ipb ON ipb.ip = ? WHERE a.username = ? - Id = fields[0].GetUInt32(); - Login = fields[1].GetString(); - IsLockedToIP = fields[2].GetBool(); - LockCountry = fields[3].GetString(); - LastIP = fields[4].GetString(); - FailedLogins = fields[5].GetUInt32(); - IsBanned = fields[6].GetBool() || fields[8].GetBool(); - IsPermanentlyBanned = fields[7].GetBool() || fields[9].GetBool(); - SecurityLevel = static_cast<AccountTypes>(fields[10].GetUInt8()) > SEC_CONSOLE ? SEC_CONSOLE : static_cast<AccountTypes>(fields[10].GetUInt8()); + Id = fields[0].Get<uint32>(); + Login = fields[1].Get<std::string>(); + IsLockedToIP = fields[2].Get<bool>(); + LockCountry = fields[3].Get<std::string>(); + LastIP = fields[4].Get<std::string>(); + FailedLogins = fields[5].Get<uint32>(); + IsBanned = fields[6].Get<bool>() || fields[8].Get<bool>(); + IsPermanentlyBanned = fields[7].Get<bool>() || fields[9].Get<bool>(); + SecurityLevel = static_cast<AccountTypes>(fields[10].Get<uint8>()) > SEC_CONSOLE ? SEC_CONSOLE : static_cast<AccountTypes>(fields[10].Get<uint8>()); // Use our own uppercasing of the account name instead of using UPPER() in mysql query // This is how the account was created in the first place and changing it now would result in breaking @@ -174,7 +174,7 @@ void AuthSession::Start() LOG_TRACE("session", "Accepted connection from {}", ip_address); LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_IP_INFO); - stmt->setString(0, ip_address); + stmt->SetData(0, ip_address); _queryProcessor.AddCallback(LoginDatabase.AsyncQuery(stmt).WithPreparedCallback(std::bind(&AuthSession::CheckIpCallback, this, std::placeholders::_1))); } @@ -198,7 +198,7 @@ void AuthSession::CheckIpCallback(PreparedQueryResult result) do { Field* fields = result->Fetch(); - if (fields[0].GetUInt64() != 0) + if (fields[0].Get<uint64>() != 0) banned = true; } while (result->NextRow()); @@ -309,8 +309,8 @@ bool AuthSession::HandleLogonChallenge() // Get the account details from the account table LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_LOGONCHALLENGE); - stmt->setString(0, GetRemoteIpAddress().to_string()); - stmt->setString(1, login); + stmt->SetData(0, GetRemoteIpAddress().to_string()); + stmt->SetData(1, login); _queryProcessor.AddCallback(LoginDatabase.AsyncQuery(stmt).WithPreparedCallback(std::bind(&AuthSession::LogonChallengeCallback, this, std::placeholders::_1))); return true; @@ -392,7 +392,7 @@ void AuthSession::LogonChallengeCallback(PreparedQueryResult result) if (!fields[11].IsNull()) { securityFlags = 4; - _totpSecret = fields[11].GetBinary(); + _totpSecret = fields[11].Get<Binary>(); if (auto const& secret = sSecretMgr->GetSecret(SECRET_TOTP_MASTER_KEY)) { @@ -407,10 +407,9 @@ void AuthSession::LogonChallengeCallback(PreparedQueryResult result) } } - _srp6.emplace( - _accountInfo.Login, - fields[12].GetBinary<Acore::Crypto::SRP6::SALT_LENGTH>(), - fields[13].GetBinary<Acore::Crypto::SRP6::VERIFIER_LENGTH>()); + _srp6.emplace(_accountInfo.Login, + fields[12].Get<Binary, Acore::Crypto::SRP6::SALT_LENGTH>(), + fields[13].Get<Binary, Acore::Crypto::SRP6::VERIFIER_LENGTH>()); // Fill the response packet with the result if (AuthHelper::IsAcceptedClientBuild(_build)) @@ -518,11 +517,11 @@ bool AuthSession::HandleLogonProof() std::string address = sConfigMgr->GetOption<bool>("AllowLoggingIPAddressesInDatabase", true, true) ? GetRemoteIpAddress().to_string() : "0.0.0.0"; LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_LOGONPROOF); - stmt->setBinary(0, _sessionKey); - stmt->setString(1, address); - stmt->setUInt32(2, GetLocaleByName(_localizationName)); - stmt->setString(3, _os); - stmt->setString(4, _accountInfo.Login); + stmt->SetData(0, _sessionKey); + stmt->SetData(1, address); + stmt->SetData(2, GetLocaleByName(_localizationName)); + stmt->SetData(3, _os); + stmt->SetData(4, _accountInfo.Login); LoginDatabase.DirectExecute(stmt); // Finish SRP6 and send the final result to the client @@ -574,9 +573,9 @@ bool AuthSession::HandleLogonProof() if (sConfigMgr->GetOption<bool>("WrongPass.Logging", false)) { LoginDatabasePreparedStatement* logstmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_FALP_IP_LOGGING); - logstmt->setUInt32(0, _accountInfo.Id); - logstmt->setString(1, GetRemoteIpAddress().to_string()); - logstmt->setString(2, "Login to WoW Failed - Incorrect Password"); + logstmt->SetData(0, _accountInfo.Id); + logstmt->SetData(1, GetRemoteIpAddress().to_string()); + logstmt->SetData(2, "Login to WoW Failed - Incorrect Password"); LoginDatabase.Execute(logstmt); } @@ -585,7 +584,7 @@ bool AuthSession::HandleLogonProof() { //Increment number of failed logins by one and if it reaches the limit temporarily ban that account or IP LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_FAILEDLOGINS); - stmt->setString(0, _accountInfo.Login); + stmt->SetData(0, _accountInfo.Login); LoginDatabase.Execute(stmt); if (++_accountInfo.FailedLogins >= MaxWrongPassCount) @@ -596,8 +595,8 @@ bool AuthSession::HandleLogonProof() if (WrongPassBanType) { stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ACCOUNT_AUTO_BANNED); - stmt->setUInt32(0, _accountInfo.Id); - stmt->setUInt32(1, WrongPassBanTime); + stmt->SetData(0, _accountInfo.Id); + stmt->SetData(1, WrongPassBanTime); LoginDatabase.Execute(stmt); LOG_DEBUG("server.authserver", "'{}:{}' [AuthChallenge] account {} got banned for '{}' seconds because it failed to authenticate '{}' times", @@ -606,8 +605,8 @@ bool AuthSession::HandleLogonProof() else { stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_IP_AUTO_BANNED); - stmt->setString(0, GetRemoteIpAddress().to_string()); - stmt->setUInt32(1, WrongPassBanTime); + stmt->SetData(0, GetRemoteIpAddress().to_string()); + stmt->SetData(1, WrongPassBanTime); LoginDatabase.Execute(stmt); LOG_DEBUG("server.authserver", "'{}:{}' [AuthChallenge] IP got banned for '{}' seconds because account {} failed to authenticate '{}' times", @@ -648,8 +647,8 @@ bool AuthSession::HandleReconnectChallenge() // Get the account details from the account table LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_RECONNECTCHALLENGE); - stmt->setString(0, GetRemoteIpAddress().to_string()); - stmt->setString(1, login); + stmt->SetData(0, GetRemoteIpAddress().to_string()); + stmt->SetData(1, login); _queryProcessor.AddCallback(LoginDatabase.AsyncQuery(stmt).WithPreparedCallback(std::bind(&AuthSession::ReconnectChallengeCallback, this, std::placeholders::_1))); return true; @@ -670,7 +669,7 @@ void AuthSession::ReconnectChallengeCallback(PreparedQueryResult result) Field* fields = result->Fetch(); _accountInfo.LoadResult(fields); - _sessionKey = fields[11].GetBinary<SESSION_KEY_LENGTH>(); + _sessionKey = fields[11].Get<Binary, SESSION_KEY_LENGTH>(); Acore::Crypto::GetRandomBytes(_reconnectProof); _status = STATUS_RECONNECT_PROOF; @@ -734,7 +733,7 @@ bool AuthSession::HandleRealmList() LOG_DEBUG("server.authserver", "Entering _HandleRealmList"); LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_REALM_CHARACTER_COUNTS); - stmt->setUInt32(0, _accountInfo.Id); + stmt->SetData(0, _accountInfo.Id); _queryProcessor.AddCallback(LoginDatabase.AsyncQuery(stmt).WithPreparedCallback(std::bind(&AuthSession::RealmListCallback, this, std::placeholders::_1))); _status = STATUS_WAITING_FOR_REALM_LIST; @@ -749,7 +748,7 @@ void AuthSession::RealmListCallback(PreparedQueryResult result) do { Field* fields = result->Fetch(); - characterCounts[fields[0].GetUInt32()] = fields[1].GetUInt8(); + characterCounts[fields[0].Get<uint32>()] = fields[1].Get<uint8>(); } while (result->NextRow()); } diff --git a/src/server/database/Database/AdhocStatement.cpp b/src/server/database/Database/AdhocStatement.cpp index 64ff0908ca..cb39769cae 100644 --- a/src/server/database/Database/AdhocStatement.cpp +++ b/src/server/database/Database/AdhocStatement.cpp @@ -19,23 +19,21 @@ #include "Errors.h" #include "MySQLConnection.h" #include "QueryResult.h" -#include <cstdlib> -#include <cstring> /*! Basic, ad-hoc queries. */ -BasicStatementTask::BasicStatementTask(char const* sql, bool async) : -m_result(nullptr) +BasicStatementTask::BasicStatementTask(std::string_view sql, bool async) : m_result(nullptr) { - m_sql = strdup(sql); + m_sql = std::string(sql); m_has_result = async; // If the operation is async, then there's a result + if (async) m_result = new QueryResultPromise(); } BasicStatementTask::~BasicStatementTask() { - free((void*)m_sql); - if (m_has_result && m_result != nullptr) + m_sql.clear(); + if (m_has_result && m_result) delete m_result; } diff --git a/src/server/database/Database/AdhocStatement.h b/src/server/database/Database/AdhocStatement.h index f48db291ab..61469c6c28 100644 --- a/src/server/database/Database/AdhocStatement.h +++ b/src/server/database/Database/AdhocStatement.h @@ -26,14 +26,14 @@ class AC_DATABASE_API BasicStatementTask : public SQLOperation { public: - BasicStatementTask(char const* sql, bool async = false); + BasicStatementTask(std::string_view sql, bool async = false); ~BasicStatementTask(); bool Execute() override; QueryResultFuture GetFuture() const { return m_result->get_future(); } private: - char const* m_sql; //- Raw query to be executed + std::string m_sql; //- Raw query to be executed bool m_has_result; QueryResultPromise* m_result; }; diff --git a/src/server/database/Database/DatabaseLoader.cpp b/src/server/database/Database/DatabaseLoader.cpp index db5ad9e20d..5ca5844e3c 100644 --- a/src/server/database/Database/DatabaseLoader.cpp +++ b/src/server/database/Database/DatabaseLoader.cpp @@ -68,7 +68,7 @@ DatabaseLoader& DatabaseLoader::AddDatabase(DatabaseWorkerPool<T>& pool, std::st while (reconnectCount < attempts) { - LOG_INFO(_logger, "> Retrying after {} seconds", static_cast<uint32>(reconnectSeconds.count())); + LOG_WARN(_logger, "> Retrying after {} seconds", static_cast<uint32>(reconnectSeconds.count())); std::this_thread::sleep_for(reconnectSeconds); error = pool.Open(); @@ -153,7 +153,22 @@ DatabaseLoader& DatabaseLoader::AddDatabase(DatabaseWorkerPool<T>& pool, std::st bool DatabaseLoader::Load() { - return OpenDatabases() && PopulateDatabases() && UpdateDatabases() && PrepareStatements(); + if (!_updateFlags) + LOG_INFO("sql.updates", "Automatic database updates are disabled for all databases!"); + + if (!OpenDatabases()) + return false; + + if (!PopulateDatabases()) + return false; + + if (!UpdateDatabases()) + return false; + + if (!PrepareStatements()) + return false; + + return true; } bool DatabaseLoader::OpenDatabases() diff --git a/src/server/database/Database/DatabaseWorkerPool.cpp b/src/server/database/Database/DatabaseWorkerPool.cpp index 635851247e..269ecaf350 100644 --- a/src/server/database/Database/DatabaseWorkerPool.cpp +++ b/src/server/database/Database/DatabaseWorkerPool.cpp @@ -17,11 +17,10 @@ #include "DatabaseWorkerPool.h" #include "AdhocStatement.h" +#include "CharacterDatabase.h" #include "Errors.h" -#include "Implementation/CharacterDatabase.h" -#include "Implementation/LoginDatabase.h" -#include "Implementation/WorldDatabase.h" #include "Log.h" +#include "LoginDatabase.h" #include "MySQLPreparedStatement.h" #include "MySQLWorkaround.h" #include "PCQueue.h" @@ -31,7 +30,9 @@ #include "QueryResult.h" #include "SQLOperation.h" #include "Transaction.h" +#include "WorldDatabase.h" #include <mysqld_error.h> +#include <limits> #ifdef ACORE_DEBUG #include <boost/stacktrace.hpp> @@ -57,9 +58,10 @@ class PingOperation : public SQLOperation }; template <class T> -DatabaseWorkerPool<T>::DatabaseWorkerPool() - : _queue(new ProducerConsumerQueue<SQLOperation*>()), - _async_threads(0), _synch_threads(0) +DatabaseWorkerPool<T>::DatabaseWorkerPool() : + _queue(new ProducerConsumerQueue<SQLOperation*>()), + _async_threads(0), + _synch_threads(0) { WPFatal(mysql_thread_safe(), "Used MySQL library isn't thread-safe."); @@ -72,7 +74,7 @@ DatabaseWorkerPool<T>::DatabaseWorkerPool() #endif WPFatal(isSupportClientDB, "AzerothCore does not support MySQL versions below 5.7 and MariaDB 10.5\nSearch the wiki for ACE00043 in Common Errors (https://www.azerothcore.org/wiki/common-errors)."); - WPFatal(isSameClientDB, "Used MySQL library version (%s id %lu) does not match the version id used to compile AzerothCore (id %u).\nSearch the wiki for ACE00046 in Common Errors (https://www.azerothcore.org/wiki/common-errors).", + WPFatal(isSameClientDB, "Used MySQL library version ({} id {}) does not match the version id used to compile AzerothCore (id {}).\nSearch the wiki for ACE00046 in Common Errors (https://www.azerothcore.org/wiki/common-errors).", mysql_get_client_info(), mysql_get_client_version(), MYSQL_VERSION_ID); } @@ -83,8 +85,7 @@ DatabaseWorkerPool<T>::~DatabaseWorkerPool() } template <class T> -void DatabaseWorkerPool<T>::SetConnectionInfo(std::string const& infoString, - uint8 const asyncThreads, uint8 const synchThreads) +void DatabaseWorkerPool<T>::SetConnectionInfo(std::string_view infoString, uint8 const asyncThreads, uint8 const synchThreads) { _connectionInfo = std::make_unique<MySQLConnectionInfo>(infoString); @@ -141,9 +142,9 @@ void DatabaseWorkerPool<T>::Close() template <class T> bool DatabaseWorkerPool<T>::PrepareStatements() { - for (auto& connections : _connections) + for (auto const& connections : _connections) { - for (auto& connection : connections) + for (auto const& connection : connections) { connection->LockIfReady(); if (!connection->PrepareStatements()) @@ -170,8 +171,8 @@ bool DatabaseWorkerPool<T>::PrepareStatements() { uint32 const paramCount = stmt->GetParameterCount(); - // TC only supports uint8 indices. - ASSERT(paramCount < (std::numeric_limits<uint8>::max)()); + // WH only supports uint8 indices. + ASSERT(paramCount < std::numeric_limits<uint8>::max()); _preparedStatementSize[i] = static_cast<uint8>(paramCount); } @@ -183,13 +184,13 @@ bool DatabaseWorkerPool<T>::PrepareStatements() } template <class T> -QueryResult DatabaseWorkerPool<T>::Query(char const* sql, T* connection /*= nullptr*/) +QueryResult DatabaseWorkerPool<T>::Query(std::string_view sql) { - if (!connection) - connection = GetFreeConnection(); + auto connection = GetFreeConnection(); ResultSet* result = connection->Query(sql); connection->Unlock(); + if (!result || !result->GetRowCount() || !result->NextRow()) { delete result; @@ -219,7 +220,7 @@ PreparedQueryResult DatabaseWorkerPool<T>::Query(PreparedStatement<T>* stmt) } template <class T> -QueryCallback DatabaseWorkerPool<T>::AsyncQuery(char const* sql) +QueryCallback DatabaseWorkerPool<T>::AsyncQuery(std::string_view sql) { BasicStatementTask* task = new BasicStatementTask(sql, true); // Store future result before enqueueing - task might get already processed and deleted before returning from this method @@ -308,6 +309,7 @@ void DatabaseWorkerPool<T>::DirectCommitTransaction(SQLTransaction<T>& transacti { T* connection = GetFreeConnection(); int errorCode = connection->ExecuteTransaction(transaction); + if (!errorCode) { connection->Unlock(); // OK, operation succesful @@ -320,6 +322,7 @@ void DatabaseWorkerPool<T>::DirectCommitTransaction(SQLTransaction<T>& transacti { //todo: handle multiple sync threads deadlocking in a similar way as async threads uint8 loopBreaker = 5; + for (uint8 i = 0; i < loopBreaker; ++i) { if (!connection->ExecuteTransaction(transaction)) @@ -368,6 +371,7 @@ void DatabaseWorkerPool<T>::KeepAlive() //! If one or more worker threads are busy, the ping operations will not be split evenly, but this doesn't matter //! as the sole purpose is to prevent connections from idling. auto const count = _connections[IDX_ASYNC].size(); + for (uint8 i = 0; i < count; ++i) Enqueue(new PingOperation); } @@ -378,7 +382,8 @@ uint32 DatabaseWorkerPool<T>::OpenConnections(InternalIndex type, uint8 numConne for (uint8 i = 0; i < numConnections; ++i) { // Create the connection - auto connection = [&] { + auto connection = [&] + { switch (type) { case IDX_ASYNC: @@ -461,15 +466,15 @@ T* DatabaseWorkerPool<T>::GetFreeConnection() } template <class T> -char const* DatabaseWorkerPool<T>::GetDatabaseName() const +std::string_view DatabaseWorkerPool<T>::GetDatabaseName() const { - return _connectionInfo->database.c_str(); + return std::string_view{ _connectionInfo->database }; } template <class T> -void DatabaseWorkerPool<T>::Execute(char const* sql) +void DatabaseWorkerPool<T>::Execute(std::string_view sql) { - if (Acore::IsFormatEmptyOrNull(sql)) + if (sql.empty()) return; BasicStatementTask* task = new BasicStatementTask(sql); @@ -484,9 +489,9 @@ void DatabaseWorkerPool<T>::Execute(PreparedStatement<T>* stmt) } template <class T> -void DatabaseWorkerPool<T>::DirectExecute(char const* sql) +void DatabaseWorkerPool<T>::DirectExecute(std::string_view sql) { - if (Acore::IsFormatEmptyOrNull(sql)) + if (sql.empty()) return; T* connection = GetFreeConnection(); @@ -506,7 +511,7 @@ void DatabaseWorkerPool<T>::DirectExecute(PreparedStatement<T>* stmt) } template <class T> -void DatabaseWorkerPool<T>::ExecuteOrAppend(SQLTransaction<T>& trans, char const* sql) +void DatabaseWorkerPool<T>::ExecuteOrAppend(SQLTransaction<T>& trans, std::string_view sql) { if (!trans) Execute(sql); diff --git a/src/server/database/Database/DatabaseWorkerPool.h b/src/server/database/Database/DatabaseWorkerPool.h index 604483aa1f..c7bc7798a4 100644 --- a/src/server/database/Database/DatabaseWorkerPool.h +++ b/src/server/database/Database/DatabaseWorkerPool.h @@ -22,7 +22,6 @@ #include "Define.h" #include "StringFormat.h" #include <array> -#include <string> #include <vector> template <typename T> @@ -45,13 +44,11 @@ private: public: /* Activity state */ DatabaseWorkerPool(); - ~DatabaseWorkerPool(); - void SetConnectionInfo(std::string const& infoString, uint8 const asyncThreads, uint8 const synchThreads); + void SetConnectionInfo(std::string_view infoString, uint8 const asyncThreads, uint8 const synchThreads); uint32 Open(); - void Close(); //! Prepares all prepared statements @@ -68,17 +65,17 @@ public: //! Enqueues a one-way SQL operation in string format that will be executed asynchronously. //! This method should only be used for queries that are only executed once, e.g during startup. - void Execute(char const* sql); + void Execute(std::string_view sql); //! Enqueues a one-way SQL operation in string format -with variable args- that will be executed asynchronously. //! This method should only be used for queries that are only executed once, e.g during startup. - template<typename Format, typename... Args> - void PExecute(Format&& sql, Args&&... args) + template<typename... Args> + void Execute(std::string_view sql, Args&&... args) { - if (Acore::IsFormatEmptyOrNull(sql)) + if (sql.empty()) return; - Execute(Acore::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str()); + Execute(Acore::StringFormatFmt(sql, std::forward<Args>(args)...)); } //! Enqueues a one-way SQL operation in prepared statement format that will be executed asynchronously. @@ -91,17 +88,17 @@ public: //! Directly executes a one-way SQL operation in string format, that will block the calling thread until finished. //! This method should only be used for queries that are only executed once, e.g during startup. - void DirectExecute(char const* sql); + void DirectExecute(std::string_view sql); //! Directly executes a one-way SQL operation in string format -with variable args-, that will block the calling thread until finished. //! This method should only be used for queries that are only executed once, e.g during startup. - template<typename Format, typename... Args> - void DirectPExecute(Format&& sql, Args&&... args) + template<typename... Args> + void DirectExecute(std::string_view sql, Args&&... args) { - if (Acore::IsFormatEmptyOrNull(sql)) + if (sql.empty()) return; - DirectExecute(Acore::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str()); + DirectExecute(Acore::StringFormatFmt(sql, std::forward<Args>(args)...)); } //! Directly executes a one-way SQL operation in prepared statement format, that will block the calling thread until finished. @@ -114,28 +111,17 @@ public: //! Directly executes an SQL query in string format that will block the calling thread until finished. //! Returns reference counted auto pointer, no need for manual memory management in upper level code. - QueryResult Query(char const* sql, T* connection = nullptr); - - //! Directly executes an SQL query in string format -with variable args- that will block the calling thread until finished. - //! Returns reference counted auto pointer, no need for manual memory management in upper level code. - template<typename Format, typename... Args> - QueryResult PQuery(Format&& sql, T* conn, Args&&... args) - { - if (Acore::IsFormatEmptyOrNull(sql)) - return QueryResult(nullptr); - - return Query(Acore::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str(), conn); - } + QueryResult Query(std::string_view sql); //! Directly executes an SQL query in string format -with variable args- that will block the calling thread until finished. //! Returns reference counted auto pointer, no need for manual memory management in upper level code. - template<typename Format, typename... Args> - QueryResult PQuery(Format&& sql, Args&&... args) + template<typename... Args> + QueryResult Query(std::string_view sql, Args&&... args) { - if (Acore::IsFormatEmptyOrNull(sql)) + if (sql.empty()) return QueryResult(nullptr); - return Query(Acore::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str()); + return Query(Acore::StringFormatFmt(sql, std::forward<Args>(args)...)); } //! Directly executes an SQL query in prepared format that will block the calling thread until finished. @@ -149,7 +135,7 @@ public: //! Enqueues a query in string format that will set the value of the QueryResultFuture return object as soon as the query is executed. //! The return value is then processed in ProcessQueryCallback methods. - QueryCallback AsyncQuery(char const* sql); + QueryCallback AsyncQuery(std::string_view sql); //! Enqueues a query in prepared format that will set the value of the PreparedQueryResultFuture return object as soon as the query is executed. //! The return value is then processed in ProcessQueryCallback methods. @@ -183,7 +169,7 @@ public: //! Method used to execute ad-hoc statements in a diverse context. //! Will be wrapped in a transaction if valid object is present, otherwise executed standalone. - void ExecuteOrAppend(SQLTransaction<T>& trans, char const* sql); + void ExecuteOrAppend(SQLTransaction<T>& trans, std::string_view sql); //! Method used to execute prepared statements in a diverse context. //! Will be wrapped in a transaction if valid object is present, otherwise executed standalone. @@ -226,7 +212,7 @@ private: //! Caller MUST call t->Unlock() after touching the MySQL context to prevent deadlocks. T* GetFreeConnection(); - [[nodiscard]] char const* GetDatabaseName() const; + [[nodiscard]] std::string_view GetDatabaseName() const; //! Queue shared by async worker threads. std::unique_ptr<ProducerConsumerQueue<SQLOperation*>> _queue; diff --git a/src/server/database/Database/Field.cpp b/src/server/database/Database/Field.cpp index 1de88a6837..35f84c2a0a 100644 --- a/src/server/database/Database/Field.cpp +++ b/src/server/database/Database/Field.cpp @@ -19,6 +19,8 @@ #include "Errors.h" #include "Log.h" #include "MySQLHacks.h" +#include "StringConvert.h" +#include "Types.h" Field::Field() { @@ -28,282 +30,310 @@ Field::Field() meta = nullptr; } -Field::~Field() = default; - -uint8 Field::GetUInt8() const +namespace { - if (!data.value) - return 0; - -#ifdef ACORE_STRICT_DATABASE_TYPE_CHECKS - if (!IsType(DatabaseFieldTypes::Int8)) + template<typename T> + constexpr T GetDefaultValue() { - LogWrongType(__FUNCTION__); - return 0; + if constexpr (std::is_same_v<T, bool>) + return false; + else if constexpr (std::is_integral_v<T>) + return 0; + else if constexpr (std::is_floating_point_v<T>) + return 1.0f; + else if constexpr (std::is_same_v<T, std::vector<uint8>> || std::is_same_v<std::string_view, T>) + return {}; + else + return ""; } -#endif - - if (data.raw) - return *reinterpret_cast<uint8 const*>(data.value); - return static_cast<uint8>(strtoul(data.value, nullptr, 10)); -} - -int8 Field::GetInt8() const -{ - if (!data.value) - return 0; -#ifdef ACORE_STRICT_DATABASE_TYPE_CHECKS - if (!IsType(DatabaseFieldTypes::Int8)) + template<typename T> + inline bool IsCorrectFieldType(DatabaseFieldTypes type) { - LogWrongType(__FUNCTION__); - return 0; + // Int8 + if constexpr (std::is_same_v<T, bool> || std::is_same_v<T, int8> || std::is_same_v<T, uint8>) + { + if (type == DatabaseFieldTypes::Int8) + return true; + } + + // In16 + if constexpr (std::is_same_v<T, uint16> || std::is_same_v<T, int16>) + { + if (type == DatabaseFieldTypes::Int16) + return true; + } + + // Int32 + if constexpr (std::is_same_v<T, uint32> || std::is_same_v<T, int32>) + { + if (type == DatabaseFieldTypes::Int32) + return true; + } + + // Int64 + if constexpr (std::is_same_v<T, uint64> || std::is_same_v<T, int64>) + { + if (type == DatabaseFieldTypes::Int64) + return true; + } + + // float + if constexpr (std::is_same_v<T, float>) + { + if (type == DatabaseFieldTypes::Float) + return true; + } + + // dobule + if constexpr (std::is_same_v<T, double>) + { + if (type == DatabaseFieldTypes::Double || type == DatabaseFieldTypes::Decimal) + return true; + } + + // Binary + if constexpr (std::is_same_v<T, Binary>) + { + if (type == DatabaseFieldTypes::Binary) + return true; + } + + return false; } -#endif - if (data.raw) - return *reinterpret_cast<int8 const*>(data.value); - return static_cast<int8>(strtol(data.value, nullptr, 10)); -} + inline Optional<std::string_view> GetCleanAliasName(std::string_view alias) + { + if (alias.empty()) + return {}; -uint16 Field::GetUInt16() const -{ - if (!data.value) - return 0; + auto pos = alias.find_first_of('('); + if (pos == std::string_view::npos) + return {}; -#ifdef ACORE_STRICT_DATABASE_TYPE_CHECKS - if (!IsType(DatabaseFieldTypes::Int16)) - { - LogWrongType(__FUNCTION__); - return 0; + alias.remove_suffix(alias.length() - pos); + + return { alias }; } -#endif - if (data.raw) - return *reinterpret_cast<uint16 const*>(data.value); - return static_cast<uint16>(strtoul(data.value, nullptr, 10)); -} + template<typename T> + inline bool IsCorrectAlias(DatabaseFieldTypes type, std::string_view alias) + { + if constexpr (std::is_same_v<T, double>) + { + if ((StringEqualI(alias, "sum") || StringEqualI(alias, "avg")) && type == DatabaseFieldTypes::Decimal) + return true; -int16 Field::GetInt16() const -{ - if (!data.value) - return 0; + return false; + } -#ifdef ACORE_STRICT_DATABASE_TYPE_CHECKS - if (!IsType(DatabaseFieldTypes::Int16)) - { - LogWrongType(__FUNCTION__); - return 0; - } -#endif + if constexpr (std::is_same_v<T, uint64>) + { + if (StringEqualI(alias, "count") && type == DatabaseFieldTypes::Int64) + return true; - if (data.raw) - return *reinterpret_cast<int16 const*>(data.value); - return static_cast<int16>(strtol(data.value, nullptr, 10)); -} + return false; + } -uint32 Field::GetUInt32() const -{ - if (!data.value) - return 0; + if ((StringEqualI(alias, "min") || StringEqualI(alias, "max")) && IsCorrectFieldType<T>(type)) + { + return true; + } -#ifdef ACORE_STRICT_DATABASE_TYPE_CHECKS - if (!IsType(DatabaseFieldTypes::Int32)) - { - LogWrongType(__FUNCTION__); - return 0; + return false; } -#endif +} - if (data.raw) - return *reinterpret_cast<uint32 const*>(data.value); - return static_cast<uint32>(strtoul(data.value, nullptr, 10)); +void Field::GetBinarySizeChecked(uint8* buf, size_t length) const +{ + ASSERT(data.value && (data.length == length), "Expected {}-byte binary blob, got {}data ({} bytes) instead", length, data.value ? "" : "no ", data.length); + memcpy(buf, data.value, length); } -int32 Field::GetInt32() const +void Field::SetByteValue(char const* newValue, uint32 length) { - if (!data.value) - return 0; + // This value stores raw bytes that have to be explicitly cast later + data.value = newValue; + data.length = length; + data.raw = true; +} -#ifdef ACORE_STRICT_DATABASE_TYPE_CHECKS - if (!IsType(DatabaseFieldTypes::Int32)) - { - LogWrongType(__FUNCTION__); - return 0; - } -#endif +void Field::SetStructuredValue(char const* newValue, uint32 length) +{ + // This value stores somewhat structured data that needs function style casting + data.value = newValue; + data.length = length; + data.raw = false; +} - if (data.raw) - return *reinterpret_cast<int32 const*>(data.value); - return static_cast<int32>(strtol(data.value, nullptr, 10)); +bool Field::IsType(DatabaseFieldTypes type) const +{ + return meta->Type == type; } -uint64 Field::GetUInt64() const +bool Field::IsNumeric() const { - if (!data.value) - return 0; + return (meta->Type == DatabaseFieldTypes::Int8 || + meta->Type == DatabaseFieldTypes::Int16 || + meta->Type == DatabaseFieldTypes::Int32 || + meta->Type == DatabaseFieldTypes::Int64 || + meta->Type == DatabaseFieldTypes::Float || + meta->Type == DatabaseFieldTypes::Double); +} -#ifdef ACORE_STRICT_DATABASE_TYPE_CHECKS - if (!IsType(DatabaseFieldTypes::Int64)) - { - LogWrongType(__FUNCTION__); - return 0; - } -#endif +void Field::LogWrongType(std::string_view getter, std::string_view typeName) const +{ + LOG_WARN("sql.sql", "Warning: {}<{}> on {} field {}.{} ({}.{}) at index {}.", + getter, typeName, meta->TypeName, meta->TableAlias, meta->Alias, meta->TableName, meta->Name, meta->Index); +} - if (data.raw) - return *reinterpret_cast<uint64 const*>(data.value); - return static_cast<uint64>(strtoull(data.value, nullptr, 10)); +void Field::SetMetadata(QueryResultFieldMetadata const* fieldMeta) +{ + meta = fieldMeta; } -int64 Field::GetInt64() const +template<typename T> +T Field::GetData() const { + static_assert(std::is_arithmetic_v<T>, "Unsurropt type for Field::GetData()"); + if (!data.value) - return 0; + return GetDefaultValue<T>(); #ifdef ACORE_STRICT_DATABASE_TYPE_CHECKS - if (!IsType(DatabaseFieldTypes::Int64)) + if (!IsCorrectFieldType<T>(meta->Type)) { - LogWrongType(__FUNCTION__); - return 0; + LogWrongType(__FUNCTION__, typeid(T).name()); + //return GetDefaultValue<T>(); } #endif - if (data.raw) - return *reinterpret_cast<int64 const*>(data.value); - return static_cast<int64>(strtoll(data.value, nullptr, 10)); -} + Optional<T> result = {}; -float Field::GetFloat() const -{ - if (!data.value) - return 0.0f; + if (data.raw) + result = *reinterpret_cast<T const*>(data.value); + else + result = Acore::StringTo<T>(data.value); -#ifdef ACORE_STRICT_DATABASE_TYPE_CHECKS - if (!IsType(DatabaseFieldTypes::Float)) + // Correct double fields... this undefined behavior :/ + if constexpr (std::is_same_v<T, double>) { - LogWrongType(__FUNCTION__); - return 0.0f; + if (data.raw && !IsType(DatabaseFieldTypes::Decimal)) + result = *reinterpret_cast<double const*>(data.value); + else + result = Acore::StringTo<float>(data.value); } -#endif - if (data.raw) - return *reinterpret_cast<float const*>(data.value); - return static_cast<float>(atof(data.value)); -} + // Check -1 for *_dbc db tables + if constexpr (std::is_same_v<T, uint32>) + { + std::string_view tableName{ meta->TableName }; + + if (!tableName.empty() && tableName.size() > 4) + { + auto signedResult = Acore::StringTo<int32>(data.value); + + if (signedResult && !result && tableName.substr(tableName.length() - 4) == "_dbc") + { + LOG_DEBUG("sql.sql", "> Found incorrect value '{}' for type '{}' in _dbc table.", data.value, typeid(T).name()); + LOG_DEBUG("sql.sql", "> Table name '{}'. Field name '{}'. Try return int32 value", meta->TableName, meta->Name); + return GetData<int32>(); + } + } + } -double Field::GetDouble() const -{ - if (!data.value) - return 0.0f; + if (auto alias = GetCleanAliasName(meta->Alias)) + { + if ((StringEqualI(*alias, "min") || StringEqualI(*alias, "max")) && !IsCorrectAlias<T>(meta->Type, *alias)) + { + LogWrongType(__FUNCTION__, typeid(T).name()); + } + + if ((StringEqualI(*alias, "sum") || StringEqualI(*alias, "avg")) && !IsCorrectAlias<T>(meta->Type, *alias)) + { + LogWrongType(__FUNCTION__, typeid(T).name()); + LOG_WARN("sql.sql", "> Please use GetData<double>()"); + return GetData<double>(); + } + + if (StringEqualI(*alias, "count") && !IsCorrectAlias<T>(meta->Type, *alias)) + { + LogWrongType(__FUNCTION__, typeid(T).name()); + LOG_WARN("sql.sql", "> Please use GetData<uint64>()"); + return GetData<uint64>(); + } + } -#ifdef ACORE_STRICT_DATABASE_TYPE_CHECKS - if (!IsType(DatabaseFieldTypes::Double) && !IsType(DatabaseFieldTypes::Decimal)) + if (!result) { - LogWrongType(__FUNCTION__); - return 0.0f; + LOG_FATAL("sql.sql", "> Incorrect value '{}' for type '{}'. Value is raw ? '{}'", data.value, typeid(T).name(), data.raw); + LOG_FATAL("sql.sql", "> Table name '{}'. Field name '{}'", meta->TableName, meta->Name); + //ABORT(); + return GetDefaultValue<T>(); } -#endif - if (data.raw && !IsType(DatabaseFieldTypes::Decimal)) - return *reinterpret_cast<double const*>(data.value); - return static_cast<double>(atof(data.value)); + return *result; } -char const* Field::GetCString() const +template bool Field::GetData() const; +template uint8 Field::GetData() const; +template uint16 Field::GetData() const; +template uint32 Field::GetData() const; +template uint64 Field::GetData() const; +template int8 Field::GetData() const; +template int16 Field::GetData() const; +template int32 Field::GetData() const; +template int64 Field::GetData() const; +template float Field::GetData() const; +template double Field::GetData() const; + +std::string Field::GetDataString() const { if (!data.value) - return nullptr; + return ""; #ifdef ACORE_STRICT_DATABASE_TYPE_CHECKS if (IsNumeric() && data.raw) { - LogWrongType(__FUNCTION__); - return nullptr; + LogWrongType(__FUNCTION__, "std::string"); + return ""; } #endif - return static_cast<char const*>(data.value); -} - -std::string Field::GetString() const -{ - if (!data.value) - return ""; - char const* string = GetCString(); - if (!string) - return ""; - - return std::string(string, data.length); + return { data.value, data.length }; } -std::string_view Field::GetStringView() const +std::string_view Field::GetDataStringView() const { if (!data.value) return {}; - char const* const string = GetCString(); - if (!string) +#ifdef ACORE_STRICT_DATABASE_TYPE_CHECKS + if (IsNumeric() && data.raw) + { + LogWrongType(__FUNCTION__, "std::string_view"); return {}; + } +#endif - return { string, data.length }; + return { data.value, data.length }; } -std::vector<uint8> Field::GetBinary() const +Binary Field::GetDataBinary() const { - std::vector<uint8> result; + Binary result = {}; if (!data.value || !data.length) return result; +#ifdef ACORE_STRICT_DATABASE_TYPE_CHECKS + if (!IsCorrectFieldType<Binary>(meta->Type)) + { + LogWrongType(__FUNCTION__, "Binary"); + return {}; + } +#endif + result.resize(data.length); memcpy(result.data(), data.value, data.length); return result; } - -void Field::GetBinarySizeChecked(uint8* buf, size_t length) const -{ - ASSERT(data.value && (data.length == length), "Expected {}-byte binary blob, got {}data ({} bytes) instead", length, data.value ? "" : "no ", data.length); - memcpy(buf, data.value, length); -} - -void Field::SetByteValue(char const* newValue, uint32 length) -{ - // This value stores raw bytes that have to be explicitly cast later - data.value = newValue; - data.length = length; - data.raw = true; -} - -void Field::SetStructuredValue(char const* newValue, uint32 length) -{ - // This value stores somewhat structured data that needs function style casting - data.value = newValue; - data.length = length; - data.raw = false; -} - -bool Field::IsType(DatabaseFieldTypes type) const -{ - return meta->Type == type; -} - -bool Field::IsNumeric() const -{ - return (meta->Type == DatabaseFieldTypes::Int8 || - meta->Type == DatabaseFieldTypes::Int16 || - meta->Type == DatabaseFieldTypes::Int32 || - meta->Type == DatabaseFieldTypes::Int64 || - meta->Type == DatabaseFieldTypes::Float || - meta->Type == DatabaseFieldTypes::Double); -} - -void Field::LogWrongType(char const* getter) const -{ - LOG_WARN("sql.sql", "Warning: {} on {} field {}.{} ({}.{}) at index {}.", - getter, meta->TypeName, meta->TableAlias, meta->Alias, meta->TableName, meta->Name, meta->Index); -} - -void Field::SetMetadata(QueryResultFieldMetadata const* fieldMeta) -{ - meta = fieldMeta; -} diff --git a/src/server/database/Database/Field.h b/src/server/database/Database/Field.h index a6be06f915..8496560c3c 100644 --- a/src/server/database/Database/Field.h +++ b/src/server/database/Database/Field.h @@ -20,11 +20,26 @@ #include "DatabaseEnvFwd.h" #include "Define.h" +#include "Duration.h" #include <array> -#include <string> #include <string_view> #include <vector> +namespace Acore::Types +{ + template <typename T> + using is_chrono_v = std::enable_if_t<std::is_same_v<Milliseconds, T> + || std::is_same_v<Seconds, T> + || std::is_same_v<Minutes, T> + || std::is_same_v<Hours, T> + || std::is_same_v<Days, T> + || std::is_same_v<Weeks, T> + || std::is_same_v<Years, T> + || std::is_same_v<Months, T>, T>; +} + +using Binary = std::vector<uint8>; + enum class DatabaseFieldTypes : uint8 { Null, @@ -41,11 +56,11 @@ enum class DatabaseFieldTypes : uint8 struct QueryResultFieldMetadata { - char const* TableName = nullptr; - char const* TableAlias = nullptr; - char const* Name = nullptr; - char const* Alias = nullptr; - char const* TypeName = nullptr; + std::string TableName{}; + std::string TableAlias{}; + std::string Name{}; + std::string Alias{}; + std::string TypeName{}; uint32 Index = 0; DatabaseFieldTypes Type = DatabaseFieldTypes::Null; }; @@ -57,20 +72,20 @@ struct QueryResultFieldMetadata Guideline on field type matching: - | MySQL type | method to use | - |------------------------|----------------------------------------| - | TINYINT | GetBool, GetInt8, GetUInt8 | - | SMALLINT | GetInt16, GetUInt16 | - | MEDIUMINT, INT | GetInt32, GetUInt32 | - | BIGINT | GetInt64, GetUInt64 | - | FLOAT | GetFloat | - | DOUBLE, DECIMAL | GetDouble | - | CHAR, VARCHAR, | GetCString, GetString | - | TINYTEXT, MEDIUMTEXT, | GetCString, GetString | - | TEXT, LONGTEXT | GetCString, GetString | - | TINYBLOB, MEDIUMBLOB, | GetBinary, GetString | - | BLOB, LONGBLOB | GetBinary, GetString | - | BINARY, VARBINARY | GetBinary | + | MySQL type | method to use | + |------------------------|-----------------------------------------| + | TINYINT | Get<bool>, Get<int8>, Get<uint8> | + | SMALLINT | Get<int16>, Get<uint16> | + | MEDIUMINT, INT | Get<int32>, Get<uint32> | + | BIGINT | Get<int64>, Get<uint64> | + | FLOAT | Get<float> | + | DOUBLE, DECIMAL | Get<double> | + | CHAR, VARCHAR, | Get<std::string>, Get<std::string_view> | + | TINYTEXT, MEDIUMTEXT, | Get<std::string>, Get<std::string_view> | + | TEXT, LONGTEXT | Get<std::string>, Get<std::string_view> | + | TINYBLOB, MEDIUMBLOB, | Get<Binary>, Get<std::string> | + | BLOB, LONGBLOB | Get<Binary>, Get<std::string> | + | BINARY, VARBINARY | Get<Binary> | Return types of aggregate functions: @@ -87,39 +102,49 @@ friend class PreparedResultSet; public: Field(); - ~Field(); + ~Field() = default; + + [[nodiscard]] inline bool IsNull() const + { + return data.value == nullptr; + } + + template<typename T> + inline std::enable_if_t<std::is_arithmetic_v<T>, T> Get() const + { + return GetData<T>(); + } - [[nodiscard]] bool GetBool() const // Wrapper, actually gets integer + template<typename T> + inline std::enable_if_t<std::is_same_v<std::string, T>, T> Get() const { - return GetUInt8() == 1 ? true : false; + return GetDataString(); } - [[nodiscard]] uint8 GetUInt8() const; - [[nodiscard]] int8 GetInt8() const; - [[nodiscard]] uint16 GetUInt16() const; - [[nodiscard]] int16 GetInt16() const; - [[nodiscard]] uint32 GetUInt32() const; - [[nodiscard]] int32 GetInt32() const; - [[nodiscard]] uint64 GetUInt64() const; - [[nodiscard]] int64 GetInt64() const; - [[nodiscard]] float GetFloat() const; - [[nodiscard]] double GetDouble() const; - [[nodiscard]] char const* GetCString() const; - [[nodiscard]] std::string GetString() const; - [[nodiscard]] std::string_view GetStringView() const; - [[nodiscard]] std::vector<uint8> GetBinary() const; - - template <size_t S> - std::array<uint8, S> GetBinary() const + template<typename T> + inline std::enable_if_t<std::is_same_v<std::string_view, T>, T> Get() const { - std::array<uint8, S> buf; + return GetDataStringView(); + } + + template<typename T> + inline std::enable_if_t<std::is_same_v<Binary, T>, T> Get() const + { + return GetDataBinary(); + } + + template <typename T, size_t S> + inline std::enable_if_t<std::is_same_v<Binary, T>, std::array<uint8, S>> Get() const + { + std::array<uint8, S> buf = {}; GetBinarySizeChecked(buf.data(), S); return buf; } - [[nodiscard]] bool IsNull() const + template<typename T> + inline Acore::Types::is_chrono_v<T> Get(bool convertToUin32 = true) const { - return data.value == nullptr; + return convertToUin32 ? T(GetData<uint32>()) : T(GetData<uint64>()); } DatabaseFieldTypes GetType() { return meta->Type; } @@ -138,8 +163,15 @@ protected: [[nodiscard]] bool IsNumeric() const; private: + template<typename T> + T GetData() const; + + std::string GetDataString() const; + std::string_view GetDataStringView() const; + Binary GetDataBinary() const; + QueryResultFieldMetadata const* meta; - void LogWrongType(char const* getter) const; + void LogWrongType(std::string_view getter, std::string_view typeName) const; void SetMetadata(QueryResultFieldMetadata const* fieldMeta); void GetBinarySizeChecked(uint8* buf, size_t size) const; }; diff --git a/src/server/database/Database/MySQLConnection.cpp b/src/server/database/Database/MySQLConnection.cpp index e594e22434..632df7a456 100644 --- a/src/server/database/Database/MySQLConnection.cpp +++ b/src/server/database/Database/MySQLConnection.cpp @@ -23,46 +23,46 @@ #include "MySQLWorkaround.h" #include "PreparedStatement.h" #include "QueryResult.h" +#include "StringConvert.h" #include "Timer.h" #include "Tokenize.h" #include "Transaction.h" #include "Util.h" -#include "StringConvert.h" #include <errmsg.h> #include <mysqld_error.h> -MySQLConnectionInfo::MySQLConnectionInfo(std::string const& infoString) +MySQLConnectionInfo::MySQLConnectionInfo(std::string_view infoString) { std::vector<std::string_view> tokens = Acore::Tokenize(infoString, ';', true); if (tokens.size() != 5 && tokens.size() != 6) return; - host.assign(tokens[0]); - port_or_socket.assign(tokens[1]); - user.assign(tokens[2]); - password.assign(tokens[3]); - database.assign(tokens[4]); + host.assign(tokens.at(0)); + port_or_socket.assign(tokens.at(1)); + user.assign(tokens.at(2)); + password.assign(tokens.at(3)); + database.assign(tokens.at(4)); if (tokens.size() == 6) - ssl.assign(tokens[5]); + ssl.assign(tokens.at(5)); } MySQLConnection::MySQLConnection(MySQLConnectionInfo& connInfo) : -m_reconnecting(false), -m_prepareError(false), -m_queue(nullptr), -m_Mysql(nullptr), -m_connectionInfo(connInfo), -m_connectionFlags(CONNECTION_SYNCH) { } + m_reconnecting(false), + m_prepareError(false), + m_queue(nullptr), + m_Mysql(nullptr), + m_connectionInfo(connInfo), + m_connectionFlags(CONNECTION_SYNCH) { } MySQLConnection::MySQLConnection(ProducerConsumerQueue<SQLOperation*>* queue, MySQLConnectionInfo& connInfo) : -m_reconnecting(false), -m_prepareError(false), -m_queue(queue), -m_Mysql(nullptr), -m_connectionInfo(connInfo), -m_connectionFlags(CONNECTION_ASYNC) + m_reconnecting(false), + m_prepareError(false), + m_queue(queue), + m_Mysql(nullptr), + m_connectionInfo(connInfo), + m_connectionFlags(CONNECTION_ASYNC) { m_worker = std::make_unique<DatabaseWorker>(m_queue, this); } @@ -76,7 +76,6 @@ void MySQLConnection::Close() { // Stop the worker thread before the statements are cleared m_worker.reset(); - m_stmts.clear(); if (m_Mysql) @@ -99,7 +98,8 @@ uint32 MySQLConnection::Open() char const* unix_socket; mysql_options(mysqlInit, MYSQL_SET_CHARSET_NAME, "utf8"); - #ifdef _WIN32 + +#ifdef _WIN32 if (m_connectionInfo.host == ".") // named pipe use option (Windows) { unsigned int opt = MYSQL_PROTOCOL_PIPE; @@ -112,7 +112,7 @@ uint32 MySQLConnection::Open() port = *Acore::StringTo<uint32>(m_connectionInfo.port_or_socket); unix_socket = 0; } - #else +#else if (m_connectionInfo.host == ".") // socket use option (Unix/Linux) { unsigned int opt = MYSQL_PROTOCOL_SOCKET; @@ -126,7 +126,7 @@ uint32 MySQLConnection::Open() port = *Acore::StringTo<uint32>(m_connectionInfo.port_or_socket); unix_socket = nullptr; } - #endif +#endif if (m_connectionInfo.ssl != "") { @@ -136,6 +136,7 @@ uint32 MySQLConnection::Open() { opt_use_ssl = SSL_MODE_REQUIRED; } + mysql_options(mysqlInit, MYSQL_OPT_SSL_MODE, (char const*)&opt_use_ssl); #else MySQLBool opt_use_ssl = MySQLBool(0); @@ -143,6 +144,7 @@ uint32 MySQLConnection::Open() { opt_use_ssl = MySQLBool(1); } + mysql_options(mysqlInit, MYSQL_OPT_SSL_ENFORCE, (char const*)&opt_use_ssl); #endif } @@ -156,9 +158,6 @@ uint32 MySQLConnection::Open() { LOG_INFO("sql.sql", "MySQL client library: {}", mysql_get_client_info()); LOG_INFO("sql.sql", "MySQL server ver: {} ", mysql_get_server_info(m_Mysql)); - // MySQL version above 5.1 IS required in both client and server and there is no known issue with different versions above 5.1 - // if (mysql_get_server_version(m_Mysql) != mysql_get_client_version()) - // LOG_INFO("sql.sql", "[WARNING] MySQL client/server version mismatch; may conflict with behaviour of prepared statements."); } LOG_INFO("sql.sql", "Connected to MySQL database at {}", m_connectionInfo.host); @@ -166,7 +165,7 @@ uint32 MySQLConnection::Open() // set connection properties to UTF8 to properly handle locales for different // server configs - core sends data in UTF8, so MySQL must expect UTF8 too - mysql_set_character_set(m_Mysql, "utf8"); + mysql_set_character_set(m_Mysql, "utf8mb4"); return 0; } else @@ -184,7 +183,7 @@ bool MySQLConnection::PrepareStatements() return !m_prepareError; } -bool MySQLConnection::Execute(char const* sql) +bool MySQLConnection::Execute(std::string_view sql) { if (!m_Mysql) return false; @@ -192,7 +191,7 @@ bool MySQLConnection::Execute(char const* sql) { uint32 _s = getMSTime(); - if (mysql_query(m_Mysql, sql)) + if (mysql_query(m_Mysql, std::string(sql).c_str())) { uint32 lErrno = mysql_errno(m_Mysql); @@ -219,7 +218,7 @@ bool MySQLConnection::Execute(PreparedStatementBase* stmt) uint32 index = stmt->GetIndex(); MySQLPreparedStatement* m_mStmt = GetPreparedStatement(index); - ASSERT(m_mStmt); // Can only be null if preparation failed, server side error or bad query + ASSERT(m_mStmt); // Can only be null if preparation failed, server side error or bad query m_mStmt->BindParameters(stmt); @@ -291,8 +290,7 @@ bool MySQLConnection::_Query(PreparedStatementBase* stmt, MySQLPreparedStatement if (mysql_stmt_execute(msql_STMT)) { uint32 lErrno = mysql_errno(m_Mysql); - LOG_ERROR("sql.sql", "SQL(p): {}\n [ERROR]: [{}] {}", - m_mStmt->getQueryString(), lErrno, mysql_stmt_error(msql_STMT)); + LOG_ERROR("sql.sql", "SQL(p): {}\n [ERROR]: [{}] {}", m_mStmt->getQueryString(), lErrno, mysql_stmt_error(msql_STMT)); if (_HandleMySQLErrno(lErrno)) // If it returns true, an error was handled successfully (i.e. reconnection) return _Query(stmt, mysqlStmt, pResult, pRowCount, pFieldCount); // Try again @@ -312,9 +310,9 @@ bool MySQLConnection::_Query(PreparedStatementBase* stmt, MySQLPreparedStatement return true; } -ResultSet* MySQLConnection::Query(char const* sql) +ResultSet* MySQLConnection::Query(std::string_view sql) { - if (!sql) + if (sql.empty()) return nullptr; MySQLResult* result = nullptr; @@ -328,7 +326,7 @@ ResultSet* MySQLConnection::Query(char const* sql) return new ResultSet(result, fields, rowCount, fieldCount); } -bool MySQLConnection::_Query(const char* sql, MySQLResult** pResult, MySQLField** pFields, uint64* pRowCount, uint32* pFieldCount) +bool MySQLConnection::_Query(std::string_view sql, MySQLResult** pResult, MySQLField** pFields, uint64* pRowCount, uint32* pFieldCount) { if (!m_Mysql) return false; @@ -336,13 +334,13 @@ bool MySQLConnection::_Query(const char* sql, MySQLResult** pResult, MySQLField* { uint32 _s = getMSTime(); - if (mysql_query(m_Mysql, sql)) + if (mysql_query(m_Mysql, std::string(sql).c_str())) { uint32 lErrno = mysql_errno(m_Mysql); LOG_INFO("sql.sql", "SQL: {}", sql); LOG_ERROR("sql.sql", "[{}] {}", lErrno, mysql_error(m_Mysql)); - if (_HandleMySQLErrno(lErrno)) // If it returns true, an error was handled successfully (i.e. reconnection) + if (_HandleMySQLErrno(lErrno)) // If it returns true, an error was handled successfully (i.e. reconnection) return _Query(sql, pResult, pFields, pRowCount, pFieldCount); // We try again return false; @@ -355,7 +353,7 @@ bool MySQLConnection::_Query(const char* sql, MySQLResult** pResult, MySQLField* *pFieldCount = mysql_field_count(m_Mysql); } - if (!*pResult ) + if (!*pResult) return false; if (!*pRowCount) @@ -392,18 +390,29 @@ int MySQLConnection::ExecuteTransaction(std::shared_ptr<TransactionBase> transac BeginTransaction(); - for (auto itr = queries.begin(); itr != queries.end(); ++itr) + for (auto const& data : queries) { - SQLElementData const& data = *itr; - switch (itr->type) + switch (data.type) { case SQL_ELEMENT_PREPARED: { - PreparedStatementBase* stmt = data.element.stmt; + PreparedStatementBase* stmt = nullptr; + + try + { + stmt = std::get<PreparedStatementBase*>(data.element); + } + catch (const std::bad_variant_access& ex) + { + LOG_FATAL("sql.sql", "> PreparedStatementBase not found in SQLElementData. {}", ex.what()); + ABORT(); + } + ASSERT(stmt); + if (!Execute(stmt)) { - LOG_WARN("sql.sql", "Transaction aborted. {} queries not executed.", (uint32)queries.size()); + LOG_WARN("sql.sql", "Transaction aborted. {} queries not executed.", queries.size()); int errorCode = GetLastError(); RollbackTransaction(); return errorCode; @@ -412,12 +421,24 @@ int MySQLConnection::ExecuteTransaction(std::shared_ptr<TransactionBase> transac break; case SQL_ELEMENT_RAW: { - char const* sql = data.element.query; - ASSERT(sql); + std::string sql{}; + + try + { + sql = std::get<std::string>(data.element); + } + catch (const std::bad_variant_access& ex) + { + LOG_FATAL("sql.sql", "> std::string not found in SQLElementData. {}", ex.what()); + ABORT(); + } + + ASSERT(!sql.empty()); + if (!Execute(sql)) { - LOG_WARN("sql.sql", "Transaction aborted. {} queries not executed.", (uint32)queries.size()); - int errorCode = GetLastError(); + LOG_WARN("sql.sql", "Transaction aborted. {} queries not executed.", queries.size()); + uint32 errorCode = GetLastError(); RollbackTransaction(); return errorCode; } @@ -469,7 +490,9 @@ MySQLPreparedStatement* MySQLConnection::GetPreparedStatement(uint32 index) { ASSERT(index < m_stmts.size(), "Tried to access invalid prepared statement index {} (max index {}) on database `{}`, connection type: {}", index, m_stmts.size(), m_connectionInfo.database, (m_connectionFlags & CONNECTION_ASYNC) ? "asynchronous" : "synchronous"); + MySQLPreparedStatement* ret = m_stmts[index].get(); + if (!ret) LOG_ERROR("sql.sql", "Could not fetch prepared statement {} on database `{}`, connection type: {}.", index, m_connectionInfo.database, (m_connectionFlags & CONNECTION_ASYNC) ? "asynchronous" : "synchronous"); @@ -477,7 +500,7 @@ MySQLPreparedStatement* MySQLConnection::GetPreparedStatement(uint32 index) return ret; } -void MySQLConnection::PrepareStatement(uint32 index, std::string const& sql, ConnectionFlags flags) +void MySQLConnection::PrepareStatement(uint32 index, std::string_view sql, ConnectionFlags flags) { // Check if specified query should be prepared on this connection // i.e. don't prepare async statements on synchronous connections @@ -497,7 +520,7 @@ void MySQLConnection::PrepareStatement(uint32 index, std::string const& sql, Con } else { - if (mysql_stmt_prepare(stmt, sql.c_str(), static_cast<unsigned long>(sql.size()))) + if (mysql_stmt_prepare(stmt, std::string(sql).c_str(), static_cast<unsigned long>(sql.size()))) { LOG_ERROR("sql.sql", "In mysql_stmt_prepare() id: {}, sql: \"{}\"", index, sql); LOG_ERROR("sql.sql", "{}", mysql_stmt_error(stmt)); @@ -523,6 +546,7 @@ PreparedResultSet* MySQLConnection::Query(PreparedStatementBase* stmt) { mysql_next_result(m_Mysql); } + return new PreparedResultSet(mysqlStmt->GetSTMT(), result, rowCount, fieldCount); } @@ -556,7 +580,7 @@ bool MySQLConnection::_HandleMySQLErrno(uint32 errNo, uint8 attempts /*= 5*/) if (!this->PrepareStatements()) { LOG_FATAL("sql.sql", "Could not re-prepare statements!"); - std::this_thread::sleep_for(std::chrono::seconds(10)); + std::this_thread::sleep_for(10s); std::abort(); } @@ -572,24 +596,24 @@ bool MySQLConnection::_HandleMySQLErrno(uint32 errNo, uint8 attempts /*= 5*/) { // Shut down the server when the mysql server isn't // reachable for some time - LOG_FATAL("sql.sql", "Failed to reconnect to the MySQL server, " - "terminating the server to prevent data corruption!"); + LOG_FATAL("sql.sql", "Failed to reconnect to the MySQL server, terminating the server to prevent data corruption!"); // We could also initiate a shutdown through using std::raise(SIGTERM) - std::this_thread::sleep_for(std::chrono::seconds(10)); + std::this_thread::sleep_for(10s); std::abort(); } else { // It's possible this attempted reconnect throws 2006 at us. // To prevent crazy recursive calls, sleep here. - std::this_thread::sleep_for(std::chrono::seconds(3)); // Sleep 3 seconds + std::this_thread::sleep_for(3s); // Sleep 3 seconds return _HandleMySQLErrno(lErrno, attempts); // Call self (recursive) } } case ER_LOCK_DEADLOCK: - return false; // Implemented in TransactionTask::Execute and DatabaseWorkerPool<T>::DirectCommitTransaction + return false; // Implemented in TransactionTask::Execute and DatabaseWorkerPool<T>::DirectCommitTransaction + // Query related errors - skip query case ER_WRONG_VALUE_COUNT: case ER_DUP_ENTRY: @@ -599,12 +623,12 @@ bool MySQLConnection::_HandleMySQLErrno(uint32 errNo, uint8 attempts /*= 5*/) case ER_BAD_FIELD_ERROR: case ER_NO_SUCH_TABLE: LOG_ERROR("sql.sql", "Your database structure is not up to date. Please make sure you've executed all queries in the sql/updates folders."); - std::this_thread::sleep_for(std::chrono::seconds(10)); + std::this_thread::sleep_for(10s); std::abort(); return false; case ER_PARSE_ERROR: LOG_ERROR("sql.sql", "Error while parsing SQL. Core fix required."); - std::this_thread::sleep_for(std::chrono::seconds(10)); + std::this_thread::sleep_for(10s); std::abort(); return false; default: diff --git a/src/server/database/Database/MySQLConnection.h b/src/server/database/Database/MySQLConnection.h index fe37b14142..2ad64cb5b1 100644 --- a/src/server/database/Database/MySQLConnection.h +++ b/src/server/database/Database/MySQLConnection.h @@ -42,7 +42,7 @@ enum ConnectionFlags struct AC_DATABASE_API MySQLConnectionInfo { - explicit MySQLConnectionInfo(std::string const& infoString); + explicit MySQLConnectionInfo(std::string_view infoString); std::string user; std::string password; @@ -54,7 +54,9 @@ struct AC_DATABASE_API MySQLConnectionInfo class AC_DATABASE_API MySQLConnection { -template <class T> friend class DatabaseWorkerPool; +template <class T> +friend class DatabaseWorkerPool; + friend class PingOperation; public: @@ -67,11 +69,11 @@ public: bool PrepareStatements(); - bool Execute(char const* sql); + bool Execute(std::string_view sql); bool Execute(PreparedStatementBase* stmt); - ResultSet* Query(char const* sql); + ResultSet* Query(std::string_view sql); PreparedResultSet* Query(PreparedStatementBase* stmt); - bool _Query(char const* sql, MySQLResult** pResult, MySQLField** pFields, uint64* pRowCount, uint32* pFieldCount); + bool _Query(std::string_view sql, MySQLResult** pResult, MySQLField** pFields, uint64* pRowCount, uint32* pFieldCount); bool _Query(PreparedStatementBase* stmt, MySQLPreparedStatement** mysqlStmt, MySQLResult** pResult, uint64* pRowCount, uint32* pFieldCount); void BeginTransaction(); @@ -93,25 +95,25 @@ protected: [[nodiscard]] uint32 GetServerVersion() const; MySQLPreparedStatement* GetPreparedStatement(uint32 index); - void PrepareStatement(uint32 index, std::string const& sql, ConnectionFlags flags); + void PrepareStatement(uint32 index, std::string_view sql, ConnectionFlags flags); virtual void DoPrepareStatements() = 0; typedef std::vector<std::unique_ptr<MySQLPreparedStatement>> PreparedStatementContainer; - PreparedStatementContainer m_stmts; //! PreparedStatements storage - bool m_reconnecting; //! Are we reconnecting? - bool m_prepareError; //! Was there any error while preparing statements? + PreparedStatementContainer m_stmts; //! PreparedStatements storage + bool m_reconnecting; //! Are we reconnecting? + bool m_prepareError; //! Was there any error while preparing statements? private: bool _HandleMySQLErrno(uint32 errNo, uint8 attempts = 5); ProducerConsumerQueue<SQLOperation*>* m_queue; //! Queue shared with other asynchronous connections. std::unique_ptr<DatabaseWorker> m_worker; //! Core worker task. - MySQLHandle* m_Mysql; //! MySQL Handle. - MySQLConnectionInfo& m_connectionInfo; //! Connection info (used for logging) - ConnectionFlags m_connectionFlags; //! Connection flags (for preparing relevant statements) - std::mutex m_Mutex; + MySQLHandle* m_Mysql; //! MySQL Handle. + MySQLConnectionInfo& m_connectionInfo; //! Connection info (used for logging) + ConnectionFlags m_connectionFlags; //! Connection flags (for preparing relevant statements) + std::mutex m_Mutex; MySQLConnection(MySQLConnection const& right) = delete; MySQLConnection& operator=(MySQLConnection const& right) = delete; diff --git a/src/server/database/Database/MySQLPreparedStatement.cpp b/src/server/database/Database/MySQLPreparedStatement.cpp index 160cd1fecb..0335cf5cbc 100644 --- a/src/server/database/Database/MySQLPreparedStatement.cpp +++ b/src/server/database/Database/MySQLPreparedStatement.cpp @@ -35,8 +35,11 @@ template<> struct MySQLType<int64> : std::integral_constant<enum_field_types, MY template<> struct MySQLType<float> : std::integral_constant<enum_field_types, MYSQL_TYPE_FLOAT> { }; template<> struct MySQLType<double> : std::integral_constant<enum_field_types, MYSQL_TYPE_DOUBLE> { }; -MySQLPreparedStatement::MySQLPreparedStatement(MySQLStmt* stmt, std::string queryString) : - m_stmt(nullptr), m_Mstmt(stmt), m_bind(nullptr), m_queryString(std::move(queryString)) +MySQLPreparedStatement::MySQLPreparedStatement(MySQLStmt* stmt, std::string_view queryString) : + m_stmt(nullptr), + m_Mstmt(stmt), + m_bind(nullptr), + m_queryString(std::string(queryString)) { /// Initialize variable parameters m_paramCount = mysql_stmt_param_count(stmt); @@ -57,6 +60,7 @@ MySQLPreparedStatement::~MySQLPreparedStatement() delete[] m_Mstmt->bind->length; delete[] m_Mstmt->bind->is_null; } + mysql_stmt_close(m_Mstmt); delete[] m_bind; } @@ -72,8 +76,10 @@ void MySQLPreparedStatement::BindParameters(PreparedStatementBase* stmt) { SetParameter(pos, param); }, data.data); + ++pos; } + #ifdef _DEBUG if (pos < m_paramCount) LOG_WARN("sql.sql", "[WARNING]: BindParameters() for statement {} did not bind all allocated parameters", stmt->GetIndex()); @@ -86,7 +92,7 @@ void MySQLPreparedStatement::ClearParameters() { delete m_bind[i].length; m_bind[i].length = nullptr; - delete[] (char*) m_bind[i].buffer; + delete[] (char*)m_bind[i].buffer; m_bind[i].buffer = nullptr; m_paramsSet[i] = false; } @@ -94,7 +100,9 @@ void MySQLPreparedStatement::ClearParameters() static bool ParamenterIndexAssertFail(uint32 stmtIndex, uint8 index, uint32 paramCount) { - LOG_ERROR("sql.driver", "Attempted to bind parameter {}{} on a PreparedStatement {} (statement has only {} parameters)", uint32(index) + 1, (index == 1 ? "st" : (index == 2 ? "nd" : (index == 3 ? "rd" : "nd"))), stmtIndex, paramCount); + LOG_ERROR("sql.driver", "Attempted to bind parameter {}{} on a PreparedStatement {} (statement has only {} parameters)", + uint32(index) + 1, (index == 1 ? "st" : (index == 2 ? "nd" : (index == 3 ? "rd" : "nd"))), stmtIndex, paramCount); + return false; } @@ -107,41 +115,41 @@ void MySQLPreparedStatement::AssertValidIndex(uint8 index) LOG_ERROR("sql.sql", "[ERROR] Prepared Statement (id: {}) trying to bind value on already bound index ({}).", m_stmt->GetIndex(), index); } -void MySQLPreparedStatement::SetParameter(uint8 index, std::nullptr_t) +template<typename T> +void MySQLPreparedStatement::SetParameter(const uint8 index, T value) { AssertValidIndex(index); m_paramsSet[index] = true; MYSQL_BIND* param = &m_bind[index]; - param->buffer_type = MYSQL_TYPE_NULL; + uint32 len = uint32(sizeof(T)); + param->buffer_type = MySQLType<T>::value; delete[] static_cast<char*>(param->buffer); - param->buffer = nullptr; + param->buffer = new char[len]; param->buffer_length = 0; - param->is_null_value = 1; - delete param->length; - param->length = nullptr; + param->is_null_value = 0; + param->length = nullptr; // Only != NULL for strings + param->is_unsigned = std::is_unsigned_v<T>; + + memcpy(param->buffer, &value, len); } -void MySQLPreparedStatement::SetParameter(uint8 index, bool value) +void MySQLPreparedStatement::SetParameter(const uint8 index, bool value) { SetParameter(index, uint8(value ? 1 : 0)); } -template<typename T> -void MySQLPreparedStatement::SetParameter(uint8 index, T value) +void MySQLPreparedStatement::SetParameter(const uint8 index, std::nullptr_t /*value*/) { AssertValidIndex(index); m_paramsSet[index] = true; MYSQL_BIND* param = &m_bind[index]; - uint32 len = uint32(sizeof(T)); - param->buffer_type = MySQLType<T>::value; + param->buffer_type = MYSQL_TYPE_NULL; delete[] static_cast<char*>(param->buffer); - param->buffer = new char[len]; + param->buffer = nullptr; param->buffer_length = 0; - param->is_null_value = 0; - param->length = nullptr; // Only != NULL for strings - param->is_unsigned = std::is_unsigned_v<T>; - - memcpy(param->buffer, &value, len); + param->is_null_value = 1; + delete param->length; + param->length = nullptr; } void MySQLPreparedStatement::SetParameter(uint8 index, std::string const& value) @@ -151,7 +159,7 @@ void MySQLPreparedStatement::SetParameter(uint8 index, std::string const& value) MYSQL_BIND* param = &m_bind[index]; uint32 len = uint32(value.size()); param->buffer_type = MYSQL_TYPE_VAR_STRING; - delete [] static_cast<char*>(param->buffer); + delete[] static_cast<char*>(param->buffer); param->buffer = new char[len]; param->buffer_length = len; param->is_null_value = 0; @@ -168,7 +176,7 @@ void MySQLPreparedStatement::SetParameter(uint8 index, std::vector<uint8> const& MYSQL_BIND* param = &m_bind[index]; uint32 len = uint32(value.size()); param->buffer_type = MYSQL_TYPE_BLOB; - delete [] static_cast<char*>(param->buffer); + delete[] static_cast<char*>(param->buffer); param->buffer = new char[len]; param->buffer_length = len; param->is_null_value = 0; @@ -183,6 +191,7 @@ std::string MySQLPreparedStatement::getQueryString() const std::string queryString(m_queryString); size_t pos = 0; + for (PreparedStatementData const& data : m_stmt->GetParameters()) { pos = queryString.find('?', pos); diff --git a/src/server/database/Database/MySQLPreparedStatement.h b/src/server/database/Database/MySQLPreparedStatement.h index 2c6f5c8e69..7bb6ce7725 100644 --- a/src/server/database/Database/MySQLPreparedStatement.h +++ b/src/server/database/Database/MySQLPreparedStatement.h @@ -36,7 +36,7 @@ friend class MySQLConnection; friend class PreparedStatementBase; public: - MySQLPreparedStatement(MySQLStmt* stmt, std::string queryString); + MySQLPreparedStatement(MySQLStmt* stmt, std::string_view queryString); ~MySQLPreparedStatement(); void BindParameters(PreparedStatementBase* stmt); @@ -44,18 +44,19 @@ public: uint32 GetParameterCount() const { return m_paramCount; } protected: - void SetParameter(uint8 index, std::nullptr_t); - void SetParameter(uint8 index, bool value); + void SetParameter(const uint8 index, bool value); + void SetParameter(const uint8 index, std::nullptr_t /*value*/); + void SetParameter(const uint8 index, std::string const& value); + void SetParameter(const uint8 index, std::vector<uint8> const& value); + template<typename T> - void SetParameter(uint8 index, T value); - void SetParameter(uint8 index, std::string const& value); - void SetParameter(uint8 index, std::vector<uint8> const& value); + void SetParameter(const uint8 index, T value); MySQLStmt* GetSTMT() { return m_Mstmt; } MySQLBind* GetBind() { return m_bind; } PreparedStatementBase* m_stmt; void ClearParameters(); - void AssertValidIndex(uint8 index); + void AssertValidIndex(const uint8 index); std::string getQueryString() const; private: @@ -63,7 +64,7 @@ private: uint32 m_paramCount; std::vector<bool> m_paramsSet; MySQLBind* m_bind; - std::string const m_queryString; + std::string m_queryString{}; MySQLPreparedStatement(MySQLPreparedStatement const& right) = delete; MySQLPreparedStatement& operator=(MySQLPreparedStatement const& right) = delete; diff --git a/src/server/database/Database/PreparedStatement.cpp b/src/server/database/Database/PreparedStatement.cpp index ed6dc99acf..4059509dcb 100644 --- a/src/server/database/Database/PreparedStatement.cpp +++ b/src/server/database/Database/PreparedStatement.cpp @@ -24,7 +24,8 @@ #include "QueryResult.h" PreparedStatementBase::PreparedStatementBase(uint32 index, uint8 capacity) : -m_index(index), statement_data(capacity) { } + m_index(index), + statement_data(capacity) { } PreparedStatementBase::~PreparedStatementBase() { } @@ -36,20 +37,6 @@ Acore::Types::is_non_string_view_v<T> PreparedStatementBase::SetValidData(const statement_data[index].data.emplace<T>(value); } -template<> -void PreparedStatementBase::SetValidData(const uint8 index, std::string const& value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data.emplace<std::string>(value); -} - -template<> -void PreparedStatementBase::SetValidData(const uint8 index, std::vector<uint8> const& value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data.emplace<std::vector<uint8>>(value); -} - // Non template functions void PreparedStatementBase::SetValidData(const uint8 index) { @@ -73,103 +60,16 @@ template void PreparedStatementBase::SetValidData(const uint8 index, uint64 cons template void PreparedStatementBase::SetValidData(const uint8 index, int64 const& value); template void PreparedStatementBase::SetValidData(const uint8 index, bool const& value); template void PreparedStatementBase::SetValidData(const uint8 index, float const& value); - -// Old api -void PreparedStatementBase::setBool(const uint8 index, const bool value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data = value; -} - -void PreparedStatementBase::setUInt8(const uint8 index, const uint8 value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data = value; -} - -void PreparedStatementBase::setUInt16(const uint8 index, const uint16 value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data = value; -} - -void PreparedStatementBase::setUInt32(const uint8 index, const uint32 value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data = value; -} - -void PreparedStatementBase::setUInt64(const uint8 index, const uint64 value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data = value; -} - -void PreparedStatementBase::setInt8(const uint8 index, const int8 value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data = value; -} - -void PreparedStatementBase::setInt16(const uint8 index, const int16 value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data = value; -} - -void PreparedStatementBase::setInt32(const uint8 index, const int32 value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data = value; -} - -void PreparedStatementBase::setInt64(const uint8 index, const int64 value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data = value; -} - -void PreparedStatementBase::setFloat(const uint8 index, const float value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data = value; -} - -void PreparedStatementBase::setDouble(const uint8 index, const double value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data = value; -} - -void PreparedStatementBase::setString(const uint8 index, const std::string& value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data = value; -} - -void PreparedStatementBase::setStringView(const uint8 index, const std::string_view value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data.emplace<std::string>(value); -} - -void PreparedStatementBase::setBinary(const uint8 index, const std::vector<uint8>& value) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data = value; -} - -void PreparedStatementBase::setNull(const uint8 index) -{ - ASSERT(index < statement_data.size()); - statement_data[index].data = nullptr; -} +template void PreparedStatementBase::SetValidData(const uint8 index, std::string const& value); +template void PreparedStatementBase::SetValidData(const uint8 index, std::vector<uint8> const& value); //- Execution PreparedStatementTask::PreparedStatementTask(PreparedStatementBase* stmt, bool async) : -m_stmt(stmt), m_result(nullptr) + m_stmt(stmt), + m_result(nullptr) { m_has_result = async; // If it's async, then there's a result + if (async) m_result = new PreparedQueryResultPromise(); } @@ -177,7 +77,8 @@ m_stmt(stmt), m_result(nullptr) PreparedStatementTask::~PreparedStatementTask() { delete m_stmt; - if (m_has_result && m_result != nullptr) + + if (m_has_result && m_result) delete m_result; } @@ -192,6 +93,7 @@ bool PreparedStatementTask::Execute() m_result->set_value(PreparedQueryResult(nullptr)); return false; } + m_result->set_value(PreparedQueryResult(result)); return true; } @@ -202,45 +104,29 @@ bool PreparedStatementTask::Execute() template<typename T> std::string PreparedStatementData::ToString(T value) { - return fmt::format("{}", value); -} - -std::string PreparedStatementData::ToString(bool value) -{ - return ToString<uint32>(value); -} - -std::string PreparedStatementData::ToString(uint8 value) -{ - return ToString<uint32>(value); -} - -template std::string PreparedStatementData::ToString<uint16>(uint16); -template std::string PreparedStatementData::ToString<uint32>(uint32); -template std::string PreparedStatementData::ToString<uint64>(uint64); - -std::string PreparedStatementData::ToString(int8 value) -{ - return ToString<int32>(value); + return Acore::StringFormatFmt("{}", value); } -template std::string PreparedStatementData::ToString<int16>(int16); -template std::string PreparedStatementData::ToString<int32>(int32); -template std::string PreparedStatementData::ToString<int64>(int64); -template std::string PreparedStatementData::ToString<float>(float); -template std::string PreparedStatementData::ToString<double>(double); - -std::string PreparedStatementData::ToString(std::string const& value) -{ - return fmt::format("'{}'", value); -} - -std::string PreparedStatementData::ToString(std::vector<uint8> const& /*value*/) +template<> +std::string PreparedStatementData::ToString(std::vector<uint8> /*value*/) { return "BINARY"; } -std::string PreparedStatementData::ToString(std::nullptr_t) +template std::string PreparedStatementData::ToString(uint8); +template std::string PreparedStatementData::ToString(uint16); +template std::string PreparedStatementData::ToString(uint32); +template std::string PreparedStatementData::ToString(uint64); +template std::string PreparedStatementData::ToString(int8); +template std::string PreparedStatementData::ToString(int16); +template std::string PreparedStatementData::ToString(int32); +template std::string PreparedStatementData::ToString(int64); +template std::string PreparedStatementData::ToString(std::string); +template std::string PreparedStatementData::ToString(float); +template std::string PreparedStatementData::ToString(double); +template std::string PreparedStatementData::ToString(bool); + +std::string PreparedStatementData::ToString(std::nullptr_t /*value*/) { return "NULL"; } diff --git a/src/server/database/Database/PreparedStatement.h b/src/server/database/Database/PreparedStatement.h index 9053d00d09..766a8e8e26 100644 --- a/src/server/database/Database/PreparedStatement.h +++ b/src/server/database/Database/PreparedStatement.h @@ -20,6 +20,7 @@ #include "Define.h" #include "Duration.h" +#include "Optional.h" #include "SQLOperation.h" #include <future> #include <tuple> @@ -60,12 +61,7 @@ struct PreparedStatementData template<typename T> static std::string ToString(T value); - static std::string ToString(bool value); - static std::string ToString(uint8 value); - static std::string ToString(int8 value); - static std::string ToString(std::string const& value); - static std::string ToString(std::vector<uint8> const& value); - static std::string ToString(std::nullptr_t); + static std::string ToString(std::nullptr_t /*value*/); }; //- Upper-level class that is used in code @@ -77,28 +73,6 @@ public: explicit PreparedStatementBase(uint32 index, uint8 capacity); virtual ~PreparedStatementBase(); - void setNull(const uint8 index); - void setBool(const uint8 index, const bool value); - void setUInt8(const uint8 index, const uint8 value); - void setUInt16(const uint8 index, const uint16 value); - void setUInt32(const uint8 index, const uint32 value); - void setUInt64(const uint8 index, const uint64 value); - void setInt8(const uint8 index, const int8 value); - void setInt16(const uint8 index, const int16 value); - void setInt32(const uint8 index, const int32 value); - void setInt64(const uint8 index, const int64 value); - void setFloat(const uint8 index, const float value); - void setDouble(const uint8 index, const double value); - void setString(const uint8 index, const std::string& value); - void setStringView(const uint8 index, const std::string_view value); - void setBinary(const uint8 index, const std::vector<uint8>& value); - template <size_t Size> - void setBinary(const uint8 index, std::array<uint8, Size> const& value) - { - std::vector<uint8> vec(value.begin(), value.end()); - setBinary(index, vec); - } - // Set numerlic and default binary template<typename T> inline Acore::Types::is_default<T> SetData(const uint8 index, T value) diff --git a/src/server/database/Database/QueryCallback.cpp b/src/server/database/Database/QueryCallback.cpp index a5b70fe704..2dd0525d56 100644 --- a/src/server/database/Database/QueryCallback.cpp +++ b/src/server/database/Database/QueryCallback.cpp @@ -16,6 +16,7 @@ */ #include "QueryCallback.h" +#include "Duration.h" #include "Errors.h" template<typename T, typename... Args> @@ -66,13 +67,15 @@ public: QueryCallbackData(std::function<void(QueryCallback&, QueryResult)>&& callback) : _string(std::move(callback)), _isPrepared(false) { } QueryCallbackData(std::function<void(QueryCallback&, PreparedQueryResult)>&& callback) : _prepared(std::move(callback)), _isPrepared(true) { } - QueryCallbackData(QueryCallbackData&& right) + + QueryCallbackData(QueryCallbackData&& right) noexcept { _isPrepared = right._isPrepared; ConstructActiveMember(this); MoveFrom(this, std::move(right)); } - QueryCallbackData& operator=(QueryCallbackData&& right) + + QueryCallbackData& operator=(QueryCallbackData&& right) noexcept { if (this != &right) { @@ -82,10 +85,13 @@ public: _isPrepared = right._isPrepared; ConstructActiveMember(this); } + MoveFrom(this, std::move(right)); } + return *this; } + ~QueryCallbackData() { DestroyActiveMember(this); } private: @@ -105,19 +111,19 @@ private: }; // Not using initialization lists to work around segmentation faults when compiling with clang without precompiled headers -QueryCallback::QueryCallback(std::future<QueryResult>&& result) +QueryCallback::QueryCallback(QueryResultFuture&& result) { _isPrepared = false; Construct(_string, std::move(result)); } -QueryCallback::QueryCallback(std::future<PreparedQueryResult>&& result) +QueryCallback::QueryCallback(PreparedQueryResultFuture&& result) { _isPrepared = true; Construct(_prepared, std::move(result)); } -QueryCallback::QueryCallback(QueryCallback&& right) +QueryCallback::QueryCallback(QueryCallback&& right) noexcept { _isPrepared = right._isPrepared; ConstructActiveMember(this); @@ -125,7 +131,7 @@ QueryCallback::QueryCallback(QueryCallback&& right) _callbacks = std::move(right._callbacks); } -QueryCallback& QueryCallback::operator=(QueryCallback&& right) +QueryCallback& QueryCallback::operator=(QueryCallback&& right) noexcept { if (this != &right) { @@ -135,9 +141,11 @@ QueryCallback& QueryCallback::operator=(QueryCallback&& right) _isPrepared = right._isPrepared; ConstructActiveMember(this); } + MoveFrom(this, std::move(right)); _callbacks = std::move(right._callbacks); } + return *this; } @@ -198,7 +206,7 @@ bool QueryCallback::InvokeIfReady() if (!_isPrepared) { - if (_string.valid() && _string.wait_for(std::chrono::seconds(0)) == std::future_status::ready) + if (_string.valid() && _string.wait_for(0s) == std::future_status::ready) { QueryResultFuture f(std::move(_string)); std::function<void(QueryCallback&, QueryResult)> cb(std::move(callback._string)); @@ -208,7 +216,7 @@ bool QueryCallback::InvokeIfReady() } else { - if (_prepared.valid() && _prepared.wait_for(std::chrono::seconds(0)) == std::future_status::ready) + if (_prepared.valid() && _prepared.wait_for(0s) == std::future_status::ready) { PreparedQueryResultFuture f(std::move(_prepared)); std::function<void(QueryCallback&, PreparedQueryResult)> cb(std::move(callback._prepared)); diff --git a/src/server/database/Database/QueryCallback.h b/src/server/database/Database/QueryCallback.h index e3ef6ae726..c1ee4ea98d 100644 --- a/src/server/database/Database/QueryCallback.h +++ b/src/server/database/Database/QueryCallback.h @@ -31,8 +31,9 @@ class AC_DATABASE_API QueryCallback public: explicit QueryCallback(QueryResultFuture&& result); explicit QueryCallback(PreparedQueryResultFuture&& result); - QueryCallback(QueryCallback&& right); - QueryCallback& operator=(QueryCallback&& right); + + QueryCallback(QueryCallback&& right) noexcept; + QueryCallback& operator=(QueryCallback&& right) noexcept; ~QueryCallback(); QueryCallback&& WithCallback(std::function<void(QueryResult)>&& callback); @@ -60,6 +61,7 @@ private: QueryResultFuture _string; PreparedQueryResultFuture _prepared; }; + bool _isPrepared; struct QueryCallbackData; diff --git a/src/server/database/Database/QueryHolder.h b/src/server/database/Database/QueryHolder.h index 260debf4e2..63994b487c 100644 --- a/src/server/database/Database/QueryHolder.h +++ b/src/server/database/Database/QueryHolder.h @@ -24,8 +24,7 @@ class AC_DATABASE_API SQLQueryHolderBase { friend class SQLQueryHolderTask; -private: - std::vector<std::pair<PreparedStatementBase*, PreparedQueryResult>> m_queries; + public: SQLQueryHolderBase() = default; virtual ~SQLQueryHolderBase(); @@ -35,6 +34,9 @@ public: protected: bool SetPreparedQueryImpl(size_t index, PreparedStatementBase* stmt); + +private: + std::vector<std::pair<PreparedStatementBase*, PreparedQueryResult>> m_queries; }; template<typename T> @@ -49,10 +51,6 @@ public: class AC_DATABASE_API SQLQueryHolderTask : public SQLOperation { -private: - std::shared_ptr<SQLQueryHolderBase> m_holder; - QueryResultHolderPromise m_result; - public: explicit SQLQueryHolderTask(std::shared_ptr<SQLQueryHolderBase> holder) : m_holder(std::move(holder)) { } @@ -61,6 +59,10 @@ public: bool Execute() override; QueryResultHolderFuture GetFuture() { return m_result.get_future(); } + +private: + std::shared_ptr<SQLQueryHolderBase> m_holder; + QueryResultHolderPromise m_result; }; class AC_DATABASE_API SQLQueryHolderCallback @@ -70,7 +72,6 @@ public: : m_holder(std::move(holder)), m_future(std::move(future)) { } SQLQueryHolderCallback(SQLQueryHolderCallback&&) = default; - SQLQueryHolderCallback& operator=(SQLQueryHolderCallback&&) = default; void AfterComplete(std::function<void(SQLQueryHolderBase const&)> callback) & diff --git a/src/server/database/Database/QueryResult.cpp b/src/server/database/Database/QueryResult.cpp index 15aabbe7e1..06005a34d2 100644 --- a/src/server/database/Database/QueryResult.cpp +++ b/src/server/database/Database/QueryResult.cpp @@ -24,168 +24,234 @@ namespace { -static uint32 SizeForType(MYSQL_FIELD* field) -{ - switch (field->type) + static uint32 SizeForType(MYSQL_FIELD* field) + { + switch (field->type) + { + case MYSQL_TYPE_NULL: + return 0; + case MYSQL_TYPE_TINY: + return 1; + case MYSQL_TYPE_YEAR: + case MYSQL_TYPE_SHORT: + return 2; + case MYSQL_TYPE_INT24: + case MYSQL_TYPE_LONG: + case MYSQL_TYPE_FLOAT: + return 4; + case MYSQL_TYPE_DOUBLE: + case MYSQL_TYPE_LONGLONG: + case MYSQL_TYPE_BIT: + return 8; + + case MYSQL_TYPE_TIMESTAMP: + case MYSQL_TYPE_DATE: + case MYSQL_TYPE_TIME: + case MYSQL_TYPE_DATETIME: + return sizeof(MYSQL_TIME); + + case MYSQL_TYPE_TINY_BLOB: + case MYSQL_TYPE_MEDIUM_BLOB: + case MYSQL_TYPE_LONG_BLOB: + case MYSQL_TYPE_BLOB: + case MYSQL_TYPE_STRING: + case MYSQL_TYPE_VAR_STRING: + return field->max_length + 1; + + case MYSQL_TYPE_DECIMAL: + case MYSQL_TYPE_NEWDECIMAL: + return 64; + + case MYSQL_TYPE_GEOMETRY: + /* + Following types are not sent over the wire: + MYSQL_TYPE_ENUM: + MYSQL_TYPE_SET: + */ + default: + LOG_WARN("sql.sql", "SQL::SizeForType(): invalid field type {}", uint32(field->type)); + return 0; + } + } + + DatabaseFieldTypes MysqlTypeToFieldType(enum_field_types type) { - case MYSQL_TYPE_NULL: - return 0; - case MYSQL_TYPE_TINY: - return 1; - case MYSQL_TYPE_YEAR: - case MYSQL_TYPE_SHORT: - return 2; - case MYSQL_TYPE_INT24: - case MYSQL_TYPE_LONG: - case MYSQL_TYPE_FLOAT: - return 4; - case MYSQL_TYPE_DOUBLE: - case MYSQL_TYPE_LONGLONG: - case MYSQL_TYPE_BIT: - return 8; - - case MYSQL_TYPE_TIMESTAMP: - case MYSQL_TYPE_DATE: - case MYSQL_TYPE_TIME: - case MYSQL_TYPE_DATETIME: - return sizeof(MYSQL_TIME); - - case MYSQL_TYPE_TINY_BLOB: - case MYSQL_TYPE_MEDIUM_BLOB: - case MYSQL_TYPE_LONG_BLOB: - case MYSQL_TYPE_BLOB: - case MYSQL_TYPE_STRING: - case MYSQL_TYPE_VAR_STRING: - return field->max_length + 1; - - case MYSQL_TYPE_DECIMAL: - case MYSQL_TYPE_NEWDECIMAL: - return 64; - - case MYSQL_TYPE_GEOMETRY: - /* - Following types are not sent over the wire: - MYSQL_TYPE_ENUM: - MYSQL_TYPE_SET: - */ - default: - LOG_WARN("sql.sql", "SQL::SizeForType(): invalid field type {}", uint32(field->type)); - return 0; + switch (type) + { + case MYSQL_TYPE_NULL: + return DatabaseFieldTypes::Null; + case MYSQL_TYPE_TINY: + return DatabaseFieldTypes::Int8; + case MYSQL_TYPE_YEAR: + case MYSQL_TYPE_SHORT: + return DatabaseFieldTypes::Int16; + case MYSQL_TYPE_INT24: + case MYSQL_TYPE_LONG: + return DatabaseFieldTypes::Int32; + case MYSQL_TYPE_LONGLONG: + case MYSQL_TYPE_BIT: + return DatabaseFieldTypes::Int64; + case MYSQL_TYPE_FLOAT: + return DatabaseFieldTypes::Float; + case MYSQL_TYPE_DOUBLE: + return DatabaseFieldTypes::Double; + case MYSQL_TYPE_DECIMAL: + case MYSQL_TYPE_NEWDECIMAL: + return DatabaseFieldTypes::Decimal; + case MYSQL_TYPE_TIMESTAMP: + case MYSQL_TYPE_DATE: + case MYSQL_TYPE_TIME: + case MYSQL_TYPE_DATETIME: + return DatabaseFieldTypes::Date; + case MYSQL_TYPE_TINY_BLOB: + case MYSQL_TYPE_MEDIUM_BLOB: + case MYSQL_TYPE_LONG_BLOB: + case MYSQL_TYPE_BLOB: + case MYSQL_TYPE_STRING: + case MYSQL_TYPE_VAR_STRING: + return DatabaseFieldTypes::Binary; + default: + LOG_WARN("sql.sql", "MysqlTypeToFieldType(): invalid field type {}", uint32(type)); + break; + } + + return DatabaseFieldTypes::Null; + } + + static std::string FieldTypeToString(enum_field_types type) + { + switch (type) + { + case MYSQL_TYPE_BIT: return "BIT"; + case MYSQL_TYPE_BLOB: return "BLOB"; + case MYSQL_TYPE_DATE: return "DATE"; + case MYSQL_TYPE_DATETIME: return "DATETIME"; + case MYSQL_TYPE_NEWDECIMAL: return "NEWDECIMAL"; + case MYSQL_TYPE_DECIMAL: return "DECIMAL"; + case MYSQL_TYPE_DOUBLE: return "DOUBLE"; + case MYSQL_TYPE_ENUM: return "ENUM"; + case MYSQL_TYPE_FLOAT: return "FLOAT"; + case MYSQL_TYPE_GEOMETRY: return "GEOMETRY"; + case MYSQL_TYPE_INT24: return "INT24"; + case MYSQL_TYPE_LONG: return "LONG"; + case MYSQL_TYPE_LONGLONG: return "LONGLONG"; + case MYSQL_TYPE_LONG_BLOB: return "LONG_BLOB"; + case MYSQL_TYPE_MEDIUM_BLOB: return "MEDIUM_BLOB"; + case MYSQL_TYPE_NEWDATE: return "NEWDATE"; + case MYSQL_TYPE_NULL: return "NULL"; + case MYSQL_TYPE_SET: return "SET"; + case MYSQL_TYPE_SHORT: return "SHORT"; + case MYSQL_TYPE_STRING: return "STRING"; + case MYSQL_TYPE_TIME: return "TIME"; + case MYSQL_TYPE_TIMESTAMP: return "TIMESTAMP"; + case MYSQL_TYPE_TINY: return "TINY"; + case MYSQL_TYPE_TINY_BLOB: return "TINY_BLOB"; + case MYSQL_TYPE_VAR_STRING: return "VAR_STRING"; + case MYSQL_TYPE_YEAR: return "YEAR"; + default: return "-Unknown-"; + } + } + + void InitializeDatabaseFieldMetadata(QueryResultFieldMetadata* meta, MySQLField const* field, uint32 fieldIndex) + { + meta->TableName = field->org_table; + meta->TableAlias = field->table; + meta->Name = field->org_name; + meta->Alias = field->name; + meta->TypeName = FieldTypeToString(field->type); + meta->Index = fieldIndex; + meta->Type = MysqlTypeToFieldType(field->type); } } -DatabaseFieldTypes MysqlTypeToFieldType(enum_field_types type) +ResultSet::ResultSet(MySQLResult* result, MySQLField* fields, uint64 rowCount, uint32 fieldCount) : + _rowCount(rowCount), + _fieldCount(fieldCount), + _result(result), + _fields(fields) { - switch (type) + _fieldMetadata.resize(_fieldCount); + _currentRow = new Field[_fieldCount]; + + for (uint32 i = 0; i < _fieldCount; i++) { - case MYSQL_TYPE_NULL: - return DatabaseFieldTypes::Null; - case MYSQL_TYPE_TINY: - return DatabaseFieldTypes::Int8; - case MYSQL_TYPE_YEAR: - case MYSQL_TYPE_SHORT: - return DatabaseFieldTypes::Int16; - case MYSQL_TYPE_INT24: - case MYSQL_TYPE_LONG: - return DatabaseFieldTypes::Int32; - case MYSQL_TYPE_LONGLONG: - case MYSQL_TYPE_BIT: - return DatabaseFieldTypes::Int64; - case MYSQL_TYPE_FLOAT: - return DatabaseFieldTypes::Float; - case MYSQL_TYPE_DOUBLE: - return DatabaseFieldTypes::Double; - case MYSQL_TYPE_DECIMAL: - case MYSQL_TYPE_NEWDECIMAL: - return DatabaseFieldTypes::Decimal; - case MYSQL_TYPE_TIMESTAMP: - case MYSQL_TYPE_DATE: - case MYSQL_TYPE_TIME: - case MYSQL_TYPE_DATETIME: - return DatabaseFieldTypes::Date; - case MYSQL_TYPE_TINY_BLOB: - case MYSQL_TYPE_MEDIUM_BLOB: - case MYSQL_TYPE_LONG_BLOB: - case MYSQL_TYPE_BLOB: - case MYSQL_TYPE_STRING: - case MYSQL_TYPE_VAR_STRING: - return DatabaseFieldTypes::Binary; - default: - LOG_WARN("sql.sql", "MysqlTypeToFieldType(): invalid field type {}", uint32(type)); - break; + InitializeDatabaseFieldMetadata(&_fieldMetadata[i], &_fields[i], i); + _currentRow[i].SetMetadata(&_fieldMetadata[i]); } +} - return DatabaseFieldTypes::Null; +ResultSet::~ResultSet() +{ + CleanUp(); } -static char const* FieldTypeToString(enum_field_types type) +bool ResultSet::NextRow() { - switch (type) + MYSQL_ROW row; + + if (!_result) + return false; + + row = mysql_fetch_row(_result); + if (!row) { - case MYSQL_TYPE_BIT: return "BIT"; - case MYSQL_TYPE_BLOB: return "BLOB"; - case MYSQL_TYPE_DATE: return "DATE"; - case MYSQL_TYPE_DATETIME: return "DATETIME"; - case MYSQL_TYPE_NEWDECIMAL: return "NEWDECIMAL"; - case MYSQL_TYPE_DECIMAL: return "DECIMAL"; - case MYSQL_TYPE_DOUBLE: return "DOUBLE"; - case MYSQL_TYPE_ENUM: return "ENUM"; - case MYSQL_TYPE_FLOAT: return "FLOAT"; - case MYSQL_TYPE_GEOMETRY: return "GEOMETRY"; - case MYSQL_TYPE_INT24: return "INT24"; - case MYSQL_TYPE_LONG: return "LONG"; - case MYSQL_TYPE_LONGLONG: return "LONGLONG"; - case MYSQL_TYPE_LONG_BLOB: return "LONG_BLOB"; - case MYSQL_TYPE_MEDIUM_BLOB: return "MEDIUM_BLOB"; - case MYSQL_TYPE_NEWDATE: return "NEWDATE"; - case MYSQL_TYPE_NULL: return "NULL"; - case MYSQL_TYPE_SET: return "SET"; - case MYSQL_TYPE_SHORT: return "SHORT"; - case MYSQL_TYPE_STRING: return "STRING"; - case MYSQL_TYPE_TIME: return "TIME"; - case MYSQL_TYPE_TIMESTAMP: return "TIMESTAMP"; - case MYSQL_TYPE_TINY: return "TINY"; - case MYSQL_TYPE_TINY_BLOB: return "TINY_BLOB"; - case MYSQL_TYPE_VAR_STRING: return "VAR_STRING"; - case MYSQL_TYPE_YEAR: return "YEAR"; - default: return "-Unknown-"; + CleanUp(); + return false; + } + + unsigned long* lengths = mysql_fetch_lengths(_result); + if (!lengths) + { + LOG_WARN("sql.sql", "{}:mysql_fetch_lengths, cannot retrieve value lengths. Error {}.", __FUNCTION__, mysql_error(_result->handle)); + CleanUp(); + return false; } + + for (uint32 i = 0; i < _fieldCount; i++) + _currentRow[i].SetStructuredValue(row[i], lengths[i]); + + return true; } -void InitializeDatabaseFieldMetadata(QueryResultFieldMetadata* meta, MySQLField const* field, uint32 fieldIndex) +std::string ResultSet::GetFieldName(uint32 index) const { - meta->TableName = field->org_table; - meta->TableAlias = field->table; - meta->Name = field->org_name; - meta->Alias = field->name; - meta->TypeName = FieldTypeToString(field->type); - meta->Index = fieldIndex; - meta->Type = MysqlTypeToFieldType(field->type); -} + ASSERT(index < _fieldCount); + return _fields[index].name; } -ResultSet::ResultSet(MySQLResult* result, MySQLField* fields, uint64 rowCount, uint32 fieldCount) : -_rowCount(rowCount), -_fieldCount(fieldCount), -_result(result), -_fields(fields) +void ResultSet::CleanUp() { - _fieldMetadata.resize(_fieldCount); - _currentRow = new Field[_fieldCount]; - for (uint32 i = 0; i < _fieldCount; i++) + if (_currentRow) { - InitializeDatabaseFieldMetadata(&_fieldMetadata[i], &_fields[i], i); - _currentRow[i].SetMetadata(&_fieldMetadata[i]); + delete[] _currentRow; + _currentRow = nullptr; } + + if (_result) + { + mysql_free_result(_result); + _result = nullptr; + } +} + +Field const& ResultSet::operator[](std::size_t index) const +{ + ASSERT(index < _fieldCount); + return _currentRow[index]; +} + +void ResultSet::AssertRows(std::size_t sizeRows) +{ + ASSERT(sizeRows == _fieldCount); } PreparedResultSet::PreparedResultSet(MySQLStmt* stmt, MySQLResult* result, uint64 rowCount, uint32 fieldCount) : -m_rowCount(rowCount), -m_rowPosition(0), -m_fieldCount(fieldCount), -m_rBind(nullptr), -m_stmt(stmt), -m_metadataResult(result) + m_rowCount(rowCount), + m_rowPosition(0), + m_fieldCount(fieldCount), + m_rBind(nullptr), + m_stmt(stmt), + m_metadataResult(result) { if (!m_metadataResult) return; @@ -224,6 +290,7 @@ m_metadataResult(result) MySQLField* field = reinterpret_cast<MySQLField*>(mysql_fetch_fields(m_metadataResult)); m_fieldMetadata.resize(m_fieldCount); std::size_t rowSize = 0; + for (uint32 i = 0; i < m_fieldCount; ++i) { uint32 size = SizeForType(&field[i]); @@ -258,6 +325,7 @@ m_metadataResult(result) } m_rows.resize(uint32(m_rowCount) * m_fieldCount); + while (_NextRow()) { for (uint32 fIndex = 0; fIndex < m_fieldCount; ++fIndex) @@ -271,90 +339,49 @@ m_metadataResult(result) void* buffer = m_stmt->bind[fIndex].buffer; switch (m_rBind[fIndex].buffer_type) { - case MYSQL_TYPE_TINY_BLOB: - case MYSQL_TYPE_MEDIUM_BLOB: - case MYSQL_TYPE_LONG_BLOB: - case MYSQL_TYPE_BLOB: - case MYSQL_TYPE_STRING: - case MYSQL_TYPE_VAR_STRING: - // warning - the string will not be null-terminated if there is no space for it in the buffer - // when mysql_stmt_fetch returned MYSQL_DATA_TRUNCATED - // we cannot blindly null-terminate the data either as it may be retrieved as binary blob and not specifically a string - // in this case using Field::GetCString will result in garbage - // TODO: remove Field::GetCString and use std::string_view in C++17 - if (fetched_length < buffer_length) - *((char*)buffer + fetched_length) = '\0'; - break; - default: - break; + case MYSQL_TYPE_TINY_BLOB: + case MYSQL_TYPE_MEDIUM_BLOB: + case MYSQL_TYPE_LONG_BLOB: + case MYSQL_TYPE_BLOB: + case MYSQL_TYPE_STRING: + case MYSQL_TYPE_VAR_STRING: + // warning - the string will not be null-terminated if there is no space for it in the buffer + // when mysql_stmt_fetch returned MYSQL_DATA_TRUNCATED + // we cannot blindly null-terminate the data either as it may be retrieved as binary blob and not specifically a string + // in this case using Field::GetCString will result in garbage + // TODO: remove Field::GetCString and use std::string_view in C++17 + if (fetched_length < buffer_length) + *((char*)buffer + fetched_length) = '\0'; + break; + default: + break; } - m_rows[uint32(m_rowPosition) * m_fieldCount + fIndex].SetByteValue( - (char const*)buffer, - fetched_length); + m_rows[uint32(m_rowPosition) * m_fieldCount + fIndex].SetByteValue((char const*)buffer, fetched_length); // move buffer pointer to next part m_stmt->bind[fIndex].buffer = (char*)buffer + rowSize; } else { - m_rows[uint32(m_rowPosition) * m_fieldCount + fIndex].SetByteValue( - nullptr, - *m_rBind[fIndex].length); + m_rows[uint32(m_rowPosition) * m_fieldCount + fIndex].SetByteValue(nullptr, *m_rBind[fIndex].length); } } + m_rowPosition++; } + m_rowPosition = 0; /// All data is buffered, let go of mysql c api structures mysql_stmt_free_result(m_stmt); } -ResultSet::~ResultSet() -{ - CleanUp(); -} - PreparedResultSet::~PreparedResultSet() { CleanUp(); } -bool ResultSet::NextRow() -{ - MYSQL_ROW row; - - if (!_result) - return false; - - row = mysql_fetch_row(_result); - if (!row) - { - CleanUp(); - return false; - } - - unsigned long* lengths = mysql_fetch_lengths(_result); - if (!lengths) - { - LOG_WARN("sql.sql", "{}:mysql_fetch_lengths, cannot retrieve value lengths. Error {}.", __FUNCTION__, mysql_error(_result->handle)); - CleanUp(); - return false; - } - - for (uint32 i = 0; i < _fieldCount; i++) - _currentRow[i].SetStructuredValue(row[i], lengths[i]); - - return true; -} - -std::string ResultSet::GetFieldName(uint32 index) const -{ - ASSERT(index < _fieldCount); - return _fields[index].name; -} - bool PreparedResultSet::NextRow() { /// Only updates the m_rowPosition so upper level code knows in which element @@ -376,27 +403,6 @@ bool PreparedResultSet::_NextRow() return retval == 0 || retval == MYSQL_DATA_TRUNCATED; } -void ResultSet::CleanUp() -{ - if (_currentRow) - { - delete [] _currentRow; - _currentRow = nullptr; - } - - if (_result) - { - mysql_free_result(_result); - _result = nullptr; - } -} - -Field const& ResultSet::operator[](std::size_t index) const -{ - ASSERT(index < _fieldCount); - return _currentRow[index]; -} - Field* PreparedResultSet::Fetch() const { ASSERT(m_rowPosition < m_rowCount); @@ -422,3 +428,9 @@ void PreparedResultSet::CleanUp() m_rBind = nullptr; } } + +void PreparedResultSet::AssertRows(std::size_t sizeRows) +{ + ASSERT(m_rowPosition < m_rowCount); + ASSERT(sizeRows == m_fieldCount, "> Tuple size != count fields"); +} diff --git a/src/server/database/Database/QueryResult.h b/src/server/database/Database/QueryResult.h index d18ce03e45..b64966e0ed 100644 --- a/src/server/database/Database/QueryResult.h +++ b/src/server/database/Database/QueryResult.h @@ -20,6 +20,8 @@ #include "DatabaseEnvFwd.h" #include "Define.h" +#include "Field.h" +#include <tuple> #include <vector> class AC_DATABASE_API ResultSet @@ -36,6 +38,22 @@ public: [[nodiscard]] Field* Fetch() const { return _currentRow; } Field const& operator[](std::size_t index) const; + template<typename... Ts> + inline std::tuple<Ts...> FetchTuple() + { + AssertRows(sizeof...(Ts)); + + std::tuple<Ts...> theTuple = {}; + + std::apply([this](Ts&... args) + { + uint8 index{ 0 }; + ((args = _currentRow[index].Get<Ts>(), index++), ...); + }, theTuple); + + return theTuple; + } + protected: std::vector<QueryResultFieldMetadata> _fieldMetadata; uint64 _rowCount; @@ -44,6 +62,8 @@ protected: private: void CleanUp(); + void AssertRows(std::size_t sizeRows); + MySQLResult* _result; MySQLField* _fields; @@ -64,6 +84,22 @@ public: [[nodiscard]] Field* Fetch() const; Field const& operator[](std::size_t index) const; + template<typename... Ts> + inline std::tuple<Ts...> FetchTuple() + { + AssertRows(sizeof...(Ts)); + + std::tuple<Ts...> theTuple = {}; + + std::apply([this](Ts&... args) + { + uint8 index{ 0 }; + ((args = m_rows[uint32(m_rowPosition) * m_fieldCount + index].Get<Ts>(), index++), ...); + }, theTuple); + + return theTuple; + } + protected: std::vector<QueryResultFieldMetadata> m_fieldMetadata; std::vector<Field> m_rows; @@ -79,6 +115,8 @@ private: void CleanUp(); bool _NextRow(); + void AssertRows(std::size_t sizeRows); + PreparedResultSet(PreparedResultSet const& right) = delete; PreparedResultSet& operator=(PreparedResultSet const& right) = delete; }; diff --git a/src/server/database/Database/SQLOperation.h b/src/server/database/Database/SQLOperation.h index 7322591775..89542886b3 100644 --- a/src/server/database/Database/SQLOperation.h +++ b/src/server/database/Database/SQLOperation.h @@ -20,13 +20,7 @@ #include "DatabaseEnvFwd.h" #include "Define.h" - -//- Union that holds element data -union SQLElementUnion -{ - PreparedStatementBase* stmt; - char const* query; -}; +#include <variant> //- Type specifier of our element data enum SQLElementDataType @@ -38,7 +32,7 @@ enum SQLElementDataType //- The element struct SQLElementData { - SQLElementUnion element; + std::variant<PreparedStatementBase*, std::string> element; SQLElementDataType type; }; @@ -55,6 +49,7 @@ public: Execute(); return 0; } + virtual bool Execute() = 0; virtual void SetConnection(MySQLConnection* con) { m_conn = con; } diff --git a/src/server/database/Database/Transaction.cpp b/src/server/database/Database/Transaction.cpp index 1b669c085f..38f2ab051e 100644 --- a/src/server/database/Database/Transaction.cpp +++ b/src/server/database/Database/Transaction.cpp @@ -16,6 +16,7 @@ */ #include "Transaction.h" +#include "Errors.h" #include "Log.h" #include "MySQLConnection.h" #include "PreparedStatement.h" @@ -26,24 +27,24 @@ std::mutex TransactionTask::_deadlockLock; -#define DEADLOCK_MAX_RETRY_TIME_MS 60000 +constexpr Milliseconds DEADLOCK_MAX_RETRY_TIME_MS = 1min; //- Append a raw ad-hoc query to the transaction -void TransactionBase::Append(char const* sql) +void TransactionBase::Append(std::string_view sql) { - SQLElementData data; + SQLElementData data = {}; data.type = SQL_ELEMENT_RAW; - data.element.query = strdup(sql); - m_queries.push_back(data); + data.element = std::string(sql); + m_queries.emplace_back(data); } //- Append a prepared statement to the transaction void TransactionBase::AppendPreparedStatement(PreparedStatementBase* stmt) { - SQLElementData data; + SQLElementData data = {}; data.type = SQL_ELEMENT_PREPARED; - data.element.stmt = stmt; - m_queries.push_back(data); + data.element = stmt; + m_queries.emplace_back(data); } void TransactionBase::Cleanup() @@ -52,15 +53,38 @@ void TransactionBase::Cleanup() if (_cleanedUp) return; - for (SQLElementData const& data : m_queries) + for (SQLElementData& data : m_queries) { switch (data.type) { case SQL_ELEMENT_PREPARED: - delete data.element.stmt; + { + try + { + PreparedStatementBase* stmt = std::get<PreparedStatementBase*>(data.element); + ASSERT(stmt); + + delete stmt; + } + catch (const std::bad_variant_access& ex) + { + LOG_FATAL("sql.sql", "> PreparedStatementBase not found in SQLElementData. {}", ex.what()); + ABORT(); + } + } break; case SQL_ELEMENT_RAW: - free((void*)(data.element.query)); + { + try + { + std::get<std::string>(data.element).clear(); + } + catch (const std::bad_variant_access& ex) + { + LOG_FATAL("sql.sql", "> std::string not found in SQLElementData. {}", ex.what()); + ABORT(); + } + } break; } } @@ -72,6 +96,7 @@ void TransactionBase::Cleanup() bool TransactionTask::Execute() { int errorCode = TryExecute(); + if (!errorCode) return true; @@ -81,15 +106,17 @@ bool TransactionTask::Execute() threadIdStream << std::this_thread::get_id(); std::string threadId = threadIdStream.str(); - // Make sure only 1 async thread retries a transaction so they don't keep dead-locking each other - std::lock_guard<std::mutex> lock(_deadlockLock); - - for (uint32 loopDuration = 0, startMSTime = getMSTime(); loopDuration <= DEADLOCK_MAX_RETRY_TIME_MS; loopDuration = GetMSTimeDiffToNow(startMSTime)) { - if (!TryExecute()) - return true; + // Make sure only 1 async thread retries a transaction so they don't keep dead-locking each other + std::lock_guard<std::mutex> lock(_deadlockLock); - LOG_WARN("sql.sql", "Deadlocked SQL Transaction, retrying. Loop timer: {} ms, Thread Id: {}", loopDuration, threadId); + for (Milliseconds loopDuration = 0s, startMSTime = GetTimeMS(); loopDuration <= DEADLOCK_MAX_RETRY_TIME_MS; loopDuration = GetMSTimeDiffToNow(startMSTime)) + { + if (!TryExecute()) + return true; + + LOG_WARN("sql.sql", "Deadlocked SQL Transaction, retrying. Loop timer: {} ms, Thread Id: {}", loopDuration.count(), threadId); + } } LOG_ERROR("sql.sql", "Fatal deadlocked SQL Transaction, it will not be retried anymore. Thread Id: {}", threadId); @@ -126,17 +153,20 @@ bool TransactionWithResultTask::Execute() threadIdStream << std::this_thread::get_id(); std::string threadId = threadIdStream.str(); - // Make sure only 1 async thread retries a transaction so they don't keep dead-locking each other - std::lock_guard<std::mutex> lock(_deadlockLock); - for (uint32 loopDuration = 0, startMSTime = getMSTime(); loopDuration <= DEADLOCK_MAX_RETRY_TIME_MS; loopDuration = GetMSTimeDiffToNow(startMSTime)) { - if (!TryExecute()) + // Make sure only 1 async thread retries a transaction so they don't keep dead-locking each other + std::lock_guard<std::mutex> lock(_deadlockLock); + + for (Milliseconds loopDuration = 0s, startMSTime = GetTimeMS(); loopDuration <= DEADLOCK_MAX_RETRY_TIME_MS; loopDuration = GetMSTimeDiffToNow(startMSTime)) { - m_result.set_value(true); - return true; - } + if (!TryExecute()) + { + m_result.set_value(true); + return true; + } - LOG_WARN("sql.sql", "Deadlocked SQL Transaction, retrying. Loop timer: {} ms, Thread Id: {}", loopDuration, threadId); + LOG_WARN("sql.sql", "Deadlocked SQL Transaction, retrying. Loop timer: {} ms, Thread Id: {}", loopDuration.count(), threadId); + } } LOG_ERROR("sql.sql", "Fatal deadlocked SQL Transaction, it will not be retried anymore. Thread Id: {}", threadId); @@ -151,7 +181,7 @@ bool TransactionWithResultTask::Execute() bool TransactionCallback::InvokeIfReady() { - if (m_future.valid() && m_future.wait_for(std::chrono::seconds(0)) == std::future_status::ready) + if (m_future.valid() && m_future.wait_for(0s) == std::future_status::ready) { m_callback(m_future.get()); return true; diff --git a/src/server/database/Database/Transaction.h b/src/server/database/Database/Transaction.h index ef3d72fce4..5d82703ae9 100644 --- a/src/server/database/Database/Transaction.h +++ b/src/server/database/Database/Transaction.h @@ -30,21 +30,22 @@ /*! Transactions, high level class. */ class AC_DATABASE_API TransactionBase { -friend class TransactionTask; -friend class MySQLConnection; + friend class TransactionTask; + friend class MySQLConnection; -template <typename T> -friend class DatabaseWorkerPool; + template <typename T> + friend class DatabaseWorkerPool; public: TransactionBase() = default; virtual ~TransactionBase() { Cleanup(); } - void Append(char const* sql); - template<typename Format, typename... Args> - void PAppend(Format&& sql, Args&&... args) + void Append(std::string_view sql); + + template<typename... Args> + void Append(std::string_view sql, Args&&... args) { - Append(Acore::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str()); + Append(Acore::StringFormatFmt(sql, std::forward<Args>(args)...)); } [[nodiscard]] std::size_t GetSize() const { return m_queries.size(); } @@ -63,6 +64,7 @@ class Transaction : public TransactionBase { public: using TransactionBase::Append; + void Append(PreparedStatement<T>* statement) { AppendPreparedStatement(statement); @@ -72,9 +74,11 @@ public: /*! Low level class*/ class AC_DATABASE_API TransactionTask : public SQLOperation { -template <class T> friend class DatabaseWorkerPool; -friend class DatabaseWorker; -friend class TransactionCallback; + template <class T> + friend class DatabaseWorkerPool; + + friend class DatabaseWorker; + friend class TransactionCallback; public: TransactionTask(std::shared_ptr<TransactionBase> trans) : m_trans(std::move(trans)) { } diff --git a/src/server/database/Logging/AppenderDB.cpp b/src/server/database/Logging/AppenderDB.cpp index 1bf9f08296..1878bb3637 100644 --- a/src/server/database/Logging/AppenderDB.cpp +++ b/src/server/database/Logging/AppenderDB.cpp @@ -27,16 +27,16 @@ AppenderDB::~AppenderDB() { } void AppenderDB::_write(LogMessage const* message) { - // Avoid infinite loop, PExecute triggers Logging with "sql.sql" type + // Avoid infinite loop, Execute triggers Logging with "sql.sql" type if (!enabled || (message->type.find("sql") != std::string::npos)) return; LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_LOG); - stmt->setUInt64(0, message->mtime.count()); - stmt->setUInt32(1, realmId); - stmt->setString(2, message->type); - stmt->setUInt8(3, uint8(message->level)); - stmt->setString(4, message->text); + stmt->SetData(0, message->mtime.count()); + stmt->SetData(1, realmId); + stmt->SetData(2, message->type); + stmt->SetData(3, uint8(message->level)); + stmt->SetData(4, message->text); LoginDatabase.Execute(stmt); } diff --git a/src/server/database/Updater/UpdateFetcher.cpp b/src/server/database/Updater/UpdateFetcher.cpp index 3054d0e310..97811954df 100644 --- a/src/server/database/Updater/UpdateFetcher.cpp +++ b/src/server/database/Updater/UpdateFetcher.cpp @@ -132,8 +132,8 @@ UpdateFetcher::DirectoryStorage UpdateFetcher::ReceiveIncludedDirectories() cons { Field* fields = result->Fetch(); - std::string path = fields[0].GetString(); - std::string state = fields[1].GetString(); + std::string path = fields[0].Get<std::string>(); + std::string state = fields[1].Get<std::string>(); if (path.substr(0, 1) == "$") path = _sourceDirectory->generic_string() + path.substr(1); @@ -194,7 +194,7 @@ UpdateFetcher::AppliedFileStorage UpdateFetcher::ReceiveAppliedFiles() const AppliedFileEntry const entry = { - fields[0].GetString(), fields[1].GetString(), AppliedFileEntry::StateConvert(fields[2].GetString()), fields[3].GetUInt64() + fields[0].Get<std::string>(), fields[1].Get<std::string>(), AppliedFileEntry::StateConvert(fields[2].Get<std::string>()), fields[3].Get<uint64>() }; map.emplace(entry.name, entry); diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 7bd0a91875..6e7605f1fe 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -76,14 +76,14 @@ void SmartWaypointMgr::LoadFromDB() do { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); - uint32 id = fields[1].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); + uint32 id = fields[1].Get<uint32>(); float x, y, z, o; - x = fields[2].GetFloat(); - y = fields[3].GetFloat(); - z = fields[4].GetFloat(); - o = fields[5].GetFloat(); - uint32 delay = fields[6].GetUInt32(); + x = fields[2].Get<float>(); + y = fields[3].Get<float>(); + z = fields[4].Get<float>(); + o = fields[5].Get<float>(); + uint32 delay = fields[6].Get<uint32>(); if (last_entry != entry) { @@ -148,14 +148,14 @@ void SmartAIMgr::LoadSmartAIFromDB() SmartScriptHolder temp; - temp.entryOrGuid = fields[0].GetInt32(); + temp.entryOrGuid = fields[0].Get<int32>(); if (!temp.entryOrGuid) { LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: invalid entryorguid (0), skipped loading."); continue; } - SmartScriptType source_type = (SmartScriptType)fields[1].GetUInt8(); + SmartScriptType source_type = (SmartScriptType)fields[1].Get<uint8>(); if (source_type >= SMART_SCRIPT_TYPE_MAX) { LOG_ERROR("sql.sql", "SmartAIMgr::LoadSmartAIFromDB: invalid source_type ({}), skipped loading.", uint32(source_type)); @@ -209,36 +209,36 @@ void SmartAIMgr::LoadSmartAIFromDB() } temp.source_type = source_type; - temp.event_id = fields[2].GetUInt16(); - temp.link = fields[3].GetUInt16(); - temp.event.type = (SMART_EVENT)fields[4].GetUInt8(); - temp.event.event_phase_mask = fields[5].GetUInt16(); - temp.event.event_chance = fields[6].GetUInt8(); - temp.event.event_flags = fields[7].GetUInt16(); - - temp.event.raw.param1 = fields[8].GetUInt32(); - temp.event.raw.param2 = fields[9].GetUInt32(); - temp.event.raw.param3 = fields[10].GetUInt32(); - temp.event.raw.param4 = fields[11].GetUInt32(); - temp.event.raw.param5 = fields[12].GetUInt32(); - - temp.action.type = (SMART_ACTION)fields[13].GetUInt8(); - temp.action.raw.param1 = fields[14].GetUInt32(); - temp.action.raw.param2 = fields[15].GetUInt32(); - temp.action.raw.param3 = fields[16].GetUInt32(); - temp.action.raw.param4 = fields[17].GetUInt32(); - temp.action.raw.param5 = fields[18].GetUInt32(); - temp.action.raw.param6 = fields[19].GetUInt32(); - - temp.target.type = (SMARTAI_TARGETS)fields[20].GetUInt8(); - temp.target.raw.param1 = fields[21].GetUInt32(); - temp.target.raw.param2 = fields[22].GetUInt32(); - temp.target.raw.param3 = fields[23].GetUInt32(); - temp.target.raw.param4 = fields[24].GetUInt32(); - temp.target.x = fields[25].GetFloat(); - temp.target.y = fields[26].GetFloat(); - temp.target.z = fields[27].GetFloat(); - temp.target.o = fields[28].GetFloat(); + temp.event_id = fields[2].Get<uint16>(); + temp.link = fields[3].Get<uint16>(); + temp.event.type = (SMART_EVENT)fields[4].Get<uint8>(); + temp.event.event_phase_mask = fields[5].Get<uint16>(); + temp.event.event_chance = fields[6].Get<uint8>(); + temp.event.event_flags = fields[7].Get<uint16>(); + + temp.event.raw.param1 = fields[8].Get<uint32>(); + temp.event.raw.param2 = fields[9].Get<uint32>(); + temp.event.raw.param3 = fields[10].Get<uint32>(); + temp.event.raw.param4 = fields[11].Get<uint32>(); + temp.event.raw.param5 = fields[12].Get<uint32>(); + + temp.action.type = (SMART_ACTION)fields[13].Get<uint8>(); + temp.action.raw.param1 = fields[14].Get<uint32>(); + temp.action.raw.param2 = fields[15].Get<uint32>(); + temp.action.raw.param3 = fields[16].Get<uint32>(); + temp.action.raw.param4 = fields[17].Get<uint32>(); + temp.action.raw.param5 = fields[18].Get<uint32>(); + temp.action.raw.param6 = fields[19].Get<uint32>(); + + temp.target.type = (SMARTAI_TARGETS)fields[20].Get<uint8>(); + temp.target.raw.param1 = fields[21].Get<uint32>(); + temp.target.raw.param2 = fields[22].Get<uint32>(); + temp.target.raw.param3 = fields[23].Get<uint32>(); + temp.target.raw.param4 = fields[24].Get<uint32>(); + temp.target.x = fields[25].Get<float>(); + temp.target.y = fields[26].Get<float>(); + temp.target.z = fields[27].Get<float>(); + temp.target.o = fields[28].Get<float>(); //check target if (!IsTargetValid(temp)) diff --git a/src/server/game/Accounts/AccountMgr.cpp b/src/server/game/Accounts/AccountMgr.cpp index 62c75712e7..39847b6aeb 100644 --- a/src/server/game/Accounts/AccountMgr.cpp +++ b/src/server/game/Accounts/AccountMgr.cpp @@ -43,11 +43,11 @@ namespace AccountMgr LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ACCOUNT); - stmt->setString(0, username); + stmt->SetData(0, username); auto [salt, verifier] = Acore::Crypto::SRP6::MakeRegistrationData(username, password); - stmt->setBinary(1, salt); - stmt->setBinary(2, verifier); - stmt->setInt8(3, uint8(sWorld->getIntConfig(CONFIG_EXPANSION))); + stmt->SetData(1, salt); + stmt->SetData(2, verifier); + stmt->SetData(3, uint8(sWorld->getIntConfig(CONFIG_EXPANSION))); LoginDatabase.Execute(stmt); @@ -62,7 +62,7 @@ namespace AccountMgr { // Check if accounts exists LoginDatabasePreparedStatement* loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BY_ID); - loginStmt->setUInt32(0, accountId); + loginStmt->SetData(0, accountId); PreparedQueryResult result = LoginDatabase.Query(loginStmt); if (!result) @@ -70,7 +70,7 @@ namespace AccountMgr // Obtain accounts characters CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARS_BY_ACCOUNT_ID); - stmt->setUInt32(0, accountId); + stmt->SetData(0, accountId); result = CharacterDatabase.Query(stmt); @@ -78,7 +78,7 @@ namespace AccountMgr { do { - ObjectGuid guid = ObjectGuid::Create<HighGuid::Player>((*result)[0].GetUInt32()); + ObjectGuid guid = ObjectGuid::Create<HighGuid::Player>((*result)[0].Get<uint32>()); // Kick if player is online if (Player* p = ObjectAccessor::FindPlayer(guid)) @@ -94,37 +94,37 @@ namespace AccountMgr // table realm specific but common for all characters of account for realm stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_TUTORIALS); - stmt->setUInt32(0, accountId); + stmt->SetData(0, accountId); CharacterDatabase.Execute(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ACCOUNT_DATA); - stmt->setUInt32(0, accountId); + stmt->SetData(0, accountId); CharacterDatabase.Execute(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_BAN); - stmt->setUInt32(0, accountId); + stmt->SetData(0, accountId); CharacterDatabase.Execute(stmt); LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction(); loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_ACCOUNT); - loginStmt->setUInt32(0, accountId); + loginStmt->SetData(0, accountId); trans->Append(loginStmt); loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_ACCOUNT_ACCESS); - loginStmt->setUInt32(0, accountId); + loginStmt->SetData(0, accountId); trans->Append(loginStmt); loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_REALM_CHARACTERS); - loginStmt->setUInt32(0, accountId); + loginStmt->SetData(0, accountId); trans->Append(loginStmt); loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_ACCOUNT_BANNED); - loginStmt->setUInt32(0, accountId); + loginStmt->SetData(0, accountId); trans->Append(loginStmt); loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_ACCOUNT_MUTED); - loginStmt->setUInt32(0, accountId); + loginStmt->SetData(0, accountId); trans->Append(loginStmt); LoginDatabase.CommitTransaction(trans); @@ -136,7 +136,7 @@ namespace AccountMgr { // Check if accounts exists LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BY_ID); - stmt->setUInt32(0, accountId); + stmt->SetData(0, accountId); PreparedQueryResult result = LoginDatabase.Query(stmt); if (!result) @@ -152,15 +152,15 @@ namespace AccountMgr Utf8ToUpperOnlyLatin(newPassword); stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_USERNAME); - stmt->setString(0, newUsername); - stmt->setUInt32(1, accountId); + stmt->SetData(0, newUsername); + stmt->SetData(1, accountId); LoginDatabase.Execute(stmt); auto [salt, verifier] = Acore::Crypto::SRP6::MakeRegistrationData(newUsername, newPassword); stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_LOGON); - stmt->setBinary(0, salt); - stmt->setBinary(1, verifier); - stmt->setUInt32(2, accountId); + stmt->SetData(0, salt); + stmt->SetData(1, verifier); + stmt->SetData(2, accountId); LoginDatabase.Execute(stmt); return AOR_OK; @@ -188,9 +188,9 @@ namespace AccountMgr auto [salt, verifier] = Acore::Crypto::SRP6::MakeRegistrationData(username, newPassword); LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_LOGON); - stmt->setBinary(0, salt); - stmt->setBinary(1, verifier); - stmt->setUInt32(2, accountId); + stmt->SetData(0, salt); + stmt->SetData(1, verifier); + stmt->SetData(2, accountId); LoginDatabase.Execute(stmt); sScriptMgr->OnPasswordChange(accountId); @@ -200,40 +200,40 @@ namespace AccountMgr uint32 GetId(std::string const& username) { LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_ACCOUNT_ID_BY_USERNAME); - stmt->setString(0, username); + stmt->SetData(0, username); PreparedQueryResult result = LoginDatabase.Query(stmt); - return (result) ? (*result)[0].GetUInt32() : 0; + return (result) ? (*result)[0].Get<uint32>() : 0; } uint32 GetSecurity(uint32 accountId) { LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_ACCOUNT_ACCESS_GMLEVEL); - stmt->setUInt32(0, accountId); + stmt->SetData(0, accountId); PreparedQueryResult result = LoginDatabase.Query(stmt); - return (result) ? (*result)[0].GetUInt8() : uint32(SEC_PLAYER); + return (result) ? (*result)[0].Get<uint8>() : uint32(SEC_PLAYER); } uint32 GetSecurity(uint32 accountId, int32 realmId) { LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_GMLEVEL_BY_REALMID); - stmt->setUInt32(0, accountId); - stmt->setInt32(1, realmId); + stmt->SetData(0, accountId); + stmt->SetData(1, realmId); PreparedQueryResult result = LoginDatabase.Query(stmt); - return (result) ? (*result)[0].GetUInt8() : uint32(SEC_PLAYER); + return (result) ? (*result)[0].Get<uint8>() : uint32(SEC_PLAYER); } bool GetName(uint32 accountId, std::string& name) { LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_USERNAME_BY_ID); - stmt->setUInt32(0, accountId); + stmt->SetData(0, accountId); PreparedQueryResult result = LoginDatabase.Query(stmt); if (result) { - name = (*result)[0].GetString(); + name = (*result)[0].Get<std::string>(); return true; } @@ -251,11 +251,11 @@ namespace AccountMgr Utf8ToUpperOnlyLatin(password); LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_CHECK_PASSWORD); - stmt->setUInt32(0, accountId); + stmt->SetData(0, accountId); if (PreparedQueryResult result = LoginDatabase.Query(stmt)) { - Acore::Crypto::SRP6::Salt salt = (*result)[0].GetBinary<Acore::Crypto::SRP6::SALT_LENGTH>(); - Acore::Crypto::SRP6::Verifier verifier = (*result)[1].GetBinary<Acore::Crypto::SRP6::VERIFIER_LENGTH>(); + Acore::Crypto::SRP6::Salt salt = (*result)[0].Get<Binary, Acore::Crypto::SRP6::SALT_LENGTH>(); + Acore::Crypto::SRP6::Verifier verifier = (*result)[1].Get<Binary, Acore::Crypto::SRP6::VERIFIER_LENGTH>(); if (Acore::Crypto::SRP6::CheckLogin(username, password, salt, verifier)) return true; } @@ -267,10 +267,10 @@ namespace AccountMgr { // check character count CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_SUM_CHARS); - stmt->setUInt32(0, accountId); + stmt->SetData(0, accountId); PreparedQueryResult result = CharacterDatabase.Query(stmt); - return (result) ? (*result)[0].GetUInt64() : 0; + return (result) ? (*result)[0].Get<uint64>() : 0; } bool IsPlayerAccount(uint32 gmlevel) diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 0e09b5e567..c3ecb80ac3 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -532,11 +532,11 @@ void AchievementMgr::DeleteFromDB(ObjectGuid::LowType lowguid) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT); - stmt->setUInt32(0, lowguid); + stmt->SetData(0, lowguid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT_PROGRESS); - stmt->setUInt32(0, lowguid); + stmt->SetData(0, lowguid); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -552,14 +552,14 @@ void AchievementMgr::SaveToDB(CharacterDatabaseTransaction trans) continue; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT_BY_ACHIEVEMENT); - stmt->setUInt16(0, iter->first); - stmt->setUInt32(1, GetPlayer()->GetGUID().GetCounter()); + stmt->SetData(0, iter->first); + stmt->SetData(1, GetPlayer()->GetGUID().GetCounter()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_ACHIEVEMENT); - stmt->setUInt32(0, GetPlayer()->GetGUID().GetCounter()); - stmt->setUInt16(1, iter->first); - stmt->setUInt32(2, uint32(iter->second.date)); + stmt->SetData(0, GetPlayer()->GetGUID().GetCounter()); + stmt->SetData(1, iter->first); + stmt->SetData(2, uint32(iter->second.date)); trans->Append(stmt); iter->second.changed = false; @@ -576,18 +576,18 @@ void AchievementMgr::SaveToDB(CharacterDatabaseTransaction trans) continue; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT_PROGRESS_BY_CRITERIA); - stmt->setUInt32(0, GetPlayer()->GetGUID().GetCounter()); - stmt->setUInt16(1, iter->first); + stmt->SetData(0, GetPlayer()->GetGUID().GetCounter()); + stmt->SetData(1, iter->first); trans->Append(stmt); // pussywizard: insert only for (counter != 0) is very important! this is how criteria of completed achievements gets deleted from db (by setting counter to 0); if conflicted during merge - contact me if (iter->second.counter) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_ACHIEVEMENT_PROGRESS); - stmt->setUInt32(0, GetPlayer()->GetGUID().GetCounter()); - stmt->setUInt16(1, iter->first); - stmt->setUInt32(2, iter->second.counter); - stmt->setUInt32(3, uint32(iter->second.date)); + stmt->SetData(0, GetPlayer()->GetGUID().GetCounter()); + stmt->SetData(1, iter->first); + stmt->SetData(2, iter->second.counter); + stmt->SetData(3, uint32(iter->second.date)); trans->Append(stmt); } @@ -605,7 +605,7 @@ void AchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, PreparedQ do { Field* fields = achievementResult->Fetch(); - uint32 achievementid = fields[0].GetUInt16(); + uint32 achievementid = fields[0].Get<uint16>(); // must not happen: cleanup at server startup in sAchievementMgr->LoadCompletedAchievements() AchievementEntry const* achievement = sAchievementStore.LookupEntry(achievementid); @@ -613,7 +613,7 @@ void AchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, PreparedQ continue; CompletedAchievementData& ca = m_completedAchievements[achievementid]; - ca.date = time_t(fields[1].GetUInt32()); + ca.date = time_t(fields[1].Get<uint32>()); ca.changed = false; // title achievement rewards are retroactive @@ -630,9 +630,9 @@ void AchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, PreparedQ do { Field* fields = criteriaResult->Fetch(); - uint32 id = fields[0].GetUInt16(); - uint32 counter = fields[1].GetUInt32(); - time_t date = time_t(fields[2].GetUInt32()); + uint32 id = fields[0].Get<uint16>(); + uint32 counter = fields[1].Get<uint32>(); + time_t date = time_t(fields[2].Get<uint32>()); AchievementCriteriaEntry const* criteria = sAchievementCriteriaStore.LookupEntry(id); if (!criteria) @@ -642,7 +642,7 @@ void AchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, PreparedQ CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INVALID_ACHIEV_PROGRESS_CRITERIA); - stmt->setUInt16(0, uint16(id)); + stmt->SetData(0, uint16(id)); CharacterDatabase.Execute(stmt); @@ -2645,7 +2645,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaData() do { Field* fields = result->Fetch(); - uint32 criteria_id = fields[0].GetUInt32(); + uint32 criteria_id = fields[0].Get<uint32>(); AchievementCriteriaEntry const* criteria = sAchievementCriteriaStore.LookupEntry(criteria_id); @@ -2655,8 +2655,8 @@ void AchievementGlobalMgr::LoadAchievementCriteriaData() continue; } - uint32 dataType = fields[1].GetUInt8(); - std::string scriptName = fields[4].GetString(); + uint32 dataType = fields[1].Get<uint8>(); + std::string scriptName = fields[4].Get<std::string>(); uint32 scriptId = 0; if (scriptName.length()) // not empty { @@ -2666,7 +2666,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaData() scriptId = sObjectMgr->GetScriptId(scriptName.c_str()); } - AchievementCriteriaData data(dataType, fields[2].GetUInt32(), fields[3].GetUInt32(), scriptId); + AchievementCriteriaData data(dataType, fields[2].Get<uint32>(), fields[3].Get<uint32>(), scriptId); if (!data.IsValid(criteria)) continue; @@ -2785,7 +2785,7 @@ void AchievementGlobalMgr::LoadCompletedAchievements() { Field* fields = result->Fetch(); - uint16 achievementId = fields[0].GetUInt16(); + uint16 achievementId = fields[0].Get<uint16>(); const AchievementEntry* achievement = sAchievementStore.LookupEntry(achievementId); if (!achievement) { @@ -2794,7 +2794,7 @@ void AchievementGlobalMgr::LoadCompletedAchievements() CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INVALID_ACHIEVMENT); - stmt->setUInt16(0, uint16(achievementId)); + stmt->SetData(0, uint16(achievementId)); CharacterDatabase.Execute(stmt); continue; @@ -2828,7 +2828,7 @@ void AchievementGlobalMgr::LoadRewards() do { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); AchievementEntry const* achievement = sAchievementStore.LookupEntry(entry); if (!achievement) { @@ -2837,13 +2837,13 @@ void AchievementGlobalMgr::LoadRewards() } AchievementReward reward; - reward.titleId[0] = fields[1].GetUInt32(); // Alliance title - reward.titleId[1] = fields[2].GetUInt32(); // Horde title - reward.itemId = fields[3].GetUInt32(); - reward.sender = fields[4].GetUInt32(); // The sender of the mail (a creature from creature_template) - reward.subject = fields[5].GetString(); - reward.text = fields[6].GetString(); // Body in DB - reward.mailTemplate = fields[7].GetUInt32(); + reward.titleId[0] = fields[1].Get<uint32>(); // Alliance title + reward.titleId[1] = fields[2].Get<uint32>(); // Horde title + reward.itemId = fields[3].Get<uint32>(); + reward.sender = fields[4].Get<uint32>(); // The sender of the mail (a creature from creature_template) + reward.subject = fields[5].Get<std::string>(); + reward.text = fields[6].Get<std::string>(); // Body in DB + reward.mailTemplate = fields[7].Get<uint32>(); // Must reward a title or send a mail else, skip it. if (!reward.titleId[0] && !reward.titleId[1] && !reward.sender) @@ -2948,20 +2948,20 @@ void AchievementGlobalMgr::LoadRewardLocales() { Field* fields = result->Fetch(); - uint32 ID = fields[0].GetUInt32(); + uint32 ID = fields[0].Get<uint32>(); if (m_achievementRewards.find(ID) == m_achievementRewards.end()) { LOG_ERROR("sql.sql", "Table `achievement_reward_locale` (Entry: {}) has locale strings for non-existing achievement reward.", ID); continue; } - LocaleConstant locale = GetLocaleByName(fields[1].GetString()); + LocaleConstant locale = GetLocaleByName(fields[1].Get<std::string>()); if (locale == LOCALE_enUS) continue; AchievementRewardLocale& data = m_achievementRewardLocales[ID]; - ObjectMgr::AddLocaleString(fields[2].GetString(), locale, data.Subject); - ObjectMgr::AddLocaleString(fields[3].GetString(), locale, data.Text); + ObjectMgr::AddLocaleString(fields[2].Get<std::string>(), locale, data.Subject); + ObjectMgr::AddLocaleString(fields[3].Get<std::string>(), locale, data.Text); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} Achievement Reward Locale strings in {} ms", (unsigned long)m_achievementRewardLocales.size(), GetMSTimeDiffToNow(oldMSTime)); diff --git a/src/server/game/Addons/AddonMgr.cpp b/src/server/game/Addons/AddonMgr.cpp index 02ed1d9ad8..8a9c587722 100644 --- a/src/server/game/Addons/AddonMgr.cpp +++ b/src/server/game/Addons/AddonMgr.cpp @@ -53,8 +53,8 @@ namespace AddonMgr { Field* fields = result->Fetch(); - std::string name = fields[0].GetString(); - uint32 crc = fields[1].GetUInt32(); + std::string name = fields[0].Get<std::string>(); + uint32 crc = fields[1].Get<uint32>(); m_knownAddons.push_back(SavedAddon(name, crc)); @@ -76,11 +76,11 @@ namespace AddonMgr Field* fields = result->Fetch(); BannedAddon addon{}; - addon.Id = fields[0].GetUInt32() + offset; - addon.Timestamp = uint32(fields[3].GetUInt64()); + addon.Id = fields[0].Get<uint32>() + offset; + addon.Timestamp = uint32(fields[3].Get<uint64>()); - std::string name = fields[1].GetString(); - std::string version = fields[2].GetString(); + std::string name = fields[1].Get<std::string>(); + std::string version = fields[2].Get<std::string>(); MD5(reinterpret_cast<uint8 const*>(name.c_str()), name.length(), addon.NameMD5); MD5(reinterpret_cast<uint8 const*>(version.c_str()), version.length(), addon.VersionMD5); @@ -101,8 +101,8 @@ namespace AddonMgr CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_ADDON); - stmt->setString(0, name); - stmt->setUInt32(1, addon.CRC); + stmt->SetData(0, name); + stmt->SetData(1, addon.CRC); CharacterDatabase.Execute(stmt); diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index dc2c81a59f..afed580aba 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -312,8 +312,8 @@ void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, CharacterDatabas // set owner to bidder (to prevent delete item with sender char deleting) // owner in `data` will set at mail receive and item extracting CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ITEM_OWNER); - stmt->setUInt32(0, auction->bidder.GetCounter()); - stmt->setUInt32(1, pItem->GetGUID().GetCounter()); + stmt->SetData(0, auction->bidder.GetCounter()); + stmt->SetData(1, pItem->GetGUID().GetCounter()); trans->Append(stmt); if (bidder) @@ -394,8 +394,8 @@ void AuctionHouseMgr::SendAuctionSuccessfulMail(AuctionEntry* auction, Character owner_name = gpd_owner->Name; owner_level = gpd_owner->Level; } - CharacterDatabase.PExecute("INSERT INTO log_money VALUES(%u, %u, \"%s\", \"%s\", %u, \"%s\", %u, \"profit: %ug, bidder: %s %u lvl (guid: %u), seller: %s %u lvl (guid: %u), item %u (%u)\", NOW(), %u)", - gpd->AccountId, auction->bidder.GetCounter(), gpd->Name.c_str(), bidder ? bidder->GetSession()->GetRemoteAddress().c_str() : "", owner_accId, owner_name.c_str(), auction->bid, (profit / GOLD), gpd->Name.c_str(), gpd->Level, auction->bidder.GetCounter(), owner_name.c_str(), owner_level, auction->owner.GetCounter(), auction->item_template, auction->itemCount, 2); + CharacterDatabase.Execute("INSERT INTO log_money VALUES({}, {}, \"{}\", \"{}\", {}, \"{}\", {}, \"profit: {}g, bidder: {} {} lvl (guid: {}), seller: {} {} lvl (guid: {}), item {} ({})\", NOW(), {})", + gpd->AccountId, auction->bidder.GetCounter(), gpd->Name, bidder ? bidder->GetSession()->GetRemoteAddress() : "", owner_accId, owner_name, auction->bid, (profit / GOLD), gpd->Name, gpd->Level, auction->bidder.GetCounter(), owner_name, owner_level, auction->owner.GetCounter(), auction->item_template, auction->itemCount, 2); } } } @@ -504,8 +504,8 @@ void AuctionHouseMgr::LoadAuctionItems() { Field* fields = result->Fetch(); - ObjectGuid::LowType item_guid = fields[11].GetUInt32(); - uint32 item_template = fields[12].GetUInt32(); + ObjectGuid::LowType item_guid = fields[11].Get<uint32>(); + uint32 item_template = fields[12].Get<uint32>(); ItemTemplate const* proto = sObjectMgr->GetItemTemplate(item_template); if (!proto) @@ -971,40 +971,40 @@ uint32 AuctionEntry::GetAuctionOutBid() const void AuctionEntry::DeleteFromDB(CharacterDatabaseTransaction trans) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_AUCTION); - stmt->setUInt32(0, Id); + stmt->SetData(0, Id); trans->Append(stmt); } void AuctionEntry::SaveToDB(CharacterDatabaseTransaction trans) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_AUCTION); - stmt->setUInt32(0, Id); - stmt->setUInt8(1, houseId); - stmt->setUInt32(2, item_guid.GetCounter()); - stmt->setUInt32(3, owner.GetCounter()); - stmt->setUInt32 (4, buyout); - stmt->setUInt32(5, uint32(expire_time)); - stmt->setUInt32(6, bidder.GetCounter()); - stmt->setUInt32 (7, bid); - stmt->setUInt32 (8, startbid); - stmt->setUInt32 (9, deposit); + stmt->SetData(0, Id); + stmt->SetData(1, houseId); + stmt->SetData(2, item_guid.GetCounter()); + stmt->SetData(3, owner.GetCounter()); + stmt->SetData (4, buyout); + stmt->SetData(5, uint32(expire_time)); + stmt->SetData(6, bidder.GetCounter()); + stmt->SetData (7, bid); + stmt->SetData (8, startbid); + stmt->SetData (9, deposit); trans->Append(stmt); } bool AuctionEntry::LoadFromDB(Field* fields) { - Id = fields[0].GetUInt32(); - houseId = fields[1].GetUInt8(); - item_guid = ObjectGuid::Create<HighGuid::Item>(fields[2].GetUInt32()); - item_template = fields[3].GetUInt32(); - itemCount = fields[4].GetUInt32(); - owner = ObjectGuid::Create<HighGuid::Player>(fields[5].GetUInt32()); - buyout = fields[6].GetUInt32(); - expire_time = fields[7].GetUInt32(); - bidder = ObjectGuid::Create<HighGuid::Player>(fields[8].GetUInt32()); - bid = fields[9].GetUInt32(); - startbid = fields[10].GetUInt32(); - deposit = fields[11].GetUInt32(); + Id = fields[0].Get<uint32>(); + houseId = fields[1].Get<uint8>(); + item_guid = ObjectGuid::Create<HighGuid::Item>(fields[2].Get<uint32>()); + item_template = fields[3].Get<uint32>(); + itemCount = fields[4].Get<uint32>(); + owner = ObjectGuid::Create<HighGuid::Player>(fields[5].Get<uint32>()); + buyout = fields[6].Get<uint32>(); + expire_time = fields[7].Get<uint32>(); + bidder = ObjectGuid::Create<HighGuid::Player>(fields[8].Get<uint32>()); + bid = fields[9].Get<uint32>(); + startbid = fields[10].Get<uint32>(); + deposit = fields[11].Get<uint32>(); auctionHouseEntry = AuctionHouseMgr::GetAuctionHouseEntryFromHouse(houseId); if (!auctionHouseEntry) diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp index 9c6f24b951..58b6580d76 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.cpp +++ b/src/server/game/Battlegrounds/ArenaTeam.cpp @@ -69,16 +69,16 @@ bool ArenaTeam::Create(ObjectGuid captainGuid, uint8 type, std::string const& te // Save arena team to db CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_ARENA_TEAM); - stmt->setUInt32(0, TeamId); - stmt->setString(1, TeamName); - stmt->setUInt32(2, captainGuid.GetCounter()); - stmt->setUInt8(3, Type); - stmt->setUInt16(4, Stats.Rating); - stmt->setUInt32(5, BackgroundColor); - stmt->setUInt8(6, EmblemStyle); - stmt->setUInt32(7, EmblemColor); - stmt->setUInt8(8, BorderStyle); - stmt->setUInt32(9, BorderColor); + stmt->SetData(0, TeamId); + stmt->SetData(1, TeamName); + stmt->SetData(2, captainGuid.GetCounter()); + stmt->SetData(3, Type); + stmt->SetData(4, Stats.Rating); + stmt->SetData(5, BackgroundColor); + stmt->SetData(6, EmblemStyle); + stmt->SetData(7, EmblemColor); + stmt->SetData(8, BorderStyle); + stmt->SetData(9, BorderColor); CharacterDatabase.Execute(stmt); // Add captain as member @@ -135,16 +135,16 @@ bool ArenaTeam::AddMember(ObjectGuid playerGuid) // xinef: sync query // Try to get player's match maker rating from db and fall back to config setting if not found CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_MATCH_MAKER_RATING); - stmt->setUInt32(0, playerGuid.GetCounter()); - stmt->setUInt8(1, GetSlot()); + stmt->SetData(0, playerGuid.GetCounter()); + stmt->SetData(1, GetSlot()); PreparedQueryResult result = CharacterDatabase.Query(stmt); uint16 matchMakerRating; uint16 maxMMR; if (result) { - matchMakerRating = (*result)[0].GetUInt16(); - uint16 Max = (*result)[1].GetUInt16(); + matchMakerRating = (*result)[0].Get<uint16>(); + uint16 Max = (*result)[1].Get<uint16>(); maxMMR = std::max(Max, matchMakerRating); } else @@ -175,8 +175,8 @@ bool ArenaTeam::AddMember(ObjectGuid playerGuid) // Save player's arena team membership to db stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_ARENA_TEAM_MEMBER); - stmt->setUInt32(0, TeamId); - stmt->setUInt32(1, playerGuid.GetCounter()); + stmt->SetData(0, TeamId); + stmt->SetData(1, playerGuid.GetCounter()); CharacterDatabase.Execute(stmt); // Inform player if online @@ -200,21 +200,21 @@ bool ArenaTeam::LoadArenaTeamFromDB(QueryResult result) Field* fields = result->Fetch(); - TeamId = fields[0].GetUInt32(); - TeamName = fields[1].GetString(); - CaptainGuid = ObjectGuid::Create<HighGuid::Player>(fields[2].GetUInt32()); - Type = fields[3].GetUInt8(); - BackgroundColor = fields[4].GetUInt32(); - EmblemStyle = fields[5].GetUInt8(); - EmblemColor = fields[6].GetUInt32(); - BorderStyle = fields[7].GetUInt8(); - BorderColor = fields[8].GetUInt32(); - Stats.Rating = fields[9].GetUInt16(); - Stats.WeekGames = fields[10].GetUInt16(); - Stats.WeekWins = fields[11].GetUInt16(); - Stats.SeasonGames = fields[12].GetUInt16(); - Stats.SeasonWins = fields[13].GetUInt16(); - Stats.Rank = fields[14].GetUInt32(); + TeamId = fields[0].Get<uint32>(); + TeamName = fields[1].Get<std::string>(); + CaptainGuid = ObjectGuid::Create<HighGuid::Player>(fields[2].Get<uint32>()); + Type = fields[3].Get<uint8>(); + BackgroundColor = fields[4].Get<uint32>(); + EmblemStyle = fields[5].Get<uint8>(); + EmblemColor = fields[6].Get<uint32>(); + BorderStyle = fields[7].Get<uint8>(); + BorderColor = fields[8].Get<uint32>(); + Stats.Rating = fields[9].Get<uint16>(); + Stats.WeekGames = fields[10].Get<uint16>(); + Stats.WeekWins = fields[11].Get<uint16>(); + Stats.SeasonGames = fields[12].Get<uint16>(); + Stats.SeasonWins = fields[13].Get<uint16>(); + Stats.Rank = fields[14].Get<uint32>(); return true; } @@ -234,26 +234,26 @@ bool ArenaTeam::LoadMembersFromDB(QueryResult result) if (!fields) break; - uint32 arenaTeamId = fields[0].GetUInt32(); + uint32 arenaTeamId = fields[0].Get<uint32>(); // We loaded all members for this arena_team already, break cycle if (arenaTeamId > TeamId) break; ArenaTeamMember newMember; - newMember.Guid = ObjectGuid::Create<HighGuid::Player>(fields[1].GetUInt32()); - newMember.WeekGames = fields[2].GetUInt16(); - newMember.WeekWins = fields[3].GetUInt16(); - newMember.SeasonGames = fields[4].GetUInt16(); - newMember.SeasonWins = fields[5].GetUInt16(); - //newMember.Name = fields[6].GetString(); - newMember.Class = fields[7].GetUInt8(); - newMember.PersonalRating = fields[8].GetUInt16(); - newMember.MatchMakerRating = fields[9].GetUInt16() > 0 ? fields[9].GetUInt16() : sWorld->getIntConfig(CONFIG_ARENA_START_MATCHMAKER_RATING); - newMember.MaxMMR = std::max(fields[10].GetUInt16(), newMember.MatchMakerRating); + newMember.Guid = ObjectGuid::Create<HighGuid::Player>(fields[1].Get<uint32>()); + newMember.WeekGames = fields[2].Get<uint16>(); + newMember.WeekWins = fields[3].Get<uint16>(); + newMember.SeasonGames = fields[4].Get<uint16>(); + newMember.SeasonWins = fields[5].Get<uint16>(); + //newMember.Name = fields[6].Get<std::string>(); + newMember.Class = fields[7].Get<uint8>(); + newMember.PersonalRating = fields[8].Get<uint16>(); + newMember.MatchMakerRating = fields[9].Get<uint16>() > 0 ? fields[9].Get<uint16>() : sWorld->getIntConfig(CONFIG_ARENA_START_MATCHMAKER_RATING); + newMember.MaxMMR = std::max(fields[10].Get<uint16>(), newMember.MatchMakerRating); // Delete member if character information is missing - if (fields[6].GetString().empty()) + if (fields[6].Get<std::string>().empty()) { LOG_ERROR("sql.sql", "ArenaTeam {} has member with empty name - probably player {} doesn't exist, deleting him from memberlist!", arenaTeamId, newMember.Guid.ToString()); this->DelMember(newMember.Guid, true); @@ -286,8 +286,8 @@ bool ArenaTeam::SetName(std::string const& name) TeamName = name; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ARENA_TEAM_NAME); - stmt->setString(0, TeamName); - stmt->setUInt32(1, GetId()); + stmt->SetData(0, TeamName); + stmt->SetData(1, GetId()); CharacterDatabase.Execute(stmt); return true; } @@ -304,8 +304,8 @@ void ArenaTeam::SetCaptain(ObjectGuid guid) // Update database CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ARENA_TEAM_CAPTAIN); - stmt->setUInt32(0, guid.GetCounter()); - stmt->setUInt32(1, GetId()); + stmt->SetData(0, guid.GetCounter()); + stmt->SetData(1, GetId()); CharacterDatabase.Execute(stmt); // Enable remove/promote buttons @@ -374,8 +374,8 @@ void ArenaTeam::DelMember(ObjectGuid guid, bool cleanDb) if (cleanDb) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ARENA_TEAM_MEMBER); - stmt->setUInt32(0, GetId()); - stmt->setUInt32(1, guid.GetCounter()); + stmt->SetData(0, GetId()); + stmt->SetData(1, guid.GetCounter()); CharacterDatabase.Execute(stmt); } } @@ -396,11 +396,11 @@ void ArenaTeam::Disband(WorldSession* session) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ARENA_TEAM); - stmt->setUInt32(0, TeamId); + stmt->SetData(0, TeamId); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ARENA_TEAM_MEMBERS); - stmt->setUInt32(0, TeamId); + stmt->SetData(0, TeamId); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -419,11 +419,11 @@ void ArenaTeam::Disband() CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ARENA_TEAM); - stmt->setUInt32(0, TeamId); + stmt->SetData(0, TeamId); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ARENA_TEAM_MEMBERS); - stmt->setUInt32(0, TeamId); + stmt->SetData(0, TeamId); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -938,32 +938,32 @@ void ArenaTeam::SaveToDB() CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ARENA_TEAM_STATS); - stmt->setUInt16(0, Stats.Rating); - stmt->setUInt16(1, Stats.WeekGames); - stmt->setUInt16(2, Stats.WeekWins); - stmt->setUInt16(3, Stats.SeasonGames); - stmt->setUInt16(4, Stats.SeasonWins); - stmt->setUInt32(5, Stats.Rank); - stmt->setUInt32(6, GetId()); + stmt->SetData(0, Stats.Rating); + stmt->SetData(1, Stats.WeekGames); + stmt->SetData(2, Stats.WeekWins); + stmt->SetData(3, Stats.SeasonGames); + stmt->SetData(4, Stats.SeasonWins); + stmt->SetData(5, Stats.Rank); + stmt->SetData(6, GetId()); trans->Append(stmt); for (MemberList::const_iterator itr = Members.begin(); itr != Members.end(); ++itr) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ARENA_TEAM_MEMBER); - stmt->setUInt16(0, itr->PersonalRating); - stmt->setUInt16(1, itr->WeekGames); - stmt->setUInt16(2, itr->WeekWins); - stmt->setUInt16(3, itr->SeasonGames); - stmt->setUInt16(4, itr->SeasonWins); - stmt->setUInt32(5, GetId()); - stmt->setUInt32(6, itr->Guid.GetCounter()); + stmt->SetData(0, itr->PersonalRating); + stmt->SetData(1, itr->WeekGames); + stmt->SetData(2, itr->WeekWins); + stmt->SetData(3, itr->SeasonGames); + stmt->SetData(4, itr->SeasonWins); + stmt->SetData(5, GetId()); + stmt->SetData(6, itr->Guid.GetCounter()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_CHARACTER_ARENA_STATS); - stmt->setUInt32(0, itr->Guid.GetCounter()); - stmt->setUInt8(1, GetSlot()); - stmt->setUInt16(2, itr->MatchMakerRating); - stmt->setUInt16(3, itr->MaxMMR); + stmt->SetData(0, itr->Guid.GetCounter()); + stmt->SetData(1, GetSlot()); + stmt->SetData(2, itr->MatchMakerRating); + stmt->SetData(3, itr->MaxMMR); trans->Append(stmt); } diff --git a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp index bbea79b4ed..acce71e3e7 100644 --- a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp +++ b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp @@ -222,8 +222,8 @@ void ArenaTeamMgr::DistributeArenaPoints() else // Update database { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_ARENA_POINTS); - stmt->setUInt32(0, playerItr->second); - stmt->setUInt32(1, playerItr->first.GetCounter()); + stmt->SetData(0, playerItr->second); + stmt->SetData(1, playerItr->first.GetCounter()); trans->Append(stmt); } } diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index c6bdc5d4c1..b6387eebc8 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -777,14 +777,14 @@ void Battleground::EndBattleground(TeamId winnerTeamId) if (result) { Field* fields = result->Fetch(); - battlegroundId = fields[0].GetUInt64() + 1; + battlegroundId = fields[0].Get<uint64>() + 1; } stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PVPSTATS_BATTLEGROUND); - stmt->setUInt64(0, battlegroundId); - stmt->setUInt8(1, GetWinner()); - stmt->setUInt8(2, GetUniqueBracketId()); - stmt->setUInt8(3, GetBgTypeID(true)); + stmt->SetData(0, battlegroundId); + stmt->SetData(1, GetWinner()); + stmt->SetData(2, GetUniqueBracketId()); + stmt->SetData(3, GetBgTypeID(true)); CharacterDatabase.Execute(stmt); } @@ -820,34 +820,34 @@ void Battleground::EndBattleground(TeamId winnerTeamId) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt2 = CharacterDatabase.GetPreparedStatement(CHAR_INS_ARENA_LOG_FIGHT); - stmt2->setUInt32(0, fightId); - stmt2->setUInt8(1, m_ArenaType); - stmt2->setUInt32(2, ((GetStartTime() <= startDelay ? 0 : GetStartTime() - startDelay) / 1000)); - stmt2->setUInt32(3, winnerArenaTeam->GetId()); - stmt2->setUInt32(4, loserArenaTeam->GetId()); - stmt2->setUInt16(5, (uint16)winnerTeamRating); - stmt2->setUInt16(6, (uint16)winnerMatchmakerRating); - stmt2->setInt16(7, (int16)winnerChange); - stmt2->setUInt16(8, (uint16)loserTeamRating); - stmt2->setUInt16(9, (uint16)loserMatchmakerRating); - stmt2->setInt16(10, (int16)loserChange); - stmt2->setUInt32(11, currOnline); + stmt2->SetData(0, fightId); + stmt2->SetData(1, m_ArenaType); + stmt2->SetData(2, ((GetStartTime() <= startDelay ? 0 : GetStartTime() - startDelay) / 1000)); + stmt2->SetData(3, winnerArenaTeam->GetId()); + stmt2->SetData(4, loserArenaTeam->GetId()); + stmt2->SetData(5, (uint16)winnerTeamRating); + stmt2->SetData(6, (uint16)winnerMatchmakerRating); + stmt2->SetData(7, (int16)winnerChange); + stmt2->SetData(8, (uint16)loserTeamRating); + stmt2->SetData(9, (uint16)loserMatchmakerRating); + stmt2->SetData(10, (int16)loserChange); + stmt2->SetData(11, currOnline); trans->Append(stmt2); uint8 memberId = 0; for (Battleground::ArenaLogEntryDataMap::const_iterator itr = ArenaLogEntries.begin(); itr != ArenaLogEntries.end(); ++itr) { stmt2 = CharacterDatabase.GetPreparedStatement(CHAR_INS_ARENA_LOG_MEMBERSTATS); - stmt2->setUInt32(0, fightId); - stmt2->setUInt8(1, ++memberId); - stmt2->setString(2, itr->second.Name); - stmt2->setUInt32(3, itr->second.Guid); - stmt2->setUInt32(4, itr->second.ArenaTeamId); - stmt2->setUInt32(5, itr->second.Acc); - stmt2->setString(6, itr->second.IP); - stmt2->setUInt32(7, itr->second.DamageDone); - stmt2->setUInt32(8, itr->second.HealingDone); - stmt2->setUInt32(9, itr->second.KillingBlows); + stmt2->SetData(0, fightId); + stmt2->SetData(1, ++memberId); + stmt2->SetData(2, itr->second.Name); + stmt2->SetData(3, itr->second.Guid); + stmt2->SetData(4, itr->second.ArenaTeamId); + stmt2->SetData(5, itr->second.Acc); + stmt2->SetData(6, itr->second.IP); + stmt2->SetData(7, itr->second.DamageDone); + stmt2->SetData(8, itr->second.HealingDone); + stmt2->SetData(9, itr->second.KillingBlows); trans->Append(stmt2); } @@ -879,34 +879,34 @@ void Battleground::EndBattleground(TeamId winnerTeamId) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt3 = CharacterDatabase.GetPreparedStatement(CHAR_INS_ARENA_LOG_FIGHT); - stmt3->setUInt32(0, fightId); - stmt3->setUInt8(1, m_ArenaType); - stmt3->setUInt32(2, ((GetStartTime() <= startDelay ? 0 : GetStartTime() - startDelay) / 1000)); - stmt3->setUInt32(3, winnerArenaTeam->GetId()); - stmt3->setUInt32(4, loserArenaTeam->GetId()); - stmt3->setUInt16(5, (uint16)winnerTeamRating); - stmt3->setUInt16(6, (uint16)winnerMatchmakerRating); - stmt3->setInt16(7, (int16)winnerChange); - stmt3->setUInt16(8, (uint16)loserTeamRating); - stmt3->setUInt16(9, (uint16)loserMatchmakerRating); - stmt3->setInt16(10, (int16)loserChange); - stmt3->setUInt32(11, currOnline); + stmt3->SetData(0, fightId); + stmt3->SetData(1, m_ArenaType); + stmt3->SetData(2, ((GetStartTime() <= startDelay ? 0 : GetStartTime() - startDelay) / 1000)); + stmt3->SetData(3, winnerArenaTeam->GetId()); + stmt3->SetData(4, loserArenaTeam->GetId()); + stmt3->SetData(5, (uint16)winnerTeamRating); + stmt3->SetData(6, (uint16)winnerMatchmakerRating); + stmt3->SetData(7, (int16)winnerChange); + stmt3->SetData(8, (uint16)loserTeamRating); + stmt3->SetData(9, (uint16)loserMatchmakerRating); + stmt3->SetData(10, (int16)loserChange); + stmt3->SetData(11, currOnline); trans->Append(stmt3); uint8 memberId = 0; for (Battleground::ArenaLogEntryDataMap::const_iterator itr = ArenaLogEntries.begin(); itr != ArenaLogEntries.end(); ++itr) { stmt3 = CharacterDatabase.GetPreparedStatement(CHAR_INS_ARENA_LOG_MEMBERSTATS); - stmt3->setUInt32(0, fightId); - stmt3->setUInt8(1, ++memberId); - stmt3->setString(2, itr->second.Name); - stmt3->setUInt32(3, itr->second.Guid); - stmt3->setUInt32(4, itr->second.ArenaTeamId); - stmt3->setUInt32(5, itr->second.Acc); - stmt3->setString(6, itr->second.IP); - stmt3->setUInt32(7, itr->second.DamageDone); - stmt3->setUInt32(8, itr->second.HealingDone); - stmt3->setUInt32(9, itr->second.KillingBlows); + stmt3->SetData(0, fightId); + stmt3->SetData(1, ++memberId); + stmt3->SetData(2, itr->second.Name); + stmt3->SetData(3, itr->second.Guid); + stmt3->SetData(4, itr->second.ArenaTeamId); + stmt3->SetData(5, itr->second.Acc); + stmt3->SetData(6, itr->second.IP); + stmt3->SetData(7, itr->second.DamageDone); + stmt3->SetData(8, itr->second.HealingDone); + stmt3->SetData(9, itr->second.KillingBlows); trans->Append(stmt3); } @@ -1015,20 +1015,20 @@ void Battleground::EndBattleground(TeamId winnerTeamId) stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PVPSTATS_PLAYER); BattlegroundScoreMap::const_iterator score = PlayerScores.find(player->GetGUID()); - stmt->setUInt32(0, battlegroundId); - stmt->setUInt32(1, player->GetGUID().GetCounter()); - stmt->setBool(2, bgTeamId == winnerTeamId); - stmt->setUInt32(3, score->second->GetKillingBlows()); - stmt->setUInt32(4, score->second->GetDeaths()); - stmt->setUInt32(5, score->second->GetHonorableKills()); - stmt->setUInt32(6, score->second->GetBonusHonor()); - stmt->setUInt32(7, score->second->GetDamageDone()); - stmt->setUInt32(8, score->second->GetHealingDone()); - stmt->setUInt32(9, score->second->GetAttr1()); - stmt->setUInt32(10, score->second->GetAttr2()); - stmt->setUInt32(11, score->second->GetAttr3()); - stmt->setUInt32(12, score->second->GetAttr4()); - stmt->setUInt32(13, score->second->GetAttr5()); + stmt->SetData(0, battlegroundId); + stmt->SetData(1, player->GetGUID().GetCounter()); + stmt->SetData(2, bgTeamId == winnerTeamId); + stmt->SetData(3, score->second->GetKillingBlows()); + stmt->SetData(4, score->second->GetDeaths()); + stmt->SetData(5, score->second->GetHonorableKills()); + stmt->SetData(6, score->second->GetBonusHonor()); + stmt->SetData(7, score->second->GetDamageDone()); + stmt->SetData(8, score->second->GetHealingDone()); + stmt->SetData(9, score->second->GetAttr1()); + stmt->SetData(10, score->second->GetAttr2()); + stmt->SetData(11, score->second->GetAttr3()); + stmt->SetData(12, score->second->GetAttr4()); + stmt->SetData(13, score->second->GetAttr5()); CharacterDatabase.Execute(stmt); } diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 2d2bbae6b7..44ff0a5e60 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -528,7 +528,7 @@ void BattlegroundMgr::CreateInitialBattlegrounds() { Field* fields = result->Fetch(); - uint32 bgTypeId = fields[0].GetUInt32(); + uint32 bgTypeId = fields[0].Get<uint32>(); if (DisableMgr::IsDisabledFor(DISABLE_TYPE_BATTLEGROUND, bgTypeId, nullptr)) continue; @@ -544,15 +544,15 @@ void BattlegroundMgr::CreateInitialBattlegrounds() CreateBattlegroundData data; data.bgTypeId = BattlegroundTypeId(bgTypeId); data.IsArena = (bl->type == TYPE_ARENA); - data.MinPlayersPerTeam = fields[1].GetUInt16(); - data.MaxPlayersPerTeam = fields[2].GetUInt16(); - data.LevelMin = fields[3].GetUInt8(); - data.LevelMax = fields[4].GetUInt8(); - float dist = fields[9].GetFloat(); + data.MinPlayersPerTeam = fields[1].Get<uint16>(); + data.MaxPlayersPerTeam = fields[2].Get<uint16>(); + data.LevelMin = fields[3].Get<uint8>(); + data.LevelMax = fields[4].Get<uint8>(); + float dist = fields[9].Get<float>(); data.StartMaxDist = dist * dist; - data.Weight = fields[10].GetUInt8(); + data.Weight = fields[10].Get<uint8>(); - data.scriptId = sObjectMgr->GetScriptId(fields[11].GetCString()); + data.scriptId = sObjectMgr->GetScriptId(fields[11].Get<std::string>()); data.BattlegroundName = bl->name[sWorld->GetDefaultDbcLocale()]; data.MapID = bl->mapid[0]; @@ -575,21 +575,21 @@ void BattlegroundMgr::CreateInitialBattlegrounds() data.Team1StartLocX = 0; data.Team1StartLocY = 0; data.Team1StartLocZ = 0; - data.Team1StartLocO = fields[6].GetFloat(); + data.Team1StartLocO = fields[6].Get<float>(); data.Team2StartLocX = 0; data.Team2StartLocY = 0; data.Team2StartLocZ = 0; - data.Team2StartLocO = fields[8].GetFloat(); + data.Team2StartLocO = fields[8].Get<float>(); } else { - uint32 startId = fields[5].GetUInt32(); + uint32 startId = fields[5].Get<uint32>(); if (GraveyardStruct const* start = sGraveyard->GetGraveyard(startId)) { data.Team1StartLocX = start->x; data.Team1StartLocY = start->y; data.Team1StartLocZ = start->z; - data.Team1StartLocO = fields[6].GetFloat(); + data.Team1StartLocO = fields[6].Get<float>(); } else { @@ -597,13 +597,13 @@ void BattlegroundMgr::CreateInitialBattlegrounds() continue; } - startId = fields[7].GetUInt32(); + startId = fields[7].Get<uint32>(); if (GraveyardStruct const* start = sGraveyard->GetGraveyard(startId)) { data.Team2StartLocX = start->x; data.Team2StartLocY = start->y; data.Team2StartLocZ = start->z; - data.Team2StartLocO = fields[8].GetFloat(); + data.Team2StartLocO = fields[8].Get<float>(); } else { @@ -865,7 +865,7 @@ void BattlegroundMgr::LoadBattleMastersEntry() Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); if (CreatureTemplate const* cInfo = sObjectMgr->GetCreatureTemplate(entry)) { if ((cInfo->npcflag & UNIT_NPC_FLAG_BATTLEMASTER) == 0) @@ -877,7 +877,7 @@ void BattlegroundMgr::LoadBattleMastersEntry() continue; } - uint32 bgTypeId = fields[1].GetUInt32(); + uint32 bgTypeId = fields[1].Get<uint32>(); if (!sBattlemasterListStore.LookupEntry(bgTypeId)) { LOG_ERROR("sql.sql", "Table `battlemaster_entry` contain entry {} for not existed battleground type {}, ignored.", entry, bgTypeId); diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.cpp b/src/server/game/Battlegrounds/BattlegroundQueue.cpp index 873035a3b8..7449f06587 100644 --- a/src/server/game/Battlegrounds/BattlegroundQueue.cpp +++ b/src/server/game/Battlegrounds/BattlegroundQueue.cpp @@ -1243,8 +1243,8 @@ bool BGQueueRemoveEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/) if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_TRACK_DESERTERS)) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_DESERTER_TRACK); - stmt->setUInt32(0, player->GetGUID().GetCounter()); - stmt->setUInt8(1, BG_DESERTION_TYPE_NO_ENTER_BUTTON); + stmt->SetData(0, player->GetGUID().GetCounter()); + stmt->SetData(1, BG_DESERTION_TYPE_NO_ENTER_BUTTON); CharacterDatabase.Execute(stmt); } diff --git a/src/server/game/Cache/CharacterCache.cpp b/src/server/game/Cache/CharacterCache.cpp index a3b5a85243..83977275f0 100644 --- a/src/server/game/Cache/CharacterCache.cpp +++ b/src/server/game/Cache/CharacterCache.cpp @@ -72,8 +72,8 @@ void CharacterCache::LoadCharacterCacheStorage() do { Field* fields = result->Fetch(); - AddCharacterCacheEntry(ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt32()) /*guid*/, fields[2].GetUInt32() /*account*/, fields[1].GetString() /*name*/, - fields[4].GetUInt8() /*gender*/, fields[3].GetUInt8() /*race*/, fields[5].GetUInt8() /*class*/, fields[6].GetUInt8() /*level*/); + AddCharacterCacheEntry(ObjectGuid::Create<HighGuid::Player>(fields[0].Get<uint32>()) /*guid*/, fields[2].Get<uint32>() /*account*/, fields[1].Get<std::string>() /*name*/, + fields[4].Get<uint8>() /*gender*/, fields[3].Get<uint8>() /*race*/, fields[5].Get<uint8>() /*class*/, fields[6].Get<uint8>() /*level*/); } while (result->NextRow()); QueryResult mailCountResult = CharacterDatabase.Query("SELECT receiver, COUNT(receiver) FROM mail GROUP BY receiver"); @@ -82,7 +82,7 @@ void CharacterCache::LoadCharacterCacheStorage() do { Field* fields = mailCountResult->Fetch(); - UpdateCharacterMailCount(ObjectGuid(HighGuid::Player, fields[0].GetUInt32()), static_cast<int8>(fields[1].GetUInt64()), true); + UpdateCharacterMailCount(ObjectGuid(HighGuid::Player, fields[0].Get<uint32>()), static_cast<int8>(fields[1].Get<uint64>()), true); } while (mailCountResult->NextRow()); } @@ -92,7 +92,7 @@ void CharacterCache::LoadCharacterCacheStorage() void CharacterCache::RefreshCacheEntry(uint32 lowGuid) { - QueryResult result = CharacterDatabase.PQuery("SELECT guid, name, account, race, gender, class, level FROM characters WHERE guid = %u", lowGuid); + QueryResult result = CharacterDatabase.Query("SELECT guid, name, account, race, gender, class, level FROM characters WHERE guid = {}", lowGuid); if (!result) { return; @@ -101,17 +101,17 @@ void CharacterCache::RefreshCacheEntry(uint32 lowGuid) do { Field* fields = result->Fetch(); - DeleteCharacterCacheEntry(ObjectGuid::Create<HighGuid::Player>(lowGuid), fields[1].GetString()); - AddCharacterCacheEntry(ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt32()) /*guid*/, fields[2].GetUInt32() /*account*/, fields[1].GetString() /*name*/, fields[4].GetUInt8() /*gender*/, fields[3].GetUInt8() /*race*/, fields[5].GetUInt8() /*class*/, fields[6].GetUInt8() /*level*/); + DeleteCharacterCacheEntry(ObjectGuid::Create<HighGuid::Player>(lowGuid), fields[1].Get<std::string>()); + AddCharacterCacheEntry(ObjectGuid::Create<HighGuid::Player>(fields[0].Get<uint32>()) /*guid*/, fields[2].Get<uint32>() /*account*/, fields[1].Get<std::string>() /*name*/, fields[4].Get<uint8>() /*gender*/, fields[3].Get<uint8>() /*race*/, fields[5].Get<uint8>() /*class*/, fields[6].Get<uint8>() /*level*/); } while (result->NextRow()); - QueryResult mailCountResult = CharacterDatabase.PQuery("SELECT receiver, COUNT(receiver) FROM mail WHERE receiver = %u GROUP BY receiver", lowGuid); + QueryResult mailCountResult = CharacterDatabase.Query("SELECT receiver, COUNT(receiver) FROM mail WHERE receiver = {} GROUP BY receiver", lowGuid); if (mailCountResult) { do { Field* fields = mailCountResult->Fetch(); - UpdateCharacterMailCount(ObjectGuid(HighGuid::Player, fields[0].GetUInt32()), static_cast<int8>(fields[1].GetUInt64()), true); + UpdateCharacterMailCount(ObjectGuid(HighGuid::Player, fields[0].Get<uint32>()), static_cast<int8>(fields[1].Get<uint64>()), true); } while (mailCountResult->NextRow()); } } diff --git a/src/server/game/Calendar/CalendarMgr.cpp b/src/server/game/Calendar/CalendarMgr.cpp index 5208298c3a..7c16194692 100644 --- a/src/server/game/Calendar/CalendarMgr.cpp +++ b/src/server/game/Calendar/CalendarMgr.cpp @@ -70,15 +70,15 @@ void CalendarMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint64 eventId = fields[0].GetUInt64(); - ObjectGuid creatorGUID = ObjectGuid::Create<HighGuid::Player>(fields[1].GetUInt32()); - std::string title = fields[2].GetString(); - std::string description = fields[3].GetString(); - CalendarEventType type = CalendarEventType(fields[4].GetUInt8()); - int32 dungeonId = fields[5].GetInt32(); - uint32 eventTime = fields[6].GetUInt32(); - uint32 flags = fields[7].GetUInt32(); - uint32 timezoneTime = fields[8].GetUInt32(); + uint64 eventId = fields[0].Get<uint64>(); + ObjectGuid creatorGUID = ObjectGuid::Create<HighGuid::Player>(fields[1].Get<uint32>()); + std::string title = fields[2].Get<std::string>(); + std::string description = fields[3].Get<std::string>(); + CalendarEventType type = CalendarEventType(fields[4].Get<uint8>()); + int32 dungeonId = fields[5].Get<int32>(); + uint32 eventTime = fields[6].Get<uint32>(); + uint32 flags = fields[7].Get<uint32>(); + uint32 timezoneTime = fields[8].Get<uint32>(); uint32 guildId = 0; if (flags & CALENDAR_FLAG_GUILD_EVENT || flags & CALENDAR_FLAG_WITHOUT_INVITES) @@ -103,14 +103,14 @@ void CalendarMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint64 inviteId = fields[0].GetUInt64(); - uint64 eventId = fields[1].GetUInt64(); - ObjectGuid invitee = ObjectGuid::Create<HighGuid::Player>(fields[2].GetUInt32()); - ObjectGuid senderGUID = ObjectGuid::Create<HighGuid::Player>(fields[3].GetUInt32()); - CalendarInviteStatus status = CalendarInviteStatus(fields[4].GetUInt8()); - uint32 statusTime = fields[5].GetUInt32(); - CalendarModerationRank rank = CalendarModerationRank(fields[6].GetUInt8()); - std::string text = fields[7].GetString(); + uint64 inviteId = fields[0].Get<uint64>(); + uint64 eventId = fields[1].Get<uint64>(); + ObjectGuid invitee = ObjectGuid::Create<HighGuid::Player>(fields[2].Get<uint32>()); + ObjectGuid senderGUID = ObjectGuid::Create<HighGuid::Player>(fields[3].Get<uint32>()); + CalendarInviteStatus status = CalendarInviteStatus(fields[4].Get<uint8>()); + uint32 statusTime = fields[5].Get<uint32>(); + CalendarModerationRank rank = CalendarModerationRank(fields[6].Get<uint8>()); + std::string text = fields[7].Get<std::string>(); CalendarInvite* invite = new CalendarInvite(inviteId, eventId, invitee, senderGUID, time_t(statusTime), status, rank, text); _invites[eventId].push_back(invite); @@ -186,7 +186,7 @@ void CalendarMgr::RemoveEvent(CalendarEvent* calendarEvent, ObjectGuid remover) { CalendarInvite* invite = eventInvites[i]; stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CALENDAR_INVITE); - stmt->setUInt64(0, invite->GetInviteId()); + stmt->SetData(0, invite->GetInviteId()); trans->Append(stmt); // guild events only? check invite status here? @@ -200,7 +200,7 @@ void CalendarMgr::RemoveEvent(CalendarEvent* calendarEvent, ObjectGuid remover) _invites.erase(calendarEvent->GetEventId()); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CALENDAR_EVENT); - stmt->setUInt64(0, calendarEvent->GetEventId()); + stmt->SetData(0, calendarEvent->GetEventId()); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -226,7 +226,7 @@ void CalendarMgr::RemoveInvite(uint64 inviteId, uint64 eventId, ObjectGuid /*rem CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CALENDAR_INVITE); - stmt->setUInt64(0, (*itr)->GetInviteId()); + stmt->SetData(0, (*itr)->GetInviteId()); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -247,29 +247,29 @@ void CalendarMgr::RemoveInvite(uint64 inviteId, uint64 eventId, ObjectGuid /*rem void CalendarMgr::UpdateEvent(CalendarEvent* calendarEvent) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_CALENDAR_EVENT); - stmt->setUInt64(0, calendarEvent->GetEventId()); - stmt->setUInt32(1, calendarEvent->GetCreatorGUID().GetCounter()); - stmt->setString(2, calendarEvent->GetTitle()); - stmt->setString(3, calendarEvent->GetDescription()); - stmt->setUInt8(4, calendarEvent->GetType()); - stmt->setInt32(5, calendarEvent->GetDungeonId()); - stmt->setUInt32(6, uint32(calendarEvent->GetEventTime())); - stmt->setUInt32(7, calendarEvent->GetFlags()); - stmt->setUInt32(8, calendarEvent->GetTimeZoneTime()); // correct? + stmt->SetData(0, calendarEvent->GetEventId()); + stmt->SetData(1, calendarEvent->GetCreatorGUID().GetCounter()); + stmt->SetData(2, calendarEvent->GetTitle()); + stmt->SetData(3, calendarEvent->GetDescription()); + stmt->SetData(4, calendarEvent->GetType()); + stmt->SetData(5, calendarEvent->GetDungeonId()); + stmt->SetData(6, uint32(calendarEvent->GetEventTime())); + stmt->SetData(7, calendarEvent->GetFlags()); + stmt->SetData(8, calendarEvent->GetTimeZoneTime()); // correct? CharacterDatabase.Execute(stmt); } void CalendarMgr::UpdateInvite(CalendarInvite* invite, CharacterDatabaseTransaction trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_CALENDAR_INVITE); - stmt->setUInt64(0, invite->GetInviteId()); - stmt->setUInt64(1, invite->GetEventId()); - stmt->setUInt32(2, invite->GetInviteeGUID().GetCounter()); - stmt->setUInt32(3, invite->GetSenderGUID().GetCounter()); - stmt->setUInt8(4, invite->GetStatus()); - stmt->setUInt32(5, uint32(invite->GetStatusTime())); - stmt->setUInt8(6, invite->GetRank()); - stmt->setString(7, invite->GetText()); + stmt->SetData(0, invite->GetInviteId()); + stmt->SetData(1, invite->GetEventId()); + stmt->SetData(2, invite->GetInviteeGUID().GetCounter()); + stmt->SetData(3, invite->GetSenderGUID().GetCounter()); + stmt->SetData(4, invite->GetStatus()); + stmt->SetData(5, uint32(invite->GetStatusTime())); + stmt->SetData(6, invite->GetRank()); + stmt->SetData(7, invite->GetText()); CharacterDatabase.ExecuteOrAppend(trans, stmt); } diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp index 8d5c454fb8..67ea787ae3 100644 --- a/src/server/game/Chat/Channels/Channel.cpp +++ b/src/server/game/Chat/Channels/Channel.cpp @@ -84,10 +84,10 @@ Channel::Channel(std::string const& name, uint32 channelId, uint32 channelDBId, _channelDBId = ++ChannelMgr::_channelIdMax; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHANNEL); - stmt->setUInt32(0, _channelDBId); - stmt->setString(1, name); - stmt->setUInt32(2, _teamId); - stmt->setUInt8(3, _announce); + stmt->SetData(0, _channelDBId); + stmt->SetData(1, name); + stmt->SetData(2, _teamId); + stmt->SetData(3, _announce); CharacterDatabase.Execute(stmt); } } @@ -104,9 +104,9 @@ void Channel::UpdateChannelInDB() const if (_IsSaved) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHANNEL); - stmt->setBool(0, _announce); - stmt->setString(1, _password); - stmt->setUInt32(2, _channelDBId); + stmt->SetData(0, _announce); + stmt->SetData(1, _password); + stmt->SetData(2, _channelDBId); CharacterDatabase.Execute(stmt); LOG_DEBUG("chat.system", "Channel({}) updated in database", _name); @@ -116,24 +116,24 @@ void Channel::UpdateChannelInDB() const void Channel::UpdateChannelUseageInDB() const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHANNEL_USAGE); - stmt->setUInt32(0, _channelDBId); + stmt->SetData(0, _channelDBId); CharacterDatabase.Execute(stmt); } void Channel::AddChannelBanToDB(ObjectGuid guid, uint32 time) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHANNEL_BAN); - stmt->setUInt32(0, _channelDBId); - stmt->setUInt32(1, guid.GetCounter()); - stmt->setUInt32(2, time); + stmt->SetData(0, _channelDBId); + stmt->SetData(1, guid.GetCounter()); + stmt->SetData(2, time); CharacterDatabase.Execute(stmt); } void Channel::RemoveChannelBanFromDB(ObjectGuid guid) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHANNEL_BAN); - stmt->setUInt32(0, _channelDBId); - stmt->setUInt32(1, guid.GetCounter()); + stmt->SetData(0, _channelDBId); + stmt->SetData(1, guid.GetCounter()); CharacterDatabase.Execute(stmt); } @@ -144,7 +144,7 @@ void Channel::CleanOldChannelsInDB() CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_OLD_CHANNELS); - stmt->setUInt32(0, sWorld->getIntConfig(CONFIG_PRESERVE_CUSTOM_CHANNEL_DURATION) * DAY); + stmt->SetData(0, sWorld->getIntConfig(CONFIG_PRESERVE_CUSTOM_CHANNEL_DURATION) * DAY); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_OLD_CHANNELS_BANS); diff --git a/src/server/game/Chat/Channels/ChannelMgr.cpp b/src/server/game/Chat/Channels/ChannelMgr.cpp index 5160d2c020..3eb76c783d 100644 --- a/src/server/game/Chat/Channels/ChannelMgr.cpp +++ b/src/server/game/Chat/Channels/ChannelMgr.cpp @@ -53,7 +53,7 @@ void ChannelMgr::LoadChannels() uint32 count = 0; // 0 1 2 3 4 5 - QueryResult result = CharacterDatabase.PQuery("SELECT channelId, name, team, announce, ownership, password FROM channels ORDER BY channelId ASC"); + QueryResult result = CharacterDatabase.Query("SELECT channelId, name, team, announce, ownership, password FROM channels ORDER BY channelId ASC"); if (!result) { LOG_INFO("server.loading", ">> Loaded 0 channels. DB table `channels` is empty."); @@ -65,10 +65,10 @@ void ChannelMgr::LoadChannels() { Field* fields = result->Fetch(); - uint32 channelDBId = fields[0].GetUInt32(); - std::string channelName = fields[1].GetString(); - TeamId team = TeamId(fields[2].GetUInt32()); - std::string password = fields[5].GetString(); + uint32 channelDBId = fields[0].Get<uint32>(); + std::string channelName = fields[1].Get<std::string>(); + TeamId team = TeamId(fields[2].Get<uint32>()); + std::string password = fields[5].Get<std::string>(); std::wstring channelWName; if (!Utf8toWStr(channelName, channelWName)) @@ -86,18 +86,18 @@ void ChannelMgr::LoadChannels() continue; } - Channel* newChannel = new Channel(channelName, 0, channelDBId, team, fields[3].GetUInt8(), fields[4].GetUInt8()); + Channel* newChannel = new Channel(channelName, 0, channelDBId, team, fields[3].Get<uint8>(), fields[4].Get<uint8>()); newChannel->SetPassword(password); mgr->channels[channelWName] = newChannel; - if (QueryResult banResult = CharacterDatabase.PQuery("SELECT playerGUID, banTime FROM channels_bans WHERE channelId = %u", channelDBId)) + if (QueryResult banResult = CharacterDatabase.Query("SELECT playerGUID, banTime FROM channels_bans WHERE channelId = {}", channelDBId)) { do { Field* banFields = banResult->Fetch(); if (!banFields) break; - newChannel->AddBan(ObjectGuid::Create<HighGuid::Player>(banFields[0].GetUInt32()), banFields[1].GetUInt32()); + newChannel->AddBan(ObjectGuid::Create<HighGuid::Player>(banFields[0].Get<uint32>()), banFields[1].Get<uint32>()); } while (banResult->NextRow()); } @@ -109,8 +109,8 @@ void ChannelMgr::LoadChannels() for (auto pair : toDelete) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHANNEL); - stmt->setString(0, pair.first); - stmt->setUInt32(1, pair.second); + stmt->SetData(0, pair.first); + stmt->SetData(1, pair.second); CharacterDatabase.Execute(stmt); } @@ -181,7 +181,7 @@ void ChannelMgr::LoadChannelRights() { Field* fields = result->Fetch(); std::set<uint32> moderators; - auto moderatorList = fields[5].GetStringView(); + auto moderatorList = fields[5].Get<std::string_view>(); if (!moderatorList.empty()) { @@ -196,7 +196,7 @@ void ChannelMgr::LoadChannelRights() } } - SetChannelRightsFor(fields[0].GetString(), fields[1].GetUInt32(), fields[2].GetUInt32(), fields[3].GetString(), fields[4].GetString(), moderators); + SetChannelRightsFor(fields[0].Get<std::string>(), fields[1].Get<uint32>(), fields[2].Get<uint32>(), fields[3].Get<std::string>(), fields[4].Get<std::string>(), moderators); ++count; } while (result->NextRow()); diff --git a/src/server/game/Chat/ChatCommands/ChatCommand.cpp b/src/server/game/Chat/ChatCommands/ChatCommand.cpp index c0b23dbf3a..1bcbde69d1 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommand.cpp +++ b/src/server/game/Chat/ChatCommands/ChatCommand.cpp @@ -88,9 +88,9 @@ static ChatSubCommandMap COMMAND_MAP; do { Field* fields = result->Fetch(); - std::string_view const name = fields[0].GetStringView(); - std::string_view const help = fields[2].GetStringView(); - uint32 const secLevel = fields[1].GetUInt8(); + std::string_view const name = fields[0].Get<std::string_view>(); + std::string_view const help = fields[2].Get<std::string_view>(); + uint32 const secLevel = fields[1].Get<uint8>(); ChatCommandNode* cmd = nullptr; ChatSubCommandMap* map = &COMMAND_MAP; diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 6537e8b07e..e1cf1008d6 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -939,20 +939,20 @@ void ConditionMgr::LoadConditions(bool isReload) Field* fields = result->Fetch(); Condition* cond = new Condition(); - int32 iSourceTypeOrReferenceId = fields[0].GetInt32(); - cond->SourceGroup = fields[1].GetUInt32(); - cond->SourceEntry = fields[2].GetInt32(); - cond->SourceId = fields[3].GetInt32(); - cond->ElseGroup = fields[4].GetUInt32(); - int32 iConditionTypeOrReference = fields[5].GetInt32(); - cond->ConditionTarget = fields[6].GetUInt8(); - cond->ConditionValue1 = fields[7].GetUInt32(); - cond->ConditionValue2 = fields[8].GetUInt32(); - cond->ConditionValue3 = fields[9].GetUInt32(); - cond->NegativeCondition = fields[10].GetUInt8(); - cond->ErrorType = fields[11].GetUInt32(); - cond->ErrorTextId = fields[12].GetUInt32(); - cond->ScriptId = sObjectMgr->GetScriptId(fields[13].GetCString()); + int32 iSourceTypeOrReferenceId = fields[0].Get<int32>(); + cond->SourceGroup = fields[1].Get<uint32>(); + cond->SourceEntry = fields[2].Get<int32>(); + cond->SourceId = fields[3].Get<int32>(); + cond->ElseGroup = fields[4].Get<uint32>(); + int32 iConditionTypeOrReference = fields[5].Get<int32>(); + cond->ConditionTarget = fields[6].Get<uint8>(); + cond->ConditionValue1 = fields[7].Get<uint32>(); + cond->ConditionValue2 = fields[8].Get<uint32>(); + cond->ConditionValue3 = fields[9].Get<uint32>(); + cond->NegativeCondition = fields[10].Get<uint8>(); + cond->ErrorType = fields[11].Get<uint32>(); + cond->ErrorTextId = fields[12].Get<uint32>(); + cond->ScriptId = sObjectMgr->GetScriptId(fields[13].Get<std::string>()); if (iConditionTypeOrReference >= 0) cond->ConditionType = ConditionTypes(iConditionTypeOrReference); @@ -2291,7 +2291,7 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) case CONDITION_PET_TYPE: if (cond->ConditionValue1 >= (1 << MAX_PET_TYPE)) { - LOG_ERROR("sql.sql", "CONDITION_PET_TYPE has non-existing pet type %u, skipped.", cond->ConditionValue1); + LOG_ERROR("sql.sql", "CONDITION_PET_TYPE has non-existing pet type {}, skipped.", cond->ConditionValue1); return false; } break; diff --git a/src/server/game/Conditions/DisableMgr.cpp b/src/server/game/Conditions/DisableMgr.cpp index dfac79a4be..d31413cc67 100644 --- a/src/server/game/Conditions/DisableMgr.cpp +++ b/src/server/game/Conditions/DisableMgr.cpp @@ -72,17 +72,17 @@ namespace DisableMgr do { fields = result->Fetch(); - DisableType type = DisableType(fields[0].GetUInt32()); + DisableType type = DisableType(fields[0].Get<uint32>()); if (type >= MAX_DISABLE_TYPES) { LOG_ERROR("sql.sql", "Invalid type {} specified in `disables` table, skipped.", type); continue; } - uint32 entry = fields[1].GetUInt32(); - uint8 flags = fields[2].GetUInt8(); - std::string params_0 = fields[3].GetString(); - std::string params_1 = fields[4].GetString(); + uint32 entry = fields[1].Get<uint32>(); + uint8 flags = fields[2].Get<uint8>(); + std::string params_0 = fields[3].Get<std::string>(); + std::string params_1 = fields[4].Get<std::string>(); DisableData data; data.flags = flags; diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index af9f2bbf69..ba551a8ae4 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -72,10 +72,10 @@ namespace lfg if (!guid.IsGroup()) return; - SetLeader(guid, ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt32())); + SetLeader(guid, ObjectGuid::Create<HighGuid::Player>(fields[0].Get<uint32>())); - uint32 dungeon = fields[17].GetUInt32(); - uint8 state = fields[18].GetUInt8(); + uint32 dungeon = fields[17].Get<uint32>(); + uint8 state = fields[18].Get<uint8>(); if (!dungeon || !state) return; @@ -99,9 +99,9 @@ namespace lfg return; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_LFG_DATA); - stmt->setUInt32(0, guid.GetCounter()); - stmt->setUInt32(1, GetDungeon(guid)); - stmt->setUInt32(2, GetState(guid)); + stmt->SetData(0, guid.GetCounter()); + stmt->SetData(1, GetDungeon(guid)); + stmt->SetData(2, GetState(guid)); CharacterDatabase.Execute(stmt); } @@ -129,10 +129,10 @@ namespace lfg do { fields = result->Fetch(); - uint32 dungeonId = fields[0].GetUInt32(); - uint32 maxLevel = fields[1].GetUInt8(); - uint32 firstQuestId = fields[2].GetUInt32(); - uint32 otherQuestId = fields[3].GetUInt32(); + uint32 dungeonId = fields[0].Get<uint32>(); + uint32 maxLevel = fields[1].Get<uint8>(); + uint32 firstQuestId = fields[2].Get<uint32>(); + uint32 otherQuestId = fields[3].Get<uint32>(); if (!GetLFGDungeonEntry(dungeonId)) { @@ -215,7 +215,7 @@ namespace lfg do { Field* fields = result->Fetch(); - uint32 dungeonId = fields[0].GetUInt32(); + uint32 dungeonId = fields[0].Get<uint32>(); LFGDungeonContainer::iterator dungeonItr = LfgDungeonStore.find(dungeonId); if (dungeonItr == LfgDungeonStore.end()) { @@ -224,10 +224,10 @@ namespace lfg } LFGDungeonData& data = dungeonItr->second; - data.x = fields[1].GetFloat(); - data.y = fields[2].GetFloat(); - data.z = fields[3].GetFloat(); - data.o = fields[4].GetFloat(); + data.x = fields[1].Get<float>(); + data.y = fields[2].Get<float>(); + data.z = fields[3].Get<float>(); + data.o = fields[4].Get<float>(); ++count; } while (result->NextRow()); diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp index 8f3af7dec8..1b320b9f78 100644 --- a/src/server/game/Entities/Corpse/Corpse.cpp +++ b/src/server/game/Entities/Corpse/Corpse.cpp @@ -95,23 +95,23 @@ void Corpse::SaveToDB() DeleteFromDB(trans); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CORPSE); - stmt->setUInt32(0, GetOwnerGUID().GetCounter()); // guid - stmt->setFloat (1, GetPositionX()); // posX - stmt->setFloat (2, GetPositionY()); // posY - stmt->setFloat (3, GetPositionZ()); // posZ - stmt->setFloat (4, GetOrientation()); // orientation - stmt->setUInt16(5, GetMapId()); // mapId - stmt->setUInt32(6, GetUInt32Value(CORPSE_FIELD_DISPLAY_ID)); // displayId - stmt->setString(7, _ConcatFields(CORPSE_FIELD_ITEM, EQUIPMENT_SLOT_END)); // itemCache - stmt->setUInt32(8, GetUInt32Value(CORPSE_FIELD_BYTES_1)); // bytes1 - stmt->setUInt32(9, GetUInt32Value(CORPSE_FIELD_BYTES_2)); // bytes2 - stmt->setUInt32(10, GetUInt32Value(CORPSE_FIELD_GUILD)); // guildId - stmt->setUInt8 (11, GetUInt32Value(CORPSE_FIELD_FLAGS)); // flags - stmt->setUInt8 (12, GetUInt32Value(CORPSE_FIELD_DYNAMIC_FLAGS)); // dynFlags - stmt->setUInt32(13, uint32(m_time)); // time - stmt->setUInt8 (14, GetType()); // corpseType - stmt->setUInt32(15, GetInstanceId()); // instanceId - stmt->setUInt32(16, GetPhaseMask()); // phaseMask + stmt->SetData(0, GetOwnerGUID().GetCounter()); // guid + stmt->SetData (1, GetPositionX()); // posX + stmt->SetData (2, GetPositionY()); // posY + stmt->SetData (3, GetPositionZ()); // posZ + stmt->SetData (4, GetOrientation()); // orientation + stmt->SetData(5, GetMapId()); // mapId + stmt->SetData(6, GetUInt32Value(CORPSE_FIELD_DISPLAY_ID)); // displayId + stmt->SetData(7, _ConcatFields(CORPSE_FIELD_ITEM, EQUIPMENT_SLOT_END)); // itemCache + stmt->SetData(8, GetUInt32Value(CORPSE_FIELD_BYTES_1)); // bytes1 + stmt->SetData(9, GetUInt32Value(CORPSE_FIELD_BYTES_2)); // bytes2 + stmt->SetData(10, GetUInt32Value(CORPSE_FIELD_GUILD)); // guildId + stmt->SetData (11, GetUInt32Value(CORPSE_FIELD_FLAGS)); // flags + stmt->SetData (12, GetUInt32Value(CORPSE_FIELD_DYNAMIC_FLAGS)); // dynFlags + stmt->SetData(13, uint32(m_time)); // time + stmt->SetData (14, GetType()); // corpseType + stmt->SetData(15, GetInstanceId()); // instanceId + stmt->SetData(16, GetPhaseMask()); // phaseMask trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -125,44 +125,44 @@ void Corpse::DeleteFromDB(CharacterDatabaseTransaction trans) void Corpse::DeleteFromDB(ObjectGuid const ownerGuid, CharacterDatabaseTransaction trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CORPSE); - stmt->setUInt32(0, ownerGuid.GetCounter()); + stmt->SetData(0, ownerGuid.GetCounter()); CharacterDatabase.ExecuteOrAppend(trans, stmt); } bool Corpse::LoadCorpseFromDB(ObjectGuid::LowType guid, Field* fields) { - ObjectGuid::LowType ownerGuid = fields[16].GetUInt32(); + ObjectGuid::LowType ownerGuid = fields[16].Get<uint32>(); // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // SELECT posX, posY, posZ, orientation, mapId, displayId, itemCache, bytes1, bytes2, guildId, flags, dynFlags, time, corpseType, instanceId, phaseMask, guid FROM corpse WHERE mapId = ? AND instanceId = ? - float posX = fields[0].GetFloat(); - float posY = fields[1].GetFloat(); - float posZ = fields[2].GetFloat(); - float o = fields[3].GetFloat(); - uint32 mapId = fields[4].GetUInt16(); + float posX = fields[0].Get<float>(); + float posY = fields[1].Get<float>(); + float posZ = fields[2].Get<float>(); + float o = fields[3].Get<float>(); + uint32 mapId = fields[4].Get<uint16>(); Object::_Create(guid, 0, HighGuid::Corpse); SetObjectScale(1.0f); - SetUInt32Value(CORPSE_FIELD_DISPLAY_ID, fields[5].GetUInt32()); + SetUInt32Value(CORPSE_FIELD_DISPLAY_ID, fields[5].Get<uint32>()); - if (!_LoadIntoDataField(fields[6].GetString(), CORPSE_FIELD_ITEM, EQUIPMENT_SLOT_END)) + if (!_LoadIntoDataField(fields[6].Get<std::string>(), CORPSE_FIELD_ITEM, EQUIPMENT_SLOT_END)) { LOG_ERROR("entities.player", "Corpse ({}, owner: {}) is not created, given equipment info is not valid ('{}')", - GetGUID().ToString(), GetOwnerGUID().ToString(), fields[6].GetString()); + GetGUID().ToString(), GetOwnerGUID().ToString(), fields[6].Get<std::string>()); } - SetUInt32Value(CORPSE_FIELD_BYTES_1, fields[7].GetUInt32()); - SetUInt32Value(CORPSE_FIELD_BYTES_2, fields[8].GetUInt32()); - SetUInt32Value(CORPSE_FIELD_GUILD, fields[9].GetUInt32()); - SetUInt32Value(CORPSE_FIELD_FLAGS, fields[10].GetUInt8()); - SetUInt32Value(CORPSE_FIELD_DYNAMIC_FLAGS, fields[11].GetUInt8()); + SetUInt32Value(CORPSE_FIELD_BYTES_1, fields[7].Get<uint32>()); + SetUInt32Value(CORPSE_FIELD_BYTES_2, fields[8].Get<uint32>()); + SetUInt32Value(CORPSE_FIELD_GUILD, fields[9].Get<uint32>()); + SetUInt32Value(CORPSE_FIELD_FLAGS, fields[10].Get<uint8>()); + SetUInt32Value(CORPSE_FIELD_DYNAMIC_FLAGS, fields[11].Get<uint8>()); SetGuidValue(CORPSE_FIELD_OWNER, ObjectGuid::Create<HighGuid::Player>(ownerGuid)); - m_time = time_t(fields[12].GetUInt32()); + m_time = time_t(fields[12].Get<uint32>()); - uint32 instanceId = fields[14].GetUInt32(); - uint32 phaseMask = fields[15].GetUInt32(); + uint32 instanceId = fields[14].Get<uint32>(); + uint32 phaseMask = fields[15].Get<uint32>(); // place SetLocationInstanceId(instanceId); diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index e1c3de3d8a..301ce4b46b 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1352,33 +1352,33 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask) WorldDatabaseTransaction trans = WorldDatabase.BeginTransaction(); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CREATURE); - stmt->setUInt32(0, m_spawnId); + stmt->SetData(0, m_spawnId); trans->Append(stmt); uint8 index = 0; stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_CREATURE); - stmt->setUInt32(index++, m_spawnId); - stmt->setUInt32(index++, GetEntry()); - stmt->setUInt32(index++, 0); - stmt->setUInt32(index++, 0); - stmt->setUInt16(index++, uint16(mapid)); - stmt->setUInt8(index++, spawnMask); - stmt->setUInt32(index++, GetPhaseMask()); - stmt->setInt32(index++, int32(GetCurrentEquipmentId())); - stmt->setFloat(index++, GetPositionX()); - stmt->setFloat(index++, GetPositionY()); - stmt->setFloat(index++, GetPositionZ()); - stmt->setFloat(index++, GetOrientation()); - stmt->setUInt32(index++, m_respawnDelay); - stmt->setFloat(index++, m_wanderDistance); - stmt->setUInt32(index++, 0); - stmt->setUInt32(index++, GetHealth()); - stmt->setUInt32(index++, GetPower(POWER_MANA)); - stmt->setUInt8(index++, uint8(GetDefaultMovementType())); - stmt->setUInt32(index++, npcflag); - stmt->setUInt32(index++, unit_flags); - stmt->setUInt32(index++, dynamicflags); + stmt->SetData(index++, m_spawnId); + stmt->SetData(index++, GetEntry()); + stmt->SetData(index++, 0); + stmt->SetData(index++, 0); + stmt->SetData(index++, uint16(mapid)); + stmt->SetData(index++, spawnMask); + stmt->SetData(index++, GetPhaseMask()); + stmt->SetData(index++, int32(GetCurrentEquipmentId())); + stmt->SetData(index++, GetPositionX()); + stmt->SetData(index++, GetPositionY()); + stmt->SetData(index++, GetPositionZ()); + stmt->SetData(index++, GetOrientation()); + stmt->SetData(index++, m_respawnDelay); + stmt->SetData(index++, m_wanderDistance); + stmt->SetData(index++, 0); + stmt->SetData(index++, GetHealth()); + stmt->SetData(index++, GetPower(POWER_MANA)); + stmt->SetData(index++, uint8(GetDefaultMovementType())); + stmt->SetData(index++, npcflag); + stmt->SetData(index++, unit_flags); + stmt->SetData(index++, dynamicflags); trans->Append(stmt); WorldDatabase.CommitTransaction(trans); @@ -1737,19 +1737,19 @@ void Creature::DeleteFromDB() WorldDatabaseTransaction trans = WorldDatabase.BeginTransaction(); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CREATURE); - stmt->setUInt32(0, m_spawnId); + stmt->SetData(0, m_spawnId); trans->Append(stmt); stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CREATURE_ADDON); - stmt->setUInt32(0, m_spawnId); + stmt->SetData(0, m_spawnId); trans->Append(stmt); stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_GAME_EVENT_CREATURE); - stmt->setUInt32(0, m_spawnId); + stmt->SetData(0, m_spawnId); trans->Append(stmt); stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_GAME_EVENT_MODEL_EQUIP); - stmt->setUInt32(0, m_spawnId); + stmt->SetData(0, m_spawnId); trans->Append(stmt); WorldDatabase.CommitTransaction(trans); diff --git a/src/server/game/Entities/Creature/CreatureGroups.cpp b/src/server/game/Entities/Creature/CreatureGroups.cpp index eba807db26..84c73a8921 100644 --- a/src/server/game/Entities/Creature/CreatureGroups.cpp +++ b/src/server/game/Entities/Creature/CreatureGroups.cpp @@ -98,13 +98,13 @@ void FormationMgr::LoadCreatureFormations() //Load group member data FormationInfo group_member; - group_member.leaderGUID = fields[0].GetUInt32(); - ObjectGuid::LowType const memberGUID = fields[1].GetUInt32(); - float const follow_dist = fields[2].GetFloat(); - float const follow_angle = fields[3].GetFloat() * (static_cast<float>(M_PI) / 180); - group_member.groupAI = fields[4].GetUInt16(); - group_member.point_1 = fields[5].GetUInt16(); - group_member.point_2 = fields[6].GetUInt16(); + group_member.leaderGUID = fields[0].Get<uint32>(); + ObjectGuid::LowType const memberGUID = fields[1].Get<uint32>(); + float const follow_dist = fields[2].Get<float>(); + float const follow_angle = fields[3].Get<float>() * (static_cast<float>(M_PI) / 180); + group_member.groupAI = fields[4].Get<uint16>(); + group_member.point_1 = fields[5].Get<uint16>(); + group_member.point_2 = fields[6].Get<uint16>(); //If creature is group leader we may skip loading of dist/angle if (group_member.leaderGUID != memberGUID) diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 19c091f67e..8cae8e38ef 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1017,33 +1017,33 @@ void GameObject::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask, bool uint8 index = 0; WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_GAMEOBJECT); - stmt->setUInt32(0, m_spawnId); + stmt->SetData(0, m_spawnId); trans->Append(stmt); stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_GAMEOBJECT); - stmt->setUInt32(index++, m_spawnId); - stmt->setUInt32(index++, GetEntry()); - stmt->setUInt16(index++, uint16(mapid)); - stmt->setUInt8(index++, spawnMask); - stmt->setUInt32(index++, GetPhaseMask()); - stmt->setFloat(index++, GetPositionX()); - stmt->setFloat(index++, GetPositionY()); - stmt->setFloat(index++, GetPositionZ()); - stmt->setFloat(index++, GetOrientation()); - stmt->setFloat(index++, m_localRotation.x); - stmt->setFloat(index++, m_localRotation.y); - stmt->setFloat(index++, m_localRotation.z); - stmt->setFloat(index++, m_localRotation.w); - stmt->setInt32(index++, int32(m_respawnDelayTime)); - stmt->setUInt8(index++, GetGoAnimProgress()); - stmt->setUInt8(index++, uint8(GetGoState())); + stmt->SetData(index++, m_spawnId); + stmt->SetData(index++, GetEntry()); + stmt->SetData(index++, uint16(mapid)); + stmt->SetData(index++, spawnMask); + stmt->SetData(index++, GetPhaseMask()); + stmt->SetData(index++, GetPositionX()); + stmt->SetData(index++, GetPositionY()); + stmt->SetData(index++, GetPositionZ()); + stmt->SetData(index++, GetOrientation()); + stmt->SetData(index++, m_localRotation.x); + stmt->SetData(index++, m_localRotation.y); + stmt->SetData(index++, m_localRotation.z); + stmt->SetData(index++, m_localRotation.w); + stmt->SetData(index++, int32(m_respawnDelayTime)); + stmt->SetData(index++, GetGoAnimProgress()); + stmt->SetData(index++, uint8(GetGoState())); trans->Append(stmt); if (saveAddon && !sObjectMgr->GetGameObjectAddon(m_spawnId)) { index = 0; stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_GAMEOBJECT_ADDON); - stmt->setUInt32(index++, m_spawnId); + stmt->SetData(index++, m_spawnId); trans->Append(stmt); } @@ -1121,11 +1121,11 @@ void GameObject::DeleteFromDB() sObjectMgr->DeleteGOData(m_spawnId); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_GAMEOBJECT); - stmt->setUInt32(0, m_spawnId); + stmt->SetData(0, m_spawnId); WorldDatabase.Execute(stmt); stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_EVENT_GAMEOBJECT); - stmt->setUInt32(0, m_spawnId); + stmt->SetData(0, m_spawnId); WorldDatabase.Execute(stmt); } diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index 0b9d1c7819..b69a29c646 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -329,19 +329,19 @@ void Item::SaveToDB(CharacterDatabaseTransaction trans) { uint8 index = 0; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(uState == ITEM_NEW ? CHAR_REP_ITEM_INSTANCE : CHAR_UPD_ITEM_INSTANCE); - stmt->setUInt32( index, GetEntry()); - stmt->setUInt32(++index, GetOwnerGUID().GetCounter()); - stmt->setUInt32(++index, GetGuidValue(ITEM_FIELD_CREATOR).GetCounter()); - stmt->setUInt32(++index, GetGuidValue(ITEM_FIELD_GIFTCREATOR).GetCounter()); - stmt->setUInt32(++index, GetCount()); - stmt->setUInt32(++index, GetUInt32Value(ITEM_FIELD_DURATION)); + stmt->SetData( index, GetEntry()); + stmt->SetData(++index, GetOwnerGUID().GetCounter()); + stmt->SetData(++index, GetGuidValue(ITEM_FIELD_CREATOR).GetCounter()); + stmt->SetData(++index, GetGuidValue(ITEM_FIELD_GIFTCREATOR).GetCounter()); + stmt->SetData(++index, GetCount()); + stmt->SetData(++index, GetUInt32Value(ITEM_FIELD_DURATION)); std::ostringstream ssSpells; for (uint8 i = 0; i < MAX_ITEM_PROTO_SPELLS; ++i) ssSpells << GetSpellCharges(i) << ' '; - stmt->setString(++index, ssSpells.str()); + stmt->SetData(++index, ssSpells.str()); - stmt->setUInt32(++index, GetUInt32Value(ITEM_FIELD_FLAGS)); + stmt->SetData(++index, GetUInt32Value(ITEM_FIELD_FLAGS)); std::ostringstream ssEnchants; for (uint8 i = 0; i < MAX_ENCHANTMENT_SLOT; ++i) @@ -350,21 +350,21 @@ void Item::SaveToDB(CharacterDatabaseTransaction trans) ssEnchants << GetEnchantmentDuration(EnchantmentSlot(i)) << ' '; ssEnchants << GetEnchantmentCharges(EnchantmentSlot(i)) << ' '; } - stmt->setString(++index, ssEnchants.str()); + stmt->SetData(++index, ssEnchants.str()); - stmt->setInt16 (++index, GetItemRandomPropertyId()); - stmt->setUInt16(++index, GetUInt32Value(ITEM_FIELD_DURABILITY)); - stmt->setUInt32(++index, GetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME)); - stmt->setString(++index, m_text); - stmt->setUInt32(++index, guid); + stmt->SetData (++index, GetItemRandomPropertyId()); + stmt->SetData(++index, GetUInt32Value(ITEM_FIELD_DURABILITY)); + stmt->SetData(++index, GetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME)); + stmt->SetData(++index, m_text); + stmt->SetData(++index, guid); trans->Append(stmt); if ((uState == ITEM_CHANGED) && HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GIFT_OWNER); - stmt->setUInt32(0, GetOwnerGUID().GetCounter()); - stmt->setUInt32(1, guid); + stmt->SetData(0, GetOwnerGUID().GetCounter()); + stmt->SetData(1, guid); trans->Append(stmt); } break; @@ -372,13 +372,13 @@ void Item::SaveToDB(CharacterDatabaseTransaction trans) case ITEM_REMOVED: { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE); - stmt->setUInt32(0, guid); + stmt->SetData(0, guid); trans->Append(stmt); if (HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GIFT); - stmt->setUInt32(0, guid); + stmt->SetData(0, guid); trans->Append(stmt); } @@ -401,7 +401,7 @@ void Item::SaveToDB(CharacterDatabaseTransaction trans) bool Item::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fields, uint32 entry) { // 0 1 2 3 4 5 6 7 8 9 10 - //result = CharacterDatabase.PQuery("SELECT creatorGuid, giftCreatorGuid, count, duration, charges, flags, enchantments, randomPropertyId, durability, playedTime, text FROM item_instance WHERE guid = '%u'", guid); + //result = CharacterDatabase.Query("SELECT creatorGuid, giftCreatorGuid, count, duration, charges, flags, enchantments, randomPropertyId, durability, playedTime, text FROM item_instance WHERE guid = '{}'", guid); // create item before any checks for store correct guid // and allow use "FSetState(ITEM_REMOVED); SaveToDB();" for deleting item from DB @@ -423,11 +423,11 @@ bool Item::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fi SetOwnerGUID(owner_guid); bool need_save = false; // need explicit save data at load fixes - SetGuidValue(ITEM_FIELD_CREATOR, ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt32())); - SetGuidValue(ITEM_FIELD_GIFTCREATOR, ObjectGuid::Create<HighGuid::Player>(fields[1].GetUInt32())); - SetCount(fields[2].GetUInt32()); + SetGuidValue(ITEM_FIELD_CREATOR, ObjectGuid::Create<HighGuid::Player>(fields[0].Get<uint32>())); + SetGuidValue(ITEM_FIELD_GIFTCREATOR, ObjectGuid::Create<HighGuid::Player>(fields[1].Get<uint32>())); + SetCount(fields[2].Get<uint32>()); - uint32 duration = fields[3].GetUInt32(); + uint32 duration = fields[3].Get<uint32>(); SetUInt32Value(ITEM_FIELD_DURATION, duration); // update duration if need, and remove if not need if ((proto->Duration == 0) != (duration == 0)) @@ -436,7 +436,7 @@ bool Item::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fi need_save = true; } - std::vector<std::string_view> tokens = Acore::Tokenize(fields[4].GetStringView(), ' ', false); + std::vector<std::string_view> tokens = Acore::Tokenize(fields[4].Get<std::string_view>(), ' ', false); if (tokens.size() == MAX_ITEM_PROTO_SPELLS) { for (uint8 i = 0; i < MAX_ITEM_PROTO_SPELLS; ++i) @@ -448,7 +448,7 @@ bool Item::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fi } } - SetUInt32Value(ITEM_FIELD_FLAGS, fields[5].GetUInt32()); + SetUInt32Value(ITEM_FIELD_FLAGS, fields[5].Get<uint32>()); // Remove bind flag for items vs NO_BIND set if (IsSoulBound() && proto->Bonding == NO_BIND && sScriptMgr->CanApplySoulboundFlag(this, proto)) { @@ -456,19 +456,19 @@ bool Item::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fi need_save = true; } - std::string enchants = fields[6].GetString(); + std::string enchants = fields[6].Get<std::string>(); - if (!_LoadIntoDataField(fields[6].GetString(), ITEM_FIELD_ENCHANTMENT_1_1, MAX_ENCHANTMENT_SLOT * MAX_ENCHANTMENT_OFFSET)) + if (!_LoadIntoDataField(fields[6].Get<std::string>(), ITEM_FIELD_ENCHANTMENT_1_1, MAX_ENCHANTMENT_SLOT * MAX_ENCHANTMENT_OFFSET)) { - LOG_WARN("entities.item", "Invalid enchantment data '{}' for item {}. Forcing partial load.", fields[6].GetString(), GetGUID().ToString()); + LOG_WARN("entities.item", "Invalid enchantment data '{}' for item {}. Forcing partial load.", fields[6].Get<std::string>(), GetGUID().ToString()); } - SetInt32Value(ITEM_FIELD_RANDOM_PROPERTIES_ID, fields[7].GetInt16()); + SetInt32Value(ITEM_FIELD_RANDOM_PROPERTIES_ID, fields[7].Get<int16>()); // recalculate suffix factor if (GetItemRandomPropertyId() < 0) UpdateItemSuffixFactor(); - uint32 durability = fields[8].GetUInt16(); + uint32 durability = fields[8].Get<uint16>(); SetUInt32Value(ITEM_FIELD_DURABILITY, durability); // update max durability (and durability) if need @@ -480,16 +480,16 @@ bool Item::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fi need_save = true; } - SetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME, fields[9].GetUInt32()); - SetText(fields[10].GetString()); + SetUInt32Value(ITEM_FIELD_CREATE_PLAYED_TIME, fields[9].Get<uint32>()); + SetText(fields[10].Get<std::string>()); if (need_save) // normal item changed state set not work at loading { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ITEM_INSTANCE_ON_LOAD); - stmt->setUInt32(0, GetUInt32Value(ITEM_FIELD_DURATION)); - stmt->setUInt32(1, GetUInt32Value(ITEM_FIELD_FLAGS)); - stmt->setUInt32(2, GetUInt32Value(ITEM_FIELD_DURABILITY)); - stmt->setUInt32(3, guid); + stmt->SetData(0, GetUInt32Value(ITEM_FIELD_DURATION)); + stmt->SetData(1, GetUInt32Value(ITEM_FIELD_FLAGS)); + stmt->SetData(2, GetUInt32Value(ITEM_FIELD_DURABILITY)); + stmt->SetData(3, guid); CharacterDatabase.Execute(stmt); } @@ -501,7 +501,7 @@ void Item::DeleteFromDB(CharacterDatabaseTransaction trans, ObjectGuid::LowType { sScriptMgr->OnGlobalItemDelFromDB(trans, itemGuid); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE); - stmt->setUInt32(0, itemGuid); + stmt->SetData(0, itemGuid); trans->Append(stmt); } @@ -514,7 +514,7 @@ void Item::DeleteFromDB(CharacterDatabaseTransaction trans) void Item::DeleteFromInventoryDB(CharacterDatabaseTransaction trans, ObjectGuid::LowType itemGuid) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INVENTORY_BY_ITEM); - stmt->setUInt32(0, itemGuid); + stmt->SetData(0, itemGuid); trans->Append(stmt); } @@ -1156,14 +1156,14 @@ void Item::SaveRefundDataToDB() CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_REFUND_INSTANCE); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_ITEM_REFUND_INSTANCE); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, GetRefundRecipient()); - stmt->setUInt32(2, GetPaidMoney()); - stmt->setUInt16(3, uint16(GetPaidExtendedCost())); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, GetRefundRecipient()); + stmt->SetData(2, GetPaidMoney()); + stmt->SetData(3, uint16(GetPaidExtendedCost())); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -1174,7 +1174,7 @@ void Item::DeleteRefundDataFromDB(CharacterDatabaseTransaction* trans) if (trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_REFUND_INSTANCE); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); (*trans)->Append(stmt); } } @@ -1252,7 +1252,7 @@ void Item::ClearSoulboundTradeable(Player* currentOwner) allowedGUIDs.clear(); SetState(ITEM_CHANGED, currentOwner); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_BOP_TRADE); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } diff --git a/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp b/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp index c623acadff..78754bb46e 100644 --- a/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp +++ b/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp @@ -58,9 +58,9 @@ void LoadRandomEnchantmentsTable() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); - uint32 ench = fields[1].GetUInt32(); - float chance = fields[2].GetFloat(); + uint32 entry = fields[0].Get<uint32>(); + uint32 ench = fields[1].Get<uint32>(); + float chance = fields[2].Get<float>(); if (chance > 0.000001f && chance <= 100.0f) RandomItemEnch[entry].push_back(EnchStoreItem(ench, chance)); diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index e22adde2f6..a3c8ce4983 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -140,20 +140,20 @@ public: CharacterDatabasePreparedStatement* stmt = nullptr; stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PET_DECLINED_NAME); - stmt->setUInt32(0, ownerGuid); - stmt->setUInt32(1, petNumber); + stmt->SetData(0, ownerGuid); + stmt->SetData(1, petNumber); SetPreparedQuery(DECLINED_NAMES, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PET_AURA); - stmt->setUInt32(0, petNumber); + stmt->SetData(0, petNumber); SetPreparedQuery(AURAS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PET_SPELL); - stmt->setUInt32(0, petNumber); + stmt->SetData(0, petNumber); SetPreparedQuery(SPELLS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PET_SPELL_COOLDOWN); - stmt->setUInt32(0, petNumber); + stmt->SetData(0, petNumber); SetPreparedQuery(COOLDOWNS, stmt); } }; @@ -455,7 +455,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c m_declinedname = std::make_unique<DeclinedName>(); Field* fields = result->Fetch(); for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; ++i) - m_declinedname->name[i] = fields[i].GetString(); + m_declinedname->name[i] = fields[i].Get<std::string>(); } } @@ -536,16 +536,16 @@ void Pet::SavePetToDB(PetSaveMode mode) // remove current data CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_BY_ID); - stmt->setUInt32(0, m_charmInfo->GetPetNumber()); + stmt->SetData(0, m_charmInfo->GetPetNumber()); trans->Append(stmt); // prevent existence another hunter pet in PET_SAVE_AS_CURRENT and PET_SAVE_NOT_IN_SLOT if (getPetType() == HUNTER_PET && (mode == PET_SAVE_AS_CURRENT || mode > PET_SAVE_LAST_STABLE_SLOT)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_BY_SLOT); - stmt->setUInt32(0, ownerLowGUID); - stmt->setUInt8(1, uint8(PET_SAVE_AS_CURRENT)); - stmt->setUInt8(2, uint8(PET_SAVE_LAST_STABLE_SLOT)); + stmt->SetData(0, ownerLowGUID); + stmt->SetData(1, uint8(PET_SAVE_AS_CURRENT)); + stmt->SetData(2, uint8(PET_SAVE_LAST_STABLE_SLOT)); trans->Append(stmt); } @@ -556,23 +556,23 @@ void Pet::SavePetToDB(PetSaveMode mode) FillPetInfo(&owner->GetPetStable()->CurrentPet.value()); stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_CHAR_PET); - stmt->setUInt32(0, m_charmInfo->GetPetNumber()); - stmt->setUInt32(1, GetEntry()); - stmt->setUInt32(2, ownerLowGUID); - stmt->setUInt32(3, GetNativeDisplayId()); - stmt->setUInt32(4, GetUInt32Value(UNIT_CREATED_BY_SPELL)); - stmt->setUInt8(5, uint8(getPetType())); - stmt->setUInt8(6, getLevel()); - stmt->setUInt32(7, GetUInt32Value(UNIT_FIELD_PETEXPERIENCE)); - stmt->setUInt8(8, uint8(GetReactState())); - stmt->setString(9, GetName()); - stmt->setUInt8(10, uint8(HasByteFlag(UNIT_FIELD_BYTES_2, 2, UNIT_CAN_BE_RENAMED) ? 0 : 1)); - stmt->setUInt8(11, uint8(mode)); - stmt->setUInt32(12, curhealth); - stmt->setUInt32(13, curmana); - stmt->setUInt32(14, GetPower(POWER_HAPPINESS)); - stmt->setUInt32(15, GameTime::GetGameTime().count()); - stmt->setString(16, actionBar); + stmt->SetData(0, m_charmInfo->GetPetNumber()); + stmt->SetData(1, GetEntry()); + stmt->SetData(2, ownerLowGUID); + stmt->SetData(3, GetNativeDisplayId()); + stmt->SetData(4, GetUInt32Value(UNIT_CREATED_BY_SPELL)); + stmt->SetData(5, uint8(getPetType())); + stmt->SetData(6, getLevel()); + stmt->SetData(7, GetUInt32Value(UNIT_FIELD_PETEXPERIENCE)); + stmt->SetData(8, uint8(GetReactState())); + stmt->SetData(9, GetName()); + stmt->SetData(10, uint8(HasByteFlag(UNIT_FIELD_BYTES_2, 2, UNIT_CAN_BE_RENAMED) ? 0 : 1)); + stmt->SetData(11, uint8(mode)); + stmt->SetData(12, curhealth); + stmt->SetData(13, curmana); + stmt->SetData(14, GetPower(POWER_HAPPINESS)); + stmt->SetData(15, GameTime::GetGameTime().count()); + stmt->SetData(16, actionBar); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -590,23 +590,23 @@ void Pet::DeleteFromDB(ObjectGuid::LowType guidlow) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_BY_ID); - stmt->setUInt32(0, guidlow); + stmt->SetData(0, guidlow); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_DECLINEDNAME); - stmt->setUInt32(0, guidlow); + stmt->SetData(0, guidlow); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PET_AURAS); - stmt->setUInt32(0, guidlow); + stmt->SetData(0, guidlow); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PET_SPELLS); - stmt->setUInt32(0, guidlow); + stmt->SetData(0, guidlow); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PET_SPELL_COOLDOWNS); - stmt->setUInt32(0, guidlow); + stmt->SetData(0, guidlow); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -1431,9 +1431,9 @@ void Pet::_LoadSpellCooldowns(PreparedQueryResult result) { Field* fields = result->Fetch(); - uint32 spell_id = fields[0].GetUInt32(); - uint16 category = fields[1].GetUInt16(); - time_t db_time = time_t(fields[2].GetUInt32()); + uint32 spell_id = fields[0].Get<uint32>(); + uint16 category = fields[1].Get<uint16>(); + time_t db_time = time_t(fields[2].Get<uint32>()); if (!sSpellMgr->GetSpellInfo(spell_id)) { @@ -1463,7 +1463,7 @@ void Pet::_LoadSpellCooldowns(PreparedQueryResult result) void Pet::_SaveSpellCooldowns(CharacterDatabaseTransaction trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PET_SPELL_COOLDOWNS); - stmt->setUInt32(0, m_charmInfo->GetPetNumber()); + stmt->SetData(0, m_charmInfo->GetPetNumber()); trans->Append(stmt); time_t curTime = GameTime::GetGameTime().count(); @@ -1485,10 +1485,10 @@ void Pet::_SaveSpellCooldowns(CharacterDatabaseTransaction trans) { uint32 cooldown = ((itr2->second.end - curMSTime) / IN_MILLISECONDS) + curTime; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PET_SPELL_COOLDOWN); - stmt->setUInt32(0, m_charmInfo->GetPetNumber()); - stmt->setUInt32(1, itr2->first); - stmt->setUInt16(2, itr2->second.category); - stmt->setUInt32(3, cooldown); + stmt->SetData(0, m_charmInfo->GetPetNumber()); + stmt->SetData(1, itr2->first); + stmt->SetData(2, itr2->second.category); + stmt->SetData(3, cooldown); trans->Append(stmt); } } @@ -1502,7 +1502,7 @@ void Pet::_LoadSpells(PreparedQueryResult result) { Field* fields = result->Fetch(); - addSpell(fields[0].GetUInt32(), ActiveStates(fields[1].GetUInt8()), PETSPELL_UNCHANGED); + addSpell(fields[0].Get<uint32>(), ActiveStates(fields[1].Get<uint8>()), PETSPELL_UNCHANGED); } while (result->NextRow()); } } @@ -1523,30 +1523,30 @@ void Pet::_SaveSpells(CharacterDatabaseTransaction trans) { case PETSPELL_REMOVED: stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PET_SPELL_BY_SPELL); - stmt->setUInt32(0, m_charmInfo->GetPetNumber()); - stmt->setUInt32(1, itr->first); + stmt->SetData(0, m_charmInfo->GetPetNumber()); + stmt->SetData(1, itr->first); trans->Append(stmt); m_spells.erase(itr); continue; case PETSPELL_CHANGED: stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PET_SPELL_BY_SPELL); - stmt->setUInt32(0, m_charmInfo->GetPetNumber()); - stmt->setUInt32(1, itr->first); + stmt->SetData(0, m_charmInfo->GetPetNumber()); + stmt->SetData(1, itr->first); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PET_SPELL); - stmt->setUInt32(0, m_charmInfo->GetPetNumber()); - stmt->setUInt32(1, itr->first); - stmt->setUInt8(2, itr->second.active); + stmt->SetData(0, m_charmInfo->GetPetNumber()); + stmt->SetData(1, itr->first); + stmt->SetData(2, itr->second.active); trans->Append(stmt); break; case PETSPELL_NEW: stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PET_SPELL); - stmt->setUInt32(0, m_charmInfo->GetPetNumber()); - stmt->setUInt32(1, itr->first); - stmt->setUInt8(2, itr->second.active); + stmt->SetData(0, m_charmInfo->GetPetNumber()); + stmt->SetData(1, itr->first); + stmt->SetData(2, itr->second.active); trans->Append(stmt); break; case PETSPELL_UNCHANGED: @@ -1567,23 +1567,23 @@ void Pet::_LoadAuras(PreparedQueryResult result, uint32 timediff) int32 damage[3]; int32 baseDamage[3]; Field* fields = result->Fetch(); - ObjectGuid caster_guid = ObjectGuid(fields[0].GetUInt64()); + ObjectGuid caster_guid = ObjectGuid(fields[0].Get<uint64>()); // nullptr guid stored - pet is the caster of the spell - see Pet::_SaveAuras if (!caster_guid) caster_guid = GetGUID(); - uint32 spellid = fields[1].GetUInt32(); - uint8 effmask = fields[2].GetUInt8(); - uint8 recalculatemask = fields[3].GetUInt8(); - uint8 stackcount = fields[4].GetUInt8(); - damage[0] = fields[5].GetInt32(); - damage[1] = fields[6].GetInt32(); - damage[2] = fields[7].GetInt32(); - baseDamage[0] = fields[8].GetInt32(); - baseDamage[1] = fields[9].GetInt32(); - baseDamage[2] = fields[10].GetInt32(); - int32 maxduration = fields[11].GetInt32(); - int32 remaintime = fields[12].GetInt32(); - uint8 remaincharges = fields[13].GetUInt8(); + uint32 spellid = fields[1].Get<uint32>(); + uint8 effmask = fields[2].Get<uint8>(); + uint8 recalculatemask = fields[3].Get<uint8>(); + uint8 stackcount = fields[4].Get<uint8>(); + damage[0] = fields[5].Get<int32>(); + damage[1] = fields[6].Get<int32>(); + damage[2] = fields[7].Get<int32>(); + baseDamage[0] = fields[8].Get<int32>(); + baseDamage[1] = fields[9].Get<int32>(); + baseDamage[2] = fields[10].Get<int32>(); + int32 maxduration = fields[11].Get<int32>(); + int32 remaintime = fields[12].Get<int32>(); + uint8 remaincharges = fields[13].Get<uint8>(); SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellid); if (!spellInfo) @@ -1639,7 +1639,7 @@ void Pet::_LoadAuras(PreparedQueryResult result, uint32 timediff) void Pet::_SaveAuras(CharacterDatabaseTransaction trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PET_AURAS); - stmt->setUInt32(0, m_charmInfo->GetPetNumber()); + stmt->SetData(0, m_charmInfo->GetPetNumber()); trans->Append(stmt); for (AuraMap::const_iterator itr = m_ownedAuras.begin(); itr != m_ownedAuras.end(); ++itr) @@ -1699,21 +1699,21 @@ void Pet::_SaveAuras(CharacterDatabaseTransaction trans) uint8 index = 0; CharacterDatabasePreparedStatement* stmt2 = CharacterDatabase.GetPreparedStatement(CHAR_INS_PET_AURA); - stmt2->setUInt32(index++, m_charmInfo->GetPetNumber()); - stmt2->setUInt64(index++, casterGUID.GetRawValue()); - stmt2->setUInt32(index++, itr->second->GetId()); - stmt2->setUInt8(index++, effMask); - stmt2->setUInt8(index++, recalculateMask); - stmt2->setUInt8(index++, itr->second->GetStackAmount()); - stmt2->setInt32(index++, damage[0]); - stmt2->setInt32(index++, damage[1]); - stmt2->setInt32(index++, damage[2]); - stmt2->setInt32(index++, baseDamage[0]); - stmt2->setInt32(index++, baseDamage[1]); - stmt2->setInt32(index++, baseDamage[2]); - stmt2->setInt32(index++, itr->second->GetMaxDuration()); - stmt2->setInt32(index++, itr->second->GetDuration()); - stmt2->setUInt8(index++, itr->second->GetCharges()); + stmt2->SetData(index++, m_charmInfo->GetPetNumber()); + stmt2->SetData(index++, casterGUID.GetRawValue()); + stmt2->SetData(index++, itr->second->GetId()); + stmt2->SetData(index++, effMask); + stmt2->SetData(index++, recalculateMask); + stmt2->SetData(index++, itr->second->GetStackAmount()); + stmt2->SetData(index++, damage[0]); + stmt2->SetData(index++, damage[1]); + stmt2->SetData(index++, damage[2]); + stmt2->SetData(index++, baseDamage[0]); + stmt2->SetData(index++, baseDamage[1]); + stmt2->SetData(index++, baseDamage[2]); + stmt2->SetData(index++, itr->second->GetMaxDuration()); + stmt2->SetData(index++, itr->second->GetDuration()); + stmt2->SetData(index++, itr->second->GetCharges()); trans->Append(stmt2); } } @@ -1729,7 +1729,7 @@ bool Pet::addSpell(uint32 spellId, ActiveStates active /*= ACT_DECIDE*/, PetSpel LOG_ERROR("entities.pet", "Pet::addSpell: Non-existed in SpellStore spell #{} request, deleting for all pets in `pet_spell`.", spellId); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INVALID_PET_SPELL); - stmt->setUInt32(0, spellId); + stmt->SetData(0, spellId); CharacterDatabase.Execute(stmt); } else diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 0b59a1718f..f3ecccb445 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1099,10 +1099,10 @@ bool Player::BuildEnumData(PreparedQueryResult result, WorldPacket* data) Field* fields = result->Fetch(); - ObjectGuid::LowType guidLow = fields[0].GetUInt32(); - uint8 plrRace = fields[2].GetUInt8(); - uint8 plrClass = fields[3].GetUInt8(); - uint8 gender = fields[4].GetUInt8(); + ObjectGuid::LowType guidLow = fields[0].Get<uint32>(); + uint8 plrRace = fields[2].Get<uint8>(); + uint8 plrClass = fields[3].Get<uint8>(); + uint8 gender = fields[4].Get<uint8>(); ObjectGuid guid = ObjectGuid::Create<HighGuid::Player>(guidLow); @@ -1119,21 +1119,21 @@ bool Player::BuildEnumData(PreparedQueryResult result, WorldPacket* data) } *data << guid; - *data << fields[1].GetString(); // name + *data << fields[1].Get<std::string>(); // name *data << uint8(plrRace); // race *data << uint8(plrClass); // class *data << uint8(gender); // gender - uint8 skin = fields[5].GetUInt8(); - uint8 face = fields[6].GetUInt8(); - uint8 hairStyle = fields[7].GetUInt8(); - uint8 hairColor = fields[8].GetUInt8(); - uint8 facialStyle = fields[9].GetUInt8(); + uint8 skin = fields[5].Get<uint8>(); + uint8 face = fields[6].Get<uint8>(); + uint8 hairStyle = fields[7].Get<uint8>(); + uint8 hairColor = fields[8].Get<uint8>(); + uint8 facialStyle = fields[9].Get<uint8>(); uint32 charFlags = 0; - uint32 playerFlags = fields[17].GetUInt32(); - uint16 atLoginFlags = fields[18].GetUInt16(); - uint32 zone = (atLoginFlags & AT_LOGIN_FIRST) != 0 ? 0 : fields[11].GetUInt16(); // if first login do not show the zone + uint32 playerFlags = fields[17].Get<uint32>(); + uint16 atLoginFlags = fields[18].Get<uint16>(); + uint32 zone = (atLoginFlags & AT_LOGIN_FIRST) != 0 ? 0 : fields[11].Get<uint16>(); // if first login do not show the zone *data << uint8(skin); *data << uint8(face); @@ -1141,15 +1141,15 @@ bool Player::BuildEnumData(PreparedQueryResult result, WorldPacket* data) *data << uint8(hairColor); *data << uint8(facialStyle); - *data << uint8(fields[10].GetUInt8()); // level + *data << uint8(fields[10].Get<uint8>()); // level *data << uint32(zone); // zone - *data << uint32(fields[12].GetUInt16()); // map + *data << uint32(fields[12].Get<uint16>()); // map - *data << fields[13].GetFloat(); // x - *data << fields[14].GetFloat(); // y - *data << fields[15].GetFloat(); // z + *data << fields[13].Get<float>(); // x + *data << fields[14].Get<float>(); // y + *data << fields[15].Get<float>(); // z - *data << uint32(fields[16].GetUInt32()); // guild id + *data << uint32(fields[16].Get<uint32>()); // guild id if (atLoginFlags & AT_LOGIN_RESURRECT) playerFlags &= ~PLAYER_FLAGS_GHOST; @@ -1161,11 +1161,11 @@ bool Player::BuildEnumData(PreparedQueryResult result, WorldPacket* data) charFlags |= CHARACTER_FLAG_GHOST; if (atLoginFlags & AT_LOGIN_RENAME) charFlags |= CHARACTER_FLAG_RENAME; - if (fields[23].GetUInt32()) + if (fields[23].Get<uint32>()) charFlags |= CHARACTER_FLAG_LOCKED_BY_BILLING; if (sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED)) { - if (!fields[25].GetString().empty()) + if (!fields[25].Get<std::string>().empty()) charFlags |= CHARACTER_FLAG_DECLINED; } else @@ -1192,14 +1192,14 @@ bool Player::BuildEnumData(PreparedQueryResult result, WorldPacket* data) uint32 petFamily = 0; // show pet at selection character in character list only for non-ghost character - if (result && !(playerFlags & PLAYER_FLAGS_GHOST) && (plrClass == CLASS_WARLOCK || plrClass == CLASS_HUNTER || (plrClass == CLASS_DEATH_KNIGHT && (fields[21].GetUInt32()&PLAYER_EXTRA_SHOW_DK_PET)))) + if (result && !(playerFlags & PLAYER_FLAGS_GHOST) && (plrClass == CLASS_WARLOCK || plrClass == CLASS_HUNTER || (plrClass == CLASS_DEATH_KNIGHT && (fields[21].Get<uint32>()&PLAYER_EXTRA_SHOW_DK_PET)))) { - uint32 entry = fields[19].GetUInt32(); + uint32 entry = fields[19].Get<uint32>(); CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(entry); if (creatureInfo) { - petDisplayId = fields[20].GetUInt32(); - petLevel = fields[21].GetUInt16(); + petDisplayId = fields[20].Get<uint32>(); + petLevel = fields[21].Get<uint16>(); petFamily = creatureInfo->family; } } @@ -1208,7 +1208,7 @@ bool Player::BuildEnumData(PreparedQueryResult result, WorldPacket* data) *data << uint32(petLevel); *data << uint32(petFamily); - std::vector<std::string_view> equipment = Acore::Tokenize(fields[22].GetStringView(), ' ', false); + std::vector<std::string_view> equipment = Acore::Tokenize(fields[22].Get<std::string_view>(), ' ', false); for (uint8 slot = 0; slot < INVENTORY_SLOT_BAG_END; ++slot) { uint32 const visualBase = slot * 2; @@ -3509,7 +3509,7 @@ void Player::_LoadSpellCooldowns(PreparedQueryResult result) { // some cooldowns can be already set at aura loading... - //QueryResult* result = CharacterDatabase.PQuery("SELECT spell, category, item, time FROM character_spell_cooldown WHERE guid = '%u'", GetGUID().GetCounter()()); + //QueryResult* result = CharacterDatabase.Query("SELECT spell, category, item, time FROM character_spell_cooldown WHERE guid = '{}'", GetGUID().GetCounter()()); if (result) { @@ -3518,11 +3518,11 @@ void Player::_LoadSpellCooldowns(PreparedQueryResult result) do { Field* fields = result->Fetch(); - uint32 spell_id = fields[0].GetUInt32(); - uint16 category = fields[1].GetUInt16(); - uint32 item_id = fields[2].GetUInt32(); - uint32 db_time = fields[3].GetUInt32(); - bool needSend = fields[4].GetBool(); + uint32 spell_id = fields[0].Get<uint32>(); + uint16 category = fields[1].Get<uint16>(); + uint32 item_id = fields[2].Get<uint32>(); + uint32 db_time = fields[3].Get<uint32>(); + bool needSend = fields[4].Get<bool>(); if (!sSpellMgr->GetSpellInfo(spell_id)) { @@ -3544,7 +3544,7 @@ void Player::_LoadSpellCooldowns(PreparedQueryResult result) void Player::_SaveSpellCooldowns(CharacterDatabaseTransaction trans, bool logout) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SPELL_COOLDOWN); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); trans->Append(stmt); time_t curTime = GameTime::GetGameTime().count(); @@ -3939,7 +3939,7 @@ void Player::DeleteFromDB(ObjectGuid::LowType lowGuid, uint32 accountId, bool up CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_COD_ITEM_MAIL); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); PreparedQueryResult resultMail = CharacterDatabase.Query(stmt); if (resultMail) @@ -3947,7 +3947,7 @@ void Player::DeleteFromDB(ObjectGuid::LowType lowGuid, uint32 accountId, bool up std::unordered_map<uint32, std::vector<Item*>> itemsByMail; stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_MAILITEMS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); PreparedQueryResult resultItems = CharacterDatabase.Query(stmt); if (resultItems) @@ -3955,7 +3955,7 @@ void Player::DeleteFromDB(ObjectGuid::LowType lowGuid, uint32 accountId, bool up do { Field* fields = resultItems->Fetch(); - uint32 mailId = fields[14].GetUInt32(); + uint32 mailId = fields[14].Get<uint32>(); if (Item* mailItem = _LoadMailedItem(playerGuid, nullptr, mailId, nullptr, fields)) { itemsByMail[mailId].push_back(mailItem); @@ -3967,19 +3967,19 @@ void Player::DeleteFromDB(ObjectGuid::LowType lowGuid, uint32 accountId, bool up { Field* mailFields = resultMail->Fetch(); - uint32 mail_id = mailFields[0].GetUInt32(); - uint8 mailType = mailFields[1].GetUInt8(); - uint16 mailTemplateId = mailFields[2].GetUInt16(); - uint32 sender = mailFields[3].GetUInt32(); - std::string subject = mailFields[4].GetString(); - std::string body = mailFields[5].GetString(); - uint32 money = mailFields[6].GetUInt32(); - bool has_items = mailFields[7].GetBool(); + uint32 mail_id = mailFields[0].Get<uint32>(); + uint8 mailType = mailFields[1].Get<uint8>(); + uint16 mailTemplateId = mailFields[2].Get<uint16>(); + uint32 sender = mailFields[3].Get<uint32>(); + std::string subject = mailFields[4].Get<std::string>(); + std::string body = mailFields[5].Get<std::string>(); + uint32 money = mailFields[6].Get<uint32>(); + bool has_items = mailFields[7].Get<bool>(); // We can return mail now // So firstly delete the old one stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID); - stmt->setUInt32(0, mail_id); + stmt->SetData(0, mail_id); trans->Append(stmt); // Mail is not from player @@ -3988,7 +3988,7 @@ void Player::DeleteFromDB(ObjectGuid::LowType lowGuid, uint32 accountId, bool up if (has_items) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID); - stmt->setUInt32(0, mail_id); + stmt->SetData(0, mail_id); trans->Append(stmt); } continue; @@ -4011,7 +4011,7 @@ void Player::DeleteFromDB(ObjectGuid::LowType lowGuid, uint32 accountId, bool up } stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID); - stmt->setUInt32(0, mail_id); + stmt->SetData(0, mail_id); trans->Append(stmt); uint32 pl_account = sCharacterCache->GetCharacterAccountIdByGuid(ObjectGuid(HighGuid::Player, lowGuid)); @@ -4023,28 +4023,28 @@ void Player::DeleteFromDB(ObjectGuid::LowType lowGuid, uint32 accountId, bool up // Unsummon and delete for pets in world is not required: player deleted from CLI or character list with not loaded pet. // NOW we can finally clear other DB data related to character stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_PET_IDS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); PreparedQueryResult resultPets = CharacterDatabase.Query(stmt); if (resultPets) { do { - ObjectGuid::LowType petguidlow = (*resultPets)[0].GetUInt32(); + ObjectGuid::LowType petguidlow = (*resultPets)[0].Get<uint32>(); Pet::DeleteFromDB(petguidlow); } while (resultPets->NextRow()); } // Delete char from social list of online chars stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_SOCIAL); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); PreparedQueryResult resultFriends = CharacterDatabase.Query(stmt); if (resultFriends) { do { - if (Player* pFriend = ObjectAccessor::FindPlayerByLowGUID((*resultFriends)[0].GetUInt32())) + if (Player* pFriend = ObjectAccessor::FindPlayerByLowGUID((*resultFriends)[0].Get<uint32>())) { pFriend->GetSocial()->RemoveFromSocialList(playerGuid, SOCIAL_FLAG_ALL); sSocialMgr->SendFriendStatus(pFriend, FRIEND_REMOVED, playerGuid, false); @@ -4053,157 +4053,157 @@ void Player::DeleteFromDB(ObjectGuid::LowType lowGuid, uint32 accountId, bool up } stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_ACCOUNT_DATA); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_DECLINED_NAME); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACTION); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_AURA); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_GIFT); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_HOMEBIND); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INSTANCE); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INVENTORY); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_QUESTSTATUS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_QUESTSTATUS_REWARDED); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_REPUTATION); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SPELL); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SPELL_COOLDOWN); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); if (sWorld->getBoolConfig(CONFIG_DELETE_CHARACTER_TICKET_TRACE)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_PLAYER_GM_TICKETS_ON_CHAR_DELETION); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); } else { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_GM_TICKETS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); } stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE_BY_OWNER); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SOCIAL_BY_FRIEND); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SOCIAL_BY_GUID); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEMS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_BY_OWNER); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_DECLINEDNAME_BY_OWNER); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENTS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT_PROGRESS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_EQUIPMENTSETS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_EVENTLOG_BY_PLAYER); - stmt->setUInt32(0, lowGuid); - stmt->setUInt32(1, lowGuid); + stmt->SetData(0, lowGuid); + stmt->SetData(1, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_EVENTLOG_BY_PLAYER); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_ENTRY_POINT); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_GLYPHS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_STATUS_DAILY_CHAR); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_STATUS_WEEKLY_CHAR); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_STATUS_MONTHLY_CHAR); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_STATUS_SEASONAL_CHAR); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_TALENT); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SKILLS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SETTINGS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); Corpse::DeleteFromDB(playerGuid, trans); @@ -4218,7 +4218,7 @@ void Player::DeleteFromDB(ObjectGuid::LowType lowGuid, uint32 accountId, bool up { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_DELETE_INFO); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); CharacterDatabase.Execute(stmt); break; @@ -4253,7 +4253,7 @@ void Player::DeleteOldCharacters(uint32 keepDays) LOG_INFO("server.loading", " "); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_OLD_CHARS); - stmt->setUInt32(0, uint32(GameTime::GetGameTime().count() - time_t(keepDays * DAY))); + stmt->SetData(0, uint32(GameTime::GetGameTime().count() - time_t(keepDays * DAY))); PreparedQueryResult result = CharacterDatabase.Query(stmt); if (result) @@ -4262,7 +4262,7 @@ void Player::DeleteOldCharacters(uint32 keepDays) do { Field* fields = result->Fetch(); - Player::DeleteFromDB(fields[0].GetUInt32(), fields[1].GetUInt32(), true, true); + Player::DeleteFromDB(fields[0].Get<uint32>(), fields[1].Get<uint32>(), true, true); } while (result->NextRow()); } } @@ -4458,8 +4458,8 @@ void Player::OfflineResurrect(ObjectGuid const guid, CharacterDatabaseTransactio { Corpse::DeleteFromDB(guid, trans); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG); - stmt->setUInt16(0, uint16(AT_LOGIN_RESURRECT)); - stmt->setUInt64(1, guid.GetCounter()); + stmt->SetData(0, uint16(AT_LOGIN_RESURRECT)); + stmt->SetData(1, guid.GetCounter()); CharacterDatabase.ExecuteOrAppend(trans, stmt); } @@ -4569,7 +4569,7 @@ void Player::SpawnCorpseBones(bool triggerSave /*= true*/) // pussywizard: update only ghost flag instead of whole character table entry! data integrity is crucial CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_REMOVE_GHOST); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); trans->Append(stmt); _SaveAuras(trans, false); @@ -6130,8 +6130,8 @@ void Player::ModifyHonorPoints(int32 value, CharacterDatabaseTransaction trans) if (trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UDP_CHAR_HONOR_POINTS); - stmt->setUInt32(0, newValue); - stmt->setUInt32(1, GetGUID().GetCounter()); + stmt->SetData(0, newValue); + stmt->SetData(1, GetGUID().GetCounter()); trans->Append(stmt); } } @@ -6146,8 +6146,8 @@ void Player::ModifyArenaPoints(int32 value, CharacterDatabaseTransaction trans) if (trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UDP_CHAR_ARENA_POINTS); - stmt->setUInt32(0, newValue); - stmt->setUInt32(1, GetGUID().GetCounter()); + stmt->SetData(0, newValue); + stmt->SetData(1, GetGUID().GetCounter()); trans->Append(stmt); } } @@ -6155,14 +6155,14 @@ void Player::ModifyArenaPoints(int32 value, CharacterDatabaseTransaction trans) uint32 Player::GetArenaTeamIdFromDB(ObjectGuid guid, uint8 type) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ARENA_TEAM_ID_BY_PLAYER_GUID); - stmt->setUInt32(0, guid.GetCounter()); - stmt->setUInt8(1, type); + stmt->SetData(0, guid.GetCounter()); + stmt->SetData(1, type); PreparedQueryResult result = CharacterDatabase.Query(stmt); if (!result) return 0; - uint32 id = (*result)[0].GetUInt32(); + uint32 id = (*result)[0].Get<uint32>(); return id; } @@ -6171,20 +6171,20 @@ uint32 Player::GetZoneIdFromDB(ObjectGuid guid) ObjectGuid::LowType guidLow = guid.GetCounter(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_ZONE); - stmt->setUInt32(0, guidLow); + stmt->SetData(0, guidLow); PreparedQueryResult result = CharacterDatabase.Query(stmt); if (!result) return 0; Field* fields = result->Fetch(); - uint32 zone = fields[0].GetUInt16(); + uint32 zone = fields[0].Get<uint16>(); if (!zone) { // stored zone is zero, use generic and slow zone detection stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_POSITION_XYZ); - stmt->setUInt32(0, guidLow); + stmt->SetData(0, guidLow); PreparedQueryResult posResult = CharacterDatabase.Query(stmt); if (!posResult) @@ -6193,10 +6193,10 @@ uint32 Player::GetZoneIdFromDB(ObjectGuid guid) } fields = posResult->Fetch(); - uint32 map = fields[0].GetUInt16(); - float posx = fields[1].GetFloat(); - float posy = fields[2].GetFloat(); - float posz = fields[3].GetFloat(); + uint32 map = fields[0].Get<uint16>(); + float posx = fields[1].Get<float>(); + float posy = fields[2].Get<float>(); + float posz = fields[3].Get<float>(); if (!sMapStore.LookupEntry(map)) return 0; @@ -6207,8 +6207,8 @@ uint32 Player::GetZoneIdFromDB(ObjectGuid guid) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ZONE); - stmt->setUInt16(0, uint16(zone)); - stmt->setUInt32(1, guidLow); + stmt->SetData(0, uint16(zone)); + stmt->SetData(1, guidLow); CharacterDatabase.Execute(stmt); } @@ -8917,9 +8917,9 @@ void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent) { // Handle removing pet while it is in "temporarily unsummoned" state, for example on mount CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID); - stmt->setUInt8(0, PET_SAVE_NOT_IN_SLOT); - stmt->setUInt32(1, GetGUID().GetCounter()); - stmt->setUInt32(2, m_petStable->CurrentPet->PetNumber); + stmt->SetData(0, PET_SAVE_NOT_IN_SLOT); + stmt->SetData(1, GetGUID().GetCounter()); + stmt->SetData(2, m_petStable->CurrentPet->PetNumber); CharacterDatabase.Execute(stmt); m_petStable->UnslottedPets.push_back(std::move(*m_petStable->CurrentPet)); @@ -9802,14 +9802,14 @@ void Player::RemovePetitionsAndSigns(ObjectGuid guid, uint32 type) if (type == 10) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_PETITION_SIGNATURES); - stmt->setUInt32(0, guid.GetCounter()); + stmt->SetData(0, guid.GetCounter()); CharacterDatabase.Execute(stmt); } else { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_SIGNATURE); - stmt->setUInt32(0, guid.GetCounter()); - stmt->setUInt8(1, uint8(type)); + stmt->SetData(0, guid.GetCounter()); + stmt->SetData(1, uint8(type)); CharacterDatabase.Execute(stmt); } @@ -9817,11 +9817,11 @@ void Player::RemovePetitionsAndSigns(ObjectGuid guid, uint32 type) if (type == 10) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_BY_OWNER); - stmt->setUInt32(0, guid.GetCounter()); + stmt->SetData(0, guid.GetCounter()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_SIGNATURE_BY_OWNER); - stmt->setUInt32(0, guid.GetCounter()); + stmt->SetData(0, guid.GetCounter()); trans->Append(stmt); // xinef: clear petition store @@ -9830,13 +9830,13 @@ void Player::RemovePetitionsAndSigns(ObjectGuid guid, uint32 type) else { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_BY_OWNER_AND_TYPE); - stmt->setUInt32(0, guid.GetCounter()); - stmt->setUInt8(1, uint8(type)); + stmt->SetData(0, guid.GetCounter()); + stmt->SetData(1, uint8(type)); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_SIGNATURE_BY_OWNER_AND_TYPE); - stmt->setUInt32(0, guid.GetCounter()); - stmt->setUInt8(1, uint8(type)); + stmt->SetData(0, guid.GetCounter()); + stmt->SetData(1, uint8(type)); trans->Append(stmt); // xinef: clear petition store @@ -9849,7 +9849,7 @@ void Player::LeaveAllArenaTeams(ObjectGuid guid) { // xinef: sync query CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PLAYER_ARENA_TEAMS); - stmt->setUInt32(0, guid.GetCounter()); + stmt->SetData(0, guid.GetCounter()); PreparedQueryResult result = CharacterDatabase.Query(stmt); if (!result) @@ -9858,7 +9858,7 @@ void Player::LeaveAllArenaTeams(ObjectGuid guid) do { Field* fields = result->Fetch(); - uint32 arenaTeamId = fields[0].GetUInt32(); + uint32 arenaTeamId = fields[0].Get<uint32>(); if (arenaTeamId != 0) { ArenaTeam* arenaTeam = sArenaTeamMgr->GetArenaTeamById(arenaTeamId); @@ -10990,8 +10990,8 @@ void Player::LeaveBattleground(Battleground* bg) if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_TRACK_DESERTERS)) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_DESERTER_TRACK); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt8(1, BG_DESERTION_TYPE_LEAVE_BG); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, BG_DESERTION_TYPE_LEAVE_BG); CharacterDatabase.Execute(stmt); } sScriptMgr->OnBattlegroundDesertion(this, BG_DESERTION_TYPE_LEAVE_BG); @@ -13170,7 +13170,7 @@ void Player::learnSpellHighRank(uint32 spellid) void Player::_LoadSkills(PreparedQueryResult result) { // 0 1 2 - // SetPQuery(PLAYER_LOGIN_QUERY_LOADSKILLS, "SELECT skill, value, max FROM character_skills WHERE guid = '%u'", m_guid.GetCounter()); + // SetQuery(PLAYER_LOGIN_QUERY_LOADSKILLS, "SELECT skill, value, max FROM character_skills WHERE guid = '{}'", m_guid.GetCounter()); uint32 count = 0; std::unordered_map<uint32, uint32> loadedSkillValues; @@ -13179,9 +13179,9 @@ void Player::_LoadSkills(PreparedQueryResult result) do { Field* fields = result->Fetch(); - uint16 skill = fields[0].GetUInt16(); - uint16 value = fields[1].GetUInt16(); - uint16 max = fields[2].GetUInt16(); + uint16 skill = fields[0].Get<uint16>(); + uint16 value = fields[1].Get<uint16>(); + uint16 max = fields[2].Get<uint16>(); SkillRaceClassInfoEntry const* rcEntry = GetSkillRaceClassInfo(skill, getRace(), getClass()); if (!rcEntry) @@ -13211,8 +13211,8 @@ void Player::_LoadSkills(PreparedQueryResult result) CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_SKILL); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt16(1, skill); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, skill); CharacterDatabase.Execute(stmt); @@ -14018,35 +14018,35 @@ void Player::_SaveEquipmentSets(CharacterDatabaseTransaction trans) break; // nothing do case EQUIPMENT_SET_CHANGED: stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_EQUIP_SET); - stmt->setString(j++, eqset.Name.c_str()); - stmt->setString(j++, eqset.IconName.c_str()); - stmt->setUInt32(j++, eqset.IgnoreMask); + stmt->SetData(j++, eqset.Name.c_str()); + stmt->SetData(j++, eqset.IconName.c_str()); + stmt->SetData(j++, eqset.IgnoreMask); for (uint8 i = 0; i < EQUIPMENT_SLOT_END; ++i) - stmt->setUInt32(j++, eqset.Items[i].GetCounter()); - stmt->setUInt32(j++, GetGUID().GetCounter()); - stmt->setUInt64(j++, eqset.Guid); - stmt->setUInt32(j, index); + stmt->SetData(j++, eqset.Items[i].GetCounter()); + stmt->SetData(j++, GetGUID().GetCounter()); + stmt->SetData(j++, eqset.Guid); + stmt->SetData(j, index); trans->Append(stmt); eqset.state = EQUIPMENT_SET_UNCHANGED; ++itr; break; case EQUIPMENT_SET_NEW: stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_EQUIP_SET); - stmt->setUInt32(j++, GetGUID().GetCounter()); - stmt->setUInt64(j++, eqset.Guid); - stmt->setUInt32(j++, index); - stmt->setString(j++, eqset.Name.c_str()); - stmt->setString(j++, eqset.IconName.c_str()); - stmt->setUInt32(j++, eqset.IgnoreMask); + stmt->SetData(j++, GetGUID().GetCounter()); + stmt->SetData(j++, eqset.Guid); + stmt->SetData(j++, index); + stmt->SetData(j++, eqset.Name.c_str()); + stmt->SetData(j++, eqset.IconName.c_str()); + stmt->SetData(j++, eqset.IgnoreMask); for (uint8 i = 0; i < EQUIPMENT_SLOT_END; ++i) - stmt->setUInt32(j++, eqset.Items[i].GetCounter()); + stmt->SetData(j++, eqset.Items[i].GetCounter()); trans->Append(stmt); eqset.state = EQUIPMENT_SET_UNCHANGED; ++itr; break; case EQUIPMENT_SET_DELETED: stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_EQUIP_SET); - stmt->setUInt64(0, eqset.Guid); + stmt->SetData(0, eqset.Guid); trans->Append(stmt); m_EquipmentSets.erase(itr++); break; @@ -14062,16 +14062,16 @@ void Player::_SaveEntryPoint(CharacterDatabaseTransaction trans) return; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_ENTRY_POINT); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PLAYER_ENTRY_POINT); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setFloat (1, m_entryPointData.joinPos.GetPositionX()); - stmt->setFloat (2, m_entryPointData.joinPos.GetPositionY()); - stmt->setFloat (3, m_entryPointData.joinPos.GetPositionZ()); - stmt->setFloat (4, m_entryPointData.joinPos.GetOrientation()); - stmt->setUInt32(5, m_entryPointData.joinPos.GetMapId()); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData (1, m_entryPointData.joinPos.GetPositionX()); + stmt->SetData (2, m_entryPointData.joinPos.GetPositionY()); + stmt->SetData (3, m_entryPointData.joinPos.GetPositionZ()); + stmt->SetData (4, m_entryPointData.joinPos.GetOrientation()); + stmt->SetData(5, m_entryPointData.joinPos.GetMapId()); std::ostringstream ss(""); if (m_entryPointData.HasTaxiPath()) @@ -14080,8 +14080,8 @@ void Player::_SaveEntryPoint(CharacterDatabaseTransaction trans) ss << m_entryPointData.taxiPath[i] << ' '; // xinef: segment is stored as last point } - stmt->setString(6, ss.str()); - stmt->setUInt32(7, m_entryPointData.mountSpell); + stmt->SetData(6, ss.str()); + stmt->SetData(7, m_entryPointData.mountSpell); trans->Append(stmt); } @@ -14108,8 +14108,8 @@ void Player::RemoveAtLoginFlag(AtLoginFlags flags, bool persist /*= false*/) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_REM_AT_LOGIN_FLAG); - stmt->setUInt16(0, uint16(flags)); - stmt->setUInt32(1, GetGUID().GetCounter()); + stmt->SetData(0, uint16(flags)); + stmt->SetData(1, GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } @@ -14156,34 +14156,34 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans) //! Insert query //! TO DO: Filter out more redundant fields that can take their default value at player create stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER); - stmt->setUInt32(index++, GetGUID().GetCounter()); - stmt->setUInt32(index++, GetSession()->GetAccountId()); - stmt->setString(index++, GetName()); - stmt->setUInt8(index++, getRace(true)); - stmt->setUInt8(index++, getClass()); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_3, 0)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect - stmt->setUInt8(index++, getLevel()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_XP)); - stmt->setUInt32(index++, GetMoney()); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, 0)); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, 1)); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, 2)); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, 3)); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, 0)); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, 2)); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, 3)); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FLAGS)); - stmt->setUInt16(index++, (uint16)GetMapId()); - stmt->setUInt32(index++, (uint32)GetInstanceId()); - stmt->setUInt8(index++, (uint8(GetDungeonDifficulty()) | uint8(GetRaidDifficulty()) << 4)); - stmt->setFloat(index++, finiteAlways(GetPositionX())); - stmt->setFloat(index++, finiteAlways(GetPositionY())); - stmt->setFloat(index++, finiteAlways(GetPositionZ())); - stmt->setFloat(index++, finiteAlways(GetOrientation())); - stmt->setFloat(index++, finiteAlways(GetTransOffsetX())); - stmt->setFloat(index++, finiteAlways(GetTransOffsetY())); - stmt->setFloat(index++, finiteAlways(GetTransOffsetZ())); - stmt->setFloat(index++, finiteAlways(GetTransOffsetO())); + stmt->SetData(index++, GetGUID().GetCounter()); + stmt->SetData(index++, GetSession()->GetAccountId()); + stmt->SetData(index++, GetName()); + stmt->SetData(index++, getRace(true)); + stmt->SetData(index++, getClass()); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES_3, 0)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect + stmt->SetData(index++, getLevel()); + stmt->SetData(index++, GetUInt32Value(PLAYER_XP)); + stmt->SetData(index++, GetMoney()); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES, 0)); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES, 1)); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES, 2)); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES, 3)); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 0)); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 2)); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 3)); + stmt->SetData(index++, GetUInt32Value(PLAYER_FLAGS)); + stmt->SetData(index++, (uint16)GetMapId()); + stmt->SetData(index++, (uint32)GetInstanceId()); + stmt->SetData(index++, (uint8(GetDungeonDifficulty()) | uint8(GetRaidDifficulty()) << 4)); + stmt->SetData(index++, finiteAlways(GetPositionX())); + stmt->SetData(index++, finiteAlways(GetPositionY())); + stmt->SetData(index++, finiteAlways(GetPositionZ())); + stmt->SetData(index++, finiteAlways(GetOrientation())); + stmt->SetData(index++, finiteAlways(GetTransOffsetX())); + stmt->SetData(index++, finiteAlways(GetTransOffsetY())); + stmt->SetData(index++, finiteAlways(GetTransOffsetZ())); + stmt->SetData(index++, finiteAlways(GetTransOffsetO())); int32 lowGuidOrSpawnId = 0; if (Transport* transport = GetTransport()) @@ -14193,56 +14193,56 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans) else if (transport->IsStaticTransport()) lowGuidOrSpawnId = -static_cast<int32>(transport->GetSpawnId()); } - stmt->setInt32(index++, lowGuidOrSpawnId); + stmt->SetData(index++, lowGuidOrSpawnId); std::ostringstream ss; ss << m_taxi; - stmt->setString(index++, ss.str()); - stmt->setUInt8(index++, m_cinematic); - stmt->setUInt32(index++, m_Played_time[PLAYED_TIME_TOTAL]); - stmt->setUInt32(index++, m_Played_time[PLAYED_TIME_LEVEL]); - stmt->setFloat(index++, finiteAlways(_restBonus)); - stmt->setUInt32(index++, uint32(GameTime::GetGameTime().count())); - stmt->setUInt8(index++, (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING) ? 1 : 0)); + stmt->SetData(index++, ss.str()); + stmt->SetData(index++, m_cinematic); + stmt->SetData(index++, m_Played_time[PLAYED_TIME_TOTAL]); + stmt->SetData(index++, m_Played_time[PLAYED_TIME_LEVEL]); + stmt->SetData(index++, finiteAlways(_restBonus)); + stmt->SetData(index++, uint32(GameTime::GetGameTime().count())); + stmt->SetData(index++, (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING) ? 1 : 0)); //save, far from tavern/city //save, but in tavern/city - stmt->setUInt32(index++, m_resetTalentsCost); - stmt->setUInt32(index++, uint32(m_resetTalentsTime)); - stmt->setUInt16(index++, (uint16)m_ExtraFlags); - stmt->setUInt8(index++, m_petStable ? m_petStable->MaxStabledPets : 0); - stmt->setUInt16(index++, (uint16)m_atLoginFlags); - stmt->setUInt16(index++, GetZoneId()); - stmt->setUInt32(index++, uint32(m_deathExpireTime)); + stmt->SetData(index++, m_resetTalentsCost); + stmt->SetData(index++, uint32(m_resetTalentsTime)); + stmt->SetData(index++, (uint16)m_ExtraFlags); + stmt->SetData(index++, m_petStable ? m_petStable->MaxStabledPets : 0); + stmt->SetData(index++, (uint16)m_atLoginFlags); + stmt->SetData(index++, GetZoneId()); + stmt->SetData(index++, uint32(m_deathExpireTime)); ss.str(""); ss << m_taxi.SaveTaxiDestinationsToString(); - stmt->setString(index++, ss.str()); - stmt->setUInt32(index++, GetArenaPoints()); - stmt->setUInt32(index++, GetHonorPoints()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION)); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION)); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, 0)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, 1)); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_CHOSEN_TITLE)); - stmt->setUInt64(index++, GetUInt64Value(PLAYER_FIELD_KNOWN_CURRENCIES)); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX)); - stmt->setUInt8(index++, GetDrunkValue()); - stmt->setUInt32(index++, GetHealth()); + stmt->SetData(index++, ss.str()); + stmt->SetData(index++, GetArenaPoints()); + stmt->SetData(index++, GetHonorPoints()); + stmt->SetData(index++, GetUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION)); + stmt->SetData(index++, GetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION)); + stmt->SetData(index++, GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); + stmt->SetData(index++, GetUInt16Value(PLAYER_FIELD_KILLS, 0)); + stmt->SetData(index++, GetUInt16Value(PLAYER_FIELD_KILLS, 1)); + stmt->SetData(index++, GetUInt32Value(PLAYER_CHOSEN_TITLE)); + stmt->SetData(index++, GetUInt64Value(PLAYER_FIELD_KNOWN_CURRENCIES)); + stmt->SetData(index++, GetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX)); + stmt->SetData(index++, GetDrunkValue()); + stmt->SetData(index++, GetHealth()); for (uint32 i = 0; i < MAX_POWERS; ++i) - stmt->setUInt32(index++, GetPower(Powers(i))); + stmt->SetData(index++, GetPower(Powers(i))); - stmt->setUInt32(index++, GetSession()->GetLatency()); + stmt->SetData(index++, GetSession()->GetLatency()); - stmt->setUInt8(index++, m_specsCount); - stmt->setUInt8(index++, m_activeSpec); + stmt->SetData(index++, m_specsCount); + stmt->SetData(index++, m_activeSpec); ss.str(""); for (uint32 i = 0; i < PLAYER_EXPLORED_ZONES_SIZE; ++i) ss << GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + i) << ' '; - stmt->setString(index++, ss.str()); + stmt->SetData(index++, ss.str()); ss.str(""); // cache equipment... @@ -14259,37 +14259,37 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans) ss << " 0 "; } - stmt->setString(index++, ss.str()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_AMMO_ID)); + stmt->SetData(index++, ss.str()); + stmt->SetData(index++, GetUInt32Value(PLAYER_AMMO_ID)); ss.str(""); for (uint32 i = 0; i < KNOWN_TITLES_SIZE * 2; ++i) ss << GetUInt32Value(PLAYER__FIELD_KNOWN_TITLES + i) << ' '; - stmt->setString(index++, ss.str()); - stmt->setUInt8(index++, GetByteValue(PLAYER_FIELD_BYTES, 2)); - stmt->setUInt32(index++, m_grantableLevels); - stmt->setUInt32(index++, _innTriggerId); + stmt->SetData(index++, ss.str()); + stmt->SetData(index++, GetByteValue(PLAYER_FIELD_BYTES, 2)); + stmt->SetData(index++, m_grantableLevels); + stmt->SetData(index++, _innTriggerId); } else { // Update query stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER); - stmt->setString(index++, GetName()); - stmt->setUInt8(index++, getRace(true)); - stmt->setUInt8(index++, getClass()); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_3, 0)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect - stmt->setUInt8(index++, getLevel()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_XP)); - stmt->setUInt32(index++, GetMoney()); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, 0)); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, 1)); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, 2)); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES, 3)); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, 0)); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, 2)); - stmt->setUInt8(index++, GetByteValue(PLAYER_BYTES_2, 3)); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FLAGS)); + stmt->SetData(index++, GetName()); + stmt->SetData(index++, getRace(true)); + stmt->SetData(index++, getClass()); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES_3, 0)); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect + stmt->SetData(index++, getLevel()); + stmt->SetData(index++, GetUInt32Value(PLAYER_XP)); + stmt->SetData(index++, GetMoney()); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES, 0)); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES, 1)); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES, 2)); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES, 3)); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 0)); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 2)); + stmt->SetData(index++, GetByteValue(PLAYER_BYTES_2, 3)); + stmt->SetData(index++, GetUInt32Value(PLAYER_FLAGS)); if (!IsBeingTeleported()) { @@ -14300,29 +14300,29 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans) if (m->IsNonRaidDungeon()) dd = m->GetDifficulty(); else rd = m->GetDifficulty(); } - stmt->setUInt16(index++, (uint16)GetMapId()); - stmt->setUInt32(index++, (uint32)GetInstanceId()); - stmt->setUInt8(index++, (uint8(dd) | uint8(rd) << 4)); - stmt->setFloat(index++, finiteAlways(GetPositionX())); - stmt->setFloat(index++, finiteAlways(GetPositionY())); - stmt->setFloat(index++, finiteAlways(GetPositionZ())); - stmt->setFloat(index++, finiteAlways(GetOrientation())); + stmt->SetData(index++, (uint16)GetMapId()); + stmt->SetData(index++, (uint32)GetInstanceId()); + stmt->SetData(index++, (uint8(dd) | uint8(rd) << 4)); + stmt->SetData(index++, finiteAlways(GetPositionX())); + stmt->SetData(index++, finiteAlways(GetPositionY())); + stmt->SetData(index++, finiteAlways(GetPositionZ())); + stmt->SetData(index++, finiteAlways(GetOrientation())); } else { - stmt->setUInt16(index++, (uint16)GetTeleportDest().GetMapId()); - stmt->setUInt32(index++, (uint32)0); - stmt->setUInt8(index++, (uint8(GetDungeonDifficulty()) | uint8(GetRaidDifficulty()) << 4)); - stmt->setFloat(index++, finiteAlways(GetTeleportDest().GetPositionX())); - stmt->setFloat(index++, finiteAlways(GetTeleportDest().GetPositionY())); - stmt->setFloat(index++, finiteAlways(GetTeleportDest().GetPositionZ())); - stmt->setFloat(index++, finiteAlways(GetTeleportDest().GetOrientation())); + stmt->SetData(index++, (uint16)GetTeleportDest().GetMapId()); + stmt->SetData(index++, (uint32)0); + stmt->SetData(index++, (uint8(GetDungeonDifficulty()) | uint8(GetRaidDifficulty()) << 4)); + stmt->SetData(index++, finiteAlways(GetTeleportDest().GetPositionX())); + stmt->SetData(index++, finiteAlways(GetTeleportDest().GetPositionY())); + stmt->SetData(index++, finiteAlways(GetTeleportDest().GetPositionZ())); + stmt->SetData(index++, finiteAlways(GetTeleportDest().GetOrientation())); } - stmt->setFloat(index++, finiteAlways(GetTransOffsetX())); - stmt->setFloat(index++, finiteAlways(GetTransOffsetY())); - stmt->setFloat(index++, finiteAlways(GetTransOffsetZ())); - stmt->setFloat(index++, finiteAlways(GetTransOffsetO())); + stmt->SetData(index++, finiteAlways(GetTransOffsetX())); + stmt->SetData(index++, finiteAlways(GetTransOffsetY())); + stmt->SetData(index++, finiteAlways(GetTransOffsetZ())); + stmt->SetData(index++, finiteAlways(GetTransOffsetO())); int32 lowGuidOrSpawnId = 0; if (Transport* transport = GetTransport()) @@ -14332,56 +14332,56 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans) else if (transport->IsStaticTransport()) lowGuidOrSpawnId = -static_cast<int32>(transport->GetSpawnId()); } - stmt->setInt32(index++, lowGuidOrSpawnId); + stmt->SetData(index++, lowGuidOrSpawnId); std::ostringstream ss; ss << m_taxi; - stmt->setString(index++, ss.str()); - stmt->setUInt8(index++, m_cinematic); - stmt->setUInt32(index++, m_Played_time[PLAYED_TIME_TOTAL]); - stmt->setUInt32(index++, m_Played_time[PLAYED_TIME_LEVEL]); - stmt->setFloat(index++, finiteAlways(_restBonus)); - stmt->setUInt32(index++, uint32(GameTime::GetGameTime().count())); - stmt->setUInt8(index++, (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING) ? 1 : 0)); + stmt->SetData(index++, ss.str()); + stmt->SetData(index++, m_cinematic); + stmt->SetData(index++, m_Played_time[PLAYED_TIME_TOTAL]); + stmt->SetData(index++, m_Played_time[PLAYED_TIME_LEVEL]); + stmt->SetData(index++, finiteAlways(_restBonus)); + stmt->SetData(index++, uint32(GameTime::GetGameTime().count())); + stmt->SetData(index++, (HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_RESTING) ? 1 : 0)); //save, far from tavern/city //save, but in tavern/city - stmt->setUInt32(index++, m_resetTalentsCost); - stmt->setUInt32(index++, uint32(m_resetTalentsTime)); - stmt->setUInt16(index++, (uint16)m_ExtraFlags); - stmt->setUInt8(index++, m_petStable ? m_petStable->MaxStabledPets : 0); - stmt->setUInt16(index++, (uint16)m_atLoginFlags); - stmt->setUInt16(index++, GetZoneId()); - stmt->setUInt32(index++, uint32(m_deathExpireTime)); + stmt->SetData(index++, m_resetTalentsCost); + stmt->SetData(index++, uint32(m_resetTalentsTime)); + stmt->SetData(index++, (uint16)m_ExtraFlags); + stmt->SetData(index++, m_petStable ? m_petStable->MaxStabledPets : 0); + stmt->SetData(index++, (uint16)m_atLoginFlags); + stmt->SetData(index++, GetZoneId()); + stmt->SetData(index++, uint32(m_deathExpireTime)); ss.str(""); ss << m_taxi.SaveTaxiDestinationsToString(); - stmt->setString(index++, ss.str()); - stmt->setUInt32(index++, GetArenaPoints()); - stmt->setUInt32(index++, GetHonorPoints()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION)); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION)); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, 0)); - stmt->setUInt16(index++, GetUInt16Value(PLAYER_FIELD_KILLS, 1)); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_CHOSEN_TITLE)); - stmt->setUInt64(index++, GetUInt64Value(PLAYER_FIELD_KNOWN_CURRENCIES)); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX)); - stmt->setUInt8(index++, GetDrunkValue()); - stmt->setUInt32(index++, GetHealth()); + stmt->SetData(index++, ss.str()); + stmt->SetData(index++, GetArenaPoints()); + stmt->SetData(index++, GetHonorPoints()); + stmt->SetData(index++, GetUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION)); + stmt->SetData(index++, GetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION)); + stmt->SetData(index++, GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS)); + stmt->SetData(index++, GetUInt16Value(PLAYER_FIELD_KILLS, 0)); + stmt->SetData(index++, GetUInt16Value(PLAYER_FIELD_KILLS, 1)); + stmt->SetData(index++, GetUInt32Value(PLAYER_CHOSEN_TITLE)); + stmt->SetData(index++, GetUInt64Value(PLAYER_FIELD_KNOWN_CURRENCIES)); + stmt->SetData(index++, GetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX)); + stmt->SetData(index++, GetDrunkValue()); + stmt->SetData(index++, GetHealth()); for (uint32 i = 0; i < MAX_POWERS; ++i) - stmt->setUInt32(index++, GetPower(Powers(i))); + stmt->SetData(index++, GetPower(Powers(i))); - stmt->setUInt32(index++, GetSession()->GetLatency()); + stmt->SetData(index++, GetSession()->GetLatency()); - stmt->setUInt8(index++, m_specsCount); - stmt->setUInt8(index++, m_activeSpec); + stmt->SetData(index++, m_specsCount); + stmt->SetData(index++, m_activeSpec); ss.str(""); for (uint32 i = 0; i < PLAYER_EXPLORED_ZONES_SIZE; ++i) ss << GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + i) << ' '; - stmt->setString(index++, ss.str()); + stmt->SetData(index++, ss.str()); ss.str(""); // cache equipment... @@ -14398,21 +14398,21 @@ void Player::_SaveCharacter(bool create, CharacterDatabaseTransaction trans) ss << " 0 "; } - stmt->setString(index++, ss.str()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_AMMO_ID)); + stmt->SetData(index++, ss.str()); + stmt->SetData(index++, GetUInt32Value(PLAYER_AMMO_ID)); ss.str(""); for (uint32 i = 0; i < KNOWN_TITLES_SIZE * 2; ++i) ss << GetUInt32Value(PLAYER__FIELD_KNOWN_TITLES + i) << ' '; - stmt->setString(index++, ss.str()); - stmt->setUInt8(index++, GetByteValue(PLAYER_FIELD_BYTES, 2)); - stmt->setUInt32(index++, m_grantableLevels); - stmt->setUInt32(index++, _innTriggerId); + stmt->SetData(index++, ss.str()); + stmt->SetData(index++, GetByteValue(PLAYER_FIELD_BYTES, 2)); + stmt->SetData(index++, m_grantableLevels); + stmt->SetData(index++, _innTriggerId); - stmt->setUInt8(index++, IsInWorld() && !GetSession()->PlayerLogout() ? 1 : 0); + stmt->SetData(index++, IsInWorld() && !GetSession()->PlayerLogout() ? 1 : 0); // Index - stmt->setUInt32(index++, GetGUID().GetCounter()); + stmt->SetData(index++, GetGUID().GetCounter()); } trans->Append(stmt); @@ -14428,16 +14428,16 @@ void Player::_LoadGlyphs(PreparedQueryResult result) { Field* fields = result->Fetch(); - uint8 spec = fields[0].GetUInt8(); + uint8 spec = fields[0].Get<uint8>(); if (spec >= m_specsCount) continue; - m_Glyphs[spec][0] = fields[1].GetUInt16(); - m_Glyphs[spec][1] = fields[2].GetUInt16(); - m_Glyphs[spec][2] = fields[3].GetUInt16(); - m_Glyphs[spec][3] = fields[4].GetUInt16(); - m_Glyphs[spec][4] = fields[5].GetUInt16(); - m_Glyphs[spec][5] = fields[6].GetUInt16(); + m_Glyphs[spec][0] = fields[1].Get<uint16>(); + m_Glyphs[spec][1] = fields[2].Get<uint16>(); + m_Glyphs[spec][2] = fields[3].Get<uint16>(); + m_Glyphs[spec][3] = fields[4].Get<uint16>(); + m_Glyphs[spec][4] = fields[5].Get<uint16>(); + m_Glyphs[spec][5] = fields[6].Get<uint16>(); } while (result->NextRow()); } @@ -14447,7 +14447,7 @@ void Player::_SaveGlyphs(CharacterDatabaseTransaction trans) return; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_GLYPHS); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); trans->Append(stmt); for (uint8 spec = 0; spec < m_specsCount; ++spec) @@ -14455,11 +14455,11 @@ void Player::_SaveGlyphs(CharacterDatabaseTransaction trans) uint8 index = 0; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_GLYPHS); - stmt->setUInt32(index++, GetGUID().GetCounter()); - stmt->setUInt8(index++, spec); + stmt->SetData(index++, GetGUID().GetCounter()); + stmt->SetData(index++, spec); for (uint8 i = 0; i < MAX_GLYPH_SLOT_INDEX; ++i) - stmt->setUInt16(index++, uint16(m_Glyphs[spec][i])); + stmt->SetData(index++, uint16(m_Glyphs[spec][i])); trans->Append(stmt); } @@ -14469,14 +14469,14 @@ void Player::_SaveGlyphs(CharacterDatabaseTransaction trans) void Player::_LoadTalents(PreparedQueryResult result) { - // SetPQuery(PLAYER_LOGIN_QUERY_LOADTALENTS, "SELECT spell, specMask FROM character_talent WHERE guid = '%u'", m_guid.GetCounter()); + // SetQuery(PLAYER_LOGIN_QUERY_LOADTALENTS, "SELECT spell, specMask FROM character_talent WHERE guid = '{}'", m_guid.GetCounter()); if (result) { do { // xinef: checked - uint32 spellId = (*result)[0].GetUInt32(); - uint8 specMask = (*result)[1].GetUInt8(); + uint32 spellId = (*result)[0].Get<uint32>(); + uint8 specMask = (*result)[1].Get<uint8>(); addTalent(spellId, specMask, 0); TalentSpellPos const* talentPos = GetTalentSpellPos(spellId); ASSERT(talentPos); @@ -14505,8 +14505,8 @@ void Player::_SaveTalents(CharacterDatabaseTransaction trans) if (itr->second->State == PLAYERSPELL_REMOVED || itr->second->State == PLAYERSPELL_CHANGED) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_TALENT_BY_SPELL); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, itr->first); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, itr->first); trans->Append(stmt); } @@ -14514,9 +14514,9 @@ void Player::_SaveTalents(CharacterDatabaseTransaction trans) if (itr->second->State == PLAYERSPELL_NEW || itr->second->State == PLAYERSPELL_CHANGED) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_TALENT); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, itr->first); - stmt->setUInt8(2, itr->second->specMask); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, itr->first); + stmt->SetData(2, itr->second->specMask); trans->Append(stmt); } @@ -14687,8 +14687,8 @@ void Player::ActivateSpec(uint8 spec) // load them asynchronously { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_ACTIONS_SPEC); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt8(1, m_activeSpec); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, m_activeSpec); WorldSession* mySess = GetSession(); mySess->GetQueryProcessor().AddCallback(CharacterDatabase.AsyncQuery(stmt) @@ -15162,7 +15162,7 @@ void Player::SetRandomWinner(bool isWinner) if (m_IsBGRandomWinner) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_BATTLEGROUND_RANDOM); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } } @@ -15228,7 +15228,7 @@ void Player::_LoadInstanceTimeRestrictions(PreparedQueryResult result) do { Field* fields = result->Fetch(); - _instanceResetTimes.insert(InstanceTimeMap::value_type(fields[0].GetUInt32(), fields[1].GetUInt64())); + _instanceResetTimes.insert(InstanceTimeMap::value_type(fields[0].Get<uint32>(), fields[1].Get<uint64>())); } while (result->NextRow()); } @@ -15238,7 +15238,7 @@ void Player::_LoadBrewOfTheMonth(PreparedQueryResult result) if (result) { Field* fields = result->Fetch(); - lastEventId = fields[0].GetUInt32(); + lastEventId = fields[0].Get<uint32>(); } uint16 month = static_cast<uint16>(Acore::Time::GetMonth()); @@ -15261,8 +15261,8 @@ void Player::_LoadBrewOfTheMonth(PreparedQueryResult result) // Update Event Id CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_BREW_OF_THE_MONTH); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, uint32(eventId)); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, uint32(eventId)); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -15293,22 +15293,22 @@ void Player::_LoadPetStable(uint8 petStableSlots, PreparedQueryResult result) { Field* fields = result->Fetch(); PetStable::PetInfo petInfo; - petInfo.PetNumber = fields[0].GetUInt32(); - petInfo.CreatureId = fields[1].GetUInt32(); - petInfo.DisplayId = fields[2].GetUInt32(); - petInfo.Level = fields[3].GetUInt16(); - petInfo.Experience = fields[4].GetUInt32(); - petInfo.ReactState = ReactStates(fields[5].GetUInt8()); - PetSaveMode slot = PetSaveMode(fields[6].GetUInt8()); - petInfo.Name = fields[7].GetString(); - petInfo.WasRenamed = fields[8].GetBool(); - petInfo.Health = fields[9].GetUInt32(); - petInfo.Mana = fields[10].GetUInt32(); - petInfo.Happiness = fields[11].GetUInt32(); - petInfo.ActionBar = fields[12].GetString(); - petInfo.LastSaveTime = fields[13].GetUInt32(); - petInfo.CreatedBySpellId = fields[14].GetUInt32(); - petInfo.Type = PetType(fields[15].GetUInt8()); + petInfo.PetNumber = fields[0].Get<uint32>(); + petInfo.CreatureId = fields[1].Get<uint32>(); + petInfo.DisplayId = fields[2].Get<uint32>(); + petInfo.Level = fields[3].Get<uint16>(); + petInfo.Experience = fields[4].Get<uint32>(); + petInfo.ReactState = ReactStates(fields[5].Get<uint8>()); + PetSaveMode slot = PetSaveMode(fields[6].Get<uint8>()); + petInfo.Name = fields[7].Get<std::string>(); + petInfo.WasRenamed = fields[8].Get<bool>(); + petInfo.Health = fields[9].Get<uint32>(); + petInfo.Mana = fields[10].Get<uint32>(); + petInfo.Happiness = fields[11].Get<uint32>(); + petInfo.ActionBar = fields[12].Get<std::string>(); + petInfo.LastSaveTime = fields[13].Get<uint32>(); + petInfo.CreatedBySpellId = fields[14].Get<uint32>(); + petInfo.Type = PetType(fields[15].Get<uint8>()); if (slot == PET_SAVE_AS_CURRENT) m_petStable->CurrentPet = std::move(petInfo); @@ -15327,15 +15327,15 @@ void Player::_SaveInstanceTimeRestrictions(CharacterDatabaseTransaction trans) return; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ACCOUNT_INSTANCE_LOCK_TIMES); - stmt->setUInt32(0, GetSession()->GetAccountId()); + stmt->SetData(0, GetSession()->GetAccountId()); trans->Append(stmt); for (InstanceTimeMap::const_iterator itr = _instanceResetTimes.begin(); itr != _instanceResetTimes.end(); ++itr) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_ACCOUNT_INSTANCE_LOCK_TIMES); - stmt->setUInt32(0, GetSession()->GetAccountId()); - stmt->setUInt32(1, itr->first); - stmt->setUInt64(2, itr->second); + stmt->SetData(0, GetSession()->GetAccountId()); + stmt->SetData(1, itr->first); + stmt->SetData(2, itr->second); trans->Append(stmt); } } diff --git a/src/server/game/Entities/Player/PlayerMisc.cpp b/src/server/game/Entities/Player/PlayerMisc.cpp index 0f5f08303a..e642ea61c2 100644 --- a/src/server/game/Entities/Player/PlayerMisc.cpp +++ b/src/server/game/Entities/Player/PlayerMisc.cpp @@ -75,13 +75,13 @@ void Player::SavePositionInDB(uint32 mapid, float x, float y, float z, float o, { CharacterDatabasePreparedStatement* 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.GetCounter()); + stmt->SetData(0, x); + stmt->SetData(1, y); + stmt->SetData(2, z); + stmt->SetData(3, o); + stmt->SetData(4, uint16(mapid)); + stmt->SetData(5, uint16(zone)); + stmt->SetData(6, guid.GetCounter()); CharacterDatabase.Execute(stmt); } @@ -90,13 +90,13 @@ void Player::SavePositionInDB(WorldLocation const& loc, uint16 zoneId, ObjectGui { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_POSITION); - stmt->setFloat(0, loc.GetPositionX()); - stmt->setFloat(1, loc.GetPositionY()); - stmt->setFloat(2, loc.GetPositionZ()); - stmt->setFloat(3, loc.GetOrientation()); - stmt->setUInt16(4, uint16(loc.GetMapId())); - stmt->setUInt16(5, zoneId); - stmt->setUInt32(6, guid.GetCounter()); + stmt->SetData(0, loc.GetPositionX()); + stmt->SetData(1, loc.GetPositionY()); + stmt->SetData(2, loc.GetPositionZ()); + stmt->SetData(3, loc.GetOrientation()); + stmt->SetData(4, uint16(loc.GetMapId())); + stmt->SetData(5, zoneId); + stmt->SetData(6, guid.GetCounter()); CharacterDatabase.ExecuteOrAppend(trans, stmt); } @@ -104,13 +104,13 @@ void Player::SavePositionInDB(WorldLocation const& loc, uint16 zoneId, ObjectGui void Player::Customize(CharacterCustomizeInfo const* customizeInfo, CharacterDatabaseTransaction trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GENDER_AND_APPEARANCE); - stmt->setUInt8(0, customizeInfo->Gender); - stmt->setUInt8(1, customizeInfo->Skin); - stmt->setUInt8(2, customizeInfo->Face); - stmt->setUInt8(3, customizeInfo->HairStyle); - stmt->setUInt8(4, customizeInfo->HairColor); - stmt->setUInt8(5, customizeInfo->FacialHair); - stmt->setUInt32(6, customizeInfo->Guid.GetCounter()); + stmt->SetData(0, customizeInfo->Gender); + stmt->SetData(1, customizeInfo->Skin); + stmt->SetData(2, customizeInfo->Face); + stmt->SetData(3, customizeInfo->HairStyle); + stmt->SetData(4, customizeInfo->HairColor); + stmt->SetData(5, customizeInfo->FacialHair); + stmt->SetData(6, customizeInfo->Guid.GetCounter()); CharacterDatabase.ExecuteOrAppend(trans, stmt); } diff --git a/src/server/game/Entities/Player/PlayerQuest.cpp b/src/server/game/Entities/Player/PlayerQuest.cpp index c33c509a16..83380d507e 100644 --- a/src/server/game/Entities/Player/PlayerQuest.cpp +++ b/src/server/game/Entities/Player/PlayerQuest.cpp @@ -578,10 +578,10 @@ void Player::AddQuest(Quest const* quest, Object* questGiver) { // prepare Quest Tracker datas auto stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_QUEST_TRACK); - stmt->setUInt32(0, quest_id); - stmt->setUInt32(1, GetGUID().GetCounter()); - stmt->setString(2, GitRevision::GetHash()); - stmt->setString(3, GitRevision::GetDate()); + stmt->SetData(0, quest_id); + stmt->SetData(1, GetGUID().GetCounter()); + stmt->SetData(2, GitRevision::GetHash()); + stmt->SetData(3, GitRevision::GetDate()); // add to Quest Tracker CharacterDatabase.Execute(stmt); @@ -623,8 +623,8 @@ void Player::CompleteQuest(uint32 quest_id) { // prepare Quest Tracker datas auto stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_QUEST_TRACK_COMPLETE_TIME); - stmt->setUInt32(0, quest_id); - stmt->setUInt32(1, GetGUID().GetCounter()); + stmt->SetData(0, quest_id); + stmt->SetData(1, GetGUID().GetCounter()); // add to Quest Tracker CharacterDatabase.Execute(stmt); diff --git a/src/server/game/Entities/Player/PlayerSettings.cpp b/src/server/game/Entities/Player/PlayerSettings.cpp index acd82dcd79..46130b1157 100644 --- a/src/server/game/Entities/Player/PlayerSettings.cpp +++ b/src/server/game/Entities/Player/PlayerSettings.cpp @@ -38,8 +38,8 @@ void Player::_LoadCharacterSettings(PreparedQueryResult result) { Field* fields = result->Fetch(); - std::string source = fields[0].GetString();; - std::string data = fields[1].GetString(); + std::string source = fields[0].Get<std::string>();; + std::string data = fields[1].Get<std::string>(); std::vector<std::string_view> tokens = Acore::Tokenize(data, ' ', false); @@ -98,9 +98,9 @@ void Player::_SavePlayerSettings(CharacterDatabaseTransaction trans) } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_CHAR_SETTINGS); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setString(1, itr.first); - stmt->setString(2, data.str()); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, itr.first); + stmt->SetData(2, data.str()); trans->Append(stmt); } } diff --git a/src/server/game/Entities/Player/PlayerStorage.cpp b/src/server/game/Entities/Player/PlayerStorage.cpp index ff71718a9b..81f44f50d4 100644 --- a/src/server/game/Entities/Player/PlayerStorage.cpp +++ b/src/server/game/Entities/Player/PlayerStorage.cpp @@ -2589,8 +2589,8 @@ Item* Player::StoreNewItem(ItemPosCountVec const& dest, uint32 item, bool update ss << ' ' << (*itr).GetCounter(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_ITEM_BOP_TRADE); - stmt->setUInt32(0, pItem->GetGUID().GetCounter()); - stmt->setString(1, ss.str()); + stmt->SetData(0, pItem->GetGUID().GetCounter()); + stmt->SetData(1, ss.str()); CharacterDatabase.Execute(stmt); } } @@ -3061,7 +3061,7 @@ void Player::DestroyItem(uint8 bag, uint8 slot, bool update) if (pItem->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED)) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GIFT); - stmt->setUInt32(0, pItem->GetGUID().GetCounter()); + stmt->SetData(0, pItem->GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } @@ -4809,7 +4809,7 @@ void Player::_LoadDeclinedNames(PreparedQueryResult result) delete m_declinedname; m_declinedname = new DeclinedName; for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; ++i) - m_declinedname->name[i] = (*result)[i].GetString(); + m_declinedname->name[i] = (*result)[i].Get<std::string>(); } void Player::_LoadArenaTeamInfo() @@ -4845,7 +4845,7 @@ void Player::_LoadArenaTeamInfo() void Player::_LoadEquipmentSets(PreparedQueryResult result) { - // SetPQuery(PLAYER_LOGIN_QUERY_LOADEQUIPMENTSETS, "SELECT setguid, setindex, name, iconname, item0, item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17, item18 FROM character_equipmentsets WHERE guid = '%u' ORDER BY setindex", m_guid.GetCounter()); + // SetQuery(PLAYER_LOGIN_QUERY_LOADEQUIPMENTSETS, "SELECT setguid, setindex, name, iconname, item0, item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17, item18 FROM character_equipmentsets WHERE guid = '{}' ORDER BY setindex", m_guid.GetCounter()); if (!result) return; @@ -4855,15 +4855,15 @@ void Player::_LoadEquipmentSets(PreparedQueryResult result) Field* fields = result->Fetch(); EquipmentSet eqSet; - eqSet.Guid = fields[0].GetUInt64(); - uint8 index = fields[1].GetUInt8(); - eqSet.Name = fields[2].GetString(); - eqSet.IconName = fields[3].GetString(); - eqSet.IgnoreMask = fields[4].GetUInt32(); + eqSet.Guid = fields[0].Get<uint64>(); + uint8 index = fields[1].Get<uint8>(); + eqSet.Name = fields[2].Get<std::string>(); + eqSet.IconName = fields[3].Get<std::string>(); + eqSet.IgnoreMask = fields[4].Get<uint32>(); eqSet.state = EQUIPMENT_SET_UNCHANGED; for (uint32 i = 0; i < EQUIPMENT_SLOT_END; ++i) - eqSet.Items[i] = ObjectGuid::Create<HighGuid::Item>(fields[5 + i].GetUInt32()); + eqSet.Items[i] = ObjectGuid::Create<HighGuid::Item>(fields[5 + i].Get<uint32>()); m_EquipmentSets[index] = eqSet; @@ -4880,13 +4880,13 @@ void Player::_LoadEntryPointData(PreparedQueryResult result) return; Field* fields = result->Fetch(); - m_entryPointData.joinPos = WorldLocation(fields[4].GetUInt32(), // Map - fields[0].GetFloat(), // X - fields[1].GetFloat(), // Y - fields[2].GetFloat(), // Z - fields[3].GetFloat()); // Orientation + m_entryPointData.joinPos = WorldLocation(fields[4].Get<uint32>(), // Map + fields[0].Get<float>(), // X + fields[1].Get<float>(), // Y + fields[2].Get<float>(), // Z + fields[3].Get<float>()); // Orientation - std::string_view taxi = fields[5].GetStringView(); + std::string_view taxi = fields[5].Get<std::string_view>(); if (!taxi.empty()) { for (auto const& itr : Acore::Tokenize(taxi, ' ', false)) @@ -4900,13 +4900,13 @@ void Player::_LoadEntryPointData(PreparedQueryResult result) m_entryPointData.ClearTaxiPath(); } - m_entryPointData.mountSpell = fields[6].GetUInt32(); + m_entryPointData.mountSpell = fields[6].Get<uint32>(); } bool Player::LoadPositionFromDB(uint32& mapid, float& x, float& y, float& z, float& o, bool& in_flight, ObjectGuid::LowType guid) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_POSITION); - stmt->setUInt32(0, guid); + stmt->SetData(0, guid); PreparedQueryResult result = CharacterDatabase.Query(stmt); if (!result) @@ -4914,12 +4914,12 @@ bool Player::LoadPositionFromDB(uint32& mapid, float& x, float& y, float& z, flo Field* fields = result->Fetch(); - x = fields[0].GetFloat(); - y = fields[1].GetFloat(); - z = fields[2].GetFloat(); - o = fields[3].GetFloat(); - mapid = fields[4].GetUInt16(); - in_flight = !fields[5].GetString().empty(); + x = fields[0].Get<float>(); + y = fields[1].Get<float>(); + z = fields[2].Get<float>(); + o = fields[3].Get<float>(); + mapid = fields[4].Get<uint16>(); + in_flight = !fields[5].Get<std::string>().empty(); return true; } @@ -4932,12 +4932,12 @@ void Player::SetHomebind(WorldLocation const& loc, uint32 areaId) // update sql homebind CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_PLAYER_HOMEBIND); - stmt->setUInt16(0, m_homebindMapId); - stmt->setUInt16(1, m_homebindAreaId); - stmt->setFloat (2, m_homebindX); - stmt->setFloat (3, m_homebindY); - stmt->setFloat (4, m_homebindZ); - stmt->setUInt32(5, GetGUID().GetCounter()); + stmt->SetData(0, m_homebindMapId); + stmt->SetData(1, m_homebindAreaId); + stmt->SetData (2, m_homebindX); + stmt->SetData (3, m_homebindY); + stmt->SetData (4, m_homebindZ); + stmt->SetData(5, GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } @@ -4949,7 +4949,7 @@ bool Player::isBeingLoaded() const bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder const& holder) { //// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 - //QueryResult* result = CharacterDatabase.PQuery("SELECT guid, account, name, race, class, gender, level, xp, money, skin, face, hairStyle, hairColor, facialStyle, bankSlots, restState, playerFlags, " + //QueryResult* result = CharacterDatabase.Query("SELECT guid, account, name, race, class, gender, level, xp, money, skin, face, hairStyle, hairColor, facialStyle, bankSlots, restState, playerFlags, " // 17 18 19 20 21 22 23 24 25 26 27 28 29 //"position_x, position_y, position_z, map, orientation, taximask, cinematic, totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, " // 30 31 32 33 34 35 36 37 38 39 40 41 42 43 @@ -4959,7 +4959,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons // 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 //"health, power1, power2, power3, power4, power5, power6, power7, instance_id, talentGroupsCount, activeTalentGroup, exploredZones, equipmentCache, ammoId, knownTitles, // 70 71 72 - //"actionBars, grantableLevels, innTriggerId FROM characters WHERE guid = '%u'", guid); + //"actionBars, grantableLevels, innTriggerId FROM characters WHERE guid = '{}'", guid); PreparedQueryResult result = holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_FROM); if (!result) @@ -4970,7 +4970,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons Field* fields = result->Fetch(); - uint32 dbAccountId = fields[1].GetUInt32(); + uint32 dbAccountId = fields[1].Get<uint32>(); // check if the character's account in the db and the logged in account match. // player should be able to load/delete character only with correct account! @@ -4990,20 +4990,20 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons Object::_Create(guid, 0, HighGuid::Player); - m_name = fields[2].GetString(); + m_name = fields[2].Get<std::string>(); // check name limitations if (ObjectMgr::CheckPlayerName(m_name) != CHAR_NAME_SUCCESS || (AccountMgr::IsPlayerAccount(GetSession()->GetSecurity()) && sObjectMgr->IsReservedName(m_name))) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG); - stmt->setUInt16(0, uint16(AT_LOGIN_RENAME)); - stmt->setUInt32(1, guid); + stmt->SetData(0, uint16(AT_LOGIN_RENAME)); + stmt->SetData(1, guid); CharacterDatabase.Execute(stmt); return false; } - uint8 Gender = fields[5].GetUInt8(); + uint8 Gender = fields[5].Get<uint8>(); if (!IsValidGender(Gender)) { LOG_ERROR("entities.player", "Player (GUID: {}) has wrong gender ({}), can't be loaded.", guid, Gender); @@ -5012,25 +5012,25 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons // overwrite some data fields uint32 bytes0 = 0; - bytes0 |= fields[3].GetUInt8(); // race - bytes0 |= fields[4].GetUInt8() << 8; // class + bytes0 |= fields[3].Get<uint8>(); // race + bytes0 |= fields[4].Get<uint8>() << 8; // class bytes0 |= Gender << 16; // gender SetUInt32Value(UNIT_FIELD_BYTES_0, bytes0); - m_realRace = fields[3].GetUInt8(); // set real race - m_race = fields[3].GetUInt8(); // set real race + m_realRace = fields[3].Get<uint8>(); // set real race + m_race = fields[3].Get<uint8>(); // set real race - SetUInt32Value(UNIT_FIELD_LEVEL, fields[6].GetUInt8()); - SetUInt32Value(PLAYER_XP, fields[7].GetUInt32()); + SetUInt32Value(UNIT_FIELD_LEVEL, fields[6].Get<uint8>()); + SetUInt32Value(PLAYER_XP, fields[7].Get<uint32>()); - if (!_LoadIntoDataField(fields[66].GetString(), PLAYER_EXPLORED_ZONES_1, PLAYER_EXPLORED_ZONES_SIZE)) + if (!_LoadIntoDataField(fields[66].Get<std::string>(), PLAYER_EXPLORED_ZONES_1, PLAYER_EXPLORED_ZONES_SIZE)) { - LOG_WARN("entities.player.loading", "Player::LoadFromDB: Player ({}) has invalid exploredzones data ({}). Forcing partial load.", guid, fields[66].GetStringView()); + LOG_WARN("entities.player.loading", "Player::LoadFromDB: Player ({}) has invalid exploredzones data ({}). Forcing partial load.", guid, fields[66].Get<std::string_view>()); } - if (!_LoadIntoDataField(fields[69].GetString(), PLAYER__FIELD_KNOWN_TITLES, KNOWN_TITLES_SIZE * 2)) + if (!_LoadIntoDataField(fields[69].Get<std::string>(), PLAYER__FIELD_KNOWN_TITLES, KNOWN_TITLES_SIZE * 2)) { - LOG_WARN("entities.player.loading", "Player::LoadFromDB: Player ({}) has invalid knowntitles mask ({}). Forcing partial load.", guid, fields[69].GetStringView()); + LOG_WARN("entities.player.loading", "Player::LoadFromDB: Player ({}) has invalid knowntitles mask ({}). Forcing partial load.", guid, fields[69].Get<std::string_view>()); } SetObjectScale(1.0f); @@ -5039,29 +5039,29 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons // load achievements before anything else to prevent multiple gains for the same achievement/criteria on every loading (as loading does call UpdateAchievementCriteria) m_achievementMgr->LoadFromDB(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_ACHIEVEMENTS), holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_CRITERIA_PROGRESS)); - uint32 money = fields[8].GetUInt32(); + uint32 money = fields[8].Get<uint32>(); if (money > MAX_MONEY_AMOUNT) money = MAX_MONEY_AMOUNT; SetMoney(money); - SetByteValue(PLAYER_BYTES, 0, fields[9].GetUInt8()); - SetByteValue(PLAYER_BYTES, 1, fields[10].GetUInt8()); - SetByteValue(PLAYER_BYTES, 2, fields[11].GetUInt8()); - SetByteValue(PLAYER_BYTES, 3, fields[12].GetUInt8()); - SetByteValue(PLAYER_BYTES_2, 0, fields[13].GetUInt8()); - SetByteValue(PLAYER_BYTES_2, 2, fields[14].GetUInt8()); - SetByteValue(PLAYER_BYTES_2, 3, fields[15].GetUInt8()); - SetByteValue(PLAYER_BYTES_3, 0, fields[5].GetUInt8()); - SetByteValue(PLAYER_BYTES_3, 1, fields[54].GetUInt8()); - SetUInt32Value(PLAYER_FLAGS, fields[16].GetUInt32()); - SetInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, fields[53].GetUInt32()); + SetByteValue(PLAYER_BYTES, 0, fields[9].Get<uint8>()); + SetByteValue(PLAYER_BYTES, 1, fields[10].Get<uint8>()); + SetByteValue(PLAYER_BYTES, 2, fields[11].Get<uint8>()); + SetByteValue(PLAYER_BYTES, 3, fields[12].Get<uint8>()); + SetByteValue(PLAYER_BYTES_2, 0, fields[13].Get<uint8>()); + SetByteValue(PLAYER_BYTES_2, 2, fields[14].Get<uint8>()); + SetByteValue(PLAYER_BYTES_2, 3, fields[15].Get<uint8>()); + SetByteValue(PLAYER_BYTES_3, 0, fields[5].Get<uint8>()); + SetByteValue(PLAYER_BYTES_3, 1, fields[54].Get<uint8>()); + SetUInt32Value(PLAYER_FLAGS, fields[16].Get<uint32>()); + SetInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, fields[53].Get<uint32>()); - SetUInt64Value(PLAYER_FIELD_KNOWN_CURRENCIES, fields[52].GetUInt64()); + SetUInt64Value(PLAYER_FIELD_KNOWN_CURRENCIES, fields[52].Get<uint64>()); - SetUInt32Value(PLAYER_AMMO_ID, fields[68].GetUInt32()); + SetUInt32Value(PLAYER_AMMO_ID, fields[68].Get<uint32>()); // set which actionbars the client has active - DO NOT REMOVE EVER AGAIN (can be changed though, if it does change fieldwise) - SetByteValue(PLAYER_FIELD_BYTES, 2, fields[70].GetUInt8()); + SetByteValue(PLAYER_FIELD_BYTES, 2, fields[70].Get<uint8>()); InitDisplayIds(); @@ -5092,21 +5092,21 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons InitPrimaryProfessions(); // to max set before any spell loaded // init saved position, and fix it later if problematic - int32 transLowGUID = fields[35].GetInt32(); - Relocate(fields[17].GetFloat(), fields[18].GetFloat(), fields[19].GetFloat(), fields[21].GetFloat()); - uint32 mapId = fields[20].GetUInt16(); - uint32 instanceId = fields[63].GetUInt32(); + int32 transLowGUID = fields[35].Get<int32>(); + Relocate(fields[17].Get<float>(), fields[18].Get<float>(), fields[19].Get<float>(), fields[21].Get<float>()); + uint32 mapId = fields[20].Get<uint16>(); + uint32 instanceId = fields[63].Get<uint32>(); - uint32 dungeonDiff = fields[43].GetUInt8() & 0x0F; + uint32 dungeonDiff = fields[43].Get<uint8>() & 0x0F; if (dungeonDiff >= MAX_DUNGEON_DIFFICULTY) dungeonDiff = DUNGEON_DIFFICULTY_NORMAL; - uint32 raidDiff = (fields[43].GetUInt8() >> 4) & 0x0F; + uint32 raidDiff = (fields[43].Get<uint8>() >> 4) & 0x0F; if (raidDiff >= MAX_RAID_DIFFICULTY) raidDiff = RAID_DIFFICULTY_10MAN_NORMAL; SetDungeonDifficulty(Difficulty(dungeonDiff)); // may be changed in _LoadGroup SetRaidDifficulty(Difficulty(raidDiff)); // may be changed in _LoadGroup - std::string taxi_nodes = fields[42].GetString(); + std::string taxi_nodes = fields[42].Get<std::string>(); auto RelocateToHomebind = [this, &mapId, &instanceId]() { mapId = m_homebindMapId; instanceId = 0; Relocate(m_homebindX, m_homebindY, m_homebindZ); }; @@ -5114,14 +5114,14 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons _LoadArenaTeamInfo(); - SetArenaPoints(fields[44].GetUInt32()); + SetArenaPoints(fields[44].Get<uint32>()); - SetHonorPoints(fields[45].GetUInt32()); - SetUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION, fields[46].GetUInt32()); - SetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION, fields[47].GetUInt32()); - SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, fields[48].GetUInt32()); - SetUInt16Value(PLAYER_FIELD_KILLS, 0, fields[49].GetUInt16()); - SetUInt16Value(PLAYER_FIELD_KILLS, 1, fields[50].GetUInt16()); + SetHonorPoints(fields[45].Get<uint32>()); + SetUInt32Value(PLAYER_FIELD_TODAY_CONTRIBUTION, fields[46].Get<uint32>()); + SetUInt32Value(PLAYER_FIELD_YESTERDAY_CONTRIBUTION, fields[47].Get<uint32>()); + SetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS, fields[48].Get<uint32>()); + SetUInt16Value(PLAYER_FIELD_KILLS, 0, fields[49].Get<uint16>()); + SetUInt16Value(PLAYER_FIELD_KILLS, 1, fields[50].Get<uint16>()); _LoadInstanceTimeRestrictions(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_INSTANCE_LOCK_TIMES)); _LoadEntryPointData(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_ENTRY_POINT)); @@ -5218,7 +5218,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons if (m_transport) { - float x = fields[31].GetFloat(), y = fields[32].GetFloat(), z = fields[33].GetFloat(), o = fields[34].GetFloat(); + float x = fields[31].Get<float>(), y = fields[32].Get<float>(), z = fields[33].Get<float>(), o = fields[34].Get<float>(); m_movementInfo.transport.guid = m_transport->GetGUID(); m_movementInfo.transport.pos.Relocate(x, y, z, o); m_transport->CalculatePassengerPosition(x, y, z, &o); @@ -5338,7 +5338,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons SaveRecallPosition(); time_t now = GameTime::GetGameTime().count(); - time_t logoutTime = time_t(fields[27].GetUInt32()); + time_t logoutTime = time_t(fields[27].Get<uint32>()); // since last logout (in seconds) uint32 time_diff = uint32(now - logoutTime); //uint64 is excessive for a time_diff in seconds.. uint32 allows for 136~ year difference. @@ -5355,20 +5355,20 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons SetDrunkValue(newDrunkValue); - m_cinematic = fields[23].GetUInt8(); - m_Played_time[PLAYED_TIME_TOTAL] = fields[24].GetUInt32(); - m_Played_time[PLAYED_TIME_LEVEL] = fields[25].GetUInt32(); + m_cinematic = fields[23].Get<uint8>(); + m_Played_time[PLAYED_TIME_TOTAL] = fields[24].Get<uint32>(); + m_Played_time[PLAYED_TIME_LEVEL] = fields[25].Get<uint32>(); - m_resetTalentsCost = fields[29].GetUInt32(); - m_resetTalentsTime = time_t(fields[30].GetUInt32()); + m_resetTalentsCost = fields[29].Get<uint32>(); + m_resetTalentsTime = time_t(fields[30].Get<uint32>()); - m_taxi.LoadTaxiMask(fields[22].GetCString()); // must be before InitTaxiNodesForLevel + m_taxi.LoadTaxiMask(fields[22].Get<std::string_view>()); // must be before InitTaxiNodesForLevel - uint32 extraflags = fields[36].GetUInt16(); + uint32 extraflags = fields[36].Get<uint16>(); - _LoadPetStable(fields[37].GetUInt8(), holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_PET_SLOTS)); + _LoadPetStable(fields[37].Get<uint8>(), holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_PET_SLOTS)); - m_atLoginFlags = fields[38].GetUInt16(); + m_atLoginFlags = fields[38].Get<uint16>(); if (HasAtLoginFlag(AT_LOGIN_RENAME)) { @@ -5381,7 +5381,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons m_lastHonorUpdateTime = logoutTime; UpdateHonorFields(); - m_deathExpireTime = time_t(fields[41].GetUInt32()); + m_deathExpireTime = time_t(fields[41].Get<uint32>()); if (m_deathExpireTime > now + MAX_DEATH_COUNT * DEATH_EXPIRE_STEP) m_deathExpireTime = now + MAX_DEATH_COUNT * DEATH_EXPIRE_STEP - 1; @@ -5420,7 +5420,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons ClearInCombat(); // rest bonus can only be calculated after InitStatsForLevel() - _restBonus = fields[26].GetFloat(); + _restBonus = fields[26].Get<float>(); if (time_diff > 0) { @@ -5428,14 +5428,14 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons float bubble0 = 0.031f; //speed collect rest bonus in offline, in logout, in tavern, city (section/in hour) float bubble1 = 0.125f; - float bubble = fields[28].GetUInt8() > 0 + float bubble = fields[28].Get<uint8>() > 0 ? bubble1 * sWorld->getRate(RATE_REST_OFFLINE_IN_TAVERN_OR_CITY) : bubble0 * sWorld->getRate(RATE_REST_OFFLINE_IN_WILDERNESS); SetRestBonus(GetRestBonus() + time_diff * ((float)GetUInt32Value(PLAYER_NEXT_LEVEL_XP) / 72000)*bubble); } - uint32 innTriggerId = fields[72].GetUInt32(); + uint32 innTriggerId = fields[72].Get<uint32>(); if (innTriggerId) { SetRestFlag(REST_FLAG_IN_TAVERN, innTriggerId); @@ -5447,8 +5447,8 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons // apply original stats mods before spell loading or item equipment that call before equip _RemoveStatsMods() - m_specsCount = fields[64].GetUInt8(); - m_activeSpec = fields[65].GetUInt8(); + m_specsCount = fields[64].Get<uint8>(); + m_activeSpec = fields[65].Get<uint8>(); LearnDefaultSkills(); LearnCustomSpells(); @@ -5498,7 +5498,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons // check PLAYER_CHOSEN_TITLE compatibility with PLAYER__FIELD_KNOWN_TITLES // note: PLAYER__FIELD_KNOWN_TITLES updated at quest status loaded - uint32 curTitle = fields[51].GetUInt32(); + uint32 curTitle = fields[51].Get<uint32>(); if (curTitle && !HasTitle(curTitle)) curTitle = 0; @@ -5521,11 +5521,11 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons UpdateAllStats(); // restore remembered power/health values (but not more max values) - uint32 savedHealth = fields[55].GetUInt32(); + uint32 savedHealth = fields[55].Get<uint32>(); SetHealth(savedHealth > GetMaxHealth() ? GetMaxHealth() : savedHealth); for (uint8 i = 0; i < MAX_POWERS; ++i) { - uint32 savedPower = fields[56 + i].GetUInt32(); + uint32 savedPower = fields[56 + i].Get<uint32>(); SetPower(Powers(i), savedPower > GetMaxPower(Powers(i)) ? GetMaxPower(Powers(i)) : savedPower); } @@ -5593,7 +5593,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons } // RaF stuff. - m_grantableLevels = fields[71].GetUInt8(); + m_grantableLevels = fields[71].Get<uint8>(); if (GetSession()->IsARecruiter() || (GetSession()->GetRecruiterId() != 0)) SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_REFER_A_FRIEND); @@ -5706,9 +5706,9 @@ void Player::_LoadActions(PreparedQueryResult result) do { Field* fields = result->Fetch(); - uint8 button = fields[0].GetUInt8(); - uint32 action = fields[1].GetUInt32(); - uint8 type = fields[2].GetUInt8(); + uint8 button = fields[0].Get<uint8>(); + uint32 action = fields[1].Get<uint32>(); + uint8 type = fields[2].Get<uint8>(); if (ActionButton* ab = addActionButton(button, action, type)) ab->uState = ACTIONBUTTON_UNCHANGED; @@ -5728,9 +5728,9 @@ void Player::_LoadAuras(PreparedQueryResult result, uint32 timediff) LOG_DEBUG("entities.player.loading", "Loading auras for player {}", GetGUID().ToString()); /* 0 1 2 3 4 5 6 7 8 9 10 11 - QueryResult* result = CharacterDatabase.PQuery("SELECT casterGuid, itemGuid, spell, effectMask, recalculateMask, stackCount, amount0, amount1, amount2, base_amount0, base_amount1, base_amount2, + QueryResult* result = CharacterDatabase.Query("SELECT casterGuid, itemGuid, spell, effectMask, recalculateMask, stackCount, amount0, amount1, amount2, base_amount0, base_amount1, base_amount2, 12 13 14 - maxDuration, remainTime, remainCharges FROM character_aura WHERE guid = '%u'", GetGUID().GetCounter()); + maxDuration, remainTime, remainCharges FROM character_aura WHERE guid = '{}'", GetGUID().GetCounter()); */ if (result) @@ -5740,21 +5740,21 @@ void Player::_LoadAuras(PreparedQueryResult result, uint32 timediff) Field* fields = result->Fetch(); int32 damage[3]; int32 baseDamage[3]; - ObjectGuid caster_guid = ObjectGuid(fields[0].GetUInt64()); - ObjectGuid itemGuid = ObjectGuid(fields[1].GetUInt64()); - uint32 spellid = fields[2].GetUInt32(); - uint8 effmask = fields[3].GetUInt8(); - uint8 recalculatemask = fields[4].GetUInt8(); - uint8 stackcount = fields[5].GetUInt8(); - damage[0] = fields[6].GetInt32(); - damage[1] = fields[7].GetInt32(); - damage[2] = fields[8].GetInt32(); - baseDamage[0] = fields[9].GetInt32(); - baseDamage[1] = fields[10].GetInt32(); - baseDamage[2] = fields[11].GetInt32(); - int32 maxduration = fields[12].GetInt32(); - int32 remaintime = fields[13].GetInt32(); - uint8 remaincharges = fields[14].GetUInt8(); + ObjectGuid caster_guid = ObjectGuid(fields[0].Get<uint64>()); + ObjectGuid itemGuid = ObjectGuid(fields[1].Get<uint64>()); + uint32 spellid = fields[2].Get<uint32>(); + uint8 effmask = fields[3].Get<uint8>(); + uint8 recalculatemask = fields[4].Get<uint8>(); + uint8 stackcount = fields[5].Get<uint8>(); + damage[0] = fields[6].Get<int32>(); + damage[1] = fields[7].Get<int32>(); + damage[2] = fields[8].Get<int32>(); + baseDamage[0] = fields[9].Get<int32>(); + baseDamage[1] = fields[10].Get<int32>(); + baseDamage[2] = fields[11].Get<int32>(); + int32 maxduration = fields[12].Get<int32>(); + int32 remaintime = fields[13].Get<int32>(); + uint8 remaincharges = fields[14].Get<uint8>(); SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellid); if (!spellInfo) @@ -5848,7 +5848,7 @@ void Player::LoadCorpse(PreparedQueryResult result) if (result && !HasAtLoginFlag(AT_LOGIN_RESURRECT)) { Field* fields = result->Fetch(); - _corpseLocation.WorldRelocate(fields[0].GetUInt16(), fields[1].GetFloat(), fields[2].GetFloat(), fields[3].GetFloat(), fields[4].GetFloat()); + _corpseLocation.WorldRelocate(fields[0].Get<uint16>(), fields[1].Get<float>(), fields[2].Get<float>(), fields[3].Get<float>(), fields[4].Get<float>()); ApplyModFlag(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTE_RELEASE_TIMER, !sMapStore.LookupEntry(_corpseLocation.GetMapId())->Instanceable()); } else @@ -5860,7 +5860,7 @@ void Player::LoadCorpse(PreparedQueryResult result) void Player::_LoadInventory(PreparedQueryResult result, uint32 timeDiff) { - //QueryResult* result = CharacterDatabase.PQuery("SELECT data, text, bag, slot, item, item_template FROM character_inventory JOIN item_instance ON character_inventory.item = item_instance.guid WHERE character_inventory.guid = '%u' ORDER BY bag, slot", GetGUID().GetCounter()); + //QueryResult* result = CharacterDatabase.Query("SELECT data, text, bag, slot, item, item_template FROM character_inventory JOIN item_instance ON character_inventory.item = item_instance.guid WHERE character_inventory.guid = '{}' ORDER BY bag, slot", GetGUID().GetCounter()); //NOTE: the "order by `bag`" is important because it makes sure //the bagMap is filled before items in the bags are loaded //NOTE2: the "order by `slot`" is needed because mainhand weapons are (wrongly?) @@ -5882,8 +5882,8 @@ void Player::_LoadInventory(PreparedQueryResult result, uint32 timeDiff) Field* fields = result->Fetch(); if (Item* item = _LoadItem(trans, zoneId, timeDiff, fields)) { - ObjectGuid::LowType bagGuid = fields[11].GetUInt32(); - uint8 slot = fields[12].GetUInt8(); + ObjectGuid::LowType bagGuid = fields[11].Get<uint32>(); + uint8 slot = fields[12].Get<uint8>(); uint8 err = EQUIP_ERR_OK; // Item is not in bag @@ -5993,8 +5993,8 @@ void Player::_LoadInventory(PreparedQueryResult result, uint32 timeDiff) Item* Player::_LoadItem(CharacterDatabaseTransaction trans, uint32 zoneId, uint32 timeDiff, Field* fields) { Item* item = nullptr; - ObjectGuid::LowType itemGuid = fields[13].GetUInt32(); - uint32 itemEntry = fields[14].GetUInt32(); + ObjectGuid::LowType itemGuid = fields[13].Get<uint32>(); + uint32 itemEntry = fields[14].Get<uint32>(); if (ItemTemplate const* proto = sObjectMgr->GetItemTemplate(itemEntry)) { bool remove = false; @@ -6024,7 +6024,7 @@ Item* Player::_LoadItem(CharacterDatabaseTransaction trans, uint32 zoneId, uint3 LOG_DEBUG("entities.player.loading", "Player::_LoadInventory: player ({}, name: '{}') has item ({}, entry: {}) with expired refund time ({}). Deleting refund data and removing refundable flag.", GetGUID().ToString(), GetName(), item->GetGUID().ToString(), item->GetEntry(), item->GetPlayedTime()); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_REFUND_INSTANCE); - stmt->setUInt32(0, item->GetGUID().GetCounter()); + stmt->SetData(0, item->GetGUID().GetCounter()); trans->Append(stmt); item->RemoveFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_REFUNDABLE); @@ -6033,13 +6033,13 @@ Item* Player::_LoadItem(CharacterDatabaseTransaction trans, uint32 zoneId, uint3 { // xinef: sync query stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ITEM_REFUNDS); - stmt->setUInt32(0, item->GetGUID().GetCounter()); - stmt->setUInt32(1, GetGUID().GetCounter()); + stmt->SetData(0, item->GetGUID().GetCounter()); + stmt->SetData(1, GetGUID().GetCounter()); if (PreparedQueryResult result = CharacterDatabase.Query(stmt)) { - item->SetRefundRecipient((*result)[0].GetUInt32()); - item->SetPaidMoney((*result)[1].GetUInt32()); - item->SetPaidExtendedCost((*result)[2].GetUInt16()); + item->SetRefundRecipient((*result)[0].Get<uint32>()); + item->SetPaidMoney((*result)[1].Get<uint32>()); + item->SetPaidExtendedCost((*result)[2].Get<uint16>()); AddRefundReference(item->GetGUID()); } else @@ -6053,12 +6053,12 @@ Item* Player::_LoadItem(CharacterDatabaseTransaction trans, uint32 zoneId, uint3 else if (item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_BOP_TRADEABLE)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ITEM_BOP_TRADE); - stmt->setUInt32(0, item->GetGUID().GetCounter()); + stmt->SetData(0, item->GetGUID().GetCounter()); if (PreparedQueryResult result = CharacterDatabase.Query(stmt)) { AllowedLooterSet looters; - for (std::string_view guidStr : Acore::Tokenize((*result)[0].GetStringView(), ' ', false)) + for (std::string_view guidStr : Acore::Tokenize((*result)[0].Get<std::string_view>(), ' ', false)) { if (Optional<ObjectGuid::LowType> guid = Acore::StringTo<ObjectGuid::LowType>(guidStr)) { @@ -6128,8 +6128,8 @@ Item* Player::_LoadItem(CharacterDatabaseTransaction trans, uint32 zoneId, uint3 // load mailed item which should receive current player Item* Player::_LoadMailedItem(ObjectGuid const& playerGuid, Player* player, uint32 mailId, Mail* mail, Field* fields) { - ObjectGuid::LowType itemGuid = fields[11].GetUInt32(); - uint32 itemEntry = fields[12].GetUInt32(); + ObjectGuid::LowType itemGuid = fields[11].Get<uint32>(); + uint32 itemEntry = fields[12].Get<uint32>(); ItemTemplate const* proto = sObjectMgr->GetItemTemplate(itemEntry); if (!proto) @@ -6140,7 +6140,7 @@ Item* Player::_LoadMailedItem(ObjectGuid const& playerGuid, Player* player, uint CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INVALID_MAIL_ITEM); - stmt->setUInt32(0, itemGuid); + stmt->SetData(0, itemGuid); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -6149,13 +6149,13 @@ Item* Player::_LoadMailedItem(ObjectGuid const& playerGuid, Player* player, uint Item* item = NewItemOrBag(proto); - ObjectGuid ownerGuid = fields[13].GetUInt32() ? ObjectGuid::Create<HighGuid::Player>(fields[13].GetUInt32()) : ObjectGuid::Empty; + ObjectGuid ownerGuid = fields[13].Get<uint32>() ? ObjectGuid::Create<HighGuid::Player>(fields[13].Get<uint32>()) : ObjectGuid::Empty; if (!item->LoadFromDB(itemGuid, ownerGuid, fields, itemEntry)) { LOG_ERROR("entities.player", "Player::_LoadMailedItems: Item (GUID: {}) in mail ({}) doesn't exist, deleted from mail.", itemGuid, mailId); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM); - stmt->setUInt32(0, itemGuid); + stmt->SetData(0, itemGuid); CharacterDatabase.Execute(stmt); item->FSetState(ITEM_REMOVED); @@ -6195,20 +6195,20 @@ void Player::_LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mail Field* fields = mailsResult->Fetch(); Mail* m = new Mail; - m->messageID = fields[0].GetUInt32(); - m->messageType = fields[1].GetUInt8(); - m->sender = fields[2].GetUInt32(); - m->receiver = fields[3].GetUInt32(); - m->subject = fields[4].GetString(); - m->body = fields[5].GetString(); - m->expire_time = time_t(fields[6].GetUInt32()); - m->deliver_time = time_t(fields[7].GetUInt32()); - m->money = fields[8].GetUInt32(); - m->COD = fields[9].GetUInt32(); - m->checked = fields[10].GetUInt8(); - m->stationery = fields[11].GetUInt8(); - m->mailTemplateId = fields[12].GetInt16(); - m->auctionId = fields[13].GetInt32(); + m->messageID = fields[0].Get<uint32>(); + m->messageType = fields[1].Get<uint8>(); + m->sender = fields[2].Get<uint32>(); + m->receiver = fields[3].Get<uint32>(); + m->subject = fields[4].Get<std::string>(); + m->body = fields[5].Get<std::string>(); + m->expire_time = time_t(fields[6].Get<uint32>()); + m->deliver_time = time_t(fields[7].Get<uint32>()); + m->money = fields[8].Get<uint32>(); + m->COD = fields[9].Get<uint32>(); + m->checked = fields[10].Get<uint8>(); + m->stationery = fields[11].Get<uint8>(); + m->mailTemplateId = fields[12].Get<int16>(); + m->auctionId = fields[13].Get<int32>(); if (m->mailTemplateId && !sMailTemplateStore.LookupEntry(m->mailTemplateId)) { @@ -6225,7 +6225,7 @@ void Player::_LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mail if (pendingAuctions.count(auctionId)) { CharacterDatabasePreparedStatement* stmt2 = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID); - stmt2->setUInt32(0, m->messageID); + stmt2->SetData(0, m->messageID); pendingAuctionsTrans->Append(stmt2); if (unReadMails > 0 && (m->checked & MAIL_CHECK_MASK_READ) == 0) @@ -6250,7 +6250,7 @@ void Player::_LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mail Mail* mail = itr.second; CharacterDatabasePreparedStatement* stmt2 = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID); - stmt2->setUInt32(0, mail->messageID); + stmt2->SetData(0, mail->messageID); pendingAuctionsTrans->Append(stmt2); if (unReadMails > 0 && (mail->checked & MAIL_CHECK_MASK_READ) == 0) @@ -6274,7 +6274,7 @@ void Player::_LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mail do { Field* fields = mailItemsResult->Fetch(); - uint32 mailId = fields[14].GetUInt32(); + uint32 mailId = fields[14].Get<uint32>(); _LoadMailedItem(GetGUID(), this, mailId, mailById[mailId], fields); } while (mailItemsResult->NextRow()); } @@ -6300,9 +6300,9 @@ void Player::_LoadQuestStatus(PreparedQueryResult result) uint16 slot = 0; //// 0 1 2 3 4 5 6 7 8 9 10 - //QueryResult* result = CharacterDatabase.PQuery("SELECT quest, status, explored, timer, mobcount1, mobcount2, mobcount3, mobcount4, itemcount1, itemcount2, itemcount3, + //QueryResult* result = CharacterDatabase.Query("SELECT quest, status, explored, timer, mobcount1, mobcount2, mobcount3, mobcount4, itemcount1, itemcount2, itemcount3, // 11 12 13 14 - // itemcount4, itemcount5, itemcount6, playercount FROM character_queststatus WHERE guid = '%u'", GetGUID().GetCounter()); + // itemcount4, itemcount5, itemcount6, playercount FROM character_queststatus WHERE guid = '{}'", GetGUID().GetCounter()); if (result) { @@ -6310,7 +6310,7 @@ void Player::_LoadQuestStatus(PreparedQueryResult result) { Field* fields = result->Fetch(); - uint32 quest_id = fields[0].GetUInt32(); + uint32 quest_id = fields[0].Get<uint32>(); // used to be new, no delete? Quest const* quest = sObjectMgr->GetQuestTemplate(quest_id); if (quest) @@ -6318,7 +6318,7 @@ void Player::_LoadQuestStatus(PreparedQueryResult result) // find or create QuestStatusData& questStatusData = m_QuestStatus[quest_id]; - uint8 qstatus = fields[1].GetUInt8(); + uint8 qstatus = fields[1].Get<uint8>(); if (qstatus < MAX_QUEST_STATUS) questStatusData.Status = QuestStatus(qstatus); else @@ -6328,9 +6328,9 @@ void Player::_LoadQuestStatus(PreparedQueryResult result) GetName(), GetGUID().ToString(), quest_id, qstatus); } - questStatusData.Explored = (fields[2].GetUInt8() > 0); + questStatusData.Explored = (fields[2].Get<uint8>() > 0); - time_t quest_time = time_t(fields[3].GetUInt32()); + time_t quest_time = time_t(fields[3].Get<uint32>()); if (quest->HasSpecialFlag(QUEST_SPECIAL_FLAGS_TIMED) && !GetQuestRewardStatus(quest_id)) { @@ -6345,12 +6345,12 @@ void Player::_LoadQuestStatus(PreparedQueryResult result) quest_time = 0; for (uint32 i = 0; i < QUEST_OBJECTIVES_COUNT; ++i) - questStatusData.CreatureOrGOCount[i] = fields[4 + i].GetUInt16(); + questStatusData.CreatureOrGOCount[i] = fields[4 + i].Get<uint16>(); for (uint32 i = 0; i < QUEST_ITEM_OBJECTIVES_COUNT; ++i) - questStatusData.ItemCount[i] = fields[8 + i].GetUInt16(); + questStatusData.ItemCount[i] = fields[8 + i].Get<uint16>(); - questStatusData.PlayerCount = fields[14].GetUInt16(); + questStatusData.PlayerCount = fields[14].Get<uint16>(); // add to quest log if (slot < MAX_QUEST_LOG_SIZE && questStatusData.Status != QUEST_STATUS_NONE) @@ -6393,7 +6393,7 @@ void Player::_LoadQuestStatusRewarded(PreparedQueryResult result) { Field* fields = result->Fetch(); - uint32 quest_id = fields[0].GetUInt32(); + uint32 quest_id = fields[0].Get<uint32>(); // used to be new, no delete? Quest const* quest = sObjectMgr->GetQuestTemplate(quest_id); if (quest) @@ -6424,7 +6424,7 @@ void Player::_LoadDailyQuestStatus(PreparedQueryResult result) m_DFQuests.clear(); - //QueryResult* result = CharacterDatabase.PQuery("SELECT quest, time FROM character_queststatus_daily WHERE guid = '%u'", GetGUID().GetCounter()); + //QueryResult* result = CharacterDatabase.Query("SELECT quest, time FROM character_queststatus_daily WHERE guid = '{}'", GetGUID().GetCounter()); if (result) { @@ -6433,12 +6433,12 @@ void Player::_LoadDailyQuestStatus(PreparedQueryResult result) do { Field* fields = result->Fetch(); - if (Quest const* qQuest = sObjectMgr->GetQuestTemplate(fields[0].GetUInt32())) + if (Quest const* qQuest = sObjectMgr->GetQuestTemplate(fields[0].Get<uint32>())) { if (qQuest->IsDFQuest()) { m_DFQuests.insert(qQuest->GetQuestId()); - m_lastDailyQuestTime = time_t(fields[1].GetUInt32()); + m_lastDailyQuestTime = time_t(fields[1].Get<uint32>()); continue; } } @@ -6449,10 +6449,10 @@ void Player::_LoadDailyQuestStatus(PreparedQueryResult result) break; } - uint32 quest_id = fields[0].GetUInt32(); + uint32 quest_id = fields[0].Get<uint32>(); // save _any_ from daily quest times (it must be after last reset anyway) - m_lastDailyQuestTime = time_t(fields[1].GetUInt32()); + m_lastDailyQuestTime = time_t(fields[1].Get<uint32>()); Quest const* quest = sObjectMgr->GetQuestTemplate(quest_id); if (!quest) @@ -6477,7 +6477,7 @@ void Player::_LoadWeeklyQuestStatus(PreparedQueryResult result) do { Field* fields = result->Fetch(); - uint32 quest_id = fields[0].GetUInt32(); + uint32 quest_id = fields[0].Get<uint32>(); Quest const* quest = sObjectMgr->GetQuestTemplate(quest_id); if (!quest) continue; @@ -6499,8 +6499,8 @@ void Player::_LoadSeasonalQuestStatus(PreparedQueryResult result) do { Field* fields = result->Fetch(); - uint32 quest_id = fields[0].GetUInt32(); - uint32 event_id = fields[1].GetUInt32(); + uint32 quest_id = fields[0].Get<uint32>(); + uint32 event_id = fields[1].Get<uint32>(); Quest const* quest = sObjectMgr->GetQuestTemplate(quest_id); if (!quest) continue; @@ -6522,7 +6522,7 @@ void Player::_LoadMonthlyQuestStatus(PreparedQueryResult result) do { Field* fields = result->Fetch(); - uint32 quest_id = fields[0].GetUInt32(); + uint32 quest_id = fields[0].Get<uint32>(); Quest const* quest = sObjectMgr->GetQuestTemplate(quest_id); if (!quest) continue; @@ -6537,13 +6537,13 @@ void Player::_LoadMonthlyQuestStatus(PreparedQueryResult result) void Player::_LoadSpells(PreparedQueryResult result) { - //QueryResult* result = CharacterDatabase.PQuery("SELECT spell, specMask FROM character_spell WHERE guid = '%u'", GetGUID().GetCounter()); + //QueryResult* result = CharacterDatabase.Query("SELECT spell, specMask FROM character_spell WHERE guid = '{}'", GetGUID().GetCounter()); if (result) { do // xinef: checked - addSpell((*result)[0].GetUInt32(), (*result)[1].GetUInt8(), true); + addSpell((*result)[0].Get<uint32>(), (*result)[1].Get<uint8>(), true); while (result->NextRow()); } } @@ -7059,11 +7059,11 @@ bool Player::_LoadHomeBind(PreparedQueryResult result) { Field* fields = result->Fetch(); - m_homebindMapId = fields[0].GetUInt16(); - m_homebindAreaId = fields[1].GetUInt16(); - m_homebindX = fields[2].GetFloat(); - m_homebindY = fields[3].GetFloat(); - m_homebindZ = fields[4].GetFloat(); + m_homebindMapId = fields[0].Get<uint16>(); + m_homebindAreaId = fields[1].Get<uint16>(); + m_homebindX = fields[2].Get<float>(); + m_homebindY = fields[3].Get<float>(); + m_homebindZ = fields[4].Get<float>(); MapEntry const* bindMapEntry = sMapStore.LookupEntry(m_homebindMapId); @@ -7074,7 +7074,7 @@ bool Player::_LoadHomeBind(PreparedQueryResult result) else { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_HOMEBIND); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } } @@ -7088,12 +7088,12 @@ bool Player::_LoadHomeBind(PreparedQueryResult result) m_homebindZ = info->positionZ; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PLAYER_HOMEBIND); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt16(1, m_homebindMapId); - stmt->setUInt16(2, m_homebindAreaId); - stmt->setFloat (3, m_homebindX); - stmt->setFloat (4, m_homebindY); - stmt->setFloat (5, m_homebindZ); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, m_homebindMapId); + stmt->SetData(2, m_homebindAreaId); + stmt->SetData (3, m_homebindX); + stmt->SetData (4, m_homebindY); + stmt->SetData (5, m_homebindZ); CharacterDatabase.Execute(stmt); } @@ -7186,8 +7186,8 @@ void Player::SaveInventoryAndGoldToDB(CharacterDatabaseTransaction trans) void Player::SaveGoldToDB(CharacterDatabaseTransaction trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UDP_CHAR_MONEY); - stmt->setUInt32(0, GetMoney()); - stmt->setUInt32(1, GetGUID().GetCounter()); + stmt->SetData(0, GetMoney()); + stmt->SetData(1, GetGUID().GetCounter()); trans->Append(stmt); } @@ -7201,11 +7201,11 @@ void Player::_SaveActions(CharacterDatabaseTransaction trans) { case ACTIONBUTTON_NEW: stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_ACTION); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt8(1, m_activeSpec); - stmt->setUInt8(2, itr->first); - stmt->setUInt32(3, itr->second.GetAction()); - stmt->setUInt8(4, uint8(itr->second.GetType())); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, m_activeSpec); + stmt->SetData(2, itr->first); + stmt->SetData(3, itr->second.GetAction()); + stmt->SetData(4, uint8(itr->second.GetType())); trans->Append(stmt); itr->second.uState = ACTIONBUTTON_UNCHANGED; @@ -7213,11 +7213,11 @@ void Player::_SaveActions(CharacterDatabaseTransaction trans) break; case ACTIONBUTTON_CHANGED: stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_ACTION); - stmt->setUInt32(0, itr->second.GetAction()); - stmt->setUInt8(1, uint8(itr->second.GetType())); - stmt->setUInt32(2, GetGUID().GetCounter()); - stmt->setUInt8(3, itr->first); - stmt->setUInt8(4, m_activeSpec); + stmt->SetData(0, itr->second.GetAction()); + stmt->SetData(1, uint8(itr->second.GetType())); + stmt->SetData(2, GetGUID().GetCounter()); + stmt->SetData(3, itr->first); + stmt->SetData(4, m_activeSpec); trans->Append(stmt); itr->second.uState = ACTIONBUTTON_UNCHANGED; @@ -7225,9 +7225,9 @@ void Player::_SaveActions(CharacterDatabaseTransaction trans) break; case ACTIONBUTTON_DELETED: stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACTION_BY_BUTTON_SPEC); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt8(1, itr->first); - stmt->setUInt8(2, m_activeSpec); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, itr->first); + stmt->SetData(2, m_activeSpec); trans->Append(stmt); m_actionButtons.erase(itr++); @@ -7242,7 +7242,7 @@ void Player::_SaveActions(CharacterDatabaseTransaction trans) void Player::_SaveAuras(CharacterDatabaseTransaction trans, bool logout) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_AURA); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); trans->Append(stmt); for (AuraMap::const_iterator itr = m_ownedAuras.begin(); itr != m_ownedAuras.end(); ++itr) @@ -7277,22 +7277,22 @@ void Player::_SaveAuras(CharacterDatabaseTransaction trans, bool logout) uint8 index = 0; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_AURA); - stmt->setUInt32(index++, GetGUID().GetCounter()); - stmt->setUInt64(index++, itr->second->GetCasterGUID().GetRawValue()); - stmt->setUInt64(index++, itr->second->GetCastItemGUID().GetRawValue()); - stmt->setUInt32(index++, itr->second->GetId()); - stmt->setUInt8(index++, effMask); - stmt->setUInt8(index++, recalculateMask); - stmt->setUInt8(index++, itr->second->GetStackAmount()); - stmt->setInt32(index++, damage[0]); - stmt->setInt32(index++, damage[1]); - stmt->setInt32(index++, damage[2]); - stmt->setInt32(index++, baseDamage[0]); - stmt->setInt32(index++, baseDamage[1]); - stmt->setInt32(index++, baseDamage[2]); - stmt->setInt32(index++, itr->second->GetMaxDuration()); - stmt->setInt32(index++, itr->second->GetDuration()); - stmt->setUInt8(index, itr->second->GetCharges()); + stmt->SetData(index++, GetGUID().GetCounter()); + stmt->SetData(index++, itr->second->GetCasterGUID().GetRawValue()); + stmt->SetData(index++, itr->second->GetCastItemGUID().GetRawValue()); + stmt->SetData(index++, itr->second->GetId()); + stmt->SetData(index++, effMask); + stmt->SetData(index++, recalculateMask); + stmt->SetData(index++, itr->second->GetStackAmount()); + stmt->SetData(index++, damage[0]); + stmt->SetData(index++, damage[1]); + stmt->SetData(index++, damage[2]); + stmt->SetData(index++, baseDamage[0]); + stmt->SetData(index++, baseDamage[1]); + stmt->SetData(index++, baseDamage[2]); + stmt->SetData(index++, itr->second->GetMaxDuration()); + stmt->SetData(index++, itr->second->GetDuration()); + stmt->SetData(index, itr->second->GetCharges()); trans->Append(stmt); } } @@ -7317,11 +7317,11 @@ void Player::_SaveInventory(CharacterDatabaseTransaction trans) } stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INVENTORY_BY_ITEM); - stmt->setUInt32(0, item->GetGUID().GetCounter()); + stmt->SetData(0, item->GetGUID().GetCounter()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE); - stmt->setUInt32(0, item->GetGUID().GetCounter()); + stmt->SetData(0, item->GetGUID().GetCounter()); trans->Append(stmt); m_items[i]->FSetState(ITEM_NEW); @@ -7384,9 +7384,9 @@ void Player::_SaveInventory(CharacterDatabaseTransaction trans) lowGuid, GetName(), item->GetBagSlot(), item->GetSlot(), item->GetGUID().ToString(), (int32)item->GetState()); // according to the test that was just performed nothing should be in this slot, delete stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INVENTORY_BY_BAG_SLOT); - stmt->setUInt32(0, bagTestGUID); - stmt->setUInt8(1, item->GetSlot()); - stmt->setUInt32(2, lowGuid); + stmt->SetData(0, bagTestGUID); + stmt->SetData(1, item->GetSlot()); + stmt->SetData(2, lowGuid); trans->Append(stmt); RemoveTradeableItem(item); // pussywizard @@ -7416,15 +7416,15 @@ void Player::_SaveInventory(CharacterDatabaseTransaction trans) case ITEM_NEW: case ITEM_CHANGED: stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_INVENTORY_ITEM); - stmt->setUInt32(0, lowGuid); - stmt->setUInt32(1, bag_guid); - stmt->setUInt8 (2, item->GetSlot()); - stmt->setUInt32(3, item->GetGUID().GetCounter()); + stmt->SetData(0, lowGuid); + stmt->SetData(1, bag_guid); + stmt->SetData (2, item->GetSlot()); + stmt->SetData(3, item->GetGUID().GetCounter()); trans->Append(stmt); break; case ITEM_REMOVED: stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INVENTORY_BY_ITEM); - stmt->setUInt32(0, item->GetGUID().GetCounter()); + stmt->SetData(0, item->GetGUID().GetCounter()); trans->Append(stmt); case ITEM_UNCHANGED: break; @@ -7450,13 +7450,13 @@ void Player::_SaveMail(CharacterDatabaseTransaction trans) if (m->state == MAIL_STATE_CHANGED) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_MAIL); - stmt->setUInt8(0, uint8(m->HasItems() ? 1 : 0)); - stmt->setUInt32(1, uint32(m->expire_time)); - stmt->setUInt32(2, uint32(m->deliver_time)); - stmt->setUInt32(3, m->money); - stmt->setUInt32(4, m->COD); - stmt->setUInt8(5, uint8(m->checked)); - stmt->setUInt32(6, m->messageID); + stmt->SetData(0, uint8(m->HasItems() ? 1 : 0)); + stmt->SetData(1, uint32(m->expire_time)); + stmt->SetData(2, uint32(m->deliver_time)); + stmt->SetData(3, m->money); + stmt->SetData(4, m->COD); + stmt->SetData(5, uint8(m->checked)); + stmt->SetData(6, m->messageID); trans->Append(stmt); @@ -7465,7 +7465,7 @@ void Player::_SaveMail(CharacterDatabaseTransaction trans) for (std::vector<uint32>::iterator itr2 = m->removedItems.begin(); itr2 != m->removedItems.end(); ++itr2) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM); - stmt->setUInt32(0, *itr2); + stmt->SetData(0, *itr2); trans->Append(stmt); } m->removedItems.clear(); @@ -7479,16 +7479,16 @@ void Player::_SaveMail(CharacterDatabaseTransaction trans) for (MailItemInfoVec::iterator itr2 = m->items.begin(); itr2 != m->items.end(); ++itr2) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE); - stmt->setUInt32(0, itr2->item_guid); + stmt->SetData(0, itr2->item_guid); trans->Append(stmt); } } stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID); - stmt->setUInt32(0, m->messageID); + stmt->SetData(0, m->messageID); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID); - stmt->setUInt32(0, m->messageID); + stmt->SetData(0, m->messageID); trans->Append(stmt); } } @@ -7532,27 +7532,27 @@ void Player::_SaveQuestStatus(CharacterDatabaseTransaction trans) uint8 index = 0; stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_CHAR_QUESTSTATUS); - stmt->setUInt32(index++, GetGUID().GetCounter()); - stmt->setUInt32(index++, statusItr->first); - stmt->setUInt8(index++, uint8(statusItr->second.Status)); - stmt->setBool(index++, statusItr->second.Explored); - stmt->setUInt32(index++, uint32(statusItr->second.Timer / IN_MILLISECONDS + GameTime::GetGameTime().count())); + stmt->SetData(index++, GetGUID().GetCounter()); + stmt->SetData(index++, statusItr->first); + stmt->SetData(index++, uint8(statusItr->second.Status)); + stmt->SetData(index++, statusItr->second.Explored); + stmt->SetData(index++, uint32(statusItr->second.Timer / IN_MILLISECONDS + GameTime::GetGameTime().count())); for (uint8 i = 0; i < QUEST_OBJECTIVES_COUNT; i++) - stmt->setUInt16(index++, statusItr->second.CreatureOrGOCount[i]); + stmt->SetData(index++, statusItr->second.CreatureOrGOCount[i]); for (uint8 i = 0; i < QUEST_ITEM_OBJECTIVES_COUNT; i++) - stmt->setUInt16(index++, statusItr->second.ItemCount[i]); + stmt->SetData(index++, statusItr->second.ItemCount[i]); - stmt->setUInt16(index, statusItr->second.PlayerCount); + stmt->SetData(index, statusItr->second.PlayerCount); trans->Append(stmt); } } else { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_QUESTSTATUS_BY_QUEST); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, saveItr->first); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, saveItr->first); trans->Append(stmt); } } @@ -7566,8 +7566,8 @@ void Player::_SaveQuestStatus(CharacterDatabaseTransaction trans) else // xinef: what the is this? quest can be removed by spelleffect if (!keepAbandoned) stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_QUESTSTATUS_REWARDED_BY_QUEST); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, saveItr->first); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, saveItr->first); trans->Append(stmt); } @@ -7588,16 +7588,16 @@ void Player::_SaveDailyQuestStatus(CharacterDatabaseTransaction trans) // we don't need transactions here. CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_STATUS_DAILY_CHAR); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); trans->Append(stmt); for (uint32 quest_daily_idx = 0; quest_daily_idx < PLAYER_MAX_DAILY_QUESTS; ++quest_daily_idx) { if (GetUInt32Value(PLAYER_FIELD_DAILY_QUESTS_1 + quest_daily_idx)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_DAILYQUESTSTATUS); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, GetUInt32Value(PLAYER_FIELD_DAILY_QUESTS_1 + quest_daily_idx)); - stmt->setUInt64(2, uint64(m_lastDailyQuestTime)); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, GetUInt32Value(PLAYER_FIELD_DAILY_QUESTS_1 + quest_daily_idx)); + stmt->SetData(2, uint64(m_lastDailyQuestTime)); trans->Append(stmt); } } @@ -7607,9 +7607,9 @@ void Player::_SaveDailyQuestStatus(CharacterDatabaseTransaction trans) for (DFQuestsDoneList::iterator itr = m_DFQuests.begin(); itr != m_DFQuests.end(); ++itr) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_DAILYQUESTSTATUS); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, (*itr)); - stmt->setUInt64(2, uint64(m_lastDailyQuestTime)); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, (*itr)); + stmt->SetData(2, uint64(m_lastDailyQuestTime)); trans->Append(stmt); } } @@ -7622,7 +7622,7 @@ void Player::_SaveWeeklyQuestStatus(CharacterDatabaseTransaction trans) // we don't need transactions here. CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_STATUS_WEEKLY_CHAR); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); trans->Append(stmt); for (QuestSet::const_iterator iter = m_weeklyquests.begin(); iter != m_weeklyquests.end(); ++iter) @@ -7630,8 +7630,8 @@ void Player::_SaveWeeklyQuestStatus(CharacterDatabaseTransaction trans) uint32 quest_id = *iter; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_WEEKLYQUESTSTATUS); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, quest_id); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, quest_id); trans->Append(stmt); } @@ -7647,7 +7647,7 @@ void Player::_SaveSeasonalQuestStatus(CharacterDatabaseTransaction trans) // we don't need transactions here. CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_STATUS_SEASONAL_CHAR); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); trans->Append(stmt); m_SeasonalQuestChanged = false; @@ -7666,9 +7666,7 @@ void Player::_SaveSeasonalQuestStatus(CharacterDatabaseTransaction trans) uint32 questId = *itr; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_SEASONALQUESTSTATUS); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, questId); - stmt->setUInt32(2, eventId); + stmt->SetArguments(GetGUID().GetCounter(), questId, eventId); trans->Append(stmt); } } @@ -7681,15 +7679,15 @@ void Player::_SaveMonthlyQuestStatus(CharacterDatabaseTransaction trans) // we don't need transactions here. CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_STATUS_MONTHLY_CHAR); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); trans->Append(stmt); for (QuestSet::const_iterator iter = m_monthlyquests.begin(); iter != m_monthlyquests.end(); ++iter) { uint32 quest_id = *iter; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_MONTHLYQUESTSTATUS); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, quest_id); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, quest_id); trans->Append(stmt); } @@ -7711,8 +7709,8 @@ void Player::_SaveSkills(CharacterDatabaseTransaction trans) if (itr->second.uState == SKILL_DELETED) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SKILL_BY_SKILL); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, itr->first); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, itr->first); trans->Append(stmt); mSkillStatus.erase(itr++); @@ -7727,19 +7725,19 @@ void Player::_SaveSkills(CharacterDatabaseTransaction trans) { case SKILL_NEW: stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_SKILLS); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt16(1, uint16(itr->first)); - stmt->setUInt16(2, value); - stmt->setUInt16(3, max); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, uint16(itr->first)); + stmt->SetData(2, value); + stmt->SetData(3, max); trans->Append(stmt); break; case SKILL_CHANGED: stmt = CharacterDatabase.GetPreparedStatement(CHAR_UDP_CHAR_SKILLS); - stmt->setUInt16(0, value); - stmt->setUInt16(1, max); - stmt->setUInt32(2, GetGUID().GetCounter()); - stmt->setUInt16(3, uint16(itr->first)); + stmt->SetData(0, value); + stmt->SetData(1, max); + stmt->SetData(2, GetGUID().GetCounter()); + stmt->SetData(3, uint16(itr->first)); trans->Append(stmt); break; @@ -7769,8 +7767,8 @@ void Player::_SaveSpells(CharacterDatabaseTransaction trans) if (itr->second->State == PLAYERSPELL_REMOVED || itr->second->State == PLAYERSPELL_CHANGED) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SPELL_BY_SPELL); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, itr->first); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, itr->first); trans->Append(stmt); } @@ -7778,9 +7776,9 @@ void Player::_SaveSpells(CharacterDatabaseTransaction trans) if (itr->second->State == PLAYERSPELL_NEW || itr->second->State == PLAYERSPELL_CHANGED) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_SPELL); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, itr->first); - stmt->setUInt8(2, itr->second->specMask); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, itr->first); + stmt->SetData(2, itr->second->specMask); trans->Append(stmt); } @@ -7808,34 +7806,34 @@ void Player::_SaveStats(CharacterDatabaseTransaction trans) CharacterDatabasePreparedStatement* stmt = nullptr; stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_STATS); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); trans->Append(stmt); uint8 index = 0; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_STATS); - stmt->setUInt32(index++, GetGUID().GetCounter()); - stmt->setUInt32(index++, GetMaxHealth()); + stmt->SetData(index++, GetGUID().GetCounter()); + stmt->SetData(index++, GetMaxHealth()); for (uint8 i = 0; i < MAX_POWERS; ++i) - stmt->setUInt32(index++, GetMaxPower(Powers(i))); + stmt->SetData(index++, GetMaxPower(Powers(i))); for (uint8 i = 0; i < MAX_STATS; ++i) - stmt->setUInt32(index++, GetStat(Stats(i))); + stmt->SetData(index++, GetStat(Stats(i))); for (int i = 0; i < MAX_SPELL_SCHOOL; ++i) - stmt->setUInt32(index++, GetResistance(SpellSchools(i))); - - stmt->setFloat(index++, GetFloatValue(PLAYER_BLOCK_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_DODGE_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_PARRY_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_CRIT_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_RANGED_CRIT_PERCENTAGE)); - stmt->setFloat(index++, GetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1)); - stmt->setUInt32(index++, GetUInt32Value(UNIT_FIELD_ATTACK_POWER)); - stmt->setUInt32(index++, GetUInt32Value(UNIT_FIELD_RANGED_ATTACK_POWER)); - stmt->setUInt32(index++, GetBaseSpellPowerBonus()); - stmt->setUInt32(index++, GetUInt32Value(PLAYER_FIELD_COMBAT_RATING_1 + static_cast<uint16>(CR_CRIT_TAKEN_SPELL))); + stmt->SetData(index++, GetResistance(SpellSchools(i))); + + stmt->SetData(index++, GetFloatValue(PLAYER_BLOCK_PERCENTAGE)); + stmt->SetData(index++, GetFloatValue(PLAYER_DODGE_PERCENTAGE)); + stmt->SetData(index++, GetFloatValue(PLAYER_PARRY_PERCENTAGE)); + stmt->SetData(index++, GetFloatValue(PLAYER_CRIT_PERCENTAGE)); + stmt->SetData(index++, GetFloatValue(PLAYER_RANGED_CRIT_PERCENTAGE)); + stmt->SetData(index++, GetFloatValue(PLAYER_SPELL_CRIT_PERCENTAGE1)); + stmt->SetData(index++, GetUInt32Value(UNIT_FIELD_ATTACK_POWER)); + stmt->SetData(index++, GetUInt32Value(UNIT_FIELD_RANGED_ATTACK_POWER)); + stmt->SetData(index++, GetBaseSpellPowerBonus()); + stmt->SetData(index++, GetUInt32Value(PLAYER_FIELD_COMBAT_RATING_1 + static_cast<uint16>(CR_CRIT_TAKEN_SPELL))); trans->Append(stmt); } diff --git a/src/server/game/Entities/Player/PlayerUpdates.cpp b/src/server/game/Entities/Player/PlayerUpdates.cpp index 583d8e95b5..d147a03c35 100644 --- a/src/server/game/Entities/Player/PlayerUpdates.cpp +++ b/src/server/game/Entities/Player/PlayerUpdates.cpp @@ -133,10 +133,10 @@ void Player::Update(uint32 p_time) GetSession()->m_muteTime = 0; LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME); - stmt->setInt64(0, 0); // Set the mute time to 0 - stmt->setString(1, ""); - stmt->setString(2, ""); - stmt->setUInt32(3, GetSession()->GetAccountId()); + stmt->SetData(0, 0); // Set the mute time to 0 + stmt->SetData(1, ""); + stmt->SetData(2, ""); + stmt->SetData(3, GetSession()->GetAccountId()); LoginDatabase.Execute(stmt); } @@ -439,28 +439,28 @@ void Player::UpdateNextMailTimeAndUnreads() // Get the next delivery time CharacterDatabasePreparedStatement* stmtNextDeliveryTime = CharacterDatabase.GetPreparedStatement(CHAR_SEL_NEXT_MAIL_DELIVERYTIME); - stmtNextDeliveryTime->setUInt32(0, GetGUID().GetCounter()); - stmtNextDeliveryTime->setUInt32(1, uint32(cTime)); + stmtNextDeliveryTime->SetData(0, GetGUID().GetCounter()); + stmtNextDeliveryTime->SetData(1, uint32(cTime)); PreparedQueryResult resultNextDeliveryTime = CharacterDatabase.Query(stmtNextDeliveryTime); if (resultNextDeliveryTime) { Field* fields = resultNextDeliveryTime->Fetch(); - m_nextMailDelivereTime = time_t(fields[0].GetUInt32()); + m_nextMailDelivereTime = time_t(fields[0].Get<uint32>()); } // Get unread mails count CharacterDatabasePreparedStatement* stmtUnreadAmount = CharacterDatabase.GetPreparedStatement( CHAR_SEL_CHARACTER_MAILCOUNT_UNREAD_SYNCH); - stmtUnreadAmount->setUInt32(0, GetGUID().GetCounter()); - stmtUnreadAmount->setUInt32(1, uint32(cTime)); + stmtUnreadAmount->SetData(0, GetGUID().GetCounter()); + stmtUnreadAmount->SetData(1, uint32(cTime)); PreparedQueryResult resultUnreadAmount = CharacterDatabase.Query(stmtUnreadAmount); if (resultUnreadAmount) { Field* fields = resultUnreadAmount->Fetch(); - unReadMails = uint8(fields[0].GetUInt64()); + unReadMails = uint8(fields[0].Get<uint64>()); } } @@ -2235,11 +2235,11 @@ void Player::UpdateSpecCount(uint8 count) itr != m_actionButtons.end(); ++itr) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_ACTION); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt8(1, 1); - stmt->setUInt8(2, itr->first); - stmt->setUInt32(3, itr->second.GetAction()); - stmt->setUInt8(4, uint8(itr->second.GetType())); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, 1); + stmt->SetData(2, itr->first); + stmt->SetData(3, itr->second.GetAction()); + stmt->SetData(4, uint8(itr->second.GetType())); trans->Append(stmt); } } @@ -2250,8 +2250,8 @@ void Player::UpdateSpecCount(uint8 count) stmt = CharacterDatabase.GetPreparedStatement( CHAR_DEL_CHAR_ACTION_EXCEPT_SPEC); - stmt->setUInt8(0, m_activeSpec); - stmt->setUInt32(1, GetGUID().GetCounter()); + stmt->SetData(0, m_activeSpec); + stmt->SetData(1, GetGUID().GetCounter()); trans->Append(stmt); m_activeSpec = 0; diff --git a/src/server/game/Entities/Player/SocialMgr.cpp b/src/server/game/Entities/Player/SocialMgr.cpp index 5c09c7fa77..24426730f5 100644 --- a/src/server/game/Entities/Player/SocialMgr.cpp +++ b/src/server/game/Entities/Player/SocialMgr.cpp @@ -50,9 +50,9 @@ bool PlayerSocial::AddToSocialList(ObjectGuid friendGuid, SocialFlag flag) CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_CHARACTER_SOCIAL_FLAGS); - stmt->setUInt8(0, itr->second.Flags); - stmt->setUInt32(1, GetPlayerGUID().GetCounter()); - stmt->setUInt32(2, friendGuid.GetCounter()); + stmt->SetData(0, itr->second.Flags); + stmt->SetData(1, GetPlayerGUID().GetCounter()); + stmt->SetData(2, friendGuid.GetCounter()); CharacterDatabase.Execute(stmt); } @@ -62,9 +62,9 @@ bool PlayerSocial::AddToSocialList(ObjectGuid friendGuid, SocialFlag flag) CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_SOCIAL); - stmt->setUInt32(0, GetPlayerGUID().GetCounter()); - stmt->setUInt32(1, friendGuid.GetCounter()); - stmt->setUInt8(2, flag); + stmt->SetData(0, GetPlayerGUID().GetCounter()); + stmt->SetData(1, friendGuid.GetCounter()); + stmt->SetData(2, flag); CharacterDatabase.Execute(stmt); } @@ -83,8 +83,8 @@ void PlayerSocial::RemoveFromSocialList(ObjectGuid friendGuid, SocialFlag flag) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_SOCIAL); - stmt->setUInt32(0, GetPlayerGUID().GetCounter()); - stmt->setUInt32(1, friendGuid.GetCounter()); + stmt->SetData(0, GetPlayerGUID().GetCounter()); + stmt->SetData(1, friendGuid.GetCounter()); CharacterDatabase.Execute(stmt); @@ -94,9 +94,9 @@ void PlayerSocial::RemoveFromSocialList(ObjectGuid friendGuid, SocialFlag flag) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_REM_CHARACTER_SOCIAL_FLAGS); - stmt->setUInt8(0, flag); - stmt->setUInt32(1, GetPlayerGUID().GetCounter()); - stmt->setUInt32(2, friendGuid.GetCounter()); + stmt->SetData(0, flag); + stmt->SetData(1, GetPlayerGUID().GetCounter()); + stmt->SetData(2, friendGuid.GetCounter()); CharacterDatabase.Execute(stmt); } @@ -112,9 +112,9 @@ void PlayerSocial::SetFriendNote(ObjectGuid friendGuid, std::string note) CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_SOCIAL_NOTE); - stmt->setString(0, note); - stmt->setUInt32(1, GetPlayerGUID().GetCounter()); - stmt->setUInt32(2, friendGuid.GetCounter()); + stmt->SetData(0, note); + stmt->SetData(1, GetPlayerGUID().GetCounter()); + stmt->SetData(2, friendGuid.GetCounter()); CharacterDatabase.Execute(stmt); @@ -328,9 +328,9 @@ PlayerSocial* SocialMgr::LoadFromDB(PreparedQueryResult result, ObjectGuid guid) { Field* fields = result->Fetch(); - auto friendGuid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt32()); - auto flags = fields[1].GetUInt8(); - auto note = fields[2].GetString(); + auto friendGuid = ObjectGuid::Create<HighGuid::Player>(fields[0].Get<uint32>()); + auto flags = fields[1].Get<uint8>(); + auto note = fields[2].Get<std::string>(); social->m_playerSocialMap[friendGuid] = FriendInfo(flags, note); } while (result->NextRow()); diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index a555161002..b2d552ba2b 100644 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -222,11 +222,11 @@ void GameEventMgr::StopEvent(uint16 event_id, bool overwrite) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_GAME_EVENT_CONDITION_SAVE); - stmt->setUInt8(0, uint8(event_id)); + stmt->SetData(0, uint8(event_id)); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GAME_EVENT_SAVE); - stmt->setUInt8(0, uint8(event_id)); + stmt->SetData(0, uint8(event_id)); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -256,7 +256,7 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint8 event_id = fields[0].GetUInt8(); + uint8 event_id = fields[0].Get<uint8>(); if (event_id == 0) { LOG_ERROR("sql.sql", "`game_event` game event entry 0 is reserved and can't be used."); @@ -264,21 +264,21 @@ void GameEventMgr::LoadFromDB() } GameEventData& pGameEvent = mGameEvent[event_id]; - pGameEvent.eventId = fields[0].GetUInt32(); - uint64 starttime = fields[1].GetUInt64(); + pGameEvent.eventId = fields[0].Get<uint32>(); + uint64 starttime = fields[1].Get<uint64>(); pGameEvent.start = time_t(starttime); - uint64 endtime = fields[2].GetUInt64(); + uint64 endtime = fields[2].Get<uint64>(); if (fields[2].IsNull()) endtime = GameTime::GetGameTime().count() + 63072000; // add 2 years to current date pGameEvent.end = time_t(endtime); - pGameEvent.occurence = fields[3].GetUInt64(); - pGameEvent.length = fields[4].GetUInt64(); - pGameEvent.holiday_id = HolidayIds(fields[5].GetUInt32()); - - pGameEvent.holidayStage = fields[6].GetUInt8(); - pGameEvent.description = fields[7].GetString(); - pGameEvent.state = (GameEventState)(fields[8].GetUInt8()); - pGameEvent.announce = fields[9].GetUInt8(); + pGameEvent.occurence = fields[3].Get<uint64>(); + pGameEvent.length = fields[4].Get<uint64>(); + pGameEvent.holiday_id = HolidayIds(fields[5].Get<uint32>()); + + pGameEvent.holidayStage = fields[6].Get<uint8>(); + pGameEvent.description = fields[7].Get<std::string>(); + pGameEvent.state = (GameEventState)(fields[8].Get<uint8>()); + pGameEvent.announce = fields[9].Get<uint8>(); pGameEvent.nextstart = 0; ++count; @@ -324,7 +324,7 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint8 event_id = fields[0].GetUInt8(); + uint8 event_id = fields[0].Get<uint8>(); if (event_id >= mGameEvent.size()) { @@ -334,8 +334,8 @@ void GameEventMgr::LoadFromDB() if (mGameEvent[event_id].state != GAMEEVENT_NORMAL && mGameEvent[event_id].state != GAMEEVENT_INTERNAL) { - mGameEvent[event_id].state = (GameEventState)(fields[1].GetUInt8()); - mGameEvent[event_id].nextstart = time_t(fields[2].GetUInt32()); + mGameEvent[event_id].state = (GameEventState)(fields[1].Get<uint8>()); + mGameEvent[event_id].nextstart = time_t(fields[2].Get<uint32>()); } else { @@ -369,7 +369,7 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint16 event_id = fields[0].GetUInt8(); + uint16 event_id = fields[0].Get<uint8>(); if (event_id >= mGameEvent.size()) { @@ -379,7 +379,7 @@ void GameEventMgr::LoadFromDB() if (mGameEvent[event_id].state != GAMEEVENT_NORMAL && mGameEvent[event_id].state != GAMEEVENT_INTERNAL) { - uint16 prerequisite_event = fields[1].GetUInt32(); + uint16 prerequisite_event = fields[1].Get<uint32>(); if (prerequisite_event >= mGameEvent.size()) { LOG_ERROR("sql.sql", "`game_event_prerequisite` game event prerequisite id ({}) is out of range compared to max event id in `game_event`", prerequisite_event); @@ -420,8 +420,8 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); - int16 event_id = fields[1].GetInt8(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); + int16 event_id = fields[1].Get<int8>(); CreatureData const* data = sObjectMgr->GetCreatureData(guid); if (!data) @@ -468,8 +468,8 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); - int16 event_id = fields[1].GetInt8(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); + int16 event_id = fields[1].Get<int8>(); int32 internal_event_id = mGameEvent.size() + event_id - 1; @@ -517,11 +517,11 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); - uint32 entry = fields[1].GetUInt32(); - uint32 entry2 = fields[2].GetUInt32(); - uint32 entry3 = fields[3].GetUInt32(); - uint16 event_id = fields[4].GetUInt8(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); + uint32 entry = fields[1].Get<uint32>(); + uint32 entry2 = fields[2].Get<uint32>(); + uint32 entry3 = fields[3].Get<uint32>(); + uint16 event_id = fields[4].Get<uint8>(); if (event_id >= mGameEventModelEquip.size()) { @@ -531,8 +531,8 @@ void GameEventMgr::LoadFromDB() ModelEquipList& equiplist = mGameEventModelEquip[event_id]; ModelEquip newModelEquipSet; - newModelEquipSet.modelid = fields[5].GetUInt32(); - newModelEquipSet.equipment_id = fields[6].GetUInt8(); + newModelEquipSet.modelid = fields[5].Get<uint32>(); + newModelEquipSet.equipment_id = fields[6].Get<uint8>(); newModelEquipSet.equipement_id_prev = 0; newModelEquipSet.modelid_prev = 0; @@ -576,9 +576,9 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint32 id = fields[0].GetUInt32(); - uint32 quest = fields[1].GetUInt32(); - uint16 event_id = fields[2].GetUInt8(); + uint32 id = fields[0].Get<uint32>(); + uint32 quest = fields[1].Get<uint32>(); + uint16 event_id = fields[2].Get<uint8>(); if (event_id >= mGameEventCreatureQuests.size()) { @@ -616,9 +616,9 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint32 id = fields[0].GetUInt32(); - uint32 quest = fields[1].GetUInt32(); - uint16 event_id = fields[2].GetUInt8(); + uint32 id = fields[0].Get<uint32>(); + uint32 quest = fields[1].Get<uint32>(); + uint16 event_id = fields[2].Get<uint8>(); if (event_id >= mGameEventGameObjectQuests.size()) { @@ -656,10 +656,10 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint32 quest = fields[0].GetUInt32(); - uint16 event_id = fields[1].GetUInt8(); - uint32 condition = fields[2].GetUInt32(); - float num = fields[3].GetFloat(); + uint32 quest = fields[0].Get<uint32>(); + uint16 event_id = fields[1].Get<uint8>(); + uint32 condition = fields[2].Get<uint32>(); + float num = fields[3].Get<float>(); if (event_id >= mGameEvent.size()) { @@ -698,8 +698,8 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint16 event_id = fields[0].GetUInt8(); - uint32 condition = fields[1].GetUInt32(); + uint16 event_id = fields[0].Get<uint8>(); + uint32 condition = fields[1].Get<uint32>(); if (event_id >= mGameEvent.size()) { @@ -707,10 +707,10 @@ void GameEventMgr::LoadFromDB() continue; } - mGameEvent[event_id].conditions[condition].reqNum = fields[2].GetFloat(); + mGameEvent[event_id].conditions[condition].reqNum = fields[2].Get<float>(); mGameEvent[event_id].conditions[condition].done = 0; - mGameEvent[event_id].conditions[condition].max_world_state = fields[3].GetUInt16(); - mGameEvent[event_id].conditions[condition].done_world_state = fields[4].GetUInt16(); + mGameEvent[event_id].conditions[condition].max_world_state = fields[3].Get<uint16>(); + mGameEvent[event_id].conditions[condition].done_world_state = fields[4].Get<uint16>(); ++count; } while (result->NextRow()); @@ -739,8 +739,8 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint16 event_id = fields[0].GetUInt8(); - uint32 condition = fields[1].GetUInt32(); + uint16 event_id = fields[0].Get<uint8>(); + uint32 condition = fields[1].Get<uint32>(); if (event_id >= mGameEvent.size()) { @@ -751,7 +751,7 @@ void GameEventMgr::LoadFromDB() GameEventConditionMap::iterator itr = mGameEvent[event_id].conditions.find(condition); if (itr != mGameEvent[event_id].conditions.end()) { - itr->second.done = fields[2].GetFloat(); + itr->second.done = fields[2].Get<float>(); } else { @@ -786,9 +786,9 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); - uint16 event_id = fields[1].GetUInt8(); - uint32 npcflag = fields[2].GetUInt32(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); + uint16 event_id = fields[1].Get<uint8>(); + uint32 npcflag = fields[2].Get<uint32>(); if (event_id >= mGameEvent.size()) { @@ -825,8 +825,8 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint32 questId = fields[0].GetUInt32(); - uint32 eventEntry = fields[1].GetUInt32(); // TODO: Change to uint8 + uint32 questId = fields[0].Get<uint32>(); + uint32 eventEntry = fields[1].Get<uint32>(); // TODO: Change to uint8 Quest* questTemplate = const_cast<Quest*>(sObjectMgr->GetQuestTemplate(questId)); @@ -871,7 +871,7 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint8 event_id = fields[0].GetUInt8(); + uint8 event_id = fields[0].Get<uint8>(); if (event_id >= mGameEventVendors.size()) { @@ -881,11 +881,11 @@ void GameEventMgr::LoadFromDB() NPCVendorList& vendors = mGameEventVendors[event_id]; NPCVendorEntry newEntry; - ObjectGuid::LowType guid = fields[1].GetUInt32(); - newEntry.item = fields[2].GetUInt32(); - newEntry.maxcount = fields[3].GetUInt32(); - newEntry.incrtime = fields[4].GetUInt32(); - newEntry.ExtendedCost = fields[5].GetUInt32(); + ObjectGuid::LowType guid = fields[1].Get<uint32>(); + newEntry.item = fields[2].Get<uint32>(); + newEntry.maxcount = fields[3].Get<uint32>(); + newEntry.incrtime = fields[4].Get<uint32>(); + newEntry.ExtendedCost = fields[5].Get<uint32>(); // get the event npc flag for checking if the npc will be vendor during the event or not uint32 event_npc_flag = 0; NPCFlagList& flist = mGameEventNPCFlags[event_id]; @@ -936,7 +936,7 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint16 event_id = fields[0].GetUInt8(); + uint16 event_id = fields[0].Get<uint8>(); if (event_id >= mGameEvent.size()) { @@ -944,7 +944,7 @@ void GameEventMgr::LoadFromDB() continue; } - mGameEventBattlegroundHolidays[event_id] = fields[1].GetUInt32(); + mGameEventBattlegroundHolidays[event_id] = fields[1].Get<uint32>(); ++count; } while (result->NextRow()); @@ -974,8 +974,8 @@ void GameEventMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); - int16 event_id = fields[1].GetInt8(); + uint32 entry = fields[0].Get<uint32>(); + int16 event_id = fields[1].Get<int8>(); int32 internal_event_id = mGameEvent.size() + event_id - 1; @@ -1021,7 +1021,7 @@ void GameEventMgr::LoadHolidayDates() { Field* fields = result->Fetch(); - uint32 holidayId = fields[0].GetUInt32(); + uint32 holidayId = fields[0].Get<uint32>(); HolidaysEntry* entry = const_cast<HolidaysEntry*>(sHolidaysStore.LookupEntry(holidayId)); if (!entry) { @@ -1029,15 +1029,15 @@ void GameEventMgr::LoadHolidayDates() continue; } - uint8 dateId = fields[1].GetUInt8(); + uint8 dateId = fields[1].Get<uint8>(); if (dateId >= MAX_HOLIDAY_DATES) { LOG_ERROR("sql.sql", "holiday_dates entry has out of range date_id {}.", dateId); continue; } - entry->Date[dateId] = fields[2].GetUInt32(); + entry->Date[dateId] = fields[2].Get<uint32>(); - if (uint32 duration = fields[3].GetUInt32()) + if (uint32 duration = fields[3].Get<uint32>()) entry->Duration[0] = duration; auto itr = std::lower_bound(modifiedHolidays.begin(), modifiedHolidays.end(), entry->Id); @@ -1074,7 +1074,7 @@ void GameEventMgr::Initialize() { Field* fields = result->Fetch(); - uint32 maxEventId = fields[0].GetUInt8(); + uint32 maxEventId = fields[0].Get<uint8>(); // Id starts with 1 and vector with 0, thus increment maxEventId++; @@ -1103,7 +1103,7 @@ uint32 GameEventMgr::StartSystem() // return the next void GameEventMgr::StartArenaSeason() { uint8 season = sWorld->getIntConfig(CONFIG_ARENA_SEASON_ID); - QueryResult result = WorldDatabase.PQuery("SELECT eventEntry FROM game_event_arena_seasons WHERE season = '%i'", season); + QueryResult result = WorldDatabase.Query("SELECT eventEntry FROM game_event_arena_seasons WHERE season = '{}'", season); if (!result) { @@ -1112,7 +1112,7 @@ void GameEventMgr::StartArenaSeason() } Field* fields = result->Fetch(); - uint16 eventId = fields[0].GetUInt8(); + uint16 eventId = fields[0].Get<uint8>(); if (eventId >= mGameEvent.size()) { @@ -1687,14 +1687,14 @@ void GameEventMgr::HandleQuestComplete(uint32 quest_id) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GAME_EVENT_CONDITION_SAVE); - stmt->setUInt8(0, uint8(event_id)); - stmt->setUInt32(1, condition); + stmt->SetData(0, uint8(event_id)); + stmt->SetData(1, condition); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GAME_EVENT_CONDITION_SAVE); - stmt->setUInt8(0, uint8(event_id)); - stmt->setUInt32(1, condition); - stmt->setFloat(2, citr->second.done); + stmt->SetData(0, uint8(event_id)); + stmt->SetData(1, condition); + stmt->SetData(2, citr->second.done); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); // check if all conditions are met, if so, update the event state @@ -1732,13 +1732,13 @@ void GameEventMgr::SaveWorldEventStateToDB(uint16 event_id) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GAME_EVENT_SAVE); - stmt->setUInt8(0, uint8(event_id)); + stmt->SetData(0, uint8(event_id)); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GAME_EVENT_SAVE); - stmt->setUInt8(0, uint8(event_id)); - stmt->setUInt8(1, mGameEvent[event_id].state); - stmt->setUInt32(2, mGameEvent[event_id].nextstart ? uint32(mGameEvent[event_id].nextstart) : 0); + stmt->SetData(0, uint8(event_id)); + stmt->SetData(1, mGameEvent[event_id].state); + stmt->SetData(2, mGameEvent[event_id].nextstart ? uint32(mGameEvent[event_id].nextstart) : 0); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); } diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 88c5406bc4..8786336b45 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -400,15 +400,15 @@ void ObjectMgr::LoadCreatureLocales() { Field* fields = result->Fetch(); - uint32 ID = fields[0].GetUInt32(); + uint32 ID = fields[0].Get<uint32>(); - LocaleConstant locale = GetLocaleByName(fields[1].GetString()); + LocaleConstant locale = GetLocaleByName(fields[1].Get<std::string>()); if (locale == LOCALE_enUS) continue; CreatureLocale& data = _creatureLocaleStore[ID]; - AddLocaleString(fields[2].GetString(), locale, data.Name); - AddLocaleString(fields[3].GetString(), locale, data.Title); + AddLocaleString(fields[2].Get<std::string>(), locale, data.Name); + AddLocaleString(fields[3].Get<std::string>(), locale, data.Title); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} Creature Locale strings in {} ms", (unsigned long)_creatureLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime)); @@ -430,16 +430,16 @@ void ObjectMgr::LoadGossipMenuItemsLocales() { Field* fields = result->Fetch(); - uint16 MenuID = fields[0].GetUInt16(); - uint16 OptionID = fields[1].GetUInt16(); + uint16 MenuID = fields[0].Get<uint16>(); + uint16 OptionID = fields[1].Get<uint16>(); - LocaleConstant locale = GetLocaleByName(fields[2].GetString()); + LocaleConstant locale = GetLocaleByName(fields[2].Get<std::string>()); if (locale == LOCALE_enUS) continue; GossipMenuItemsLocale& data = _gossipMenuItemsLocaleStore[MAKE_PAIR32(MenuID, OptionID)]; - AddLocaleString(fields[3].GetString(), locale, data.OptionText); - AddLocaleString(fields[4].GetString(), locale, data.BoxText); + AddLocaleString(fields[3].Get<std::string>(), locale, data.OptionText); + AddLocaleString(fields[4].Get<std::string>(), locale, data.BoxText); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} Gossip Menu Option Locale strings in {} ms", (uint32)_gossipMenuItemsLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime)); @@ -461,14 +461,14 @@ void ObjectMgr::LoadPointOfInterestLocales() { Field* fields = result->Fetch(); - uint32 ID = fields[0].GetUInt32(); + uint32 ID = fields[0].Get<uint32>(); - LocaleConstant locale = GetLocaleByName(fields[1].GetString()); + LocaleConstant locale = GetLocaleByName(fields[1].Get<std::string>()); if (locale == LOCALE_enUS) continue; PointOfInterestLocale& data = _pointOfInterestLocaleStore[ID]; - AddLocaleString(fields[2].GetString(), locale, data.Name); + AddLocaleString(fields[2].Get<std::string>(), locale, data.Name); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} Points Of Interest Locale strings in {} ms", (uint32)_pointOfInterestLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime)); @@ -541,7 +541,7 @@ void ObjectMgr::LoadCreatureTemplates() void ObjectMgr::LoadCreatureTemplate(Field* fields) { - uint32 entry = fields[0].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); CreatureTemplate& creatureTemplate = _creatureTemplateStore[entry]; @@ -549,54 +549,54 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields) for (uint8 i = 0; i < MAX_DIFFICULTY - 1; ++i) { - creatureTemplate.DifficultyEntry[i] = fields[1 + i].GetUInt32(); + creatureTemplate.DifficultyEntry[i] = fields[1 + i].Get<uint32>(); } for (uint8 i = 0; i < MAX_KILL_CREDIT; ++i) { - creatureTemplate.KillCredit[i] = fields[4 + i].GetUInt32(); - } - - creatureTemplate.Modelid1 = fields[6].GetUInt32(); - creatureTemplate.Modelid2 = fields[7].GetUInt32(); - creatureTemplate.Modelid3 = fields[8].GetUInt32(); - creatureTemplate.Modelid4 = fields[9].GetUInt32(); - creatureTemplate.Name = fields[10].GetString(); - creatureTemplate.SubName = fields[11].GetString(); - creatureTemplate.IconName = fields[12].GetString(); - creatureTemplate.GossipMenuId = fields[13].GetUInt32(); - creatureTemplate.minlevel = fields[14].GetUInt8(); - creatureTemplate.maxlevel = fields[15].GetUInt8(); - creatureTemplate.expansion = uint32(fields[16].GetInt16()); - creatureTemplate.faction = uint32(fields[17].GetUInt16()); - creatureTemplate.npcflag = fields[18].GetUInt32(); - creatureTemplate.speed_walk = fields[19].GetFloat(); - creatureTemplate.speed_run = fields[20].GetFloat(); - creatureTemplate.speed_swim = fields[21].GetFloat(); - creatureTemplate.speed_flight = fields[22].GetFloat(); - creatureTemplate.detection_range = fields[23].GetFloat(); - creatureTemplate.scale = fields[24].GetFloat(); - creatureTemplate.rank = uint32(fields[25].GetUInt8()); - creatureTemplate.dmgschool = uint32(fields[26].GetInt8()); - creatureTemplate.DamageModifier = fields[27].GetFloat(); - creatureTemplate.BaseAttackTime = fields[28].GetUInt32(); - creatureTemplate.RangeAttackTime = fields[29].GetUInt32(); - creatureTemplate.BaseVariance = fields[30].GetFloat(); - creatureTemplate.RangeVariance = fields[31].GetFloat(); - creatureTemplate.unit_class = uint32(fields[32].GetUInt8()); - creatureTemplate.unit_flags = fields[33].GetUInt32(); - creatureTemplate.unit_flags2 = fields[34].GetUInt32(); - creatureTemplate.dynamicflags = fields[35].GetUInt32(); - creatureTemplate.family = uint32(fields[36].GetUInt8()); - creatureTemplate.trainer_type = uint32(fields[37].GetUInt8()); - creatureTemplate.trainer_spell = fields[38].GetUInt32(); - creatureTemplate.trainer_class = uint32(fields[39].GetUInt8()); - creatureTemplate.trainer_race = uint32(fields[40].GetUInt8()); - creatureTemplate.type = uint32(fields[41].GetUInt8()); - creatureTemplate.type_flags = fields[42].GetUInt32(); - creatureTemplate.lootid = fields[43].GetUInt32(); - creatureTemplate.pickpocketLootId = fields[44].GetUInt32(); - creatureTemplate.SkinLootId = fields[45].GetUInt32(); + creatureTemplate.KillCredit[i] = fields[4 + i].Get<uint32>(); + } + + creatureTemplate.Modelid1 = fields[6].Get<uint32>(); + creatureTemplate.Modelid2 = fields[7].Get<uint32>(); + creatureTemplate.Modelid3 = fields[8].Get<uint32>(); + creatureTemplate.Modelid4 = fields[9].Get<uint32>(); + creatureTemplate.Name = fields[10].Get<std::string>(); + creatureTemplate.SubName = fields[11].Get<std::string>(); + creatureTemplate.IconName = fields[12].Get<std::string>(); + creatureTemplate.GossipMenuId = fields[13].Get<uint32>(); + creatureTemplate.minlevel = fields[14].Get<uint8>(); + creatureTemplate.maxlevel = fields[15].Get<uint8>(); + creatureTemplate.expansion = uint32(fields[16].Get<int16>()); + creatureTemplate.faction = uint32(fields[17].Get<uint16>()); + creatureTemplate.npcflag = fields[18].Get<uint32>(); + creatureTemplate.speed_walk = fields[19].Get<float>(); + creatureTemplate.speed_run = fields[20].Get<float>(); + creatureTemplate.speed_swim = fields[21].Get<float>(); + creatureTemplate.speed_flight = fields[22].Get<float>(); + creatureTemplate.detection_range = fields[23].Get<float>(); + creatureTemplate.scale = fields[24].Get<float>(); + creatureTemplate.rank = uint32(fields[25].Get<uint8>()); + creatureTemplate.dmgschool = uint32(fields[26].Get<int8>()); + creatureTemplate.DamageModifier = fields[27].Get<float>(); + creatureTemplate.BaseAttackTime = fields[28].Get<uint32>(); + creatureTemplate.RangeAttackTime = fields[29].Get<uint32>(); + creatureTemplate.BaseVariance = fields[30].Get<float>(); + creatureTemplate.RangeVariance = fields[31].Get<float>(); + creatureTemplate.unit_class = uint32(fields[32].Get<uint8>()); + creatureTemplate.unit_flags = fields[33].Get<uint32>(); + creatureTemplate.unit_flags2 = fields[34].Get<uint32>(); + creatureTemplate.dynamicflags = fields[35].Get<uint32>(); + creatureTemplate.family = uint32(fields[36].Get<uint8>()); + creatureTemplate.trainer_type = uint32(fields[37].Get<uint8>()); + creatureTemplate.trainer_spell = fields[38].Get<uint32>(); + creatureTemplate.trainer_class = uint32(fields[39].Get<uint8>()); + creatureTemplate.trainer_race = uint32(fields[40].Get<uint8>()); + creatureTemplate.type = uint32(fields[41].Get<uint8>()); + creatureTemplate.type_flags = fields[42].Get<uint32>(); + creatureTemplate.lootid = fields[43].Get<uint32>(); + creatureTemplate.pickpocketLootId = fields[44].Get<uint32>(); + creatureTemplate.SkinLootId = fields[45].Get<uint32>(); for (uint8 i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i) { @@ -608,49 +608,49 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields) creatureTemplate.spells[i] = 0; } - creatureTemplate.PetSpellDataId = fields[46].GetUInt32(); - creatureTemplate.VehicleId = fields[47].GetUInt32(); - creatureTemplate.mingold = fields[48].GetUInt32(); - creatureTemplate.maxgold = fields[49].GetUInt32(); - creatureTemplate.AIName = fields[50].GetString(); - creatureTemplate.MovementType = uint32(fields[51].GetUInt8()); + creatureTemplate.PetSpellDataId = fields[46].Get<uint32>(); + creatureTemplate.VehicleId = fields[47].Get<uint32>(); + creatureTemplate.mingold = fields[48].Get<uint32>(); + creatureTemplate.maxgold = fields[49].Get<uint32>(); + creatureTemplate.AIName = fields[50].Get<std::string>(); + creatureTemplate.MovementType = uint32(fields[51].Get<uint8>()); if (!fields[52].IsNull()) { - creatureTemplate.Movement.Ground = static_cast<CreatureGroundMovementType>(fields[52].GetUInt8()); + creatureTemplate.Movement.Ground = static_cast<CreatureGroundMovementType>(fields[52].Get<uint8>()); } - creatureTemplate.Movement.Swim = fields[53].GetBool(); + creatureTemplate.Movement.Swim = fields[53].Get<bool>(); if (!fields[54].IsNull()) { - creatureTemplate.Movement.Flight = static_cast<CreatureFlightMovementType>(fields[54].GetUInt8()); + creatureTemplate.Movement.Flight = static_cast<CreatureFlightMovementType>(fields[54].Get<uint8>()); } - creatureTemplate.Movement.Rooted = fields[55].GetBool(); + creatureTemplate.Movement.Rooted = fields[55].Get<bool>(); if (!fields[56].IsNull()) { - creatureTemplate.Movement.Chase = static_cast<CreatureChaseMovementType>(fields[56].GetUInt8()); + creatureTemplate.Movement.Chase = static_cast<CreatureChaseMovementType>(fields[56].Get<uint8>()); } if (!fields[57].IsNull()) { - creatureTemplate.Movement.Random = static_cast<CreatureRandomMovementType>(fields[57].GetUInt8()); + creatureTemplate.Movement.Random = static_cast<CreatureRandomMovementType>(fields[57].Get<uint8>()); } if (!fields[58].IsNull()) { - creatureTemplate.Movement.InteractionPauseTimer = fields[58].GetUInt32(); + creatureTemplate.Movement.InteractionPauseTimer = fields[58].Get<uint32>(); } - creatureTemplate.HoverHeight = fields[59].GetFloat(); - creatureTemplate.ModHealth = fields[60].GetFloat(); - creatureTemplate.ModMana = fields[61].GetFloat(); - creatureTemplate.ModArmor = fields[62].GetFloat(); - creatureTemplate.ModExperience = fields[63].GetFloat(); - creatureTemplate.RacialLeader = fields[64].GetBool(); - creatureTemplate.movementId = fields[65].GetUInt32(); - creatureTemplate.RegenHealth = fields[66].GetBool(); - creatureTemplate.MechanicImmuneMask = fields[67].GetUInt32(); - creatureTemplate.SpellSchoolImmuneMask = fields[68].GetUInt8(); - creatureTemplate.flags_extra = fields[69].GetUInt32(); - creatureTemplate.ScriptID = GetScriptId(fields[70].GetCString()); + creatureTemplate.HoverHeight = fields[59].Get<float>(); + creatureTemplate.ModHealth = fields[60].Get<float>(); + creatureTemplate.ModMana = fields[61].Get<float>(); + creatureTemplate.ModArmor = fields[62].Get<float>(); + creatureTemplate.ModExperience = fields[63].Get<float>(); + creatureTemplate.RacialLeader = fields[64].Get<bool>(); + creatureTemplate.movementId = fields[65].Get<uint32>(); + creatureTemplate.RegenHealth = fields[66].Get<bool>(); + creatureTemplate.MechanicImmuneMask = fields[67].Get<uint32>(); + creatureTemplate.SpellSchoolImmuneMask = fields[68].Get<uint8>(); + creatureTemplate.flags_extra = fields[69].Get<uint32>(); + creatureTemplate.ScriptID = GetScriptId(fields[70].Get<std::string>()); } void ObjectMgr::LoadCreatureTemplateResistances() @@ -673,8 +673,8 @@ void ObjectMgr::LoadCreatureTemplateResistances() { Field* fields = result->Fetch(); - uint32 creatureID = fields[0].GetUInt32(); - uint8 school = fields[1].GetUInt8(); + uint32 creatureID = fields[0].Get<uint32>(); + uint8 school = fields[1].Get<uint8>(); if (school == SPELL_SCHOOL_NORMAL || school >= MAX_SPELL_SCHOOL) { @@ -690,7 +690,7 @@ void ObjectMgr::LoadCreatureTemplateResistances() } CreatureTemplate& creatureTemplate = itr->second; - creatureTemplate.resistance[school] = fields[2].GetInt16(); + creatureTemplate.resistance[school] = fields[2].Get<int16>(); ++count; } while (result->NextRow()); @@ -719,8 +719,8 @@ void ObjectMgr::LoadCreatureTemplateSpells() { Field* fields = result->Fetch(); - uint32 creatureID = fields[0].GetUInt32(); - uint8 index = fields[1].GetUInt8(); + uint32 creatureID = fields[0].Get<uint32>(); + uint8 index = fields[1].Get<uint8>(); if (index >= MAX_CREATURE_SPELLS) { @@ -736,7 +736,7 @@ void ObjectMgr::LoadCreatureTemplateSpells() } CreatureTemplate& creatureTemplate = itr->second; - creatureTemplate.spells[index] = fields[2].GetUInt32(); + creatureTemplate.spells[index] = fields[2].Get<uint32>(); ++count; } while (result->NextRow()); @@ -764,7 +764,7 @@ void ObjectMgr::LoadCreatureTemplateAddons() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); if (!sObjectMgr->GetCreatureTemplate(entry)) { @@ -774,14 +774,14 @@ void ObjectMgr::LoadCreatureTemplateAddons() CreatureAddon& creatureAddon = _creatureTemplateAddonStore[entry]; - creatureAddon.path_id = fields[1].GetUInt32(); - creatureAddon.mount = fields[2].GetUInt32(); - creatureAddon.bytes1 = fields[3].GetUInt32(); - creatureAddon.bytes2 = fields[4].GetUInt32(); - creatureAddon.emote = fields[5].GetUInt32(); - creatureAddon.visibilityDistanceType = VisibilityDistanceType(fields[6].GetUInt8()); + creatureAddon.path_id = fields[1].Get<uint32>(); + creatureAddon.mount = fields[2].Get<uint32>(); + creatureAddon.bytes1 = fields[3].Get<uint32>(); + creatureAddon.bytes2 = fields[4].Get<uint32>(); + creatureAddon.emote = fields[5].Get<uint32>(); + creatureAddon.visibilityDistanceType = VisibilityDistanceType(fields[6].Get<uint8>()); - for (std::string_view aura : Acore::Tokenize(fields[7].GetStringView(), ' ', false)) + for (std::string_view aura : Acore::Tokenize(fields[7].Get<std::string_view>(), ' ', false)) { SpellInfo const* spellInfo = nullptr; @@ -1244,7 +1244,7 @@ void ObjectMgr::LoadCreatureAddons() { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); CreatureData const* creData = GetCreatureData(guid); if (!creData) @@ -1255,20 +1255,20 @@ void ObjectMgr::LoadCreatureAddons() CreatureAddon& creatureAddon = _creatureAddonStore[guid]; - creatureAddon.path_id = fields[1].GetUInt32(); + creatureAddon.path_id = fields[1].Get<uint32>(); if (creData->movementType == WAYPOINT_MOTION_TYPE && !creatureAddon.path_id) { const_cast<CreatureData*>(creData)->movementType = IDLE_MOTION_TYPE; LOG_ERROR("sql.sql", "Creature (GUID {}) has movement type set to WAYPOINT_MOTION_TYPE but no path assigned", guid); } - creatureAddon.mount = fields[2].GetUInt32(); - creatureAddon.bytes1 = fields[3].GetUInt32(); - creatureAddon.bytes2 = fields[4].GetUInt32(); - creatureAddon.emote = fields[5].GetUInt32(); - creatureAddon.visibilityDistanceType = VisibilityDistanceType(fields[6].GetUInt8()); + creatureAddon.mount = fields[2].Get<uint32>(); + creatureAddon.bytes1 = fields[3].Get<uint32>(); + creatureAddon.bytes2 = fields[4].Get<uint32>(); + creatureAddon.emote = fields[5].Get<uint32>(); + creatureAddon.visibilityDistanceType = VisibilityDistanceType(fields[6].Get<uint8>()); - for (std::string_view aura : Acore::Tokenize(fields[7].GetStringView(), ' ', false)) + for (std::string_view aura : Acore::Tokenize(fields[7].Get<std::string_view>(), ' ', false)) { SpellInfo const* spellInfo = nullptr; @@ -1345,7 +1345,7 @@ void ObjectMgr::LoadGameObjectAddons() { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); const GameObjectData* goData = GetGOData(guid); if (!goData) @@ -1355,8 +1355,8 @@ void ObjectMgr::LoadGameObjectAddons() } GameObjectAddon& gameObjectAddon = _gameObjectAddonStore[guid]; - gameObjectAddon.invisibilityType = InvisibilityType(fields[1].GetUInt8()); - gameObjectAddon.InvisibilityValue = fields[2].GetUInt32(); + gameObjectAddon.invisibilityType = InvisibilityType(fields[1].Get<uint8>()); + gameObjectAddon.InvisibilityValue = fields[2].Get<uint32>(); if (gameObjectAddon.invisibilityType >= TOTAL_INVISIBILITY_TYPES) { @@ -1455,7 +1455,7 @@ void ObjectMgr::LoadEquipmentTemplates() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); if (!sObjectMgr->GetCreatureTemplate(entry)) { @@ -1463,7 +1463,7 @@ void ObjectMgr::LoadEquipmentTemplates() continue; } - uint8 id = fields[1].GetUInt8(); + uint8 id = fields[1].Get<uint8>(); if (!id) { LOG_ERROR("sql.sql", "Creature equipment template with id 0 found for creature {}, skipped.", entry); @@ -1472,9 +1472,9 @@ void ObjectMgr::LoadEquipmentTemplates() EquipmentInfo& equipmentInfo = _equipmentInfoStore[entry][id]; - equipmentInfo.ItemEntry[0] = fields[2].GetUInt32(); - equipmentInfo.ItemEntry[1] = fields[3].GetUInt32(); - equipmentInfo.ItemEntry[2] = fields[4].GetUInt32(); + equipmentInfo.ItemEntry[0] = fields[2].Get<uint32>(); + equipmentInfo.ItemEntry[1] = fields[3].Get<uint32>(); + equipmentInfo.ItemEntry[2] = fields[4].Get<uint32>(); for (uint8 i = 0; i < MAX_EQUIPMENT_ITEMS; ++i) { @@ -1541,7 +1541,7 @@ void ObjectMgr::LoadCreatureMovementOverrides() do { Field* fields = result->Fetch(); - ObjectGuid::LowType spawnId = fields[0].GetUInt32(); + ObjectGuid::LowType spawnId = fields[0].Get<uint32>(); if (!GetCreatureData(spawnId)) { LOG_ERROR("sql.sql", "Creature (GUID: {}) does not exist but has a record in `creature_movement_override`", spawnId); @@ -1551,37 +1551,37 @@ void ObjectMgr::LoadCreatureMovementOverrides() CreatureMovementData& movement = _creatureMovementOverrides[spawnId]; if (!fields[1].IsNull()) { - movement.Ground = static_cast<CreatureGroundMovementType>(fields[1].GetUInt8()); + movement.Ground = static_cast<CreatureGroundMovementType>(fields[1].Get<uint8>()); } if (!fields[2].IsNull()) { - movement.Swim = fields[2].GetBool(); + movement.Swim = fields[2].Get<bool>(); } if (!fields[3].IsNull()) { - movement.Flight = static_cast<CreatureFlightMovementType>(fields[3].GetUInt8()); + movement.Flight = static_cast<CreatureFlightMovementType>(fields[3].Get<uint8>()); } if (!fields[4].IsNull()) { - movement.Rooted = fields[4].GetBool(); + movement.Rooted = fields[4].Get<bool>(); } if (!fields[5].IsNull()) { - movement.Chase = static_cast<CreatureChaseMovementType>(fields[5].GetUInt8()); + movement.Chase = static_cast<CreatureChaseMovementType>(fields[5].Get<uint8>()); } if (!fields[6].IsNull()) { - movement.Random = static_cast<CreatureRandomMovementType>(fields[6].GetUInt8()); + movement.Random = static_cast<CreatureRandomMovementType>(fields[6].Get<uint8>()); } if (!fields[7].IsNull()) { - movement.InteractionPauseTimer = fields[7].GetUInt32(); + movement.InteractionPauseTimer = fields[7].Get<uint32>(); } CheckCreatureMovement("creature_movement_override", spawnId, movement); @@ -1671,14 +1671,14 @@ void ObjectMgr::LoadCreatureModelInfo() { Field* fields = result->Fetch(); - uint32 modelId = fields[0].GetUInt32(); + uint32 modelId = fields[0].Get<uint32>(); CreatureModelInfo& modelInfo = _creatureModelStore[modelId]; - modelInfo.bounding_radius = fields[1].GetFloat(); - modelInfo.combat_reach = fields[2].GetFloat(); - modelInfo.gender = fields[3].GetUInt8(); - modelInfo.modelid_other_gender = fields[4].GetUInt32(); + modelInfo.bounding_radius = fields[1].Get<float>(); + modelInfo.combat_reach = fields[2].Get<float>(); + modelInfo.gender = fields[3].Get<uint8>(); + modelInfo.modelid_other_gender = fields[4].Get<uint32>(); // Checks @@ -1726,9 +1726,9 @@ void ObjectMgr::LoadLinkedRespawn() { Field* fields = result->Fetch(); - ObjectGuid::LowType guidLow = fields[0].GetUInt32(); - ObjectGuid::LowType linkedGuidLow = fields[1].GetUInt32(); - uint8 linkType = fields[2].GetUInt8(); + ObjectGuid::LowType guidLow = fields[0].Get<uint32>(); + ObjectGuid::LowType linkedGuidLow = fields[1].Get<uint32>(); + uint8 linkType = fields[2].Get<uint8>(); ObjectGuid guid, linkedGuid; bool error = false; @@ -1904,7 +1904,7 @@ bool ObjectMgr::SetCreatureLinkedRespawn(ObjectGuid::LowType guidLow, ObjectGuid { _linkedRespawnStore.erase(guid); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CRELINKED_RESPAWN); - stmt->setUInt32(0, guidLow); + stmt->SetData(0, guidLow); WorldDatabase.Execute(stmt); return true; } @@ -1933,8 +1933,8 @@ bool ObjectMgr::SetCreatureLinkedRespawn(ObjectGuid::LowType guidLow, ObjectGuid _linkedRespawnStore[guid] = linkedGuid; WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_REP_CREATURE_LINKED_RESPAWN); - stmt->setUInt32(0, guidLow); - stmt->setUInt32(1, linkedGuidLow); + stmt->SetData(0, guidLow); + stmt->SetData(1, linkedGuidLow); WorldDatabase.Execute(stmt); return true; } @@ -1957,9 +1957,9 @@ void ObjectMgr::LoadTempSummons() { Field* fields = result->Fetch(); - uint32 summonerId = fields[0].GetUInt32(); - SummonerType summonerType = SummonerType(fields[1].GetUInt8()); - uint8 group = fields[2].GetUInt8(); + uint32 summonerId = fields[0].Get<uint32>(); + SummonerType summonerType = SummonerType(fields[1].Get<uint8>()); + uint8 group = fields[2].Get<uint8>(); switch (summonerType) { @@ -1990,7 +1990,7 @@ void ObjectMgr::LoadTempSummons() } TempSummonData data; - data.entry = fields[3].GetUInt32(); + data.entry = fields[3].Get<uint32>(); if (!GetCreatureTemplate(data.entry)) { @@ -1998,14 +1998,14 @@ void ObjectMgr::LoadTempSummons() continue; } - float posX = fields[4].GetFloat(); - float posY = fields[5].GetFloat(); - float posZ = fields[6].GetFloat(); - float orientation = fields[7].GetFloat(); + float posX = fields[4].Get<float>(); + float posY = fields[5].Get<float>(); + float posZ = fields[6].Get<float>(); + float orientation = fields[7].Get<float>(); data.pos.Relocate(posX, posY, posZ, orientation); - data.type = TempSummonType(fields[8].GetUInt8()); + data.type = TempSummonType(fields[8].Get<uint8>()); if (data.type > TEMPSUMMON_MANUAL_DESPAWN) { @@ -2013,7 +2013,7 @@ void ObjectMgr::LoadTempSummons() continue; } - data.time = fields[9].GetUInt32(); + data.time = fields[9].Get<uint32>(); TempSummonGroupKey key(summonerId, summonerType, group); _tempSummonDataStore[key].push_back(data); @@ -2060,10 +2060,10 @@ void ObjectMgr::LoadCreatures() { Field* fields = result->Fetch(); - ObjectGuid::LowType spawnId = fields[0].GetUInt32(); - uint32 id1 = fields[1].GetUInt32(); - uint32 id2 = fields[2].GetUInt32(); - uint32 id3 = fields[3].GetUInt32(); + ObjectGuid::LowType spawnId = fields[0].Get<uint32>(); + uint32 id1 = fields[1].Get<uint32>(); + uint32 id2 = fields[2].Get<uint32>(); + uint32 id3 = fields[3].Get<uint32>(); CreatureTemplate const* cInfo = GetCreatureTemplate(id1); if (!cInfo) @@ -2092,26 +2092,26 @@ void ObjectMgr::LoadCreatures() data.id1 = id1; data.id2 = id2; data.id3 = id3; - data.mapid = fields[4].GetUInt16(); - data.equipmentId = fields[5].GetInt8(); - data.posX = fields[6].GetFloat(); - data.posY = fields[7].GetFloat(); - data.posZ = fields[8].GetFloat(); - data.orientation = fields[9].GetFloat(); - data.spawntimesecs = fields[10].GetUInt32(); - data.wander_distance = fields[11].GetFloat(); - data.currentwaypoint = fields[12].GetUInt32(); - data.curhealth = fields[13].GetUInt32(); - data.curmana = fields[14].GetUInt32(); - data.movementType = fields[15].GetUInt8(); - data.spawnMask = fields[16].GetUInt8(); - data.phaseMask = fields[17].GetUInt32(); - int16 gameEvent = fields[18].GetInt8(); - uint32 PoolId = fields[19].GetUInt32(); - data.npcflag = fields[20].GetUInt32(); - data.unit_flags = fields[21].GetUInt32(); - data.dynamicflags = fields[22].GetUInt32(); - data.ScriptId = GetScriptId(fields[23].GetString()); + data.mapid = fields[4].Get<uint16>(); + data.equipmentId = fields[5].Get<int8>(); + data.posX = fields[6].Get<float>(); + data.posY = fields[7].Get<float>(); + data.posZ = fields[8].Get<float>(); + data.orientation = fields[9].Get<float>(); + data.spawntimesecs = fields[10].Get<uint32>(); + data.wander_distance = fields[11].Get<float>(); + data.currentwaypoint = fields[12].Get<uint32>(); + data.curhealth = fields[13].Get<uint32>(); + data.curmana = fields[14].Get<uint32>(); + data.movementType = fields[15].Get<uint8>(); + data.spawnMask = fields[16].Get<uint8>(); + data.phaseMask = fields[17].Get<uint32>(); + int16 gameEvent = fields[18].Get<int8>(); + uint32 PoolId = fields[19].Get<uint32>(); + data.npcflag = fields[20].Get<uint32>(); + data.unit_flags = fields[21].Get<uint32>(); + data.dynamicflags = fields[22].Get<uint32>(); + data.ScriptId = GetScriptId(fields[23].Get<std::string>()); if (!data.ScriptId) data.ScriptId = cInfo->ScriptID; @@ -2197,9 +2197,9 @@ void ObjectMgr::LoadCreatures() WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_ZONE_AREA_DATA); - stmt->setUInt32(0, zoneId); - stmt->setUInt32(1, areaId); - stmt->setUInt32(2, spawnId); + stmt->SetData(0, zoneId); + stmt->SetData(1, areaId); + stmt->SetData(2, spawnId); WorldDatabase.Execute(stmt); } @@ -2384,8 +2384,8 @@ void ObjectMgr::LoadGameobjects() { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); - uint32 entry = fields[1].GetUInt32(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); + uint32 entry = fields[1].Get<uint32>(); GameObjectTemplate const* gInfo = GetGameObjectTemplate(entry); if (!gInfo) @@ -2416,17 +2416,17 @@ void ObjectMgr::LoadGameobjects() GameObjectData& data = _gameObjectDataStore[guid]; data.id = entry; - data.mapid = fields[2].GetUInt16(); - data.posX = fields[3].GetFloat(); - data.posY = fields[4].GetFloat(); - data.posZ = fields[5].GetFloat(); - data.orientation = fields[6].GetFloat(); - data.rotation.x = fields[7].GetFloat(); - data.rotation.y = fields[8].GetFloat(); - data.rotation.z = fields[9].GetFloat(); - data.rotation.w = fields[10].GetFloat(); - data.spawntimesecs = fields[11].GetInt32(); - data.ScriptId = GetScriptId(fields[18].GetString()); + data.mapid = fields[2].Get<uint16>(); + data.posX = fields[3].Get<float>(); + data.posY = fields[4].Get<float>(); + data.posZ = fields[5].Get<float>(); + data.orientation = fields[6].Get<float>(); + data.rotation.x = fields[7].Get<float>(); + data.rotation.y = fields[8].Get<float>(); + data.rotation.z = fields[9].Get<float>(); + data.rotation.w = fields[10].Get<float>(); + data.spawntimesecs = fields[11].Get<int32>(); + data.ScriptId = GetScriptId(fields[18].Get<std::string>()); if (!data.ScriptId) data.ScriptId = gInfo->ScriptId; @@ -2442,10 +2442,10 @@ void ObjectMgr::LoadGameobjects() LOG_ERROR("sql.sql", "Table `gameobject` has gameobject (GUID: {} Entry: {}) with `spawntimesecs` (0) value, but the gameobejct is marked as despawnable at action.", guid, data.id); } - data.animprogress = fields[12].GetUInt8(); + data.animprogress = fields[12].Get<uint8>(); data.artKit = 0; - uint32 go_state = fields[13].GetUInt8(); + uint32 go_state = fields[13].Get<uint8>(); if (go_state >= MAX_GO_STATE) { LOG_ERROR("sql.sql", "Table `gameobject` has gameobject (GUID: {} Entry: {}) with invalid `state` ({}) value, skip", guid, data.id, go_state); @@ -2453,14 +2453,14 @@ void ObjectMgr::LoadGameobjects() } data.go_state = GOState(go_state); - data.spawnMask = fields[14].GetUInt8(); + data.spawnMask = fields[14].Get<uint8>(); if (!_transportMaps.count(data.mapid) && data.spawnMask & ~spawnMasks[data.mapid]) LOG_ERROR("sql.sql", "Table `gameobject` has gameobject (GUID: {} Entry: {}) that has wrong spawn mask {} including not supported difficulty modes for map (Id: {}), skip", guid, data.id, data.spawnMask, data.mapid); - data.phaseMask = fields[15].GetUInt32(); - int16 gameEvent = fields[16].GetInt8(); - uint32 PoolId = fields[17].GetUInt32(); + data.phaseMask = fields[15].Get<uint32>(); + int16 gameEvent = fields[16].Get<int8>(); + uint32 PoolId = fields[17].Get<uint32>(); if (data.rotation.x < -1.0f || data.rotation.x > 1.0f) { @@ -2505,9 +2505,9 @@ void ObjectMgr::LoadGameobjects() WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA); - stmt->setUInt32(0, zoneId); - stmt->setUInt32(1, areaId); - stmt->setUInt32(2, guid); + stmt->SetData(0, zoneId); + stmt->SetData(1, areaId); + stmt->SetData(2, guid); WorldDatabase.Execute(stmt); } @@ -2563,15 +2563,15 @@ void ObjectMgr::LoadItemLocales() { Field* fields = result->Fetch(); - uint32 ID = fields[0].GetUInt32(); + uint32 ID = fields[0].Get<uint32>(); - LocaleConstant locale = GetLocaleByName(fields[1].GetString()); + LocaleConstant locale = GetLocaleByName(fields[1].Get<std::string>()); if (locale == LOCALE_enUS) continue; ItemLocale& data = _itemLocaleStore[ID]; - AddLocaleString(fields[2].GetString(), locale, data.Name); - AddLocaleString(fields[3].GetString(), locale, data.Description); + AddLocaleString(fields[2].Get<std::string>(), locale, data.Name); + AddLocaleString(fields[3].Get<std::string>(), locale, data.Description); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} Item Locale strings in {} ms", (uint32)_itemLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime)); @@ -2628,115 +2628,115 @@ void ObjectMgr::LoadItemTemplates() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); ItemTemplate& itemTemplate = _itemTemplateStore[entry]; itemTemplate.ItemId = entry; - itemTemplate.Class = uint32(fields[1].GetUInt8()); - itemTemplate.SubClass = uint32(fields[2].GetUInt8()); - itemTemplate.SoundOverrideSubclass = int32(fields[3].GetInt8()); - itemTemplate.Name1 = fields[4].GetString(); - itemTemplate.DisplayInfoID = fields[5].GetUInt32(); - itemTemplate.Quality = uint32(fields[6].GetUInt8()); - itemTemplate.Flags = fields[7].GetUInt32(); - itemTemplate.Flags2 = fields[8].GetUInt32(); - itemTemplate.BuyCount = uint32(fields[9].GetUInt8()); - itemTemplate.BuyPrice = int32(fields[10].GetInt64() * sWorld->getRate((Rates)(RATE_BUYVALUE_ITEM_POOR + itemTemplate.Quality))); - itemTemplate.SellPrice = uint32(fields[11].GetUInt32() * sWorld->getRate((Rates)(RATE_SELLVALUE_ITEM_POOR + itemTemplate.Quality))); - itemTemplate.InventoryType = uint32(fields[12].GetUInt8()); - itemTemplate.AllowableClass = fields[13].GetInt32(); - itemTemplate.AllowableRace = fields[14].GetInt32(); - itemTemplate.ItemLevel = uint32(fields[15].GetUInt16()); - itemTemplate.RequiredLevel = uint32(fields[16].GetUInt8()); - itemTemplate.RequiredSkill = uint32(fields[17].GetUInt16()); - itemTemplate.RequiredSkillRank = uint32(fields[18].GetUInt16()); - itemTemplate.RequiredSpell = fields[19].GetUInt32(); - itemTemplate.RequiredHonorRank = fields[20].GetUInt32(); - itemTemplate.RequiredCityRank = fields[21].GetUInt32(); - itemTemplate.RequiredReputationFaction = uint32(fields[22].GetUInt16()); - itemTemplate.RequiredReputationRank = uint32(fields[23].GetUInt16()); - itemTemplate.MaxCount = fields[24].GetInt32(); - itemTemplate.Stackable = fields[25].GetInt32(); - itemTemplate.ContainerSlots = uint32(fields[26].GetUInt8()); - itemTemplate.StatsCount = uint32(fields[27].GetUInt8()); + itemTemplate.Class = uint32(fields[1].Get<uint8>()); + itemTemplate.SubClass = uint32(fields[2].Get<uint8>()); + itemTemplate.SoundOverrideSubclass = int32(fields[3].Get<int8>()); + itemTemplate.Name1 = fields[4].Get<std::string>(); + itemTemplate.DisplayInfoID = fields[5].Get<uint32>(); + itemTemplate.Quality = uint32(fields[6].Get<uint8>()); + itemTemplate.Flags = fields[7].Get<uint32>(); + itemTemplate.Flags2 = fields[8].Get<uint32>(); + itemTemplate.BuyCount = uint32(fields[9].Get<uint8>()); + itemTemplate.BuyPrice = int32(fields[10].Get<int64>() * sWorld->getRate((Rates)(RATE_BUYVALUE_ITEM_POOR + itemTemplate.Quality))); + itemTemplate.SellPrice = uint32(fields[11].Get<uint32>() * sWorld->getRate((Rates)(RATE_SELLVALUE_ITEM_POOR + itemTemplate.Quality))); + itemTemplate.InventoryType = uint32(fields[12].Get<uint8>()); + itemTemplate.AllowableClass = fields[13].Get<int32>(); + itemTemplate.AllowableRace = fields[14].Get<int32>(); + itemTemplate.ItemLevel = uint32(fields[15].Get<uint16>()); + itemTemplate.RequiredLevel = uint32(fields[16].Get<uint8>()); + itemTemplate.RequiredSkill = uint32(fields[17].Get<uint16>()); + itemTemplate.RequiredSkillRank = uint32(fields[18].Get<uint16>()); + itemTemplate.RequiredSpell = fields[19].Get<uint32>(); + itemTemplate.RequiredHonorRank = fields[20].Get<uint32>(); + itemTemplate.RequiredCityRank = fields[21].Get<uint32>(); + itemTemplate.RequiredReputationFaction = uint32(fields[22].Get<uint16>()); + itemTemplate.RequiredReputationRank = uint32(fields[23].Get<uint16>()); + itemTemplate.MaxCount = fields[24].Get<int32>(); + itemTemplate.Stackable = fields[25].Get<int32>(); + itemTemplate.ContainerSlots = uint32(fields[26].Get<uint8>()); + itemTemplate.StatsCount = uint32(fields[27].Get<uint8>()); for (uint8 i = 0; i < itemTemplate.StatsCount; ++i) { - itemTemplate.ItemStat[i].ItemStatType = uint32(fields[28 + i * 2].GetUInt8()); - itemTemplate.ItemStat[i].ItemStatValue = int32(fields[29 + i * 2].GetInt16()); + itemTemplate.ItemStat[i].ItemStatType = uint32(fields[28 + i * 2].Get<uint8>()); + itemTemplate.ItemStat[i].ItemStatValue = int32(fields[29 + i * 2].Get<int16>()); } - itemTemplate.ScalingStatDistribution = uint32(fields[48].GetUInt16()); - itemTemplate.ScalingStatValue = fields[49].GetInt32(); + itemTemplate.ScalingStatDistribution = uint32(fields[48].Get<uint16>()); + itemTemplate.ScalingStatValue = fields[49].Get<int32>(); for (uint8 i = 0; i < MAX_ITEM_PROTO_DAMAGES; ++i) { - itemTemplate.Damage[i].DamageMin = fields[50 + i * 3].GetFloat(); - itemTemplate.Damage[i].DamageMax = fields[51 + i * 3].GetFloat(); - itemTemplate.Damage[i].DamageType = uint32(fields[52 + i * 3].GetUInt8()); + itemTemplate.Damage[i].DamageMin = fields[50 + i * 3].Get<float>(); + itemTemplate.Damage[i].DamageMax = fields[51 + i * 3].Get<float>(); + itemTemplate.Damage[i].DamageType = uint32(fields[52 + i * 3].Get<uint8>()); } - itemTemplate.Armor = uint32(fields[56].GetUInt16()); - itemTemplate.HolyRes = uint32(fields[57].GetUInt8()); - itemTemplate.FireRes = uint32(fields[58].GetUInt8()); - itemTemplate.NatureRes = uint32(fields[59].GetUInt8()); - itemTemplate.FrostRes = uint32(fields[60].GetUInt8()); - itemTemplate.ShadowRes = uint32(fields[61].GetUInt8()); - itemTemplate.ArcaneRes = uint32(fields[62].GetUInt8()); - itemTemplate.Delay = uint32(fields[63].GetUInt16()); - itemTemplate.AmmoType = uint32(fields[64].GetUInt8()); - itemTemplate.RangedModRange = fields[65].GetFloat(); + itemTemplate.Armor = uint32(fields[56].Get<uint16>()); + itemTemplate.HolyRes = uint32(fields[57].Get<uint8>()); + itemTemplate.FireRes = uint32(fields[58].Get<uint8>()); + itemTemplate.NatureRes = uint32(fields[59].Get<uint8>()); + itemTemplate.FrostRes = uint32(fields[60].Get<uint8>()); + itemTemplate.ShadowRes = uint32(fields[61].Get<uint8>()); + itemTemplate.ArcaneRes = uint32(fields[62].Get<uint8>()); + itemTemplate.Delay = uint32(fields[63].Get<uint16>()); + itemTemplate.AmmoType = uint32(fields[64].Get<uint8>()); + itemTemplate.RangedModRange = fields[65].Get<float>(); for (uint8 i = 0; i < MAX_ITEM_PROTO_SPELLS; ++i) { - itemTemplate.Spells[i].SpellId = fields[66 + i * 7 ].GetInt32(); - itemTemplate.Spells[i].SpellTrigger = uint32(fields[67 + i * 7].GetUInt8()); - itemTemplate.Spells[i].SpellCharges = int32(fields[68 + i * 7].GetInt16()); - itemTemplate.Spells[i].SpellPPMRate = fields[69 + i * 7].GetFloat(); - itemTemplate.Spells[i].SpellCooldown = fields[70 + i * 7].GetInt32(); - itemTemplate.Spells[i].SpellCategory = uint32(fields[71 + i * 7].GetUInt16()); - itemTemplate.Spells[i].SpellCategoryCooldown = fields[72 + i * 7].GetInt32(); - } - - itemTemplate.Bonding = uint32(fields[101].GetUInt8()); - itemTemplate.Description = fields[102].GetString(); - itemTemplate.PageText = fields[103].GetUInt32(); - itemTemplate.LanguageID = uint32(fields[104].GetUInt8()); - itemTemplate.PageMaterial = uint32(fields[105].GetUInt8()); - itemTemplate.StartQuest = fields[106].GetUInt32(); - itemTemplate.LockID = fields[107].GetUInt32(); - itemTemplate.Material = int32(fields[108].GetInt8()); - itemTemplate.Sheath = uint32(fields[109].GetUInt8()); - itemTemplate.RandomProperty = fields[110].GetUInt32(); - itemTemplate.RandomSuffix = fields[111].GetInt32(); - itemTemplate.Block = fields[112].GetUInt32(); - itemTemplate.ItemSet = fields[113].GetUInt32(); - itemTemplate.MaxDurability = uint32(fields[114].GetUInt16()); - itemTemplate.Area = fields[115].GetUInt32(); - itemTemplate.Map = uint32(fields[116].GetUInt16()); - itemTemplate.BagFamily = fields[117].GetUInt32(); - itemTemplate.TotemCategory = fields[118].GetUInt32(); + itemTemplate.Spells[i].SpellId = fields[66 + i * 7 ].Get<int32>(); + itemTemplate.Spells[i].SpellTrigger = uint32(fields[67 + i * 7].Get<uint8>()); + itemTemplate.Spells[i].SpellCharges = int32(fields[68 + i * 7].Get<int16>()); + itemTemplate.Spells[i].SpellPPMRate = fields[69 + i * 7].Get<float>(); + itemTemplate.Spells[i].SpellCooldown = fields[70 + i * 7].Get<int32>(); + itemTemplate.Spells[i].SpellCategory = uint32(fields[71 + i * 7].Get<uint16>()); + itemTemplate.Spells[i].SpellCategoryCooldown = fields[72 + i * 7].Get<int32>(); + } + + itemTemplate.Bonding = uint32(fields[101].Get<uint8>()); + itemTemplate.Description = fields[102].Get<std::string>(); + itemTemplate.PageText = fields[103].Get<uint32>(); + itemTemplate.LanguageID = uint32(fields[104].Get<uint8>()); + itemTemplate.PageMaterial = uint32(fields[105].Get<uint8>()); + itemTemplate.StartQuest = fields[106].Get<uint32>(); + itemTemplate.LockID = fields[107].Get<uint32>(); + itemTemplate.Material = int32(fields[108].Get<int8>()); + itemTemplate.Sheath = uint32(fields[109].Get<uint8>()); + itemTemplate.RandomProperty = fields[110].Get<int32>(); + itemTemplate.RandomSuffix = fields[111].Get<int32>(); + itemTemplate.Block = fields[112].Get<uint32>(); + itemTemplate.ItemSet = fields[113].Get<uint32>(); + itemTemplate.MaxDurability = uint32(fields[114].Get<uint16>()); + itemTemplate.Area = fields[115].Get<uint32>(); + itemTemplate.Map = uint32(fields[116].Get<uint16>()); + itemTemplate.BagFamily = fields[117].Get<uint32>(); + itemTemplate.TotemCategory = fields[118].Get<uint32>(); for (uint8 i = 0; i < MAX_ITEM_PROTO_SOCKETS; ++i) { - itemTemplate.Socket[i].Color = uint32(fields[119 + i * 2].GetUInt8()); - itemTemplate.Socket[i].Content = fields[120 + i * 2].GetUInt32(); + itemTemplate.Socket[i].Color = uint32(fields[119 + i * 2].Get<uint8>()); + itemTemplate.Socket[i].Content = fields[120 + i * 2].Get<uint32>(); } - itemTemplate.socketBonus = fields[125].GetUInt32(); - itemTemplate.GemProperties = fields[126].GetUInt32(); - itemTemplate.RequiredDisenchantSkill = uint32(fields[127].GetInt16()); - itemTemplate.ArmorDamageModifier = fields[128].GetFloat(); - itemTemplate.Duration = fields[129].GetUInt32(); - itemTemplate.ItemLimitCategory = uint32(fields[130].GetInt16()); - itemTemplate.HolidayId = fields[131].GetUInt32(); - itemTemplate.ScriptId = sObjectMgr->GetScriptId(fields[132].GetCString()); - itemTemplate.DisenchantID = fields[133].GetUInt32(); - itemTemplate.FoodType = uint32(fields[134].GetUInt8()); - itemTemplate.MinMoneyLoot = fields[135].GetUInt32(); - itemTemplate.MaxMoneyLoot = fields[136].GetUInt32(); - itemTemplate.FlagsCu = fields[137].GetUInt32(); + itemTemplate.socketBonus = fields[125].Get<uint32>(); + itemTemplate.GemProperties = fields[126].Get<uint32>(); + itemTemplate.RequiredDisenchantSkill = uint32(fields[127].Get<int16>()); + itemTemplate.ArmorDamageModifier = fields[128].Get<float>(); + itemTemplate.Duration = fields[129].Get<uint32>(); + itemTemplate.ItemLimitCategory = uint32(fields[130].Get<int16>()); + itemTemplate.HolidayId = fields[131].Get<uint32>(); + itemTemplate.ScriptId = sObjectMgr->GetScriptId(fields[132].Get<std::string>()); + itemTemplate.DisenchantID = fields[133].Get<uint32>(); + itemTemplate.FoodType = uint32(fields[134].Get<uint8>()); + itemTemplate.MinMoneyLoot = fields[135].Get<uint32>(); + itemTemplate.MaxMoneyLoot = fields[136].Get<uint32>(); + itemTemplate.FlagsCu = fields[137].Get<uint32>(); // Checks if (itemTemplate.Class >= MAX_ITEM_CLASS) @@ -3184,14 +3184,14 @@ void ObjectMgr::LoadItemSetNameLocales() { Field* fields = result->Fetch(); - uint32 ID = fields[0].GetUInt32(); + uint32 ID = fields[0].Get<uint32>(); - LocaleConstant locale = GetLocaleByName(fields[1].GetString()); + LocaleConstant locale = GetLocaleByName(fields[1].Get<std::string>()); if (locale == LOCALE_enUS) continue; ItemSetNameLocale& data = _itemSetNameLocaleStore[ID]; - AddLocaleString(fields[2].GetString(), locale, data.Name); + AddLocaleString(fields[2].Get<std::string>(), locale, data.Name); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} Item Set Name Locale strings in {} ms", uint32(_itemSetNameLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime)); @@ -3234,7 +3234,7 @@ void ObjectMgr::LoadItemSetNames() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); if (itemSetItems.find(entry) == itemSetItems.end()) { LOG_ERROR("sql.sql", "Item set name (Entry: {}) not found in ItemSet.dbc, data useless.", entry); @@ -3242,9 +3242,9 @@ void ObjectMgr::LoadItemSetNames() } ItemSetNameEntry& data = _itemSetNameStore[entry]; - data.name = fields[1].GetString(); + data.name = fields[1].Get<std::string>(); - uint32 invType = fields[2].GetUInt8(); + uint32 invType = fields[2].Get<uint8>(); if (invType >= MAX_INVTYPE) { LOG_ERROR("sql.sql", "Item set name (Entry: {}) has wrong InventoryType value ({})", entry, invType); @@ -3303,12 +3303,12 @@ void ObjectMgr::LoadVehicleTemplateAccessories() { Field* fields = result->Fetch(); - uint32 uiEntry = fields[0].GetUInt32(); - uint32 uiAccessory = fields[1].GetUInt32(); - int8 uiSeat = int8(fields[2].GetInt8()); - bool bMinion = fields[3].GetBool(); - uint8 uiSummonType = fields[4].GetUInt8(); - uint32 uiSummonTimer = fields[5].GetUInt32(); + uint32 uiEntry = fields[0].Get<uint32>(); + uint32 uiAccessory = fields[1].Get<uint32>(); + int8 uiSeat = int8(fields[2].Get<int8>()); + bool bMinion = fields[3].Get<bool>(); + uint8 uiSummonType = fields[4].Get<uint8>(); + uint32 uiSummonTimer = fields[5].Get<uint32>(); if (!sObjectMgr->GetCreatureTemplate(uiEntry)) { @@ -3359,12 +3359,12 @@ void ObjectMgr::LoadVehicleAccessories() { Field* fields = result->Fetch(); - uint32 uiGUID = fields[0].GetUInt32(); - uint32 uiAccessory = fields[1].GetUInt32(); - int8 uiSeat = int8(fields[2].GetInt16()); - bool bMinion = fields[3].GetBool(); - uint8 uiSummonType = fields[4].GetUInt8(); - uint32 uiSummonTimer = fields[5].GetUInt32(); + uint32 uiGUID = fields[0].Get<uint32>(); + uint32 uiAccessory = fields[1].Get<uint32>(); + int8 uiSeat = int8(fields[2].Get<int16>()); + bool bMinion = fields[3].Get<bool>(); + uint8 uiSummonType = fields[4].Get<uint8>(); + uint32 uiSummonTimer = fields[5].Get<uint32>(); if (!sObjectMgr->GetCreatureTemplate(uiAccessory)) { @@ -3401,14 +3401,14 @@ void ObjectMgr::LoadPetLevelInfo() { Field* fields = result->Fetch(); - uint32 creature_id = fields[0].GetUInt32(); + uint32 creature_id = fields[0].Get<uint32>(); if (!sObjectMgr->GetCreatureTemplate(creature_id)) { LOG_ERROR("sql.sql", "Wrong creature id {} in `pet_levelstats` table, ignoring.", creature_id); continue; } - uint32 current_level = fields[1].GetUInt8(); + uint32 current_level = fields[1].Get<uint8>(); if (current_level > sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)) { if (current_level > STRONG_MAX_LEVEL) // hardcoded level maximum @@ -3434,14 +3434,14 @@ void ObjectMgr::LoadPetLevelInfo() // data for level 1 stored in [0] array element, ... PetLevelInfo* pLevelInfo = &pInfoMapEntry[current_level - 1]; - pLevelInfo->health = fields[2].GetUInt16(); - pLevelInfo->mana = fields[3].GetUInt16(); - pLevelInfo->armor = fields[9].GetUInt32(); - pLevelInfo->min_dmg = fields[10].GetUInt16(); - pLevelInfo->max_dmg = fields[11].GetUInt16(); + pLevelInfo->health = fields[2].Get<uint16>(); + pLevelInfo->mana = fields[3].Get<uint16>(); + pLevelInfo->armor = fields[9].Get<uint32>(); + pLevelInfo->min_dmg = fields[10].Get<uint16>(); + pLevelInfo->max_dmg = fields[11].Get<uint16>(); for (int i = 0; i < MAX_STATS; i++) { - pLevelInfo->stats[i] = fields[i + 4].GetUInt16(); + pLevelInfo->stats[i] = fields[i + 4].Get<uint16>(); } ++count; @@ -3542,14 +3542,14 @@ void ObjectMgr::LoadPlayerInfo() { Field* fields = result->Fetch(); - uint32 current_race = fields[0].GetUInt8(); - uint32 current_class = fields[1].GetUInt8(); - uint32 mapId = fields[2].GetUInt16(); - uint32 areaId = fields[3].GetUInt32(); // zone - float positionX = fields[4].GetFloat(); - float positionY = fields[5].GetFloat(); - float positionZ = fields[6].GetFloat(); - float orientation = fields[7].GetFloat(); + uint32 current_race = fields[0].Get<uint8>(); + uint32 current_class = fields[1].Get<uint8>(); + uint32 mapId = fields[2].Get<uint16>(); + uint32 areaId = fields[3].Get<uint32>(); // zone + float positionX = fields[4].Get<float>(); + float positionY = fields[5].Get<float>(); + float positionZ = fields[6].Get<float>(); + float orientation = fields[7].Get<float>(); if (current_race >= MAX_RACES) { @@ -3628,21 +3628,21 @@ void ObjectMgr::LoadPlayerInfo() { Field* fields = result->Fetch(); - uint32 current_race = fields[0].GetUInt8(); + uint32 current_race = fields[0].Get<uint8>(); if (current_race >= MAX_RACES) { LOG_ERROR("sql.sql", "Wrong race {} in `playercreateinfo_item` table, ignoring.", current_race); continue; } - uint32 current_class = fields[1].GetUInt8(); + uint32 current_class = fields[1].Get<uint8>(); if (current_class >= MAX_CLASSES) { LOG_ERROR("sql.sql", "Wrong class {} in `playercreateinfo_item` table, ignoring.", current_class); continue; } - uint32 item_id = fields[2].GetUInt32(); + uint32 item_id = fields[2].Get<uint32>(); if (!GetItemTemplate(item_id)) { @@ -3650,7 +3650,7 @@ void ObjectMgr::LoadPlayerInfo() continue; } - int32 amount = fields[3].GetInt32(); + int32 amount = fields[3].Get<int32>(); if (!amount) { @@ -3684,7 +3684,7 @@ void ObjectMgr::LoadPlayerInfo() { uint32 oldMSTime = getMSTime(); - QueryResult result = WorldDatabase.PQuery("SELECT raceMask, classMask, skill, `rank` FROM playercreateinfo_skills"); + QueryResult result = WorldDatabase.Query("SELECT raceMask, classMask, skill, `rank` FROM playercreateinfo_skills"); if (!result) { @@ -3697,11 +3697,11 @@ void ObjectMgr::LoadPlayerInfo() do { Field* fields = result->Fetch(); - uint32 raceMask = fields[0].GetUInt32(); - uint32 classMask = fields[1].GetUInt32(); + uint32 raceMask = fields[0].Get<uint32>(); + uint32 classMask = fields[1].Get<uint32>(); PlayerCreateInfoSkill skill; - skill.SkillId = fields[2].GetUInt16(); - skill.Rank = fields[3].GetUInt16(); + skill.SkillId = fields[2].Get<uint16>(); + skill.Rank = fields[3].Get<uint16>(); if (skill.Rank >= MAX_SKILL_STEP) { @@ -3758,7 +3758,7 @@ void ObjectMgr::LoadPlayerInfo() { uint32 oldMSTime = getMSTime(); - QueryResult result = WorldDatabase.PQuery("SELECT racemask, classmask, Spell FROM playercreateinfo_spell_custom"); + QueryResult result = WorldDatabase.Query("SELECT racemask, classmask, Spell FROM playercreateinfo_spell_custom"); if (!result) { @@ -3771,9 +3771,9 @@ void ObjectMgr::LoadPlayerInfo() do { Field* fields = result->Fetch(); - uint32 raceMask = fields[0].GetUInt32(); - uint32 classMask = fields[1].GetUInt32(); - uint32 spellId = fields[2].GetUInt32(); + uint32 raceMask = fields[0].Get<uint32>(); + uint32 classMask = fields[1].Get<uint32>(); + uint32 spellId = fields[2].Get<uint32>(); if (raceMask != 0 && !(raceMask & RACEMASK_ALL_PLAYABLE)) { @@ -3816,7 +3816,7 @@ void ObjectMgr::LoadPlayerInfo() { uint32 oldMSTime = getMSTime(); - QueryResult result = WorldDatabase.PQuery("SELECT raceMask, classMask, spell FROM playercreateinfo_cast_spell"); + QueryResult result = WorldDatabase.Query("SELECT raceMask, classMask, spell FROM playercreateinfo_cast_spell"); if (!result) { @@ -3829,9 +3829,9 @@ void ObjectMgr::LoadPlayerInfo() do { Field* fields = result->Fetch(); - uint32 raceMask = fields[0].GetUInt32(); - uint32 classMask = fields[1].GetUInt32(); - uint32 spellId = fields[2].GetUInt32(); + uint32 raceMask = fields[0].Get<uint32>(); + uint32 classMask = fields[1].Get<uint32>(); + uint32 spellId = fields[2].Get<uint32>(); if (raceMask != 0 && !(raceMask & RACEMASK_ALL_PLAYABLE)) { @@ -3889,14 +3889,14 @@ void ObjectMgr::LoadPlayerInfo() { Field* fields = result->Fetch(); - uint32 current_race = fields[0].GetUInt8(); + uint32 current_race = fields[0].Get<uint8>(); if (current_race >= MAX_RACES) { LOG_ERROR("sql.sql", "Wrong race {} in `playercreateinfo_action` table, ignoring.", current_race); continue; } - uint32 current_class = fields[1].GetUInt8(); + uint32 current_class = fields[1].Get<uint8>(); if (current_class >= MAX_CLASSES) { LOG_ERROR("sql.sql", "Wrong class {} in `playercreateinfo_action` table, ignoring.", current_class); @@ -3904,7 +3904,7 @@ void ObjectMgr::LoadPlayerInfo() } if (PlayerInfo* info = _playerInfo[current_race][current_class]) - info->action.push_back(PlayerCreateInfoAction(fields[2].GetUInt16(), fields[3].GetUInt32(), fields[4].GetUInt16())); + info->action.push_back(PlayerCreateInfoAction(fields[2].Get<uint16>(), fields[3].Get<uint32>(), fields[4].Get<uint16>())); ++count; } while (result->NextRow()); @@ -3934,14 +3934,14 @@ void ObjectMgr::LoadPlayerInfo() { Field* fields = result->Fetch(); - uint32 current_class = fields[0].GetUInt8(); + uint32 current_class = fields[0].Get<uint8>(); if (current_class >= MAX_CLASSES) { LOG_ERROR("sql.sql", "Wrong class {} in `player_classlevelstats` table, ignoring.", current_class); continue; } - uint8 current_level = fields[1].GetUInt8(); // Can't be > than STRONG_MAX_LEVEL (hardcoded level maximum) due to var type + uint8 current_level = fields[1].Get<uint8>(); // Can't be > than STRONG_MAX_LEVEL (hardcoded level maximum) due to var type if (current_level > sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)) { LOG_INFO("sql.sql", "Unused (> MaxPlayerLevel in worldserver.conf) level {} in `player_classlevelstats` table, ignoring.", current_level); @@ -3959,8 +3959,8 @@ void ObjectMgr::LoadPlayerInfo() PlayerClassLevelInfo& levelInfo = info->levelInfo[current_level - 1]; - levelInfo.basehealth = fields[2].GetUInt16(); - levelInfo.basemana = fields[3].GetUInt16(); + levelInfo.basehealth = fields[2].Get<uint16>(); + levelInfo.basemana = fields[3].Get<uint16>(); ++count; } while (result->NextRow()); @@ -4017,21 +4017,21 @@ void ObjectMgr::LoadPlayerInfo() { Field* fields = result->Fetch(); - uint32 current_race = fields[0].GetUInt8(); + uint32 current_race = fields[0].Get<uint8>(); if (current_race >= MAX_RACES) { LOG_ERROR("sql.sql", "Wrong race {} in `player_levelstats` table, ignoring.", current_race); continue; } - uint32 current_class = fields[1].GetUInt8(); + uint32 current_class = fields[1].Get<uint8>(); if (current_class >= MAX_CLASSES) { LOG_ERROR("sql.sql", "Wrong class {} in `player_levelstats` table, ignoring.", current_class); continue; } - uint32 current_level = fields[2].GetUInt8(); + uint32 current_level = fields[2].Get<uint8>(); if (current_level > sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)) { if (current_level > STRONG_MAX_LEVEL) // hardcoded level maximum @@ -4051,7 +4051,7 @@ void ObjectMgr::LoadPlayerInfo() PlayerLevelInfo& levelInfo = info->levelInfo[current_level - 1]; for (int i = 0; i < MAX_STATS; i++) - levelInfo.stats[i] = fields[i + 3].GetUInt8(); + levelInfo.stats[i] = fields[i + 3].Get<uint8>(); } ++count; @@ -4130,8 +4130,8 @@ void ObjectMgr::LoadPlayerInfo() { Field* fields = result->Fetch(); - uint32 current_level = fields[0].GetUInt8(); - uint32 current_xp = fields[1].GetUInt32(); + uint32 current_level = fields[0].Get<uint8>(); + uint32 current_xp = fields[1].Get<uint32>(); if (current_level >= sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)) { @@ -4358,7 +4358,7 @@ void ObjectMgr::LoadQuests() do { Field* fields = result->Fetch(); - uint32 questId = fields[0].GetUInt32(); + uint32 questId = fields[0].Get<uint32>(); auto itr = _questTemplates.find(questId); if (itr != _questTemplates.end()) @@ -4381,7 +4381,7 @@ void ObjectMgr::LoadQuests() do { Field* fields = result->Fetch(); - uint32 questId = fields[0].GetUInt32(); + uint32 questId = fields[0].Get<uint32>(); auto itr = _questTemplates.find(questId); if (itr != _questTemplates.end()) @@ -4404,7 +4404,7 @@ void ObjectMgr::LoadQuests() do { Field* fields = result->Fetch(); - uint32 questId = fields[0].GetUInt32(); + uint32 questId = fields[0].Get<uint32>(); auto itr = _questTemplates.find(questId); if (itr != _questTemplates.end()) @@ -4429,7 +4429,7 @@ void ObjectMgr::LoadQuests() do { Field* fields = result->Fetch(); - uint32 questId = fields[0].GetUInt32(); + uint32 questId = fields[0].Get<uint32>(); auto itr = _questTemplates.find(questId); if (itr != _questTemplates.end()) @@ -5033,21 +5033,21 @@ void ObjectMgr::LoadQuestLocales() { Field* fields = result->Fetch(); - uint32 ID = fields[0].GetUInt32(); + uint32 ID = fields[0].Get<uint32>(); - LocaleConstant locale = GetLocaleByName(fields[1].GetString()); + LocaleConstant locale = GetLocaleByName(fields[1].Get<std::string>()); if (locale == LOCALE_enUS) continue; QuestLocale& data = _questLocaleStore[ID]; - AddLocaleString(fields[2].GetString(), locale, data.Title); - AddLocaleString(fields[3].GetString(), locale, data.Details); - AddLocaleString(fields[4].GetString(), locale, data.Objectives); - AddLocaleString(fields[5].GetString(), locale, data.AreaDescription); - AddLocaleString(fields[6].GetString(), locale, data.CompletedText); + AddLocaleString(fields[2].Get<std::string>(), locale, data.Title); + AddLocaleString(fields[3].Get<std::string>(), locale, data.Details); + AddLocaleString(fields[4].Get<std::string>(), locale, data.Objectives); + AddLocaleString(fields[5].Get<std::string>(), locale, data.AreaDescription); + AddLocaleString(fields[6].Get<std::string>(), locale, data.CompletedText); for (uint8 i = 0; i < 4; ++i) - AddLocaleString(fields[i + 7].GetString(), locale, data.ObjectiveText[i]); + AddLocaleString(fields[i + 7].Get<std::string>(), locale, data.ObjectiveText[i]); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} Quest Locale strings in {} ms", (uint32)_questLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime)); @@ -5074,7 +5074,7 @@ void ObjectMgr::LoadScripts(ScriptsType type) bool isSpellScriptTable = (type == SCRIPTS_SPELL); // 0 1 2 3 4 5 6 7 8 9 - QueryResult result = WorldDatabase.PQuery("SELECT id, delay, command, datalong, datalong2, dataint, x, y, z, o%s FROM %s", isSpellScriptTable ? ", effIndex" : "", tableName.c_str()); + QueryResult result = WorldDatabase.Query("SELECT id, delay, command, datalong, datalong2, dataint, x, y, z, o{} FROM {}", isSpellScriptTable ? ", effIndex" : "", tableName); if (!result) { @@ -5090,18 +5090,18 @@ void ObjectMgr::LoadScripts(ScriptsType type) Field* fields = result->Fetch(); ScriptInfo tmp; tmp.type = type; - tmp.id = fields[0].GetUInt32(); + tmp.id = fields[0].Get<uint32>(); if (isSpellScriptTable) - tmp.id |= fields[10].GetUInt8() << 24; - tmp.delay = fields[1].GetUInt32(); - tmp.command = ScriptCommands(fields[2].GetUInt32()); - tmp.Raw.nData[0] = fields[3].GetUInt32(); - tmp.Raw.nData[1] = fields[4].GetUInt32(); - tmp.Raw.nData[2] = fields[5].GetInt32(); - tmp.Raw.fData[0] = fields[6].GetFloat(); - tmp.Raw.fData[1] = fields[7].GetFloat(); - tmp.Raw.fData[2] = fields[8].GetFloat(); - tmp.Raw.fData[3] = fields[9].GetFloat(); + tmp.id |= fields[10].Get<uint8>() << 24; + tmp.delay = fields[1].Get<uint32>(); + tmp.command = ScriptCommands(fields[2].Get<uint32>()); + tmp.Raw.nData[0] = fields[3].Get<uint32>(); + tmp.Raw.nData[1] = fields[4].Get<uint32>(); + tmp.Raw.nData[2] = fields[5].Get<int32>(); + tmp.Raw.fData[0] = fields[6].Get<float>(); + tmp.Raw.fData[1] = fields[7].Get<float>(); + tmp.Raw.fData[2] = fields[8].Get<float>(); + tmp.Raw.fData[3] = fields[9].Get<float>(); // generic command args check switch (tmp.command) @@ -5456,7 +5456,7 @@ void ObjectMgr::LoadWaypointScripts() do { Field* fields = result->Fetch(); - uint32 action = fields[0].GetUInt32(); + uint32 action = fields[0].Get<uint32>(); actionSet.erase(action); } while (result->NextRow()); @@ -5487,8 +5487,8 @@ void ObjectMgr::LoadSpellScriptNames() { Field* fields = result->Fetch(); - int32 spellId = fields[0].GetInt32(); - const char* scriptName = fields[1].GetCString(); + int32 spellId = fields[0].Get<int32>(); + std::string scriptName = fields[1].Get<std::string>(); bool allRanks = false; if (spellId <= 0) @@ -5500,7 +5500,7 @@ void ObjectMgr::LoadSpellScriptNames() SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId); if (!spellInfo) { - LOG_ERROR("sql.sql", "Scriptname:`{}` spell (spell_id:{}) does not exist in `Spell.dbc`.", scriptName, fields[0].GetInt32()); + LOG_ERROR("sql.sql", "Scriptname: `{}` spell (spell_id:{}) does not exist in `Spell.dbc`.", scriptName, fields[0].Get<int32>()); continue; } @@ -5508,7 +5508,7 @@ void ObjectMgr::LoadSpellScriptNames() { if (sSpellMgr->GetFirstSpellInChain(spellId) != uint32(spellId)) { - LOG_ERROR("sql.sql", "Scriptname:`{}` spell (spell_id:{}) is not first rank of spell.", scriptName, fields[0].GetInt32()); + LOG_ERROR("sql.sql", "Scriptname: `{}` spell (spell_id:{}) is not first rank of spell.", scriptName, fields[0].Get<int32>()); continue; } while (spellInfo) @@ -5615,10 +5615,10 @@ void ObjectMgr::LoadPageTexts() { Field* fields = result->Fetch(); - PageText& pageText = _pageTextStore[fields[0].GetUInt32()]; + PageText& pageText = _pageTextStore[fields[0].Get<uint32>()]; - pageText.Text = fields[1].GetString(); - pageText.NextPage = fields[2].GetUInt32(); + pageText.Text = fields[1].Get<std::string>(); + pageText.NextPage = fields[2].Get<uint32>(); ++count; } while (result->NextRow()); @@ -5662,14 +5662,14 @@ void ObjectMgr::LoadPageTextLocales() { Field* fields = result->Fetch(); - uint32 ID = fields[0].GetUInt32(); + uint32 ID = fields[0].Get<uint32>(); - LocaleConstant locale = GetLocaleByName(fields[1].GetString()); + LocaleConstant locale = GetLocaleByName(fields[1].Get<std::string>()); if (locale == LOCALE_enUS) continue; PageTextLocale& data = _pageTextLocaleStore[ID]; - AddLocaleString(fields[2].GetString(), locale, data.Text); + AddLocaleString(fields[2].Get<std::string>(), locale, data.Text); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} Page Text Locale strings in {} ms", (uint32)_pageTextLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime)); @@ -5694,7 +5694,7 @@ void ObjectMgr::LoadInstanceTemplate() { Field* fields = result->Fetch(); - uint16 mapID = fields[0].GetUInt16(); + uint16 mapID = fields[0].Get<uint16>(); if (!MapMgr::IsValidMAP(mapID, true)) { @@ -5704,9 +5704,9 @@ void ObjectMgr::LoadInstanceTemplate() InstanceTemplate instanceTemplate; - instanceTemplate.AllowMount = fields[3].GetBool(); - instanceTemplate.Parent = uint32(fields[1].GetUInt16()); - instanceTemplate.ScriptId = sObjectMgr->GetScriptId(fields[2].GetCString()); + instanceTemplate.AllowMount = fields[3].Get<bool>(); + instanceTemplate.Parent = uint32(fields[1].Get<uint16>()); + instanceTemplate.ScriptId = sObjectMgr->GetScriptId(fields[2].Get<std::string>()); _instanceTemplateStore[mapID] = instanceTemplate; @@ -5744,10 +5744,10 @@ void ObjectMgr::LoadInstanceEncounters() do { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); - uint8 creditType = fields[1].GetUInt8(); - uint32 creditEntry = fields[2].GetUInt32(); - uint32 lastEncounterDungeon = fields[3].GetUInt16(); + uint32 entry = fields[0].Get<uint32>(); + uint8 creditType = fields[1].Get<uint8>(); + uint32 creditEntry = fields[2].Get<uint32>(); + uint32 lastEncounterDungeon = fields[3].Get<uint16>(); DungeonEncounterEntry const* dungeonEncounter = sDungeonEncounterStore.LookupEntry(entry); if (!dungeonEncounter) { @@ -5852,7 +5852,7 @@ void ObjectMgr::LoadGossipText() Field* fields = result->Fetch(); - uint32 id = fields[cic++].GetUInt32(); + uint32 id = fields[cic++].Get<uint32>(); if (!id) { LOG_ERROR("sql.sql", "Table `npc_text` has record wit reserved id 0, ignore."); @@ -5863,16 +5863,16 @@ void ObjectMgr::LoadGossipText() for (uint8 i = 0; i < MAX_GOSSIP_TEXT_OPTIONS; ++i) { - gText.Options[i].Text_0 = fields[cic++].GetString(); - gText.Options[i].Text_1 = fields[cic++].GetString(); - gText.Options[i].BroadcastTextID = fields[cic++].GetUInt32(); - gText.Options[i].Language = fields[cic++].GetUInt8(); - gText.Options[i].Probability = fields[cic++].GetFloat(); + gText.Options[i].Text_0 = fields[cic++].Get<std::string>(); + gText.Options[i].Text_1 = fields[cic++].Get<std::string>(); + gText.Options[i].BroadcastTextID = fields[cic++].Get<uint32>(); + gText.Options[i].Language = fields[cic++].Get<uint8>(); + gText.Options[i].Probability = fields[cic++].Get<float>(); for (uint8 j = 0; j < MAX_GOSSIP_TEXT_EMOTES; ++j) { - gText.Options[i].Emotes[j]._Delay = fields[cic++].GetUInt16(); - gText.Options[i].Emotes[j]._Emote = fields[cic++].GetUInt16(); + gText.Options[i].Emotes[j]._Delay = fields[cic++].Get<uint16>(); + gText.Options[i].Emotes[j]._Emote = fields[cic++].Get<uint16>(); } } @@ -5913,17 +5913,17 @@ void ObjectMgr::LoadNpcTextLocales() { Field* fields = result->Fetch(); - uint32 ID = fields[0].GetUInt32(); + uint32 ID = fields[0].Get<uint32>(); - LocaleConstant locale = GetLocaleByName(fields[1].GetString()); + LocaleConstant locale = GetLocaleByName(fields[1].Get<std::string>()); if (locale == LOCALE_enUS) continue; NpcTextLocale& data = _npcTextLocaleStore[ID]; for (uint8 i = 0; i < MAX_GOSSIP_TEXT_OPTIONS; ++i) { - AddLocaleString(fields[2 + i * 2].GetString(), locale, data.Text_0[i]); - AddLocaleString(fields[3 + i * 2].GetString(), locale, data.Text_1[i]); + AddLocaleString(fields[2 + i * 2].Get<std::string>(), locale, data.Text_0[i]); + AddLocaleString(fields[3 + i * 2].Get<std::string>(), locale, data.Text_1[i]); } } while (result->NextRow()); @@ -5937,23 +5937,23 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) time_t curTime = GameTime::GetGameTime().count(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_EXPIRED_MAIL); - stmt->setUInt32(0, uint32(curTime)); + stmt->SetData(0, uint32(curTime)); PreparedQueryResult result = CharacterDatabase.Query(stmt); if (!result) return; std::map<uint32 /*messageId*/, MailItemInfoVec> itemsCache; stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_EXPIRED_MAIL_ITEMS); - stmt->setUInt32(0, uint32(curTime)); + stmt->SetData(0, uint32(curTime)); if (PreparedQueryResult items = CharacterDatabase.Query(stmt)) { MailItemInfo item; do { Field* fields = items->Fetch(); - item.item_guid = fields[0].GetUInt32(); - item.item_template = fields[1].GetUInt32(); - uint32 mailId = fields[2].GetUInt32(); + item.item_guid = fields[0].Get<uint32>(); + item.item_template = fields[1].Get<uint32>(); + uint32 mailId = fields[2].Get<uint32>(); itemsCache[mailId].push_back(item); } while (items->NextRow()); } @@ -5964,17 +5964,17 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) { Field* fields = result->Fetch(); Mail* m = new Mail; - m->messageID = fields[0].GetUInt32(); - m->messageType = fields[1].GetUInt8(); - m->sender = fields[2].GetUInt32(); - m->receiver = fields[3].GetUInt32(); - bool has_items = fields[4].GetBool(); - m->expire_time = time_t(fields[5].GetUInt32()); + m->messageID = fields[0].Get<uint32>(); + m->messageType = fields[1].Get<uint8>(); + m->sender = fields[2].Get<uint32>(); + m->receiver = fields[3].Get<uint32>(); + bool has_items = fields[4].Get<bool>(); + m->expire_time = time_t(fields[5].Get<uint32>()); m->deliver_time = time_t(0); - m->stationery = fields[6].GetUInt8(); - m->checked = fields[7].GetUInt8(); - m->mailTemplateId = fields[8].GetInt16(); - m->auctionId = fields[9].GetInt32(); + m->stationery = fields[6].Get<uint8>(); + m->checked = fields[7].Get<uint8>(); + m->mailTemplateId = fields[8].Get<int16>(); + m->auctionId = fields[9].Get<int32>(); Player* player = nullptr; if (serverUp) @@ -5998,36 +5998,36 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) for (auto const& mailedItem : m->items) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE); - stmt->setUInt32(0, mailedItem.item_guid); + stmt->SetData(0, mailedItem.item_guid); CharacterDatabase.Execute(stmt); } stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID); - stmt->setUInt32(0, m->messageID); + stmt->SetData(0, m->messageID); CharacterDatabase.Execute(stmt); } else { // Mail will be returned stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_MAIL_RETURNED); - stmt->setUInt32(0, m->receiver); - stmt->setUInt32(1, m->sender); - stmt->setUInt32(2, uint32(curTime + 30 * DAY)); - stmt->setUInt32(3, uint32(curTime)); - stmt->setUInt8 (4, uint8(MAIL_CHECK_MASK_RETURNED)); - stmt->setUInt32(5, m->messageID); + stmt->SetData(0, m->receiver); + stmt->SetData(1, m->sender); + stmt->SetData(2, uint32(curTime + 30 * DAY)); + stmt->SetData(3, uint32(curTime)); + stmt->SetData (4, uint8(MAIL_CHECK_MASK_RETURNED)); + stmt->SetData(5, m->messageID); CharacterDatabase.Execute(stmt); for (auto const& mailedItem : m->items) { // Update receiver in mail items for its proper delivery, and in instance_item for avoid lost item at sender delete stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_MAIL_ITEM_RECEIVER); - stmt->setUInt32(0, m->sender); - stmt->setUInt32(1, mailedItem.item_guid); + stmt->SetData(0, m->sender); + stmt->SetData(1, mailedItem.item_guid); CharacterDatabase.Execute(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ITEM_OWNER); - stmt->setUInt32(0, m->sender); - stmt->setUInt32(1, mailedItem.item_guid); + stmt->SetData(0, m->sender); + stmt->SetData(1, mailedItem.item_guid); CharacterDatabase.Execute(stmt); } @@ -6044,7 +6044,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) sCharacterCache->DecreaseCharacterMailCount(ObjectGuid(HighGuid::Player, m->receiver)); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID); - stmt->setUInt32(0, m->messageID); + stmt->SetData(0, m->messageID); CharacterDatabase.Execute(stmt); delete m; ++deletedCount; @@ -6077,8 +6077,8 @@ void ObjectMgr::LoadQuestAreaTriggers() Field* fields = result->Fetch(); - uint32 trigger_ID = fields[0].GetUInt32(); - uint32 quest_ID = fields[1].GetUInt32(); + uint32 trigger_ID = fields[0].Get<uint32>(); + uint32 quest_ID = fields[1].Get<uint32>(); AreaTrigger const* atEntry = GetAreaTrigger(trigger_ID); if (!atEntry) @@ -6127,15 +6127,15 @@ void ObjectMgr::LoadQuestOfferRewardLocale() { Field* fields = result->Fetch(); - uint32 id = fields[0].GetUInt32(); - std::string localeName = fields[1].GetString(); + uint32 id = fields[0].Get<uint32>(); + std::string localeName = fields[1].Get<std::string>(); LocaleConstant locale = GetLocaleByName(localeName); if (locale == LOCALE_enUS) continue; QuestOfferRewardLocale& data = _questOfferRewardLocaleStore[id]; - AddLocaleString(fields[2].GetString(), locale, data.RewardText); + AddLocaleString(fields[2].Get<std::string>(), locale, data.RewardText); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} Quest Offer Reward locale strings in {} ms", _questOfferRewardLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime)); @@ -6156,15 +6156,15 @@ void ObjectMgr::LoadQuestRequestItemsLocale() { Field* fields = result->Fetch(); - uint32 id = fields[0].GetUInt32(); - std::string localeName = fields[1].GetString(); + uint32 id = fields[0].Get<uint32>(); + std::string localeName = fields[1].Get<std::string>(); LocaleConstant locale = GetLocaleByName(localeName); if (locale == LOCALE_enUS) continue; QuestRequestItemsLocale& data = _questRequestItemsLocaleStore[id]; - AddLocaleString(fields[2].GetString(), locale, data.CompletionText); + AddLocaleString(fields[2].Get<std::string>(), locale, data.CompletionText); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} Quest Request Items locale strings in {} ms", _questRequestItemsLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime)); @@ -6193,7 +6193,7 @@ void ObjectMgr::LoadTavernAreaTriggers() Field* fields = result->Fetch(); - uint32 Trigger_ID = fields[0].GetUInt32(); + uint32 Trigger_ID = fields[0].Get<uint32>(); AreaTrigger const* atEntry = GetAreaTrigger(Trigger_ID); if (!atEntry) @@ -6231,8 +6231,8 @@ void ObjectMgr::LoadAreaTriggerScripts() Field* fields = result->Fetch(); - uint32 Trigger_ID = fields[0].GetUInt32(); - const char* scriptName = fields[1].GetCString(); + uint32 Trigger_ID = fields[0].Get<uint32>(); + std::string scriptName = fields[1].Get<std::string>(); AreaTrigger const* atEntry = GetAreaTrigger(Trigger_ID); if (!atEntry) @@ -6374,16 +6374,16 @@ void ObjectMgr::LoadAreaTriggers() AreaTrigger at; - at.entry = fields[0].GetUInt32(); - at.map = fields[1].GetUInt32(); - at.x = fields[2].GetFloat(); - at.y = fields[3].GetFloat(); - at.z = fields[4].GetFloat(); - at.radius = fields[5].GetFloat(); - at.length = fields[6].GetFloat(); - at.width = fields[7].GetFloat(); - at.height = fields[8].GetFloat(); - at.orientation = fields[9].GetFloat(); + at.entry = fields[0].Get<uint32>(); + at.map = fields[1].Get<uint32>(); + at.x = fields[2].Get<float>(); + at.y = fields[3].Get<float>(); + at.z = fields[4].Get<float>(); + at.radius = fields[5].Get<float>(); + at.length = fields[6].Get<float>(); + at.width = fields[7].Get<float>(); + at.height = fields[8].Get<float>(); + at.orientation = fields[9].Get<float>(); MapEntry const* mapEntry = sMapStore.LookupEntry(at.map); if (!mapEntry) @@ -6423,15 +6423,15 @@ void ObjectMgr::LoadAreaTriggerTeleports() ++count; - uint32 Trigger_ID = fields[0].GetUInt32(); + uint32 Trigger_ID = fields[0].Get<uint32>(); AreaTriggerTeleport at; - at.target_mapId = fields[1].GetUInt16(); - at.target_X = fields[2].GetFloat(); - at.target_Y = fields[3].GetFloat(); - at.target_Z = fields[4].GetFloat(); - at.target_Orientation = fields[5].GetFloat(); + at.target_mapId = fields[1].Get<uint16>(); + at.target_X = fields[2].Get<float>(); + at.target_Y = fields[3].Get<float>(); + at.target_Z = fields[4].Get<float>(); + at.target_Orientation = fields[5].Get<float>(); AreaTrigger const* atEntry = GetAreaTrigger(Trigger_ID); if (!atEntry) @@ -6509,30 +6509,30 @@ void ObjectMgr::LoadAccessRequirements() Field* fields = access_template_result->Fetch(); //Get the common variables for the access requirements - uint8 dungeon_access_id = fields[0].GetUInt8(); - uint32 mapid = fields[1].GetUInt32(); - uint8 difficulty = fields[2].GetUInt8(); + uint8 dungeon_access_id = fields[0].Get<uint8>(); + uint32 mapid = fields[1].Get<uint32>(); + uint8 difficulty = fields[2].Get<uint8>(); //Set up the access requirements DungeonProgressionRequirements* ar = new DungeonProgressionRequirements(); - ar->levelMin = fields[3].GetUInt8(); - ar->levelMax = fields[4].GetUInt8(); - ar->reqItemLevel = fields[5].GetUInt16(); + ar->levelMin = fields[3].Get<uint8>(); + ar->levelMax = fields[4].Get<uint8>(); + ar->reqItemLevel = fields[5].Get<uint16>(); // 0 1 2 3 4 6 - QueryResult progression_requirements_results = WorldDatabase.PQuery("SELECT requirement_type, requirement_id, requirement_note, faction, priority, leader_only FROM dungeon_access_requirements where dungeon_access_id = %u", dungeon_access_id); + QueryResult progression_requirements_results = WorldDatabase.Query("SELECT requirement_type, requirement_id, requirement_note, faction, priority, leader_only FROM dungeon_access_requirements where dungeon_access_id = {}", dungeon_access_id); if (progression_requirements_results) { do { Field* progression_requirement_row = progression_requirements_results->Fetch(); - const uint8 requirement_type = progression_requirement_row[0].GetUInt8(); - const uint32 requirement_id = progression_requirement_row[1].GetUInt32(); - const std::string requirement_note = progression_requirement_row[2].GetString(); - const uint8 requirement_faction = progression_requirement_row[3].GetUInt8(); - const uint8 requirement_priority = progression_requirement_row[4].IsNull() ? UINT8_MAX : progression_requirement_row[4].GetUInt8(); - const bool requirement_checkLeaderOnly = progression_requirement_row[5].GetBool(); + const uint8 requirement_type = progression_requirement_row[0].Get<uint8>(); + const uint32 requirement_id = progression_requirement_row[1].Get<uint32>(); + const std::string requirement_note = progression_requirement_row[2].Get<std::string>(); + const uint8 requirement_faction = progression_requirement_row[3].Get<uint8>(); + const uint8 requirement_priority = progression_requirement_row[4].IsNull() ? UINT8_MAX : progression_requirement_row[4].Get<uint8>(); + const bool requirement_checkLeaderOnly = progression_requirement_row[5].Get<bool>(); ProgressionRequirement* progression_requirement = new ProgressionRequirement(); progression_requirement->id = requirement_id; @@ -6680,53 +6680,53 @@ void ObjectMgr::SetHighestGuids() { QueryResult result = CharacterDatabase.Query("SELECT MAX(guid) FROM characters"); if (result) - GetGuidSequenceGenerator<HighGuid::Player>().Set((*result)[0].GetUInt32() + 1); + GetGuidSequenceGenerator<HighGuid::Player>().Set((*result)[0].Get<uint32>() + 1); result = CharacterDatabase.Query("SELECT MAX(guid) FROM item_instance"); if (result) - GetGuidSequenceGenerator<HighGuid::Item>().Set((*result)[0].GetUInt32() + 1); + GetGuidSequenceGenerator<HighGuid::Item>().Set((*result)[0].Get<uint32>() + 1); // Cleanup other tables from not existed guids ( >= _hiItemGuid) - CharacterDatabase.PExecute("DELETE FROM character_inventory WHERE item >= '%u'", GetGuidSequenceGenerator<HighGuid::Item>().GetNextAfterMaxUsed()); // One-time query - CharacterDatabase.PExecute("DELETE FROM mail_items WHERE item_guid >= '%u'", GetGuidSequenceGenerator<HighGuid::Item>().GetNextAfterMaxUsed()); // One-time query - CharacterDatabase.PExecute("DELETE FROM auctionhouse WHERE itemguid >= '%u'", GetGuidSequenceGenerator<HighGuid::Item>().GetNextAfterMaxUsed()); // One-time query - CharacterDatabase.PExecute("DELETE FROM guild_bank_item WHERE item_guid >= '%u'", GetGuidSequenceGenerator<HighGuid::Item>().GetNextAfterMaxUsed()); // One-time query + CharacterDatabase.Execute("DELETE FROM character_inventory WHERE item >= '{}'", GetGuidSequenceGenerator<HighGuid::Item>().GetNextAfterMaxUsed()); // One-time query + CharacterDatabase.Execute("DELETE FROM mail_items WHERE item_guid >= '{}'", GetGuidSequenceGenerator<HighGuid::Item>().GetNextAfterMaxUsed()); // One-time query + CharacterDatabase.Execute("DELETE FROM auctionhouse WHERE itemguid >= '{}'", GetGuidSequenceGenerator<HighGuid::Item>().GetNextAfterMaxUsed()); // One-time query + CharacterDatabase.Execute("DELETE FROM guild_bank_item WHERE item_guid >= '{}'", GetGuidSequenceGenerator<HighGuid::Item>().GetNextAfterMaxUsed()); // One-time query result = WorldDatabase.Query("SELECT MAX(guid) FROM transports"); if (result) - GetGuidSequenceGenerator<HighGuid::Mo_Transport>().Set((*result)[0].GetUInt32() + 1); + GetGuidSequenceGenerator<HighGuid::Mo_Transport>().Set((*result)[0].Get<uint32>() + 1); result = CharacterDatabase.Query("SELECT MAX(id) FROM auctionhouse"); if (result) - _auctionId = (*result)[0].GetUInt32() + 1; + _auctionId = (*result)[0].Get<uint32>() + 1; result = CharacterDatabase.Query("SELECT MAX(id) FROM mail"); if (result) - _mailId = (*result)[0].GetUInt32() + 1; + _mailId = (*result)[0].Get<uint32>() + 1; result = CharacterDatabase.Query("SELECT MAX(arenateamid) FROM arena_team"); if (result) - sArenaTeamMgr->SetNextArenaTeamId((*result)[0].GetUInt32() + 1); + sArenaTeamMgr->SetNextArenaTeamId((*result)[0].Get<uint32>() + 1); result = CharacterDatabase.Query("SELECT MAX(fight_id) FROM log_arena_fights"); if (result) - sArenaTeamMgr->SetLastArenaLogId((*result)[0].GetUInt32()); + sArenaTeamMgr->SetLastArenaLogId((*result)[0].Get<uint32>()); result = CharacterDatabase.Query("SELECT MAX(setguid) FROM character_equipmentsets"); if (result) - _equipmentSetGuid = (*result)[0].GetUInt64() + 1; + _equipmentSetGuid = (*result)[0].Get<uint64>() + 1; result = CharacterDatabase.Query("SELECT MAX(guildId) FROM guild"); if (result) - sGuildMgr->SetNextGuildId((*result)[0].GetUInt32() + 1); + sGuildMgr->SetNextGuildId((*result)[0].Get<uint32>() + 1); result = WorldDatabase.Query("SELECT MAX(guid) FROM creature"); if (result) - _creatureSpawnId = (*result)[0].GetUInt32() + 1; + _creatureSpawnId = (*result)[0].Get<uint32>() + 1; result = WorldDatabase.Query("SELECT MAX(guid) FROM gameobject"); if (result) - _gameObjectSpawnId = (*result)[0].GetUInt32() + 1; + _gameObjectSpawnId = (*result)[0].Get<uint32>() + 1; } uint32 ObjectMgr::GenerateAuctionID() @@ -6795,15 +6795,15 @@ void ObjectMgr::LoadGameObjectLocales() { Field* fields = result->Fetch(); - uint32 ID = fields[0].GetUInt32(); + uint32 ID = fields[0].Get<uint32>(); - LocaleConstant locale = GetLocaleByName(fields[1].GetString()); + LocaleConstant locale = GetLocaleByName(fields[1].Get<std::string>()); if (locale == LOCALE_enUS) continue; GameObjectLocale& data = _gameObjectLocaleStore[ID]; - AddLocaleString(fields[2].GetString(), locale, data.Name); - AddLocaleString(fields[3].GetString(), locale, data.CastBarCaption); + AddLocaleString(fields[2].Get<std::string>(), locale, data.Name); + AddLocaleString(fields[3].Get<std::string>(), locale, data.CastBarCaption); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} Gameobject Locale strings in {} ms", (uint32)_gameObjectLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime)); @@ -6893,24 +6893,24 @@ void ObjectMgr::LoadGameObjectTemplate() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); GameObjectTemplate& got = _gameObjectTemplateStore[entry]; got.entry = entry; - got.type = uint32(fields[1].GetUInt8()); - got.displayId = fields[2].GetUInt32(); - got.name = fields[3].GetString(); - got.IconName = fields[4].GetString(); - got.castBarCaption = fields[5].GetString(); - got.unk1 = fields[6].GetString(); - got.size = fields[7].GetFloat(); + got.type = uint32(fields[1].Get<uint8>()); + got.displayId = fields[2].Get<uint32>(); + got.name = fields[3].Get<std::string>(); + got.IconName = fields[4].Get<std::string>(); + got.castBarCaption = fields[5].Get<std::string>(); + got.unk1 = fields[6].Get<std::string>(); + got.size = fields[7].Get<float>(); for (uint8 i = 0; i < MAX_GAMEOBJECT_DATA; ++i) - got.raw.data[i] = fields[8 + i].GetInt32(); // data1 and data6 can be -1 + got.raw.data[i] = fields[8 + i].Get<int32>(); // data1 and data6 can be -1 - got.AIName = fields[32].GetString(); - got.ScriptId = GetScriptId(fields[33].GetCString()); + got.AIName = fields[32].Get<std::string>(); + got.ScriptId = GetScriptId(fields[33].Get<std::string>()); got.IsForQuests = false; // Checks @@ -7072,7 +7072,7 @@ void ObjectMgr::LoadGameObjectTemplateAddons() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); GameObjectTemplate const* got = sObjectMgr->GetGameObjectTemplate(entry); if (!got) @@ -7084,10 +7084,10 @@ void ObjectMgr::LoadGameObjectTemplateAddons() } GameObjectTemplateAddon& gameObjectAddon = _gameObjectTemplateAddonStore[entry]; - gameObjectAddon.faction = uint32(fields[1].GetUInt16()); - gameObjectAddon.flags = fields[2].GetUInt32(); - gameObjectAddon.mingold = fields[3].GetUInt32(); - gameObjectAddon.maxgold = fields[4].GetUInt32(); + gameObjectAddon.faction = uint32(fields[1].Get<uint16>()); + gameObjectAddon.flags = fields[2].Get<uint32>(); + gameObjectAddon.mingold = fields[3].Get<uint32>(); + gameObjectAddon.maxgold = fields[4].Get<uint32>(); // checks if (gameObjectAddon.faction && !sFactionTemplateStore.LookupEntry(gameObjectAddon.faction)) @@ -7135,8 +7135,8 @@ void ObjectMgr::LoadExplorationBaseXP() do { Field* fields = result->Fetch(); - uint8 level = fields[0].GetUInt8(); - uint32 basexp = fields[1].GetInt32(); + uint8 level = fields[0].Get<uint8>(); + uint32 basexp = fields[1].Get<int32>(); _baseXPTable[level] = basexp; ++count; } while (result->NextRow()); @@ -7175,9 +7175,9 @@ void ObjectMgr::LoadPetNames() do { Field* fields = result->Fetch(); - std::string word = fields[0].GetString(); - uint32 entry = fields[1].GetUInt32(); - bool half = fields[2].GetBool(); + std::string word = fields[0].Get<std::string>(); + uint32 entry = fields[1].Get<uint32>(); + bool half = fields[2].Get<bool>(); if (half) _petHalfName1[entry].push_back(word); else @@ -7197,7 +7197,7 @@ void ObjectMgr::LoadPetNumber() if (result) { Field* fields = result->Fetch(); - _hiPetNumber = fields[0].GetUInt32() + 1; + _hiPetNumber = fields[0].Get<uint32>() + 1; } LOG_INFO("server.loading", ">> Loaded the max pet number: {} in {} ms", _hiPetNumber - 1, GetMSTimeDiffToNow(oldMSTime)); @@ -7246,17 +7246,17 @@ void ObjectMgr::LoadReputationRewardRate() { Field* fields = result->Fetch(); - uint32 factionId = fields[0].GetUInt32(); + uint32 factionId = fields[0].Get<uint32>(); RepRewardRate repRate; - repRate.questRate = fields[1].GetFloat(); - repRate.questDailyRate = fields[2].GetFloat(); - repRate.questWeeklyRate = fields[3].GetFloat(); - repRate.questMonthlyRate = fields[4].GetFloat(); - repRate.questRepeatableRate = fields[5].GetFloat(); - repRate.creatureRate = fields[6].GetFloat(); - repRate.spellRate = fields[7].GetFloat(); + repRate.questRate = fields[1].Get<float>(); + repRate.questDailyRate = fields[2].Get<float>(); + repRate.questWeeklyRate = fields[3].Get<float>(); + repRate.questMonthlyRate = fields[4].Get<float>(); + repRate.questRepeatableRate = fields[5].Get<float>(); + repRate.creatureRate = fields[6].Get<float>(); + repRate.spellRate = fields[7].Get<float>(); FactionEntry const* factionEntry = sFactionStore.LookupEntry(factionId); if (!factionEntry) @@ -7342,18 +7342,18 @@ void ObjectMgr::LoadReputationOnKill() { Field* fields = result->Fetch(); - uint32 creature_id = fields[0].GetUInt32(); + uint32 creature_id = fields[0].Get<uint32>(); ReputationOnKillEntry repOnKill; - repOnKill.RepFaction1 = fields[1].GetInt16(); - repOnKill.RepFaction2 = fields[2].GetInt16(); - repOnKill.IsTeamAward1 = fields[3].GetBool(); - repOnKill.ReputationMaxCap1 = fields[4].GetUInt8(); - repOnKill.RepValue1 = fields[5].GetInt32(); - repOnKill.IsTeamAward2 = fields[6].GetBool(); - repOnKill.ReputationMaxCap2 = fields[7].GetUInt8(); - repOnKill.RepValue2 = fields[8].GetInt32(); - repOnKill.TeamDependent = fields[9].GetUInt8(); + repOnKill.RepFaction1 = fields[1].Get<int16>(); + repOnKill.RepFaction2 = fields[2].Get<int16>(); + repOnKill.IsTeamAward1 = fields[3].Get<bool>(); + repOnKill.ReputationMaxCap1 = fields[4].Get<uint8>(); + repOnKill.RepValue1 = fields[5].Get<int32>(); + repOnKill.IsTeamAward2 = fields[6].Get<bool>(); + repOnKill.ReputationMaxCap2 = fields[7].Get<uint8>(); + repOnKill.RepValue2 = fields[8].Get<int32>(); + repOnKill.TeamDependent = fields[9].Get<uint8>(); if (!GetCreatureTemplate(creature_id)) { @@ -7410,22 +7410,22 @@ void ObjectMgr::LoadReputationSpilloverTemplate() { Field* fields = result->Fetch(); - uint32 factionId = fields[0].GetUInt16(); + uint32 factionId = fields[0].Get<uint16>(); RepSpilloverTemplate repTemplate; - repTemplate.faction[0] = fields[1].GetUInt16(); - repTemplate.faction_rate[0] = fields[2].GetFloat(); - repTemplate.faction_rank[0] = fields[3].GetUInt8(); - repTemplate.faction[1] = fields[4].GetUInt16(); - repTemplate.faction_rate[1] = fields[5].GetFloat(); - repTemplate.faction_rank[1] = fields[6].GetUInt8(); - repTemplate.faction[2] = fields[7].GetUInt16(); - repTemplate.faction_rate[2] = fields[8].GetFloat(); - repTemplate.faction_rank[2] = fields[9].GetUInt8(); - repTemplate.faction[3] = fields[10].GetUInt16(); - repTemplate.faction_rate[3] = fields[11].GetFloat(); - repTemplate.faction_rank[3] = fields[12].GetUInt8(); + repTemplate.faction[0] = fields[1].Get<uint16>(); + repTemplate.faction_rate[0] = fields[2].Get<float>(); + repTemplate.faction_rank[0] = fields[3].Get<uint8>(); + repTemplate.faction[1] = fields[4].Get<uint16>(); + repTemplate.faction_rate[1] = fields[5].Get<float>(); + repTemplate.faction_rank[1] = fields[6].Get<uint8>(); + repTemplate.faction[2] = fields[7].Get<uint16>(); + repTemplate.faction_rate[2] = fields[8].Get<float>(); + repTemplate.faction_rank[2] = fields[9].Get<uint8>(); + repTemplate.faction[3] = fields[10].Get<uint16>(); + repTemplate.faction_rate[3] = fields[11].Get<float>(); + repTemplate.faction_rank[3] = fields[12].Get<uint8>(); FactionEntry const* factionEntry = sFactionStore.LookupEntry(factionId); @@ -7523,16 +7523,16 @@ void ObjectMgr::LoadPointsOfInterest() { Field* fields = result->Fetch(); - uint32 point_id = fields[0].GetUInt32(); + uint32 point_id = fields[0].Get<uint32>(); PointOfInterest POI; POI.ID = point_id; - POI.PositionX = fields[1].GetFloat(); - POI.PositionY = fields[2].GetFloat(); - POI.Icon = fields[3].GetUInt32(); - POI.Flags = fields[4].GetUInt32(); - POI.Importance = fields[5].GetUInt32(); - POI.Name = fields[6].GetString(); + POI.PositionX = fields[1].Get<float>(); + POI.PositionY = fields[2].Get<float>(); + POI.Icon = fields[3].Get<uint32>(); + POI.Flags = fields[4].Get<uint32>(); + POI.Importance = fields[5].Get<uint32>(); + POI.Name = fields[6].Get<std::string>(); if (!Acore::IsValidMapCoord(POI.PositionX, POI.PositionY)) { @@ -7576,17 +7576,17 @@ void ObjectMgr::LoadQuestPOI() { // The first result should have the highest questId Field* fields = points->Fetch(); - uint32 questIdMax = fields[0].GetUInt32(); + uint32 questIdMax = fields[0].Get<uint32>(); POIs.resize(questIdMax + 1); do { fields = points->Fetch(); - uint32 questId = fields[0].GetUInt32(); - uint32 id = fields[1].GetUInt32(); - int32 x = fields[2].GetInt32(); - int32 y = fields[3].GetInt32(); + uint32 questId = fields[0].Get<uint32>(); + uint32 id = fields[1].Get<uint32>(); + int32 x = fields[2].Get<int32>(); + int32 y = fields[3].Get<int32>(); if (POIs[questId].size() <= id + 1) POIs[questId].resize(id + 10); @@ -7600,14 +7600,14 @@ void ObjectMgr::LoadQuestPOI() { Field* fields = result->Fetch(); - uint32 questId = fields[0].GetUInt32(); - uint32 id = fields[1].GetUInt32(); - int32 objIndex = fields[2].GetInt32(); - uint32 mapId = fields[3].GetUInt32(); - uint32 WorldMapAreaId = fields[4].GetUInt32(); - uint32 FloorId = fields[5].GetUInt32(); - uint32 unk3 = fields[6].GetUInt32(); - uint32 unk4 = fields[7].GetUInt32(); + uint32 questId = fields[0].Get<uint32>(); + uint32 id = fields[1].Get<uint32>(); + int32 objIndex = fields[2].Get<int32>(); + uint32 mapId = fields[3].Get<uint32>(); + uint32 WorldMapAreaId = fields[4].Get<uint32>(); + uint32 FloorId = fields[5].Get<uint32>(); + uint32 unk3 = fields[6].Get<uint32>(); + uint32 unk4 = fields[7].Get<uint32>(); QuestPOI POI(id, objIndex, mapId, WorldMapAreaId, FloorId, unk3, unk4); if (questId < POIs.size() && id < POIs[questId].size()) @@ -7646,7 +7646,7 @@ void ObjectMgr::LoadNPCSpellClickSpells() { Field* fields = result->Fetch(); - uint32 npc_entry = fields[0].GetUInt32(); + uint32 npc_entry = fields[0].Get<uint32>(); CreatureTemplate const* cInfo = GetCreatureTemplate(npc_entry); if (!cInfo) { @@ -7654,7 +7654,7 @@ void ObjectMgr::LoadNPCSpellClickSpells() continue; } - uint32 spellid = fields[1].GetUInt32(); + uint32 spellid = fields[1].Get<uint32>(); SpellInfo const* spellinfo = sSpellMgr->GetSpellInfo(spellid); if (!spellinfo) { @@ -7662,11 +7662,11 @@ void ObjectMgr::LoadNPCSpellClickSpells() continue; } - uint8 userType = fields[3].GetUInt16(); + uint8 userType = fields[3].Get<uint16>(); if (userType >= SPELL_CLICK_USER_MAX) LOG_ERROR("sql.sql", "Table npc_spellclick_spells references unknown user type {}. Skipping entry.", uint32(userType)); - uint8 castFlags = fields[2].GetUInt8(); + uint8 castFlags = fields[2].Get<uint8>(); SpellClickInfo info; info.spellId = spellid; info.castFlags = castFlags; @@ -7720,7 +7720,7 @@ void ObjectMgr::LoadQuestRelationsHelper(QuestRelations& map, std::string const& uint32 count = 0; - QueryResult result = WorldDatabase.PQuery("SELECT id, quest, pool_entry FROM %s qr LEFT JOIN pool_quest pq ON qr.quest = pq.entry", table.c_str()); + QueryResult result = WorldDatabase.Query("SELECT id, quest, pool_entry FROM {} qr LEFT JOIN pool_quest pq ON qr.quest = pq.entry", table); if (!result) { @@ -7735,9 +7735,9 @@ void ObjectMgr::LoadQuestRelationsHelper(QuestRelations& map, std::string const& do { - uint32 id = result->Fetch()[0].GetUInt32(); - uint32 quest = result->Fetch()[1].GetUInt32(); - uint32 poolId = result->Fetch()[2].GetUInt32(); + uint32 id = result->Fetch()[0].Get<uint32>(); + uint32 quest = result->Fetch()[1].Get<uint32>(); + uint32 poolId = result->Fetch()[2].Get<uint32>(); if (_questTemplates.find(quest) == _questTemplates.end()) { @@ -7834,7 +7834,7 @@ void ObjectMgr::LoadReservedPlayersNames() do { fields = result->Fetch(); - std::string name = fields[0].GetString(); + std::string name = fields[0].Get<std::string>(); std::wstring wstr; if (!Utf8toWStr (name, wstr)) @@ -7883,7 +7883,7 @@ void ObjectMgr::AddReservedPlayerName(std::string const& name) _reservedNamesStore.insert(wstr); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_RESERVED_PLAYER_NAME); - stmt->setString(0, name); + stmt->SetData(0, name); CharacterDatabase.Execute(stmt); } } @@ -8116,7 +8116,7 @@ bool ObjectMgr::LoadAcoreStrings() uint32 oldMSTime = getMSTime(); _acoreStringStore.clear(); // for reload case - QueryResult result = WorldDatabase.PQuery("SELECT entry, content_default, locale_koKR, locale_frFR, locale_deDE, locale_zhCN, locale_zhTW, locale_esES, locale_esMX, locale_ruRU FROM acore_string"); + QueryResult result = WorldDatabase.Query("SELECT entry, content_default, locale_koKR, locale_frFR, locale_deDE, locale_zhCN, locale_zhTW, locale_esES, locale_esMX, locale_ruRU FROM acore_string"); if (!result) { LOG_INFO("server.loading", ">> Loaded 0 acore strings. DB table `acore_strings` is empty."); @@ -8128,14 +8128,14 @@ bool ObjectMgr::LoadAcoreStrings() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); AcoreString& data = _acoreStringStore[entry]; data.Content.resize(DEFAULT_LOCALE + 1); for (uint8 i = 0; i < TOTAL_LOCALES; ++i) - AddLocaleString(fields[i + 1].GetString(), LocaleConstant(i), data.Content); + AddLocaleString(fields[i + 1].Get<std::string>(), LocaleConstant(i), data.Content); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} acore strings in {} ms", (uint32)_acoreStringStore.size(), GetMSTimeDiffToNow(oldMSTime)); @@ -8179,8 +8179,8 @@ void ObjectMgr::LoadFishingBaseSkillLevel() do { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); - int32 skill = fields[1].GetInt16(); + uint32 entry = fields[0].Get<uint32>(); + int32 skill = fields[1].Get<int16>(); AreaTableEntry const* fArea = sAreaTableStore.LookupEntry(entry); if (!fArea) @@ -8321,16 +8321,16 @@ void ObjectMgr::LoadGameTele() { Field* fields = result->Fetch(); - uint32 id = fields[0].GetUInt32(); + uint32 id = fields[0].Get<uint32>(); GameTele gt; - gt.position_x = fields[1].GetFloat(); - gt.position_y = fields[2].GetFloat(); - gt.position_z = fields[3].GetFloat(); - gt.orientation = fields[4].GetFloat(); - gt.mapId = fields[5].GetUInt16(); - gt.name = fields[6].GetString(); + gt.position_x = fields[1].Get<float>(); + gt.position_y = fields[2].Get<float>(); + gt.position_z = fields[3].Get<float>(); + gt.orientation = fields[4].Get<float>(); + gt.mapId = fields[5].Get<uint16>(); + gt.name = fields[6].Get<std::string>(); if (!MapMgr::IsValidMapCoord(gt.mapId, gt.position_x, gt.position_y, gt.position_z, gt.orientation)) { @@ -8398,13 +8398,13 @@ bool ObjectMgr::AddGameTele(GameTele& tele) WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_GAME_TELE); - stmt->setUInt32(0, new_id); - stmt->setFloat(1, tele.position_x); - stmt->setFloat(2, tele.position_y); - stmt->setFloat(3, tele.position_z); - stmt->setFloat(4, tele.orientation); - stmt->setUInt16(5, uint16(tele.mapId)); - stmt->setString(6, tele.name); + stmt->SetData(0, new_id); + stmt->SetData(1, tele.position_x); + stmt->SetData(2, tele.position_y); + stmt->SetData(3, tele.position_z); + stmt->SetData(4, tele.orientation); + stmt->SetData(5, uint16(tele.mapId)); + stmt->SetData(6, tele.name); WorldDatabase.Execute(stmt); @@ -8427,7 +8427,7 @@ bool ObjectMgr::DeleteGameTele(std::string_view name) { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_GAME_TELE); - stmt->setString(0, itr->second.name); + stmt->SetData(0, itr->second.name); WorldDatabase.Execute(stmt); @@ -8461,10 +8461,10 @@ void ObjectMgr::LoadMailLevelRewards() { Field* fields = result->Fetch(); - uint8 level = fields[0].GetUInt8(); - uint32 raceMask = fields[1].GetUInt32(); - uint32 mailTemplateId = fields[2].GetUInt32(); - uint32 senderEntry = fields[3].GetUInt32(); + uint8 level = fields[0].Get<uint8>(); + uint32 raceMask = fields[1].Get<uint32>(); + uint32 mailTemplateId = fields[2].Get<uint32>(); + uint32 senderEntry = fields[3].Get<uint32>(); if (level > MAX_LEVEL) { @@ -8608,13 +8608,13 @@ void ObjectMgr::LoadTrainerSpell() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); - uint32 spell = fields[1].GetUInt32(); - uint32 spellCost = fields[2].GetUInt32(); - uint32 reqSkill = fields[3].GetUInt16(); - uint32 reqSkillValue = fields[4].GetUInt16(); - uint32 reqLevel = fields[5].GetUInt8(); - uint32 reqSpell = fields[6].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); + uint32 spell = fields[1].Get<uint32>(); + uint32 spellCost = fields[2].Get<uint32>(); + uint32 reqSkill = fields[3].Get<uint16>(); + uint32 reqSkillValue = fields[4].Get<uint16>(); + uint32 reqLevel = fields[5].Get<uint8>(); + uint32 reqSpell = fields[6].Get<uint32>(); AddSpellToTrainer(entry, spell, spellCost, reqSkill, reqSkillValue, reqLevel, reqSpell); @@ -8629,7 +8629,7 @@ int ObjectMgr::LoadReferenceVendor(int32 vendor, int32 item, std::set<uint32>* s { // find all items from the reference vendor WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_NPC_VENDOR_REF); - stmt->setUInt32(0, uint32(item)); + stmt->SetData(0, uint32(item)); PreparedQueryResult result = WorldDatabase.Query(stmt); if (!result) @@ -8640,16 +8640,16 @@ int ObjectMgr::LoadReferenceVendor(int32 vendor, int32 item, std::set<uint32>* s { Field* fields = result->Fetch(); - int32 item_id = fields[0].GetInt32(); + int32 item_id = fields[0].Get<int32>(); // if item is a negative, its a reference if (item_id < 0) count += LoadReferenceVendor(vendor, -item_id, skip_vendors); else { - int32 maxcount = fields[1].GetUInt8(); - uint32 incrtime = fields[2].GetUInt32(); - uint32 ExtendedCost = fields[3].GetUInt32(); + int32 maxcount = fields[1].Get<uint8>(); + uint32 incrtime = fields[2].Get<uint32>(); + uint32 ExtendedCost = fields[3].Get<uint32>(); if (!IsVendorItemValid(vendor, item_id, maxcount, incrtime, ExtendedCost, nullptr, skip_vendors)) continue; @@ -8689,17 +8689,17 @@ void ObjectMgr::LoadVendors() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); - int32 item_id = fields[1].GetInt32(); + uint32 entry = fields[0].Get<uint32>(); + int32 item_id = fields[1].Get<int32>(); // if item is a negative, its a reference if (item_id < 0) count += LoadReferenceVendor(entry, -item_id, &skip_vendors); else { - uint32 maxcount = fields[2].GetUInt8(); - uint32 incrtime = fields[3].GetUInt32(); - uint32 ExtendedCost = fields[4].GetUInt32(); + uint32 maxcount = fields[2].Get<uint8>(); + uint32 incrtime = fields[3].Get<uint32>(); + uint32 ExtendedCost = fields[4].Get<uint32>(); if (!IsVendorItemValid(entry, item_id, maxcount, incrtime, ExtendedCost, nullptr, &skip_vendors)) continue; @@ -8736,8 +8736,8 @@ void ObjectMgr::LoadGossipMenu() GossipMenus gMenu; - gMenu.MenuID = fields[0].GetUInt16(); - gMenu.TextID = fields[1].GetUInt32(); + gMenu.MenuID = fields[0].Get<uint16>(); + gMenu.TextID = fields[1].Get<uint32>(); if (!GetGossipText(gMenu.TextID)) { @@ -8776,19 +8776,19 @@ void ObjectMgr::LoadGossipMenuItems() GossipMenuItems gMenuItem; - gMenuItem.MenuID = fields[0].GetUInt16(); - gMenuItem.OptionID = fields[1].GetUInt16(); - gMenuItem.OptionIcon = fields[2].GetUInt32(); - gMenuItem.OptionText = fields[3].GetString(); - gMenuItem.OptionBroadcastTextID = fields[4].GetUInt32(); - gMenuItem.OptionType = fields[5].GetUInt8(); - gMenuItem.OptionNpcFlag = fields[6].GetUInt32(); - gMenuItem.ActionMenuID = fields[7].GetUInt32(); - gMenuItem.ActionPoiID = fields[8].GetUInt32(); - gMenuItem.BoxCoded = fields[9].GetBool(); - gMenuItem.BoxMoney = fields[10].GetUInt32(); - gMenuItem.BoxText = fields[11].GetString(); - gMenuItem.BoxBroadcastTextID = fields[12].GetUInt32(); + gMenuItem.MenuID = fields[0].Get<uint16>(); + gMenuItem.OptionID = fields[1].Get<uint16>(); + gMenuItem.OptionIcon = fields[2].Get<uint32>(); + gMenuItem.OptionText = fields[3].Get<std::string>(); + gMenuItem.OptionBroadcastTextID = fields[4].Get<uint32>(); + gMenuItem.OptionType = fields[5].Get<uint8>(); + gMenuItem.OptionNpcFlag = fields[6].Get<uint32>(); + gMenuItem.ActionMenuID = fields[7].Get<uint32>(); + gMenuItem.ActionPoiID = fields[8].Get<uint32>(); + gMenuItem.BoxCoded = fields[9].Get<bool>(); + gMenuItem.BoxMoney = fields[10].Get<uint32>(); + gMenuItem.BoxText = fields[11].Get<std::string>(); + gMenuItem.BoxBroadcastTextID = fields[12].Get<uint32>(); if (gMenuItem.OptionIcon >= GOSSIP_ICON_MAX) { @@ -8833,11 +8833,11 @@ void ObjectMgr::AddVendorItem(uint32 entry, uint32 item, int32 maxcount, uint32 { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_NPC_VENDOR); - stmt->setUInt32(0, entry); - stmt->setUInt32(1, item); - stmt->setUInt8(2, maxcount); - stmt->setUInt32(3, incrtime); - stmt->setUInt32(4, extendedCost); + stmt->SetData(0, entry); + stmt->SetData(1, item); + stmt->SetData(2, maxcount); + stmt->SetData(3, incrtime); + stmt->SetData(4, extendedCost); WorldDatabase.Execute(stmt); } @@ -8856,8 +8856,8 @@ bool ObjectMgr::RemoveVendorItem(uint32 entry, uint32 item, bool persist /*= tru { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_NPC_VENDOR); - stmt->setUInt32(0, entry); - stmt->setUInt32(1, item); + stmt->SetData(0, entry); + stmt->SetData(1, item); WorldDatabase.Execute(stmt); } @@ -8993,7 +8993,7 @@ void ObjectMgr::LoadScriptNames() do { - _scriptNamesStore.push_back((*result)[0].GetString()); + _scriptNamesStore.push_back((*result)[0].Get<std::string>()); } while (result->NextRow()); std::sort(_scriptNamesStore.begin(), _scriptNamesStore.end()); @@ -9044,19 +9044,19 @@ void ObjectMgr::LoadBroadcastTexts() BroadcastText bct; - bct.Id = fields[0].GetUInt32(); - bct.LanguageID = fields[1].GetUInt32(); - bct.MaleText[DEFAULT_LOCALE] = fields[2].GetString(); - bct.FemaleText[DEFAULT_LOCALE] = fields[3].GetString(); - bct.EmoteId1 = fields[4].GetUInt32(); - bct.EmoteId2 = fields[5].GetUInt32(); - bct.EmoteId3 = fields[6].GetUInt32(); - bct.EmoteDelay1 = fields[7].GetUInt32(); - bct.EmoteDelay2 = fields[8].GetUInt32(); - bct.EmoteDelay3 = fields[9].GetUInt32(); - bct.SoundEntriesId = fields[10].GetUInt32(); - bct.EmotesID = fields[11].GetUInt32(); - bct.Flags = fields[12].GetUInt32(); + bct.Id = fields[0].Get<uint32>(); + bct.LanguageID = fields[1].Get<uint32>(); + bct.MaleText[DEFAULT_LOCALE] = fields[2].Get<std::string>(); + bct.FemaleText[DEFAULT_LOCALE] = fields[3].Get<std::string>(); + bct.EmoteId1 = fields[4].Get<uint32>(); + bct.EmoteId2 = fields[5].Get<uint32>(); + bct.EmoteId3 = fields[6].Get<uint32>(); + bct.EmoteDelay1 = fields[7].Get<uint32>(); + bct.EmoteDelay2 = fields[8].Get<uint32>(); + bct.EmoteDelay3 = fields[9].Get<uint32>(); + bct.SoundEntriesId = fields[10].Get<uint32>(); + bct.EmotesID = fields[11].Get<uint32>(); + bct.Flags = fields[12].Get<uint32>(); if (bct.SoundEntriesId) { @@ -9124,7 +9124,7 @@ void ObjectMgr::LoadBroadcastTextLocales() { Field* fields = result->Fetch(); - uint32 id = fields[0].GetUInt32(); + uint32 id = fields[0].Get<uint32>(); BroadcastTextContainer::iterator bct = _broadcastTextStore.find(id); if (bct == _broadcastTextStore.end()) @@ -9133,12 +9133,12 @@ void ObjectMgr::LoadBroadcastTextLocales() continue; } - LocaleConstant locale = GetLocaleByName(fields[1].GetString()); + LocaleConstant locale = GetLocaleByName(fields[1].Get<std::string>()); if (locale == LOCALE_enUS) continue; - AddLocaleString(fields[2].GetString(), locale, bct->second.MaleText); - AddLocaleString(fields[3].GetString(), locale, bct->second.FemaleText); + AddLocaleString(fields[2].Get<std::string>(), locale, bct->second.MaleText); + AddLocaleString(fields[3].Get<std::string>(), locale, bct->second.FemaleText); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} Broadcast Text Locales in {} ms", uint32(_broadcastTextStore.size()), GetMSTimeDiffToNow(oldMSTime)); @@ -9189,8 +9189,8 @@ void ObjectMgr::LoadCreatureClassLevelStats() { Field* fields = result->Fetch(); - uint8 Level = fields[0].GetUInt8(); - uint8 Class = fields[1].GetUInt8(); + uint8 Level = fields[0].Get<uint8>(); + uint8 Class = fields[1].Get<uint8>(); if (!Class || ((1 << (Class - 1)) & CLASSMASK_ALL_CREATURES) == 0) LOG_ERROR("sql.sql", "Creature base stats for level {} has invalid class {}", Level, Class); @@ -9199,7 +9199,7 @@ void ObjectMgr::LoadCreatureClassLevelStats() for (uint8 i = 0; i < MAX_EXPANSIONS; ++i) { - stats.BaseHealth[i] = fields[2 + i].GetUInt16(); + stats.BaseHealth[i] = fields[2 + i].Get<uint16>(); if (stats.BaseHealth[i] == 0) { @@ -9221,7 +9221,7 @@ void ObjectMgr::LoadCreatureClassLevelStats() } } - stats.BaseDamage[i] = fields[9 + i].GetFloat(); + stats.BaseDamage[i] = fields[9 + i].Get<float>(); if (stats.BaseDamage[i] < 0.0f) { LOG_ERROR("sql.sql", "Creature base stats for class {}, level {} has invalid negative base damage[{}] - set to 0.0", Class, Level, i); @@ -9229,11 +9229,11 @@ void ObjectMgr::LoadCreatureClassLevelStats() } } - stats.BaseMana = fields[5].GetUInt16(); - stats.BaseArmor = fields[6].GetUInt16(); + stats.BaseMana = fields[5].Get<uint16>(); + stats.BaseArmor = fields[6].Get<uint16>(); - stats.AttackPower = fields[7].GetUInt16(); - stats.RangedAttackPower = fields[8].GetUInt16(); + stats.AttackPower = fields[7].Get<uint16>(); + stats.RangedAttackPower = fields[8].Get<uint16>(); _creatureBaseStatsStore[MAKE_PAIR16(Level, Class)] = stats; @@ -9273,8 +9273,8 @@ void ObjectMgr::LoadFactionChangeAchievements() { Field* fields = result->Fetch(); - uint32 alliance = fields[0].GetUInt32(); - uint32 horde = fields[1].GetUInt32(); + uint32 alliance = fields[0].Get<uint32>(); + uint32 horde = fields[1].Get<uint32>(); if (!sAchievementStore.LookupEntry(alliance)) LOG_ERROR("sql.sql", "Achievement {} (alliance_id) referenced in `player_factionchange_achievement` does not exist, pair skipped!", alliance); @@ -9309,8 +9309,8 @@ void ObjectMgr::LoadFactionChangeItems() { Field* fields = result->Fetch(); - uint32 alliance = fields[0].GetUInt32(); - uint32 horde = fields[1].GetUInt32(); + uint32 alliance = fields[0].Get<uint32>(); + uint32 horde = fields[1].Get<uint32>(); if (!GetItemTemplate(alliance)) LOG_ERROR("sql.sql", "Item {} (alliance_id) referenced in `player_factionchange_items` does not exist, pair skipped!", alliance); @@ -9345,8 +9345,8 @@ void ObjectMgr::LoadFactionChangeQuests() { Field* fields = result->Fetch(); - uint32 alliance = fields[0].GetUInt32(); - uint32 horde = fields[1].GetUInt32(); + uint32 alliance = fields[0].Get<uint32>(); + uint32 horde = fields[1].Get<uint32>(); if (!sObjectMgr->GetQuestTemplate(alliance)) LOG_ERROR("sql.sql", "Quest {} (alliance_id) referenced in `player_factionchange_quests` does not exist, pair skipped!", alliance); @@ -9381,8 +9381,8 @@ void ObjectMgr::LoadFactionChangeReputations() { Field* fields = result->Fetch(); - uint32 alliance = fields[0].GetUInt32(); - uint32 horde = fields[1].GetUInt32(); + uint32 alliance = fields[0].Get<uint32>(); + uint32 horde = fields[1].Get<uint32>(); if (!sFactionStore.LookupEntry(alliance)) LOG_ERROR("sql.sql", "Reputation {} (alliance_id) referenced in `player_factionchange_reputations` does not exist, pair skipped!", alliance); @@ -9417,8 +9417,8 @@ void ObjectMgr::LoadFactionChangeSpells() { Field* fields = result->Fetch(); - uint32 alliance = fields[0].GetUInt32(); - uint32 horde = fields[1].GetUInt32(); + uint32 alliance = fields[0].Get<uint32>(); + uint32 horde = fields[1].Get<uint32>(); if (!sSpellMgr->GetSpellInfo(alliance)) LOG_ERROR("sql.sql", "Spell {} (alliance_id) referenced in `player_factionchange_spells` does not exist, pair skipped!", alliance); @@ -9452,8 +9452,8 @@ void ObjectMgr::LoadFactionChangeTitles() { Field* fields = result->Fetch(); - uint32 alliance = fields[0].GetUInt32(); - uint32 horde = fields[1].GetUInt32(); + uint32 alliance = fields[0].Get<uint32>(); + uint32 horde = fields[1].Get<uint32>(); if (!sCharTitlesStore.LookupEntry(alliance)) LOG_ERROR("sql.sql", "Title {} (alliance_id) referenced in `player_factionchange_title` does not exist, pair skipped!", alliance); @@ -9545,8 +9545,8 @@ void ObjectMgr::LoadGameObjectQuestItems() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); - uint32 item = fields[1].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); + uint32 item = fields[1].Get<uint32>(); _gameObjectQuestItemStore[entry].push_back(item); @@ -9575,8 +9575,8 @@ void ObjectMgr::LoadCreatureQuestItems() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); - uint32 item = fields[1].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); + uint32 item = fields[1].Get<uint32>(); _creatureQuestItemStore[entry].push_back(item); @@ -9605,14 +9605,14 @@ void ObjectMgr::LoadQuestMoneyRewards() do { Field* fields = result->Fetch(); - uint32 Level = fields[0].GetUInt32(); + uint32 Level = fields[0].Get<uint32>(); QuestMoneyRewardArray& questMoneyReward = _questMoneyRewards[Level]; questMoneyReward.fill(0); for (uint8 i = 0; i < MAX_QUEST_MONEY_REWARDS; ++i) { - questMoneyReward[i] = fields[1 + i].GetUInt32(); + questMoneyReward[i] = fields[1 + i].Get<uint32>(); ++count; } } while (result->NextRow()); diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 53b1bb5136..3f92db52d2 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -140,23 +140,23 @@ bool Group::Create(Player* leader) uint8 index = 0; - stmt->setUInt32(index++, lowguid); - stmt->setUInt32(index++, m_leaderGuid.GetCounter()); - stmt->setUInt8(index++, uint8(m_lootMethod)); - stmt->setUInt32(index++, m_looterGuid.GetCounter()); - stmt->setUInt8(index++, uint8(m_lootThreshold)); - stmt->setUInt64(index++, m_targetIcons[0].GetRawValue()); - stmt->setUInt64(index++, m_targetIcons[1].GetRawValue()); - stmt->setUInt64(index++, m_targetIcons[2].GetRawValue()); - stmt->setUInt64(index++, m_targetIcons[3].GetRawValue()); - stmt->setUInt64(index++, m_targetIcons[4].GetRawValue()); - stmt->setUInt64(index++, m_targetIcons[5].GetRawValue()); - stmt->setUInt64(index++, m_targetIcons[6].GetRawValue()); - stmt->setUInt64(index++, m_targetIcons[7].GetRawValue()); - stmt->setUInt8(index++, uint8(m_groupType)); - stmt->setUInt32(index++, uint8(m_dungeonDifficulty)); - stmt->setUInt32(index++, uint8(m_raidDifficulty)); - stmt->setUInt32(index++, m_masterLooterGuid.GetCounter()); + stmt->SetData(index++, lowguid); + stmt->SetData(index++, m_leaderGuid.GetCounter()); + stmt->SetData(index++, uint8(m_lootMethod)); + stmt->SetData(index++, m_looterGuid.GetCounter()); + stmt->SetData(index++, uint8(m_lootThreshold)); + stmt->SetData(index++, m_targetIcons[0].GetRawValue()); + stmt->SetData(index++, m_targetIcons[1].GetRawValue()); + stmt->SetData(index++, m_targetIcons[2].GetRawValue()); + stmt->SetData(index++, m_targetIcons[3].GetRawValue()); + stmt->SetData(index++, m_targetIcons[4].GetRawValue()); + stmt->SetData(index++, m_targetIcons[5].GetRawValue()); + stmt->SetData(index++, m_targetIcons[6].GetRawValue()); + stmt->SetData(index++, m_targetIcons[7].GetRawValue()); + stmt->SetData(index++, uint8(m_groupType)); + stmt->SetData(index++, uint8(m_dungeonDifficulty)); + stmt->SetData(index++, uint8(m_raidDifficulty)); + stmt->SetData(index++, m_masterLooterGuid.GetCounter()); CharacterDatabase.Execute(stmt); @@ -172,52 +172,52 @@ bool Group::Create(Player* leader) bool Group::LoadGroupFromDB(Field* fields) { - ObjectGuid::LowType groupLowGuid = fields[16].GetUInt32(); + ObjectGuid::LowType groupLowGuid = fields[16].Get<uint32>(); m_guid = ObjectGuid::Create<HighGuid::Group>(groupLowGuid); - m_leaderGuid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt32()); + m_leaderGuid = ObjectGuid::Create<HighGuid::Player>(fields[0].Get<uint32>()); // group leader not exist if (!sCharacterCache->GetCharacterNameByGuid(m_leaderGuid, m_leaderName)) { CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GROUP); - stmt->setUInt32(0, groupLowGuid); + stmt->SetData(0, groupLowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GROUP_MEMBER_ALL); - stmt->setUInt32(0, groupLowGuid); + stmt->SetData(0, groupLowGuid); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_LFG_DATA); - stmt->setUInt32(0, groupLowGuid); + stmt->SetData(0, groupLowGuid); CharacterDatabase.Execute(stmt); return false; } - m_lootMethod = LootMethod(fields[1].GetUInt8()); - m_looterGuid = ObjectGuid::Create<HighGuid::Player>(fields[2].GetUInt32()); - m_lootThreshold = ItemQualities(fields[3].GetUInt8()); + m_lootMethod = LootMethod(fields[1].Get<uint8>()); + m_looterGuid = ObjectGuid::Create<HighGuid::Player>(fields[2].Get<uint32>()); + m_lootThreshold = ItemQualities(fields[3].Get<uint8>()); for (uint8 i = 0; i < TARGETICONCOUNT; ++i) - m_targetIcons[i].Set(fields[4 + i].GetUInt64()); + m_targetIcons[i].Set(fields[4 + i].Get<uint64>()); - m_groupType = GroupType(fields[12].GetUInt8()); + m_groupType = GroupType(fields[12].Get<uint8>()); if (m_groupType & GROUPTYPE_RAID) _initRaidSubGroupsCounter(); - uint32 diff = fields[13].GetUInt8(); + uint32 diff = fields[13].Get<uint8>(); if (diff >= MAX_DUNGEON_DIFFICULTY) m_dungeonDifficulty = DUNGEON_DIFFICULTY_NORMAL; else m_dungeonDifficulty = Difficulty(diff); - uint32 r_diff = fields[14].GetUInt8(); + uint32 r_diff = fields[14].Get<uint8>(); if (r_diff >= MAX_RAID_DIFFICULTY) m_raidDifficulty = RAID_DIFFICULTY_10MAN_NORMAL; else m_raidDifficulty = Difficulty(r_diff); - m_masterLooterGuid = ObjectGuid::Create<HighGuid::Player>(fields[15].GetUInt32()); + m_masterLooterGuid = ObjectGuid::Create<HighGuid::Player>(fields[15].Get<uint32>()); if (m_groupType & GROUPTYPE_LFG) sLFGMgr->_LoadFromDB(fields, GetGUID()); @@ -234,8 +234,8 @@ void Group::LoadMemberFromDB(ObjectGuid::LowType guidLow, uint8 memberFlags, uin if (!sCharacterCache->GetCharacterNameByGuid(member.guid, member.name)) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GROUP_MEMBER); - stmt->setUInt32(0, guidLow); - stmt->setUInt32(1, GetGUID().GetCounter()); + stmt->SetData(0, guidLow); + stmt->SetData(1, GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); return; } @@ -269,8 +269,8 @@ void Group::ConvertToLFG(bool restricted /*= true*/) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GROUP_TYPE); - stmt->setUInt8(0, uint8(m_groupType)); - stmt->setUInt32(1, GetGUID().GetCounter()); + stmt->SetData(0, uint8(m_groupType)); + stmt->SetData(1, GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } @@ -288,8 +288,8 @@ void Group::ConvertToRaid() { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GROUP_TYPE); - stmt->setUInt8(0, uint8(m_groupType)); - stmt->setUInt32(1, GetGUID().GetCounter()); + stmt->SetData(0, uint8(m_groupType)); + stmt->SetData(1, GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } @@ -437,11 +437,11 @@ bool Group::AddMember(Player* player) if (!isBGGroup() && !isBFGroup()) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_GROUP_MEMBER); - stmt->setUInt32(0, GetGUID().GetCounter()); - stmt->setUInt32(1, member.guid.GetCounter()); - stmt->setUInt8(2, member.flags); - stmt->setUInt8(3, member.group); - stmt->setUInt8(4, member.roles); + stmt->SetData(0, GetGUID().GetCounter()); + stmt->SetData(1, member.guid.GetCounter()); + stmt->SetData(2, member.flags); + stmt->SetData(3, member.group); + stmt->SetData(4, member.roles); CharacterDatabase.Execute(stmt); } @@ -583,8 +583,8 @@ bool Group::RemoveMember(ObjectGuid guid, const RemoveMethod& method /*= GROUP_R if (!isBGGroup() && !isBFGroup()) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GROUP_MEMBER); - stmt->setUInt32(0, guid.GetCounter()); - stmt->setUInt32(1, GetGUID().GetCounter()); + stmt->SetData(0, guid.GetCounter()); + stmt->SetData(1, GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } @@ -716,8 +716,8 @@ void Group::ChangeLeader(ObjectGuid newLeaderGuid) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // Update the group leader CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GROUP_LEADER); - stmt->setUInt32(0, newLeader->GetGUID().GetCounter()); - stmt->setUInt32(1, GetGUID().GetCounter()); + stmt->SetData(0, newLeader->GetGUID().GetCounter()); + stmt->SetData(1, GetGUID().GetCounter()); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -807,17 +807,17 @@ void Group::Disband(bool hideDestroy /* = false */) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GROUP); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GROUP_MEMBER_ALL); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_LFG_DATA); - stmt->setUInt32(0, GetGUID().GetCounter()); + stmt->SetData(0, GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } @@ -1779,8 +1779,8 @@ void Group::ChangeMembersGroup(ObjectGuid guid, uint8 group) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GROUP_MEMBER_SUBGROUP); - stmt->setUInt8(0, group); - stmt->setUInt32(1, guid.GetCounter()); + stmt->SetData(0, group); + stmt->SetData(1, guid.GetCounter()); CharacterDatabase.Execute(stmt); } @@ -1978,8 +1978,8 @@ void Group::SetDungeonDifficulty(Difficulty difficulty) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GROUP_DIFFICULTY); - stmt->setUInt8(0, uint8(m_dungeonDifficulty)); - stmt->setUInt32(1, GetGUID().GetCounter()); + stmt->SetData(0, uint8(m_dungeonDifficulty)); + stmt->SetData(1, GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } @@ -1999,8 +1999,8 @@ void Group::SetRaidDifficulty(Difficulty difficulty) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GROUP_RAID_DIFFICULTY); - stmt->setUInt8(0, uint8(m_raidDifficulty)); - stmt->setUInt32(1, GetGUID().GetCounter()); + stmt->SetData(0, uint8(m_raidDifficulty)); + stmt->SetData(1, GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } @@ -2314,8 +2314,8 @@ void Group::SetGroupMemberFlag(ObjectGuid guid, bool apply, GroupMemberFlags fla // Preserve the new setting in the db CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GROUP_MEMBER_FLAG); - stmt->setUInt8(0, slot->flags); - stmt->setUInt32(1, guid.GetCounter()); + stmt->SetData(0, slot->flags); + stmt->SetData(1, guid.GetCounter()); CharacterDatabase.Execute(stmt); diff --git a/src/server/game/Groups/GroupMgr.cpp b/src/server/game/Groups/GroupMgr.cpp index 4ffddc75ba..af9567aa1d 100644 --- a/src/server/game/Groups/GroupMgr.cpp +++ b/src/server/game/Groups/GroupMgr.cpp @@ -46,7 +46,7 @@ void GroupMgr::InitGroupIds() QueryResult result = CharacterDatabase.Query("SELECT MAX(guid) FROM `groups`"); if (result) { - uint32 maxId = (*result)[0].GetUInt32(); + uint32 maxId = (*result)[0].Get<uint32>(); _groupIds.resize(maxId + 1); } } @@ -170,10 +170,10 @@ void GroupMgr::LoadGroups() do { Field* fields = result->Fetch(); - Group* group = GetGroupByGUID(fields[0].GetUInt32()); + Group* group = GetGroupByGUID(fields[0].Get<uint32>()); if (group) - group->LoadMemberFromDB(fields[1].GetUInt32(), fields[2].GetUInt8(), fields[3].GetUInt8(), fields[4].GetUInt8()); + group->LoadMemberFromDB(fields[1].Get<uint32>(), fields[2].Get<uint8>(), fields[3].Get<uint8>(), fields[4].Get<uint8>()); ++count; } while (result->NextRow()); diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index cc0cbcc279..39a1566064 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -180,19 +180,19 @@ Guild::LogEntry::LogEntry(uint32 guildId, ObjectGuid::LowType guid) : void Guild::EventLogEntry::SaveToDB(CharacterDatabaseTransaction trans) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_EVENTLOG); - stmt->setUInt32(0, m_guildId); - stmt->setUInt32(1, m_guid); + stmt->SetData(0, m_guildId); + stmt->SetData(1, m_guid); CharacterDatabase.ExecuteOrAppend(trans, stmt); uint8 index = 0; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_EVENTLOG); - stmt->setUInt32( index, m_guildId); - stmt->setUInt32(++index, m_guid); - stmt->setUInt8 (++index, uint8(m_eventType)); - stmt->setUInt32(++index, m_playerGuid1.GetCounter()); - stmt->setUInt32(++index, m_playerGuid2.GetCounter()); - stmt->setUInt8 (++index, m_newRank); - stmt->setUInt64(++index, m_timestamp); + stmt->SetData( index, m_guildId); + stmt->SetData(++index, m_guid); + stmt->SetData (++index, uint8(m_eventType)); + stmt->SetData(++index, m_playerGuid1.GetCounter()); + stmt->SetData(++index, m_playerGuid2.GetCounter()); + stmt->SetData (++index, m_newRank); + stmt->SetData(++index, m_timestamp); CharacterDatabase.ExecuteOrAppend(trans, stmt); } @@ -216,22 +216,22 @@ void Guild::BankEventLogEntry::SaveToDB(CharacterDatabaseTransaction trans) cons uint8 index = 0; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_EVENTLOG); - stmt->setUInt32( index, m_guildId); - stmt->setUInt32(++index, m_guid); - stmt->setUInt8 (++index, m_bankTabId); + stmt->SetData( index, m_guildId); + stmt->SetData(++index, m_guid); + stmt->SetData (++index, m_bankTabId); CharacterDatabase.ExecuteOrAppend(trans, stmt); index = 0; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_BANK_EVENTLOG); - stmt->setUInt32( index, m_guildId); - stmt->setUInt32(++index, m_guid); - stmt->setUInt8 (++index, m_bankTabId); - stmt->setUInt8 (++index, uint8(m_eventType)); - stmt->setUInt32(++index, m_playerGuid.GetCounter()); - stmt->setUInt32(++index, m_itemOrMoney); - stmt->setUInt16(++index, m_itemStackCount); - stmt->setUInt8 (++index, m_destTabId); - stmt->setUInt64(++index, m_timestamp); + stmt->SetData( index, m_guildId); + stmt->SetData(++index, m_guid); + stmt->SetData (++index, m_bankTabId); + stmt->SetData (++index, uint8(m_eventType)); + stmt->SetData(++index, m_playerGuid.GetCounter()); + stmt->SetData(++index, m_itemOrMoney); + stmt->SetData(++index, m_itemStackCount); + stmt->SetData (++index, m_destTabId); + stmt->SetData(++index, m_timestamp); CharacterDatabase.ExecuteOrAppend(trans, stmt); } @@ -265,10 +265,10 @@ void Guild::BankEventLogEntry::WritePacket(WorldPackets::Guild::GuildBankLogQuer // RankInfo void Guild::RankInfo::LoadFromDB(Field* fields) { - m_rankId = fields[1].GetUInt8(); - m_name = fields[2].GetString(); - m_rights = fields[3].GetUInt32(); - m_bankMoneyPerDay = fields[4].GetUInt32(); + m_rankId = fields[1].Get<uint8>(); + m_name = fields[2].Get<std::string>(); + m_rights = fields[3].Get<uint32>(); + m_bankMoneyPerDay = fields[4].Get<uint32>(); if (m_rankId == GR_GUILDMASTER) // Prevent loss of leader rights m_rights |= GR_RIGHT_ALL; } @@ -276,11 +276,11 @@ void Guild::RankInfo::LoadFromDB(Field* fields) void Guild::RankInfo::SaveToDB(CharacterDatabaseTransaction trans) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_RANK); - stmt->setUInt32(0, m_guildId); - stmt->setUInt8 (1, m_rankId); - stmt->setString(2, m_name); - stmt->setUInt32(3, m_rights); - stmt->setUInt32(4, m_bankMoneyPerDay); + stmt->SetData(0, m_guildId); + stmt->SetData (1, m_rankId); + stmt->SetData(2, m_name); + stmt->SetData(3, m_rights); + stmt->SetData(4, m_bankMoneyPerDay); CharacterDatabase.ExecuteOrAppend(trans, stmt); } @@ -300,11 +300,11 @@ void Guild::RankInfo::CreateMissingTabsIfNeeded(uint8 tabs, CharacterDatabaseTra LOG_ERROR("guild", "Guild {} has broken Tab {} for rank {}. Created default tab.", m_guildId, i, m_rankId); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_BANK_RIGHT); - stmt->setUInt32(0, m_guildId); - stmt->setUInt8(1, i); - stmt->setUInt8(2, m_rankId); - stmt->setUInt8(3, rightsAndSlots.GetRights()); - stmt->setUInt32(4, rightsAndSlots.GetSlots()); + stmt->SetData(0, m_guildId); + stmt->SetData(1, i); + stmt->SetData(2, m_rankId); + stmt->SetData(3, rightsAndSlots.GetRights()); + stmt->SetData(4, rightsAndSlots.GetSlots()); trans->Append(stmt); } } @@ -317,9 +317,9 @@ void Guild::RankInfo::SetName(std::string_view name) m_name = name; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_RANK_NAME); - stmt->setString(0, m_name); - stmt->setUInt8 (1, m_rankId); - stmt->setUInt32(2, m_guildId); + stmt->SetData(0, m_name); + stmt->SetData (1, m_rankId); + stmt->SetData(2, m_guildId); CharacterDatabase.Execute(stmt); } @@ -334,9 +334,9 @@ void Guild::RankInfo::SetRights(uint32 rights) m_rights = rights; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_RANK_RIGHTS); - stmt->setUInt32(0, m_rights); - stmt->setUInt8 (1, m_rankId); - stmt->setUInt32(2, m_guildId); + stmt->SetData(0, m_rights); + stmt->SetData (1, m_rankId); + stmt->SetData(2, m_guildId); CharacterDatabase.Execute(stmt); } @@ -351,9 +351,9 @@ void Guild::RankInfo::SetBankMoneyPerDay(uint32 money) m_bankMoneyPerDay = money; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_RANK_BANK_MONEY); - stmt->setUInt32(0, money); - stmt->setUInt8 (1, m_rankId); - stmt->setUInt32(2, m_guildId); + stmt->SetData(0, money); + stmt->SetData (1, m_rankId); + stmt->SetData(2, m_guildId); CharacterDatabase.Execute(stmt); } @@ -368,11 +368,11 @@ void Guild::RankInfo::SetBankTabSlotsAndRights(GuildBankRightsAndSlots rightsAnd if (saveToDB) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_BANK_RIGHT); - stmt->setUInt32(0, m_guildId); - stmt->setUInt8 (1, guildBR.GetTabId()); - stmt->setUInt8 (2, m_rankId); - stmt->setUInt8 (3, guildBR.GetRights()); - stmt->setUInt32(4, guildBR.GetSlots()); + stmt->SetData(0, m_guildId); + stmt->SetData (1, guildBR.GetTabId()); + stmt->SetData (2, m_rankId); + stmt->SetData (3, guildBR.GetRights()); + stmt->SetData(4, guildBR.GetSlots()); CharacterDatabase.Execute(stmt); } } @@ -380,16 +380,16 @@ void Guild::RankInfo::SetBankTabSlotsAndRights(GuildBankRightsAndSlots rightsAnd // BankTab void Guild::BankTab::LoadFromDB(Field* fields) { - m_name = fields[2].GetString(); - m_icon = fields[3].GetString(); - m_text = fields[4].GetString(); + m_name = fields[2].Get<std::string>(); + m_icon = fields[3].Get<std::string>(); + m_text = fields[4].Get<std::string>(); } bool Guild::BankTab::LoadItemFromDB(Field* fields) { - uint8 slotId = fields[13].GetUInt8(); - ObjectGuid::LowType itemGuid = fields[14].GetUInt32(); - uint32 itemEntry = fields[15].GetUInt32(); + uint8 slotId = fields[13].Get<uint8>(); + ObjectGuid::LowType itemGuid = fields[14].Get<uint32>(); + uint32 itemEntry = fields[15].Get<uint32>(); if (slotId >= GUILD_BANK_MAX_SLOTS) { LOG_ERROR("guild", "Invalid slot for item (GUID: {}, id: {}) in guild bank, skipped.", itemGuid, itemEntry); @@ -409,9 +409,9 @@ bool Guild::BankTab::LoadItemFromDB(Field* fields) LOG_ERROR("guild", "Item (GUID {}, id: {}) not found in item_instance, deleting from guild bank!", itemGuid, itemEntry); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_NONEXISTENT_GUILD_BANK_ITEM); - stmt->setUInt32(0, m_guildId); - stmt->setUInt8 (1, m_tabId); - stmt->setUInt8 (2, slotId); + stmt->SetData(0, m_guildId); + stmt->SetData (1, m_tabId); + stmt->SetData (2, slotId); CharacterDatabase.Execute(stmt); delete pItem; @@ -446,10 +446,10 @@ void Guild::BankTab::SetInfo(std::string_view name, std::string_view icon) m_icon = icon; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_BANK_TAB_INFO); - stmt->setString(0, m_name); - stmt->setString(1, m_icon); - stmt->setUInt32(2, m_guildId); - stmt->setUInt8 (3, m_tabId); + stmt->SetData(0, m_name); + stmt->SetData(1, m_icon); + stmt->SetData(2, m_guildId); + stmt->SetData (3, m_tabId); CharacterDatabase.Execute(stmt); } @@ -462,9 +462,9 @@ void Guild::BankTab::SetText(std::string_view text) utf8truncate(m_text, MAX_GUILD_BANK_TAB_TEXT_LEN); // DB and client size limitation CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_BANK_TAB_TEXT); - stmt->setString(0, m_text); - stmt->setUInt32(1, m_guildId); - stmt->setUInt8 (2, m_tabId); + stmt->SetData(0, m_text); + stmt->SetData(1, m_guildId); + stmt->SetData (2, m_tabId); CharacterDatabase.Execute(stmt); } @@ -478,18 +478,18 @@ bool Guild::BankTab::SetItem(CharacterDatabaseTransaction trans, uint8 slotId, I m_items[slotId] = item; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_ITEM); - stmt->setUInt32(0, m_guildId); - stmt->setUInt8 (1, m_tabId); - stmt->setUInt8 (2, slotId); + stmt->SetData(0, m_guildId); + stmt->SetData (1, m_tabId); + stmt->SetData (2, slotId); CharacterDatabase.ExecuteOrAppend(trans, stmt); if (item) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_BANK_ITEM); - stmt->setUInt32(0, m_guildId); - stmt->setUInt8 (1, m_tabId); - stmt->setUInt8 (2, slotId); - stmt->setUInt32(3, item->GetGUID().GetCounter()); + stmt->SetData(0, m_guildId); + stmt->SetData (1, m_tabId); + stmt->SetData (2, slotId); + stmt->SetData(3, item->GetGUID().GetCounter()); CharacterDatabase.ExecuteOrAppend(trans, stmt); item->SetGuidValue(ITEM_FIELD_CONTAINED, ObjectGuid::Empty); @@ -548,8 +548,8 @@ void Guild::Member::SetPublicNote(std::string_view publicNote) m_publicNote = publicNote; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_MEMBER_PNOTE); - stmt->setString(0, m_publicNote); - stmt->setUInt32(1, m_guid.GetCounter()); + stmt->SetData(0, m_publicNote); + stmt->SetData(1, m_guid.GetCounter()); CharacterDatabase.Execute(stmt); } @@ -561,8 +561,8 @@ void Guild::Member::SetOfficerNote(std::string_view officerNote) m_officerNote = officerNote; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_MEMBER_OFFNOTE); - stmt->setString(0, m_officerNote); - stmt->setUInt32(1, m_guid.GetCounter()); + stmt->SetData(0, m_officerNote); + stmt->SetData(1, m_guid.GetCounter()); CharacterDatabase.Execute(stmt); } @@ -575,8 +575,8 @@ void Guild::Member::ChangeRank(uint8 newRank) player->SetRank(newRank); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_MEMBER_RANK); - stmt->setUInt8 (0, newRank); - stmt->setUInt32(1, m_guid.GetCounter()); + stmt->SetData (0, newRank); + stmt->SetData(1, m_guid.GetCounter()); CharacterDatabase.Execute(stmt); } @@ -588,11 +588,11 @@ void Guild::Member::UpdateLogoutTime() void Guild::Member::SaveToDB(CharacterDatabaseTransaction trans) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_MEMBER); - stmt->setUInt32(0, m_guildId); - stmt->setUInt32(1, m_guid.GetCounter()); - stmt->setUInt8 (2, m_rankId); - stmt->setString(3, m_publicNote); - stmt->setString(4, m_officerNote); + stmt->SetData(0, m_guildId); + stmt->SetData(1, m_guid.GetCounter()); + stmt->SetData (2, m_rankId); + stmt->SetData(3, m_publicNote); + stmt->SetData(4, m_officerNote); CharacterDatabase.ExecuteOrAppend(trans, stmt); } @@ -601,19 +601,19 @@ void Guild::Member::SaveToDB(CharacterDatabaseTransaction trans) const // In this case member has to be removed from guild. bool Guild::Member::LoadFromDB(Field* fields) { - m_publicNote = fields[3].GetString(); - m_officerNote = fields[4].GetString(); + m_publicNote = fields[3].Get<std::string>(); + m_officerNote = fields[4].Get<std::string>(); for (uint8 i = 0; i <= GUILD_BANK_MAX_TABS; ++i) - m_bankWithdraw[i] = fields[5 + i].GetUInt32(); + m_bankWithdraw[i] = fields[5 + i].Get<uint32>(); - SetStats(fields[12].GetString(), - fields[13].GetUInt8(), // characters.level - fields[14].GetUInt8(), // characters.class - fields[15].GetUInt8(), // characters.gender - fields[16].GetUInt16(), // characters.zone - fields[17].GetUInt32()); // characters.account - m_logoutTime = fields[18].GetUInt32(); // characters.logout_time + SetStats(fields[12].Get<std::string>(), + fields[13].Get<uint8>(), // characters.level + fields[14].Get<uint8>(), // characters.class + fields[15].Get<uint8>(), // characters.gender + fields[16].Get<uint16>(), // characters.zone + fields[17].Get<uint32>()); // characters.account + m_logoutTime = fields[18].Get<uint32>(); // characters.logout_time if (!CheckStats()) return false; @@ -652,11 +652,11 @@ void Guild::Member::UpdateBankWithdrawValue(CharacterDatabaseTransaction trans, m_bankWithdraw[tabId] += amount; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_MEMBER_WITHDRAW); - stmt->setUInt32(0, m_guid.GetCounter()); + stmt->SetData(0, m_guid.GetCounter()); for (uint8 i = 0; i <= GUILD_BANK_MAX_TABS;) { uint32 withdraw = m_bankWithdraw[i++]; - stmt->setUInt32(i, withdraw); + stmt->SetData(i, withdraw); } CharacterDatabase.ExecuteOrAppend(trans, stmt); @@ -692,22 +692,22 @@ void EmblemInfo::ReadPacket(WorldPackets::Guild::SaveGuildEmblem& packet) void EmblemInfo::LoadFromDB(Field* fields) { - m_style = fields[3].GetUInt8(); - m_color = fields[4].GetUInt8(); - m_borderStyle = fields[5].GetUInt8(); - m_borderColor = fields[6].GetUInt8(); - m_backgroundColor = fields[7].GetUInt8(); + m_style = fields[3].Get<uint8>(); + m_color = fields[4].Get<uint8>(); + m_borderStyle = fields[5].Get<uint8>(); + m_borderColor = fields[6].Get<uint8>(); + m_backgroundColor = fields[7].Get<uint8>(); } void EmblemInfo::SaveToDB(uint32 guildId) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_EMBLEM_INFO); - stmt->setUInt32(0, m_style); - stmt->setUInt32(1, m_color); - stmt->setUInt32(2, m_borderStyle); - stmt->setUInt32(3, m_borderColor); - stmt->setUInt32(4, m_backgroundColor); - stmt->setUInt32(5, guildId); + stmt->SetData(0, m_style); + stmt->SetData(1, m_color); + stmt->SetData(2, m_borderStyle); + stmt->SetData(3, m_borderColor); + stmt->SetData(4, m_backgroundColor); + stmt->SetData(5, guildId); CharacterDatabase.Execute(stmt); } @@ -1067,23 +1067,23 @@ bool Guild::Create(Player* pLeader, std::string_view name) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_MEMBERS); - stmt->setUInt32(0, m_id); + stmt->SetData(0, m_id); trans->Append(stmt); uint8 index = 0; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD); - stmt->setUInt32( index, m_id); - stmt->setString(++index, m_name); - stmt->setUInt32(++index, m_leaderGuid.GetCounter()); - stmt->setString(++index, m_info); - stmt->setString(++index, m_motd); - stmt->setUInt64(++index, uint32(m_createdDate)); - stmt->setUInt32(++index, m_emblemInfo.GetStyle()); - stmt->setUInt32(++index, m_emblemInfo.GetColor()); - stmt->setUInt32(++index, m_emblemInfo.GetBorderStyle()); - stmt->setUInt32(++index, m_emblemInfo.GetBorderColor()); - stmt->setUInt32(++index, m_emblemInfo.GetBackgroundColor()); - stmt->setUInt64(++index, m_bankMoney); + stmt->SetData( index, m_id); + stmt->SetData(++index, m_name); + stmt->SetData(++index, m_leaderGuid.GetCounter()); + stmt->SetData(++index, m_info); + stmt->SetData(++index, m_motd); + stmt->SetData(++index, uint32(m_createdDate)); + stmt->SetData(++index, m_emblemInfo.GetStyle()); + stmt->SetData(++index, m_emblemInfo.GetColor()); + stmt->SetData(++index, m_emblemInfo.GetBorderStyle()); + stmt->SetData(++index, m_emblemInfo.GetBorderColor()); + stmt->SetData(++index, m_emblemInfo.GetBackgroundColor()); + stmt->SetData(++index, m_bankMoney); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -1118,34 +1118,34 @@ void Guild::Disband() CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD); - stmt->setUInt32(0, m_id); + stmt->SetData(0, m_id); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_RANKS); - stmt->setUInt32(0, m_id); + stmt->SetData(0, m_id); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_TABS); - stmt->setUInt32(0, m_id); + stmt->SetData(0, m_id); trans->Append(stmt); // Free bank tab used memory and delete items stored in them _DeleteBankItems(trans, true); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_ITEMS); - stmt->setUInt32(0, m_id); + stmt->SetData(0, m_id); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_RIGHTS); - stmt->setUInt32(0, m_id); + stmt->SetData(0, m_id); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_EVENTLOGS); - stmt->setUInt32(0, m_id); + stmt->SetData(0, m_id); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_EVENTLOGS); - stmt->setUInt32(0, m_id); + stmt->SetData(0, m_id); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -1191,8 +1191,8 @@ bool Guild::SetName(std::string_view const& name) m_name = name; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_NAME); - stmt->setString(0, m_name); - stmt->setUInt32(1, GetId()); + stmt->SetData(0, m_name); + stmt->SetData(1, GetId()); CharacterDatabase.Execute(stmt); return true; } @@ -1279,8 +1279,8 @@ void Guild::HandleSetMOTD(WorldSession* session, std::string_view motd) sScriptMgr->OnGuildMOTDChanged(this, m_motd); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_MOTD); - stmt->setString(0, m_motd); - stmt->setUInt32(1, m_id); + stmt->SetData(0, m_motd); + stmt->SetData(1, m_id); CharacterDatabase.Execute(stmt); _BroadcastEvent(GE_MOTD, ObjectGuid::Empty, m_motd); @@ -1300,8 +1300,8 @@ void Guild::HandleSetInfo(WorldSession* session, std::string_view info) sScriptMgr->OnGuildInfoChanged(this, m_info); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_INFO); - stmt->setString(0, m_info); - stmt->setUInt32(1, m_id); + stmt->SetData(0, m_info); + stmt->SetData(1, m_id); CharacterDatabase.Execute(stmt); } } @@ -1630,13 +1630,13 @@ void Guild::HandleRemoveRank(WorldSession* session, uint8 rankId) // Delete bank rights for rank CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_RIGHTS_FOR_RANK); - stmt->setUInt32(0, m_id); - stmt->setUInt8(1, rankId); + stmt->SetData(0, m_id); + stmt->SetData(1, rankId); CharacterDatabase.Execute(stmt); // Delete rank stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_LOWEST_RANK); - stmt->setUInt32(0, m_id); - stmt->setUInt8(1, rankId); + stmt->SetData(0, m_id); + stmt->SetData(1, rankId); CharacterDatabase.Execute(stmt); // match what the sql statement does @@ -1671,8 +1671,8 @@ void Guild::HandleMemberDepositMoney(WorldSession* session, uint32 amount) _BroadcastEvent(GE_BANK_MONEY_SET, ObjectGuid::Empty, aux.c_str()); if (amount > 10 * GOLD) // receiver_acc = Guild id, receiver_name = Guild name - CharacterDatabase.PExecute("INSERT INTO log_money VALUES(%u, %u, \"%s\", \"%s\", %u, \"%s\", %u, \"(guild members: %u, new amount: %u, leader guid low: %u, sender level: %u)\", NOW(), %u)", - session->GetAccountId(), player->GetGUID().GetCounter(), player->GetName().c_str(), session->GetRemoteAddress().c_str(), GetId(), GetName().c_str(), amount, GetMemberCount(), GetTotalBankMoney(), GetLeaderGUID().GetCounter(), player->getLevel(), 3); + CharacterDatabase.Execute("INSERT INTO log_money VALUES({}, {}, \"{}\", \"{}\", {}, \"{}\", {}, \"(guild members: {}, new amount: {}, leader guid low: {}, sender level: {})\", NOW(), {})", + session->GetAccountId(), player->GetGUID().GetCounter(), player->GetName(), session->GetRemoteAddress(), GetId(), GetName(), amount, GetMemberCount(), GetTotalBankMoney(), GetLeaderGUID().GetCounter(), player->getLevel(), 3); } bool Guild::HandleMemberWithdrawMoney(WorldSession* session, uint32 amount, bool repair) @@ -1715,8 +1715,8 @@ bool Guild::HandleMemberWithdrawMoney(WorldSession* session, uint32 amount, bool CharacterDatabase.CommitTransaction(trans); if (amount > 10 * GOLD) // sender_acc = 0 (guild has no account), sender_guid = Guild id, sender_name = Guild name - CharacterDatabase.PExecute("INSERT INTO log_money VALUES(%u, %u, \"%s\", \"%s\", %u, \"%s\", %u, \"(guild, members: %u, new amount: %u, leader guid low: %u, withdrawer level: %u)\", NOW(), %u)", - 0, GetId(), GetName().c_str(), session->GetRemoteAddress().c_str(), session->GetAccountId(), player->GetName().c_str(), amount, GetMemberCount(), GetTotalBankMoney(), GetLeaderGUID().GetCounter(), player->getLevel(), 4); + CharacterDatabase.Execute("INSERT INTO log_money VALUES({}, {}, \"{}\", \"{}\", {}, \"{}\", {}, \"(guild, members: {}, new amount: {}, leader guid low: {}, withdrawer level: {})\", NOW(), {})", + 0, GetId(), GetName(), session->GetRemoteAddress(), session->GetAccountId(), player->GetName(), amount, GetMemberCount(), GetTotalBankMoney(), GetLeaderGUID().GetCounter(), player->getLevel(), 4); std::string aux = Acore::Impl::ByteArrayToHexStr(reinterpret_cast<uint8*>(&m_bankMoney), 8, true); _BroadcastEvent(GE_BANK_MONEY_SET, ObjectGuid::Empty, aux.c_str()); @@ -1874,16 +1874,16 @@ void Guild::SendLoginInfo(WorldSession* session) // Loading methods bool Guild::LoadFromDB(Field* fields) { - m_id = fields[0].GetUInt32(); - m_name = fields[1].GetString(); - m_leaderGuid = ObjectGuid::Create<HighGuid::Player>(fields[2].GetUInt32()); + m_id = fields[0].Get<uint32>(); + m_name = fields[1].Get<std::string>(); + m_leaderGuid = ObjectGuid::Create<HighGuid::Player>(fields[2].Get<uint32>()); m_emblemInfo.LoadFromDB(fields); - m_info = fields[8].GetString(); - m_motd = fields[9].GetString(); - m_createdDate = time_t(fields[10].GetUInt32()); - m_bankMoney = fields[11].GetUInt64(); + m_info = fields[8].Get<std::string>(); + m_motd = fields[9].Get<std::string>(); + m_createdDate = time_t(fields[10].Get<uint32>()); + m_bankMoney = fields[11].Get<uint64>(); - uint8 purchasedTabs = uint8(fields[12].GetUInt64()); + uint8 purchasedTabs = uint8(fields[12].Get<uint64>()); if (purchasedTabs > GUILD_BANK_MAX_TABS) purchasedTabs = GUILD_BANK_MAX_TABS; @@ -1905,10 +1905,10 @@ void Guild::LoadRankFromDB(Field* fields) bool Guild::LoadMemberFromDB(Field* fields) { - ObjectGuid::LowType lowguid = fields[1].GetUInt32(); + ObjectGuid::LowType lowguid = fields[1].Get<uint32>(); ObjectGuid playerGuid(HighGuid::Player, lowguid); - auto [memberIt, isNew] = m_members.try_emplace(lowguid, m_id, playerGuid, fields[2].GetUInt8()); + auto [memberIt, isNew] = m_members.try_emplace(lowguid, m_id, playerGuid, fields[2].Get<uint8>()); if (!isNew) { LOG_ERROR("guild", "Tried to add {} to guild '{}'. Member already exists.", playerGuid.ToString(), m_name); @@ -1930,9 +1930,9 @@ bool Guild::LoadMemberFromDB(Field* fields) void Guild::LoadBankRightFromDB(Field* fields) { // tabId rights slots - GuildBankRightsAndSlots rightsAndSlots(fields[1].GetUInt8(), fields[3].GetUInt8(), fields[4].GetUInt32()); + GuildBankRightsAndSlots rightsAndSlots(fields[1].Get<uint8>(), fields[3].Get<uint8>(), fields[4].Get<uint32>()); // rankId - _SetRankBankTabRightsAndSlots(fields[2].GetUInt8(), rightsAndSlots, false); + _SetRankBankTabRightsAndSlots(fields[2].Get<uint8>(), rightsAndSlots, false); } bool Guild::LoadEventLogFromDB(Field* fields) @@ -1941,12 +1941,12 @@ bool Guild::LoadEventLogFromDB(Field* fields) { m_eventLog.LoadEvent( m_id, // guild id - fields[1].GetUInt32(), // guid - time_t(fields[6].GetUInt32()), // timestamp - GuildEventLogTypes(fields[2].GetUInt8()), // event type - ObjectGuid::Create<HighGuid::Player>(fields[3].GetUInt32()), // player guid 1 - ObjectGuid::Create<HighGuid::Player>(fields[4].GetUInt32()), // player guid 2 - fields[5].GetUInt8()); // rank + fields[1].Get<uint32>(), // guid + time_t(fields[6].Get<uint32>()), // timestamp + GuildEventLogTypes(fields[2].Get<uint8>()), // event type + ObjectGuid::Create<HighGuid::Player>(fields[3].Get<uint32>()), // player guid 1 + ObjectGuid::Create<HighGuid::Player>(fields[4].Get<uint32>()), // player guid 2 + fields[5].Get<uint8>()); // rank return true; } return false; @@ -1954,7 +1954,7 @@ bool Guild::LoadEventLogFromDB(Field* fields) bool Guild::LoadBankEventLogFromDB(Field* fields) { - uint8 dbTabId = fields[1].GetUInt8(); + uint8 dbTabId = fields[1].Get<uint8>(); bool isMoneyTab = (dbTabId == GUILD_BANK_MONEY_LOGS_TAB); if (dbTabId < _GetPurchasedTabsSize() || isMoneyTab) { @@ -1962,8 +1962,8 @@ bool Guild::LoadBankEventLogFromDB(Field* fields) LogHolder<BankEventLogEntry>& bankLog = m_bankEventLog[tabId]; if (bankLog.CanInsert()) { - ObjectGuid::LowType guid = fields[2].GetUInt32(); - GuildBankEventLogTypes eventType = GuildBankEventLogTypes(fields[3].GetUInt8()); + ObjectGuid::LowType guid = fields[2].Get<uint32>(); + GuildBankEventLogTypes eventType = GuildBankEventLogTypes(fields[3].Get<uint8>()); if (BankEventLogEntry::IsMoneyEvent(eventType)) { if (!isMoneyTab) @@ -1980,13 +1980,13 @@ bool Guild::LoadBankEventLogFromDB(Field* fields) bankLog.LoadEvent( m_id, // guild id guid, // guid - time_t(fields[8].GetUInt32()), // timestamp + time_t(fields[8].Get<uint32>()), // timestamp dbTabId, // tab id eventType, // event type - ObjectGuid::Create<HighGuid::Player>(fields[4].GetUInt32()), // player guid - fields[5].GetUInt32(), // item or money - fields[6].GetUInt16(), // itam stack count - fields[7].GetUInt8()); // dest tab id + ObjectGuid::Create<HighGuid::Player>(fields[4].Get<uint32>()), // player guid + fields[5].Get<uint32>(), // item or money + fields[6].Get<uint16>(), // itam stack count + fields[7].Get<uint8>()); // dest tab id } } return true; @@ -1994,7 +1994,7 @@ bool Guild::LoadBankEventLogFromDB(Field* fields) void Guild::LoadBankTabFromDB(Field* fields) { - uint8 tabId = fields[1].GetUInt8(); + uint8 tabId = fields[1].Get<uint8>(); if (tabId >= _GetPurchasedTabsSize()) LOG_ERROR("guild", "Invalid tab (tabId: {}) in guild bank, skipped.", tabId); else @@ -2003,11 +2003,11 @@ void Guild::LoadBankTabFromDB(Field* fields) bool Guild::LoadBankItemFromDB(Field* fields) { - uint8 tabId = fields[12].GetUInt8(); + uint8 tabId = fields[12].Get<uint8>(); if (tabId >= _GetPurchasedTabsSize()) { LOG_ERROR("guild", "Invalid tab for item (GUID: {}, id: #{}) in guild bank, skipped.", - fields[14].GetUInt32(), fields[15].GetUInt32()); + fields[14].Get<uint32>(), fields[15].Get<uint32>()); return false; } return m_bankTabs[tabId].LoadItemFromDB(fields); @@ -2195,18 +2195,18 @@ bool Guild::AddMember(ObjectGuid guid, uint8 rankId) // xinef: sync query // Player must exist CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_DATA_FOR_GUILD); - stmt->setUInt32(0, guid.GetCounter()); + stmt->SetData(0, guid.GetCounter()); if (PreparedQueryResult result = CharacterDatabase.Query(stmt)) { Field* fields = result->Fetch(); - name = fields[0].GetString(); + name = fields[0].Get<std::string>(); member.SetStats( name, - fields[1].GetUInt8(), - fields[2].GetUInt8(), - fields[3].GetUInt8(), - fields[4].GetUInt16(), - fields[5].GetUInt32()); + fields[1].Get<uint8>(), + fields[2].Get<uint8>(), + fields[3].Get<uint8>(), + fields[4].Get<uint16>(), + fields[5].Get<uint32>()); ok = member.CheckStats(); } @@ -2304,8 +2304,8 @@ bool Guild::ChangeMemberRank(ObjectGuid guid, uint8 newRank) m_leaderGuid = guid; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_LEADER); - stmt->setUInt32(0, m_leaderGuid.GetCounter()); - stmt->setUInt32(1, m_id); + stmt->SetData(0, m_leaderGuid.GetCounter()); + stmt->SetData(1, m_id); CharacterDatabase.Execute(stmt); } @@ -2361,13 +2361,13 @@ void Guild::_CreateNewBankTab() CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_TAB); - stmt->setUInt32(0, m_id); - stmt->setUInt8 (1, tabId); + stmt->SetData(0, m_id); + stmt->SetData (1, tabId); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_BANK_TAB); - stmt->setUInt32(0, m_id); - stmt->setUInt8 (1, tabId); + stmt->SetData(0, m_id); + stmt->SetData (1, tabId); trans->Append(stmt); ++tabId; @@ -2380,11 +2380,11 @@ void Guild::_CreateNewBankTab() void Guild::_CreateDefaultGuildRanks(LocaleConstant loc) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_RANKS); - stmt->setUInt32(0, m_id); + stmt->SetData(0, m_id); CharacterDatabase.Execute(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_RIGHTS); - stmt->setUInt32(0, m_id); + stmt->SetData(0, m_id); CharacterDatabase.Execute(stmt); _CreateRank(sObjectMgr->GetAcoreString(LANG_GUILD_MASTER, loc), GR_RIGHT_ALL); @@ -2458,8 +2458,8 @@ bool Guild::_ModifyBankMoney(CharacterDatabaseTransaction trans, uint64 amount, } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_BANK_MONEY); - stmt->setUInt64(0, m_bankMoney); - stmt->setUInt32(1, m_id); + stmt->SetData(0, m_bankMoney); + stmt->SetData(1, m_id); trans->Append(stmt); return true; } @@ -2470,8 +2470,8 @@ void Guild::_SetLeaderGUID(Member& pLeader) pLeader.ChangeRank(GR_GUILDMASTER); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GUILD_LEADER); - stmt->setUInt32(0, m_leaderGuid.GetCounter()); - stmt->setUInt32(1, m_id); + stmt->SetData(0, m_leaderGuid.GetCounter()); + stmt->SetData(1, m_id); CharacterDatabase.Execute(stmt); } diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index c712d3227c..d38f5c3b90 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -816,7 +816,7 @@ private: inline void _DeleteMemberFromDB(ObjectGuid::LowType lowguid) const { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_MEMBER); - stmt->setUInt32(0, lowguid); + stmt->SetData(0, lowguid); CharacterDatabase.Execute(stmt); } diff --git a/src/server/game/Guilds/GuildMgr.cpp b/src/server/game/Guilds/GuildMgr.cpp index 5dd5bc7f1f..30a38aa8ed 100644 --- a/src/server/game/Guilds/GuildMgr.cpp +++ b/src/server/game/Guilds/GuildMgr.cpp @@ -155,7 +155,7 @@ void GuildMgr::LoadGuilds() do { Field* fields = result->Fetch(); - uint32 guildId = fields[0].GetUInt32(); + uint32 guildId = fields[0].Get<uint32>(); if (Guild* guild = GetGuildById(guildId)) guild->LoadRankFromDB(fields); @@ -197,7 +197,7 @@ void GuildMgr::LoadGuilds() do { Field* fields = result->Fetch(); - uint32 guildId = fields[0].GetUInt32(); + uint32 guildId = fields[0].Get<uint32>(); if (Guild* guild = GetGuildById(guildId)) guild->LoadMemberFromDB(fields); @@ -232,7 +232,7 @@ void GuildMgr::LoadGuilds() do { Field* fields = result->Fetch(); - uint32 guildId = fields[0].GetUInt32(); + uint32 guildId = fields[0].Get<uint32>(); if (Guild* guild = GetGuildById(guildId)) guild->LoadBankRightFromDB(fields); @@ -250,7 +250,7 @@ void GuildMgr::LoadGuilds() { uint32 oldMSTime = getMSTime(); - CharacterDatabase.DirectPExecute(Acore::StringFormatFmt("DELETE FROM guild_eventlog WHERE LogGuid > {}", sWorld->getIntConfig(CONFIG_GUILD_EVENT_LOG_COUNT)).c_str()); + CharacterDatabase.DirectExecute("DELETE FROM guild_eventlog WHERE LogGuid > {}", sWorld->getIntConfig(CONFIG_GUILD_EVENT_LOG_COUNT)); // 0 1 2 3 4 5 6 QueryResult result = CharacterDatabase.Query("SELECT guildid, LogGuid, EventType, PlayerGuid1, PlayerGuid2, NewRank, TimeStamp FROM guild_eventlog ORDER BY TimeStamp DESC, LogGuid DESC"); @@ -266,7 +266,7 @@ void GuildMgr::LoadGuilds() do { Field* fields = result->Fetch(); - uint32 guildId = fields[0].GetUInt32(); + uint32 guildId = fields[0].Get<uint32>(); if (Guild* guild = GetGuildById(guildId)) guild->LoadEventLogFromDB(fields); @@ -285,7 +285,7 @@ void GuildMgr::LoadGuilds() uint32 oldMSTime = getMSTime(); // Remove log entries that exceed the number of allowed entries per guild - CharacterDatabase.DirectPExecute(Acore::StringFormatFmt("DELETE FROM guild_bank_eventlog WHERE LogGuid > {}", sWorld->getIntConfig(CONFIG_GUILD_BANK_EVENT_LOG_COUNT)).c_str()); + CharacterDatabase.DirectExecute("DELETE FROM guild_bank_eventlog WHERE LogGuid > {}", sWorld->getIntConfig(CONFIG_GUILD_BANK_EVENT_LOG_COUNT)); // 0 1 2 3 4 5 6 7 8 QueryResult result = CharacterDatabase.Query("SELECT guildid, TabId, LogGuid, EventType, PlayerGuid, ItemOrMoney, ItemStackCount, DestTabId, TimeStamp FROM guild_bank_eventlog ORDER BY TimeStamp DESC, LogGuid DESC"); @@ -301,7 +301,7 @@ void GuildMgr::LoadGuilds() do { Field* fields = result->Fetch(); - uint32 guildId = fields[0].GetUInt32(); + uint32 guildId = fields[0].Get<uint32>(); if (Guild* guild = GetGuildById(guildId)) guild->LoadBankEventLogFromDB(fields); @@ -336,7 +336,7 @@ void GuildMgr::LoadGuilds() do { Field* fields = result->Fetch(); - uint32 guildId = fields[0].GetUInt32(); + uint32 guildId = fields[0].Get<uint32>(); if (Guild* guild = GetGuildById(guildId)) guild->LoadBankTabFromDB(fields); @@ -373,7 +373,7 @@ void GuildMgr::LoadGuilds() do { Field* fields = result->Fetch(); - uint32 guildId = fields[11].GetUInt32(); + uint32 guildId = fields[11].Get<uint32>(); if (Guild* guild = GetGuildById(guildId)) guild->LoadBankItemFromDB(fields); diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp index 6087520fb7..c03f619aa3 100644 --- a/src/server/game/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Handlers/AuctionHouseHandler.cpp @@ -480,9 +480,9 @@ void WorldSession::HandleAuctionPlaceBid(WorldPacket& recvData) GetPlayer()->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_AUCTION_BID, price); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_AUCTION_BID); - stmt->setUInt32(0, auction->bidder.GetCounter()); - stmt->setUInt32(1, auction->bid); - stmt->setUInt32(2, auction->Id); + stmt->SetData(0, auction->bidder.GetCounter()); + stmt->SetData(1, auction->bid); + stmt->SetData(2, auction->Id); trans->Append(stmt); SendAuctionCommandResult(auction->Id, AUCTION_PLACE_BID, ERR_AUCTION_OK, 0); diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index d4e4af47a3..29b5a6261f 100644 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -482,8 +482,8 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket& recvData) if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_TRACK_DESERTERS)) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_DESERTER_TRACK); - stmt->setUInt32(0, _player->GetGUID().GetCounter()); - stmt->setUInt8(1, BG_DESERTION_TYPE_LEAVE_QUEUE); + stmt->SetData(0, _player->GetGUID().GetCounter()); + stmt->SetData(1, BG_DESERTION_TYPE_LEAVE_QUEUE); CharacterDatabase.Execute(stmt); } diff --git a/src/server/game/Handlers/CalendarHandler.cpp b/src/server/game/Handlers/CalendarHandler.cpp index 9fb2e5b450..15455d7899 100644 --- a/src/server/game/Handlers/CalendarHandler.cpp +++ b/src/server/game/Handlers/CalendarHandler.cpp @@ -570,10 +570,10 @@ void WorldSession::HandleCalendarEventInvite(WorldPacket& recvData) } // xinef: sync query - if (QueryResult result = CharacterDatabase.PQuery("SELECT flags FROM character_social WHERE guid = %u AND friend = %u", inviteeGuid.GetCounter(), playerGuid.GetCounter())) + if (QueryResult result = CharacterDatabase.Query("SELECT flags FROM character_social WHERE guid = {} AND friend = {}", inviteeGuid.GetCounter(), playerGuid.GetCounter())) { Field* fields = result->Fetch(); - if (fields[0].GetUInt8() & SOCIAL_FLAG_IGNORED) + if (fields[0].Get<uint8>() & SOCIAL_FLAG_IGNORED) { sCalendarMgr->SendCalendarCommandResult(playerGuid, CALENDAR_ERROR_IGNORING_YOU_S, name.c_str()); return; @@ -805,9 +805,9 @@ void WorldSession::HandleSetSavedInstanceExtend(WorldPacket& recvData) // update in db CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_INSTANCE_EXTENDED); - stmt->setUInt8(0, toggleExtendOn ? 1 : 0); - stmt->setUInt32(1, GetPlayer()->GetGUID().GetCounter()); - stmt->setUInt32(2, instanceBind->save->GetInstanceId()); + stmt->SetData(0, toggleExtendOn ? 1 : 0); + stmt->SetData(1, GetPlayer()->GetGUID().GetCounter()); + stmt->SetData(2, instanceBind->save->GetInstanceId()); CharacterDatabase.Execute(stmt); SendCalendarRaidLockoutUpdated(instanceBind->save, (bool)toggleExtendOn); diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index d7718bb945..fc4d54eacc 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -80,139 +80,139 @@ bool LoginQueryHolder::Initialize() ObjectGuid::LowType lowGuid = m_guid.GetCounter(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_FROM, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_AURAS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_AURAS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_SPELL); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_SPELLS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_QUESTSTATUS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_DAILYQUESTSTATUS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_DAILY_QUEST_STATUS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_WEEKLYQUESTSTATUS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_WEEKLY_QUEST_STATUS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_MONTHLYQUESTSTATUS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_MONTHLY_QUEST_STATUS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_SEASONALQUESTSTATUS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_SEASONAL_QUEST_STATUS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_REPUTATION); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_REPUTATION, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_INVENTORY); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_INVENTORY, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_ACTIONS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_ACTIONS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_MAIL); - stmt->setUInt32(0, lowGuid); - stmt->setUInt32(1, uint32(GameTime::GetGameTime().count())); + stmt->SetData(0, lowGuid); + stmt->SetData(1, uint32(GameTime::GetGameTime().count())); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_MAILS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_MAILITEMS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_MAIL_ITEMS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_SOCIALLIST); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_SOCIAL_LIST, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_HOMEBIND); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_HOME_BIND, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_SPELLCOOLDOWNS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_SPELL_COOLDOWNS, stmt); if (sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_DECLINEDNAMES); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_DECLINED_NAMES, stmt); } stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_ACHIEVEMENTS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_ACHIEVEMENTS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_CRITERIAPROGRESS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_CRITERIA_PROGRESS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_EQUIPMENTSETS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_EQUIPMENT_SETS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_ENTRY_POINT); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_ENTRY_POINT, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_GLYPHS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_GLYPHS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_TALENTS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_TALENTS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PLAYER_ACCOUNT_DATA); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_ACCOUNT_DATA, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_SKILLS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_SKILLS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_RANDOMBG); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_RANDOM_BG, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_BANNED); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_BANNED, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_QUESTSTATUSREW); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS_REW, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_BREW_OF_THE_MONTH); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_BREW_OF_THE_MONTH, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ACCOUNT_INSTANCELOCKTIMES); - stmt->setUInt32(0, m_accountId); + stmt->SetData(0, m_accountId); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_INSTANCE_LOCK_TIMES, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CORPSE_LOCATION); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_CORPSE_LOCATION, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_SETTINGS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_CHARACTER_SETTINGS, stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_PETS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_PET_SLOTS, stmt); return res; @@ -231,7 +231,7 @@ void WorldSession::HandleCharEnum(PreparedQueryResult result) { do { - ObjectGuid guid = ObjectGuid::Create<HighGuid::Player>((*result)[0].GetUInt32()); + ObjectGuid guid = ObjectGuid::Create<HighGuid::Player>((*result)[0].Get<uint32>()); LOG_DEBUG("network.opcode", "Loading char {} from account {}.", guid.ToString(), GetAccountId()); if (Player::BuildEnumData(result, &data)) { @@ -257,8 +257,8 @@ void WorldSession::HandleCharEnumOpcode(WorldPacket& /*recvData*/) else stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ENUM); - stmt->setUInt8(0, PET_SAVE_AS_CURRENT); - stmt->setUInt32(1, GetAccountId()); + stmt->SetData(0, PET_SAVE_AS_CURRENT); + stmt->SetData(1, GetAccountId()); _queryProcessor.AddCallback(CharacterDatabase.AsyncQuery(stmt).WithPreparedCallback(std::bind(&WorldSession::HandleCharEnum, this, std::placeholders::_1))); } @@ -378,7 +378,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHECK_NAME); - stmt->setString(0, createInfo->Name); + stmt->SetData(0, createInfo->Name); _queryProcessor.AddCallback(CharacterDatabase.AsyncQuery(stmt) .WithChainingPreparedCallback([this](QueryCallback& queryCallback, PreparedQueryResult result) @@ -390,7 +390,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) } LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_SUM_REALM_CHARACTERS); - stmt->setUInt32(0, GetAccountId()); + stmt->SetData(0, GetAccountId()); queryCallback.SetNextQuery(LoginDatabase.AsyncQuery(stmt)); }) .WithChainingPreparedCallback([this](QueryCallback& queryCallback, PreparedQueryResult result) @@ -399,7 +399,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) if (result) { Field* fields = result->Fetch(); - acctCharCount = uint64(fields[0].GetDouble()); + acctCharCount = uint64(fields[0].Get<double>()); } if (acctCharCount >= static_cast<uint64>(sWorld->getIntConfig(CONFIG_CHARACTERS_PER_ACCOUNT))) @@ -409,7 +409,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_SUM_CHARS); - stmt->setUInt32(0, GetAccountId()); + stmt->SetData(0, GetAccountId()); queryCallback.SetNextQuery(CharacterDatabase.AsyncQuery(stmt)); }) .WithChainingPreparedCallback([this, createInfo](QueryCallback& queryCallback, PreparedQueryResult result) @@ -417,7 +417,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) if (result) { Field* fields = result->Fetch(); - createInfo->CharCount = uint8(fields[0].GetUInt64()); // SQL's COUNT() returns uint64 but it will always be less than uint8.Max + createInfo->CharCount = uint8(fields[0].Get<uint64>()); // SQL's COUNT() returns uint64 but it will always be less than uint8.Max if (createInfo->CharCount >= sWorld->getIntConfig(CONFIG_CHARACTERS_PER_REALM)) { @@ -444,11 +444,11 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) uint32 freeDeathKnightSlots = sWorld->getIntConfig(CONFIG_HEROIC_CHARACTERS_PER_REALM); Field* field = result->Fetch(); - uint8 accRace = field[1].GetUInt8(); + uint8 accRace = field[1].Get<uint8>(); if (checkDeathKnightReqs) { - uint8 accClass = field[2].GetUInt8(); + uint8 accClass = field[2].Get<uint8>(); if (accClass == CLASS_DEATH_KNIGHT) { if (freeDeathKnightSlots > 0) @@ -463,7 +463,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) if (!hasHeroicReqLevel) { - uint8 accLevel = field[0].GetUInt8(); + uint8 accLevel = field[0].Get<uint8>(); if (accLevel >= heroicReqLevel) hasHeroicReqLevel = true; } @@ -492,14 +492,14 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) break; field = result->Fetch(); - accRace = field[1].GetUInt8(); + accRace = field[1].Get<uint8>(); if (!haveSameRace) haveSameRace = createInfo->Race == accRace; if (checkDeathKnightReqs) { - uint8 acc_class = field[2].GetUInt8(); + uint8 acc_class = field[2].Get<uint8>(); if (acc_class == CLASS_DEATH_KNIGHT) { if (freeDeathKnightSlots > 0) @@ -514,7 +514,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) if (!hasHeroicReqLevel) { - uint8 acc_level = field[0].GetUInt8(); + uint8 acc_level = field[0].Get<uint8>(); if (acc_level >= heroicReqLevel) hasHeroicReqLevel = true; } @@ -562,14 +562,14 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) createInfo->CharCount++; LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_REALM_CHARACTERS_BY_REALM); - stmt->setUInt32(0, GetAccountId()); - stmt->setUInt32(1, realm.Id.Realm); + stmt->SetData(0, GetAccountId()); + stmt->SetData(1, realm.Id.Realm); trans->Append(stmt); stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_REALM_CHARACTERS); - stmt->setUInt32(0, createInfo->CharCount); - stmt->setUInt32(1, GetAccountId()); - stmt->setUInt32(2, realm.Id.Realm); + stmt->SetData(0, createInfo->CharCount); + stmt->SetData(1, GetAccountId()); + stmt->SetData(2, realm.Id.Realm); trans->Append(stmt); LoginDatabase.CommitTransaction(trans); @@ -595,8 +595,8 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket& recvData) } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_CREATE_INFO); - stmt->setUInt32(0, GetAccountId()); - stmt->setUInt32(1, (skipCinematics == 1 || createInfo->Class == CLASS_DEATH_KNIGHT) ? 10 : 1); + stmt->SetData(0, GetAccountId()); + stmt->SetData(1, (skipCinematics == 1 || createInfo->Class == CLASS_DEATH_KNIGHT) ? 10 : 1); queryCallback.WithPreparedCallback(std::move(finalizeCharacterCreation)).SetNextQuery(CharacterDatabase.AsyncQuery(stmt)); })); } @@ -907,12 +907,12 @@ void WorldSession::HandlePlayerLoginFromDB(LoginQueryHolder const& holder) pCurrChar->SendInitialPacketsAfterAddToMap(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_ONLINE); - stmt->setUInt32(0, pCurrChar->GetGUID().GetCounter()); + stmt->SetData(0, pCurrChar->GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); LoginDatabasePreparedStatement* loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_ONLINE); - loginStmt->setUInt32(0, realm.Id.Realm); - loginStmt->setUInt32(1, GetAccountId()); + loginStmt->SetData(0, realm.Id.Realm); + loginStmt->SetData(1, GetAccountId()); LoginDatabase.Execute(loginStmt); pCurrChar->SetInGameTime(GameTime::GetGameTimeMS().count()); @@ -1365,9 +1365,9 @@ void WorldSession::HandleCharRenameOpcode(WorldPacket& recvData) // and that there is no character with the desired new name CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_FREE_NAME); - stmt->setUInt32(0, renameInfo->Guid.GetCounter()); - stmt->setUInt32(1, GetAccountId()); - stmt->setString(2, renameInfo->Name); + stmt->SetData(0, renameInfo->Guid.GetCounter()); + stmt->SetData(1, GetAccountId()); + stmt->SetData(2, renameInfo->Name); _queryProcessor.AddCallback(CharacterDatabase.AsyncQuery(stmt) .WithPreparedCallback(std::bind(&WorldSession::HandleCharRenameCallBack, this, renameInfo, std::placeholders::_1))); @@ -1383,9 +1383,9 @@ void WorldSession::HandleCharRenameCallBack(std::shared_ptr<CharacterRenameInfo> Field* fields = result->Fetch(); - ObjectGuid::LowType guidLow = fields[0].GetUInt32(); - std::string oldName = fields[1].GetString(); - uint16 atLoginFlags = fields[2].GetUInt16(); + ObjectGuid::LowType guidLow = fields[0].Get<uint32>(); + std::string oldName = fields[1].Get<std::string>(); + uint16 atLoginFlags = fields[2].Get<uint16>(); if (!(atLoginFlags & AT_LOGIN_RENAME)) { @@ -1404,16 +1404,16 @@ void WorldSession::HandleCharRenameCallBack(std::shared_ptr<CharacterRenameInfo> // Update name and at_login flag in the db CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_NAME_AT_LOGIN); - stmt->setString(0, renameInfo->Name); - stmt->setUInt16(1, atLoginFlags); - stmt->setUInt32(2, guidLow); + stmt->SetData(0, renameInfo->Name); + stmt->SetData(1, atLoginFlags); + stmt->SetData(2, guidLow); CharacterDatabase.Execute(stmt); // Removed declined name from db if (sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_DECLINED_NAME); - stmt->setUInt32(0, guidLow); + stmt->SetData(0, guidLow); CharacterDatabase.Execute(stmt); } @@ -1488,14 +1488,14 @@ void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recvData) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_DECLINED_NAME); - stmt->setUInt32(0, guid.GetCounter()); + stmt->SetData(0, guid.GetCounter()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_DECLINED_NAME); - stmt->setUInt32(0, guid.GetCounter()); + stmt->SetData(0, guid.GetCounter()); for (uint8 i = 0; i < 5; i++) - stmt->setString(i + 1, declinedname.name[i]); + stmt->SetData(i + 1, declinedname.name[i]); trans->Append(stmt); @@ -1633,7 +1633,7 @@ void WorldSession::HandleCharCustomize(WorldPacket& recvData) >> customizeInfo->Face; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_CUSTOMIZE_INFO); - stmt->setUInt32(0, customizeInfo->Guid.GetCounter()); + stmt->SetData(0, customizeInfo->Guid.GetCounter()); _queryProcessor.AddCallback(CharacterDatabase.AsyncQuery(stmt) .WithPreparedCallback(std::bind(&WorldSession::HandleCharCustomizeCallback, this, customizeInfo, std::placeholders::_1))); @@ -1656,11 +1656,11 @@ void WorldSession::HandleCharCustomizeCallback(std::shared_ptr<CharacterCustomiz } Field* fields = result->Fetch(); - std::string oldName = fields[0].GetString(); - //uint8 plrRace = fields[1].GetUInt8(); - //uint8 plrClass = fields[2].GetUInt8(); - //uint8 plrGender = fields[3].GetUInt8(); - uint32 atLoginFlags = fields[4].GetUInt16(); + std::string oldName = fields[0].Get<std::string>(); + //uint8 plrRace = fields[1].Get<uint8>(); + //uint8 plrClass = fields[2].Get<uint8>(); + //uint8 plrGender = fields[3].Get<uint8>(); + uint32 atLoginFlags = fields[4].Get<uint16>(); if (!(atLoginFlags & AT_LOGIN_CUSTOMIZE)) { @@ -1712,16 +1712,16 @@ void WorldSession::HandleCharCustomizeCallback(std::shared_ptr<CharacterCustomiz /// Name Change and update atLogin flags { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_NAME_AT_LOGIN); - stmt->setString(0, customizeInfo->Name); - stmt->setUInt16(1, atLoginFlags); - stmt->setUInt32(2, lowGuid); + stmt->SetData(0, customizeInfo->Name); + stmt->SetData(1, atLoginFlags); + stmt->SetData(2, lowGuid); trans->Append(stmt); if (sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_DECLINED_NAME); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); } @@ -1924,7 +1924,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData) factionChangeInfo->FactionChange = (recvData.GetOpcode() == CMSG_CHAR_FACTION_CHANGE); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_RACE_OR_FACTION_CHANGE_INFOS); - stmt->setUInt32(0, factionChangeInfo->Guid.GetCounter()); + stmt->SetData(0, factionChangeInfo->Guid.GetCounter()); _queryProcessor.AddCallback(CharacterDatabase.AsyncQuery(stmt) .WithPreparedCallback(std::bind(&WorldSession::HandleCharFactionOrRaceChangeCallback, this, factionChangeInfo, std::placeholders::_1))); @@ -1959,9 +1959,9 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact } Field* fields = result->Fetch(); - uint32 atLoginFlags = fields[0].GetUInt16(); - std::string knownTitlesStr = fields[1].GetString(); - uint32 money = fields[2].GetUInt32(); + uint32 atLoginFlags = fields[0].Get<uint16>(); + std::string knownTitlesStr = fields[1].Get<std::string>(); + uint32 money = fields[2].Get<uint32>(); uint32 usedLoginFlag = (factionChangeInfo->FactionChange ? AT_LOGIN_CHANGE_FACTION : AT_LOGIN_CHANGE_RACE); if (!(atLoginFlags & usedLoginFlag)) @@ -2102,13 +2102,13 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact CharacterDatabase.EscapeString(factionChangeInfo->Name); stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_NAME_AT_LOGIN); - stmt->setString(0, factionChangeInfo->Name); - stmt->setUInt16(1, uint16((atLoginFlags | AT_LOGIN_RESURRECT) & ~usedLoginFlag)); - stmt->setUInt32(2, lowGuid); + stmt->SetData(0, factionChangeInfo->Name); + stmt->SetData(1, uint16((atLoginFlags | AT_LOGIN_RESURRECT) & ~usedLoginFlag)); + stmt->SetData(2, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_DECLINED_NAME); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); } @@ -2118,8 +2118,8 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact // Race Change { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_RACE); - stmt->setUInt8(0, factionChangeInfo->Race); - stmt->setUInt32(1, lowGuid); + stmt->SetData(0, factionChangeInfo->Race); + stmt->SetData(1, lowGuid); trans->Append(stmt); } @@ -2134,18 +2134,18 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact // Switch Languages // delete all languages first stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SKILL_LANGUAGES); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); // Now add them back stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_SKILL_LANGUAGE); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); // Faction specific languages if (newTeam == TEAM_HORDE) - stmt->setUInt16(1, 109); + stmt->SetData(1, 109); else - stmt->setUInt16(1, 98); + stmt->SetData(1, 98); trans->Append(stmt); @@ -2153,33 +2153,33 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact if (factionChangeInfo->Race != RACE_ORC && factionChangeInfo->Race != RACE_HUMAN) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_SKILL_LANGUAGE); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); switch (factionChangeInfo->Race) { case RACE_DWARF: - stmt->setUInt16(1, 111); + stmt->SetData(1, 111); break; case RACE_DRAENEI: - stmt->setUInt16(1, 759); + stmt->SetData(1, 759); break; case RACE_GNOME: - stmt->setUInt16(1, 313); + stmt->SetData(1, 313); break; case RACE_NIGHTELF: - stmt->setUInt16(1, 113); + stmt->SetData(1, 113); break; case RACE_UNDEAD_PLAYER: - stmt->setUInt16(1, 673); + stmt->SetData(1, 673); break; case RACE_TAUREN: - stmt->setUInt16(1, 115); + stmt->SetData(1, 115); break; case RACE_TROLL: - stmt->setUInt16(1, 315); + stmt->SetData(1, 315); break; case RACE_BLOODELF: - stmt->setUInt16(1, 137); + stmt->SetData(1, 137); break; } @@ -2190,7 +2190,7 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact { // Delete all Flypaths stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TAXI_PATH); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); if (level > 7) @@ -2217,8 +2217,8 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact taximaskstream << '0'; stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TAXIMASK); - stmt->setString(0, taximaskstream.str()); - stmt->setUInt32(1, lowGuid); + stmt->SetData(0, taximaskstream.str()); + stmt->SetData(1, lowGuid); trans->Append(stmt); } @@ -2234,11 +2234,11 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact { // Delete Friend List stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SOCIAL_BY_GUID); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SOCIAL_BY_FRIEND); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); } @@ -2247,11 +2247,11 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact // Reset homebind and position stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_HOMEBIND); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PLAYER_HOMEBIND); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); WorldLocation loc; uint16 zoneId = 0; @@ -2267,11 +2267,11 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact zoneId = 1637; } - stmt->setUInt16(1, loc.GetMapId()); - stmt->setUInt16(2, zoneId); - stmt->setFloat(3, loc.GetPositionX()); - stmt->setFloat(4, loc.GetPositionY()); - stmt->setFloat(5, loc.GetPositionZ()); + stmt->SetData(1, loc.GetMapId()); + stmt->SetData(2, zoneId); + stmt->SetData(3, loc.GetPositionX()); + stmt->SetData(4, loc.GetPositionY()); + stmt->SetData(5, loc.GetPositionZ()); trans->Append(stmt); Player::SavePositionInDB(loc, zoneId, factionChangeInfo->Guid, trans); @@ -2280,14 +2280,14 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact for (auto const& [achiev_alliance, achiev_horde] : sObjectMgr->FactionChangeAchievements) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT_BY_ACHIEVEMENT); - stmt->setUInt16(0, uint16(newTeam == TEAM_ALLIANCE ? achiev_alliance : achiev_horde)); - stmt->setUInt32(1, lowGuid); + stmt->SetData(0, uint16(newTeam == TEAM_ALLIANCE ? achiev_alliance : achiev_horde)); + stmt->SetData(1, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_ACHIEVEMENT); - stmt->setUInt16(0, uint16(newTeam == TEAM_ALLIANCE ? achiev_alliance : achiev_horde)); - stmt->setUInt16(1, uint16(newTeam == TEAM_ALLIANCE ? achiev_horde : achiev_alliance)); - stmt->setUInt32(2, lowGuid); + stmt->SetData(0, uint16(newTeam == TEAM_ALLIANCE ? achiev_alliance : achiev_horde)); + stmt->SetData(1, uint16(newTeam == TEAM_ALLIANCE ? achiev_horde : achiev_alliance)); + stmt->SetData(2, lowGuid); trans->Append(stmt); } @@ -2301,35 +2301,35 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact continue; stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_INVENTORY_FACTION_CHANGE); - stmt->setUInt32(0, new_entry); - stmt->setUInt32(1, old_entry); - stmt->setUInt32(2, lowGuid); + stmt->SetData(0, new_entry); + stmt->SetData(1, old_entry); + stmt->SetData(2, lowGuid); trans->Append(stmt); } // Delete all current quests stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_QUESTSTATUS); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); // Quest conversion for (auto const& [quest_alliance, quest_horde] : sObjectMgr->FactionChangeQuests) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_QUESTSTATUS_REWARDED_BY_QUEST); - stmt->setUInt32(0, lowGuid); - stmt->setUInt32(1, (newTeam == TEAM_ALLIANCE ? quest_alliance : quest_horde)); + stmt->SetData(0, lowGuid); + stmt->SetData(1, (newTeam == TEAM_ALLIANCE ? quest_alliance : quest_horde)); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_QUESTSTATUS_REWARDED_FACTION_CHANGE); - stmt->setUInt32(0, (newTeam == TEAM_ALLIANCE ? quest_alliance : quest_horde)); - stmt->setUInt32(1, (newTeam == TEAM_ALLIANCE ? quest_horde : quest_alliance)); - stmt->setUInt32(2, lowGuid); + stmt->SetData(0, (newTeam == TEAM_ALLIANCE ? quest_alliance : quest_horde)); + stmt->SetData(1, (newTeam == TEAM_ALLIANCE ? quest_horde : quest_alliance)); + stmt->SetData(2, lowGuid); trans->Append(stmt); } // Mark all rewarded quests as "active" (will count for completed quests achievements) stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_QUESTSTATUS_REWARDED_ACTIVE); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); // Disable all old-faction specific quests @@ -2340,8 +2340,8 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact if (quest->GetAllowableRaces() && !(quest->GetAllowableRaces() & newRaceMask)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_QUESTSTATUS_REWARDED_ACTIVE_BY_QUEST); - stmt->setUInt32(0, quest->GetQuestId()); - stmt->setUInt32(1, lowGuid); + stmt->SetData(0, quest->GetQuestId()); + stmt->SetData(1, lowGuid); trans->Append(stmt); } } @@ -2350,14 +2350,14 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact for (auto const& [spell_alliance, spell_horde] : sObjectMgr->FactionChangeSpells) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_SPELL_BY_SPELL); - stmt->setUInt32(0, lowGuid); - stmt->setUInt32(1, (newTeam == TEAM_ALLIANCE ? spell_alliance : spell_horde)); + stmt->SetData(0, lowGuid); + stmt->SetData(1, (newTeam == TEAM_ALLIANCE ? spell_alliance : spell_horde)); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_SPELL_FACTION_CHANGE); - stmt->setUInt32(0, (newTeam == TEAM_ALLIANCE ? spell_alliance : spell_horde)); - stmt->setUInt32(1, (newTeam == TEAM_ALLIANCE ? spell_horde : spell_alliance)); - stmt->setUInt32(2, lowGuid); + stmt->SetData(0, (newTeam == TEAM_ALLIANCE ? spell_alliance : spell_horde)); + stmt->SetData(1, (newTeam == TEAM_ALLIANCE ? spell_horde : spell_alliance)); + stmt->SetData(2, lowGuid); trans->Append(stmt); } @@ -2369,15 +2369,15 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact // select old standing set in db stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_REP_BY_FACTION); - stmt->setUInt32(0, oldReputation); - stmt->setUInt32(1, lowGuid); + stmt->SetData(0, oldReputation); + stmt->SetData(1, lowGuid); PreparedQueryResult result = CharacterDatabase.Query(stmt); if (!result) continue; fields = result->Fetch(); - int32 oldDBRep = fields[0].GetInt32(); + int32 oldDBRep = fields[0].Get<int32>(); FactionEntry const* factionEntry = sFactionStore.LookupEntry(oldReputation); // old base reputation @@ -2391,15 +2391,15 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact int32 newDBRep = FinalRep - newBaseRep; stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_REP_BY_FACTION); - stmt->setUInt32(0, newReputation); - stmt->setUInt32(1, lowGuid); + stmt->SetData(0, newReputation); + stmt->SetData(1, lowGuid); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_REP_FACTION_CHANGE); - stmt->setUInt16(0, uint16(newReputation)); - stmt->setInt32(1, newDBRep); - stmt->setUInt16(2, uint16(oldReputation)); - stmt->setUInt32(3, lowGuid); + stmt->SetData(0, uint16(newReputation)); + stmt->SetData(1, newDBRep); + stmt->SetData(2, uint16(oldReputation)); + stmt->SetData(3, lowGuid); trans->Append(stmt); } @@ -2465,13 +2465,13 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact ss << mask << ' '; stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_TITLES_FACTION_CHANGE); - stmt->setString(0, ss.str().c_str()); - stmt->setUInt32(1, lowGuid); + stmt->SetData(0, ss.str().c_str()); + stmt->SetData(1, lowGuid); trans->Append(stmt); // unset any currently chosen title stmt = CharacterDatabase.GetPreparedStatement(CHAR_RES_CHAR_TITLES_FACTION_CHANGE); - stmt->setUInt32(0, lowGuid); + stmt->SetData(0, lowGuid); trans->Append(stmt); } } diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 86ee2f6b2a..e22d4f5b2d 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -889,9 +889,9 @@ void WorldSession::HandleBuybackItem(WorldPacket& recvData) if (sWorld->getBoolConfig(CONFIG_ITEMDELETE_VENDOR)) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_RECOVERY_ITEM); - stmt->setUInt32(0, _player->GetGUID().GetCounter()); - stmt->setUInt32(1, pItem->GetEntry()); - stmt->setUInt32(2, pItem->GetCount()); + stmt->SetData(0, _player->GetGUID().GetCounter()); + stmt->SetData(1, pItem->GetEntry()); + stmt->SetData(2, pItem->GetCount()); CharacterDatabase.Execute(stmt); } @@ -1299,10 +1299,10 @@ void WorldSession::HandleWrapItemOpcode(WorldPacket& recvData) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_GIFT); - stmt->setUInt32(0, item->GetOwnerGUID().GetCounter()); - stmt->setUInt32(1, item->GetGUID().GetCounter()); - stmt->setUInt32(2, item->GetEntry()); - stmt->setUInt32(3, item->GetUInt32Value(ITEM_FIELD_FLAGS)); + stmt->SetData(0, item->GetOwnerGUID().GetCounter()); + stmt->SetData(1, item->GetGUID().GetCounter()); + stmt->SetData(2, item->GetEntry()); + stmt->SetData(3, item->GetUInt32Value(ITEM_FIELD_FLAGS)); trans->Append(stmt); item->SetEntry(gift->GetEntry()); @@ -1636,9 +1636,9 @@ bool WorldSession::recoveryItem(Item* pItem) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_RECOVERY_ITEM); - stmt->setUInt32(0, pItem->GetOwnerGUID().GetCounter()); - stmt->setUInt32(1, pItem->GetTemplate()->ItemId); - stmt->setUInt32(2, pItem->GetCount()); + stmt->SetData(0, pItem->GetOwnerGUID().GetCounter()); + stmt->SetData(1, pItem->GetTemplate()->ItemId); + stmt->SetData(2, pItem->GetCount()); CharacterDatabase.Query(stmt); diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index 0e23427763..fd2f2a1619 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -313,8 +313,8 @@ void WorldSession::HandleSendMail(WorldPacket& recvData) if( money >= 10 * GOLD ) { CleanStringForMysqlQuery(subject); - CharacterDatabase.PExecute("INSERT INTO log_money VALUES(%u, %u, \"%s\", \"%s\", %u, \"%s\", %u, \"%s\", NOW(), %u)", - GetAccountId(), player->GetGUID().GetCounter(), player->GetName().c_str(), player->GetSession()->GetRemoteAddress().c_str(), rc_account, receiver.c_str(), money, subject.c_str(), 5); + CharacterDatabase.Execute("INSERT INTO log_money VALUES({}, {}, \"{}\", \"{}\", {}, \"{}\", {}, \"{}\", NOW(), {})", + GetAccountId(), player->GetGUID().GetCounter(), player->GetName(), player->GetSession()->GetRemoteAddress(), rc_account, receiver, money, subject, 5); } } @@ -412,11 +412,11 @@ void WorldSession::HandleMailReturnToSender(WorldPacket& recvData) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID); - stmt->setUInt32(0, mailId); + stmt->SetData(0, mailId); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_ITEM_BY_ID); - stmt->setUInt32(0, mailId); + stmt->SetData(0, mailId); trans->Append(stmt); player->RemoveMail(mailId); @@ -532,8 +532,8 @@ void WorldSession::HandleMailTakeItem(WorldPacket& recvData) } std::string subj = m->subject; CleanStringForMysqlQuery(subj); - CharacterDatabase.PExecute("INSERT INTO log_money VALUES(%u, %u, \"%s\", \"%s\", %u, \"%s\", %u, \"%s\", NOW(), %u)", - GetAccountId(), player->GetGUID().GetCounter(), player->GetName().c_str(), player->GetSession()->GetRemoteAddress().c_str(), sender_accId, senderName.c_str(), m->COD, subj.c_str(), 1); + CharacterDatabase.Execute("INSERT INTO log_money VALUES({}, {}, \"{}\", \"{}\", {}, \"{}\", {}, \"{}\", NOW(), {})", + GetAccountId(), player->GetGUID().GetCounter(), player->GetName(), player->GetSession()->GetRemoteAddress(), sender_accId, senderName, m->COD, subj, 1); } } diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index e7954a708f..a53fbdee5d 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -599,7 +599,7 @@ void WorldSession::HandleCharacterAuraFrozen(PreparedQueryResult result) do { Field* fields = result->Fetch(); - std::string player = fields[0].GetString(); + std::string player = fields[0].Get<std::string>(); handler.PSendSysMessage(LANG_COMMAND_FROZEN_PLAYERS, player.c_str()); } while (result->NextRow()); } @@ -623,8 +623,8 @@ void WorldSession::HandleBugOpcode(WorldPacket& recv_data) CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_BUG_REPORT); - stmt->setString(0, type); - stmt->setString(1, content); + stmt->SetData(0, type); + stmt->SetData(1, content); CharacterDatabase.Execute(stmt); } @@ -1121,7 +1121,7 @@ void WorldSession::HandleWhoisOpcode(WorldPacket& recv_data) LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_WHOIS); - stmt->setUInt32(0, accid); + stmt->SetData(0, accid); PreparedQueryResult result = LoginDatabase.Query(stmt); @@ -1132,13 +1132,13 @@ void WorldSession::HandleWhoisOpcode(WorldPacket& recv_data) } Field* fields = result->Fetch(); - std::string acc = fields[0].GetString(); + std::string acc = fields[0].Get<std::string>(); if (acc.empty()) acc = "Unknown"; - std::string email = fields[1].GetString(); + std::string email = fields[1].Get<std::string>(); if (email.empty()) email = "Unknown"; - std::string lastip = fields[2].GetString(); + std::string lastip = fields[2].Get<std::string>(); if (lastip.empty()) lastip = "Unknown"; diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp index c65b94a72f..c2f8bbb915 100644 --- a/src/server/game/Handlers/NPCHandler.cpp +++ b/src/server/game/Handlers/NPCHandler.cpp @@ -605,9 +605,9 @@ void WorldSession::HandleStablePet(WorldPacket& recvData) } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID); - stmt->setUInt8(0, PetSaveMode(PET_SAVE_FIRST_STABLE_SLOT + freeSlot)); - stmt->setUInt32(1, _player->GetGUID().GetCounter()); - stmt->setUInt32(2, petStable->UnslottedPets[0].PetNumber); + stmt->SetData(0, PetSaveMode(PET_SAVE_FIRST_STABLE_SLOT + freeSlot)); + stmt->SetData(1, _player->GetGUID().GetCounter()); + stmt->SetData(2, petStable->UnslottedPets[0].PetNumber); CharacterDatabase.Execute(stmt); // stable unsummoned pet @@ -691,9 +691,9 @@ void WorldSession::HandleUnstablePet(WorldPacket& recvData) } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID); - stmt->setUInt8(0, PetSaveMode(PET_SAVE_FIRST_STABLE_SLOT + std::distance(petStable->StabledPets.begin(), stabledPet))); - stmt->setUInt32(1, _player->GetGUID().GetCounter()); - stmt->setUInt32(2, petStable->UnslottedPets[0].PetNumber); + stmt->SetData(0, PetSaveMode(PET_SAVE_FIRST_STABLE_SLOT + std::distance(petStable->StabledPets.begin(), stabledPet))); + stmt->SetData(1, _player->GetGUID().GetCounter()); + stmt->SetData(2, petStable->UnslottedPets[0].PetNumber); CharacterDatabase.Execute(stmt); // move unsummoned pet into CurrentPet slot so that it gets moved into stable slot later @@ -716,9 +716,9 @@ void WorldSession::HandleUnstablePet(WorldPacket& recvData) // update current pet slot in db immediately to maintain slot consistency, dismissed pet was already saved CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID); - stmt->setUInt8(0, PET_SAVE_NOT_IN_SLOT); - stmt->setUInt32(1, _player->GetGUID().GetCounter()); - stmt->setUInt32(2, petnumber); + stmt->SetData(0, PET_SAVE_NOT_IN_SLOT); + stmt->SetData(1, _player->GetGUID().GetCounter()); + stmt->SetData(2, petnumber); CharacterDatabase.Execute(stmt); SendStableResult(STABLE_ERR_STABLE); @@ -727,9 +727,9 @@ void WorldSession::HandleUnstablePet(WorldPacket& recvData) { // update current pet slot in db immediately to maintain slot consistency, dismissed pet was already saved CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID); - stmt->setUInt8(0, PET_SAVE_AS_CURRENT); - stmt->setUInt32(1, _player->GetGUID().GetCounter()); - stmt->setUInt32(2, petnumber); + stmt->SetData(0, PET_SAVE_AS_CURRENT); + stmt->SetData(1, _player->GetGUID().GetCounter()); + stmt->SetData(2, petnumber); CharacterDatabase.Execute(stmt); SendStableResult(STABLE_SUCCESS_UNSTABLE); @@ -843,9 +843,9 @@ void WorldSession::HandleStableSwapPet(WorldPacket& recvData) } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID); - stmt->setUInt8(0, PetSaveMode(PET_SAVE_FIRST_STABLE_SLOT + std::distance(petStable->StabledPets.begin(), stabledPet))); - stmt->setUInt32(1, _player->GetGUID().GetCounter()); - stmt->setUInt32(2, petStable->UnslottedPets[0].PetNumber); + stmt->SetData(0, PetSaveMode(PET_SAVE_FIRST_STABLE_SLOT + std::distance(petStable->StabledPets.begin(), stabledPet))); + stmt->SetData(1, _player->GetGUID().GetCounter()); + stmt->SetData(2, petStable->UnslottedPets[0].PetNumber); CharacterDatabase.Execute(stmt); // move unsummoned pet into CurrentPet slot so that it gets moved into stable slot later @@ -870,18 +870,18 @@ void WorldSession::HandleStableSwapPet(WorldPacket& recvData) // update current pet slot in db immediately to maintain slot consistency, dismissed pet was already saved CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID); - stmt->setUInt8(0, PET_SAVE_NOT_IN_SLOT); - stmt->setUInt32(1, _player->GetGUID().GetCounter()); - stmt->setUInt32(2, petId); + stmt->SetData(0, PET_SAVE_NOT_IN_SLOT); + stmt->SetData(1, _player->GetGUID().GetCounter()); + stmt->SetData(2, petId); CharacterDatabase.Execute(stmt); } else { // update current pet slot in db immediately to maintain slot consistency, dismissed pet was already saved CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_SLOT_BY_ID); - stmt->setUInt8(0, PET_SAVE_AS_CURRENT); - stmt->setUInt32(1, _player->GetGUID().GetCounter()); - stmt->setUInt32(2, petId); + stmt->SetData(0, PET_SAVE_AS_CURRENT); + stmt->SetData(1, _player->GetGUID().GetCounter()); + stmt->SetData(2, petId); CharacterDatabase.Execute(stmt); SendStableResult(STABLE_SUCCESS_UNSTABLE); diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index af84f012c5..7cd4bf940e 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -903,23 +903,23 @@ void WorldSession::HandlePetRename(WorldPacket& recvData) if (sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED)) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_DECLINEDNAME); - stmt->setUInt32(0, pet->GetCharmInfo()->GetPetNumber()); + stmt->SetData(0, pet->GetCharmInfo()->GetPetNumber()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_CHAR_PET_DECLINEDNAME); - stmt->setUInt32(0, _player->GetGUID().GetCounter()); + stmt->SetData(0, _player->GetGUID().GetCounter()); for (uint8 i = 0; i < 5; i++) - stmt->setString(i + 1, declinedname.name[i]); + stmt->SetData(i + 1, declinedname.name[i]); trans->Append(stmt); } } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_NAME); - stmt->setString(0, name); - stmt->setUInt32(1, _player->GetGUID().GetCounter()); - stmt->setUInt32(2, pet->GetCharmInfo()->GetPetNumber()); + stmt->SetData(0, name); + stmt->SetData(1, _player->GetGUID().GetCounter()); + stmt->SetData(2, pet->GetCharmInfo()->GetPetNumber()); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); diff --git a/src/server/game/Handlers/PetitionsHandler.cpp b/src/server/game/Handlers/PetitionsHandler.cpp index 9826308db4..e93e920de9 100644 --- a/src/server/game/Handlers/PetitionsHandler.cpp +++ b/src/server/game/Handlers/PetitionsHandler.cpp @@ -202,8 +202,8 @@ void WorldSession::HandlePetitionBuyOpcode(WorldPacket& recvData) { LOG_DEBUG("network", "Invalid petition: {}", petition->petitionGuid.ToString()); - trans->PAppend("DELETE FROM petition WHERE petitionguid = %u", petition->petitionGuid.GetCounter()); - trans->PAppend("DELETE FROM petition_sign WHERE petitionguid = %u", petition->petitionGuid.GetCounter()); + trans->Append("DELETE FROM petition WHERE petitionguid = {}", petition->petitionGuid.GetCounter()); + trans->Append("DELETE FROM petition_sign WHERE petitionguid = {}", petition->petitionGuid.GetCounter()); // xinef: clear petition store sPetitionMgr->RemovePetition(petition->petitionGuid); @@ -212,10 +212,10 @@ void WorldSession::HandlePetitionBuyOpcode(WorldPacket& recvData) // xinef: petition pointer is invalid from now on CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PETITION); - stmt->setUInt32(0, _player->GetGUID().GetCounter()); - stmt->setUInt32(1, charter->GetGUID().GetCounter()); - stmt->setString(2, name); - stmt->setUInt8(3, uint8(type)); + stmt->SetData(0, _player->GetGUID().GetCounter()); + stmt->SetData(1, charter->GetGUID().GetCounter()); + stmt->SetData(2, name); + stmt->SetData(3, uint8(type)); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -373,8 +373,8 @@ void WorldSession::HandlePetitionRenameOpcode(WorldPacket& recvData) CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_PETITION_NAME); - stmt->setString(0, newName); - stmt->setUInt32(1, petitionGuid.GetCounter()); + stmt->SetData(0, newName); + stmt->SetData(1, petitionGuid.GetCounter()); CharacterDatabase.Execute(stmt); @@ -495,10 +495,10 @@ void WorldSession::HandlePetitionSignOpcode(WorldPacket& recvData) CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_PETITION_SIGNATURE); - stmt->setUInt32(0, petition->ownerGuid.GetCounter()); - stmt->setUInt32(1, petitionGuid.GetCounter()); - stmt->setUInt32(2, playerGuid.GetCounter()); - stmt->setUInt32(3, GetAccountId()); + stmt->SetData(0, petition->ownerGuid.GetCounter()); + stmt->SetData(1, petitionGuid.GetCounter()); + stmt->SetData(2, playerGuid.GetCounter()); + stmt->SetData(3, GetAccountId()); CharacterDatabase.Execute(stmt); @@ -787,11 +787,11 @@ void WorldSession::HandleTurnInPetitionOpcode(WorldPacket& recvData) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_BY_GUID); - stmt->setUInt32(0, petitionGuid.GetCounter()); + stmt->SetData(0, petitionGuid.GetCounter()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_SIGNATURE_BY_GUID); - stmt->setUInt32(0, petitionGuid.GetCounter()); + stmt->SetData(0, petitionGuid.GetCounter()); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 00c4dff448..3d85d67387 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -432,8 +432,8 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPacket& recvData) { // prepare Quest Tracker datas auto stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_QUEST_TRACK_ABANDON_TIME); - stmt->setUInt32(0, questId); - stmt->setUInt32(1, _player->GetGUID().GetCounter()); + stmt->SetData(0, questId); + stmt->SetData(1, _player->GetGUID().GetCounter()); // add to Quest Tracker CharacterDatabase.Execute(stmt); diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index ed3d433513..364b51d55c 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -236,7 +236,7 @@ void WorldSession::HandleOpenItemOpcode(WorldPacket& recvPacket) if (item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED))// wrapped? { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_GIFT_BY_ITEM); - stmt->setUInt32(0, item->GetGUID().GetCounter()); + stmt->SetData(0, item->GetGUID().GetCounter()); _queryProcessor.AddCallback(CharacterDatabase.AsyncQuery(stmt) .WithPreparedCallback(std::bind(&WorldSession::HandleOpenWrappedItemCallback, this, bagIndex, slot, item->GetGUID().GetCounter(), std::placeholders::_1))); } @@ -268,8 +268,8 @@ void WorldSession::HandleOpenWrappedItemCallback(uint8 bagIndex, uint8 slot, Obj CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); - uint32 flags = fields[1].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); + uint32 flags = fields[1].Get<uint32>(); item->SetGuidValue(ITEM_FIELD_GIFTCREATOR, ObjectGuid::Empty); item->SetEntry(entry); @@ -280,7 +280,7 @@ void WorldSession::HandleOpenWrappedItemCallback(uint8 bagIndex, uint8 slot, Obj GetPlayer()->SaveInventoryAndGoldToDB(trans); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GIFT); - stmt->setUInt32(0, item->GetGUID().GetCounter()); + stmt->SetData(0, item->GetGUID().GetCounter()); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); diff --git a/src/server/game/Handlers/TicketHandler.cpp b/src/server/game/Handlers/TicketHandler.cpp index acc3528c1e..2d2eb9e8c7 100644 --- a/src/server/game/Handlers/TicketHandler.cpp +++ b/src/server/game/Handlers/TicketHandler.cpp @@ -227,10 +227,10 @@ void WorldSession::HandleGMSurveySubmit(WorldPacket& recv_data) continue; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GM_SUBSURVEY); - stmt->setUInt32(0, nextSurveyID); - stmt->setUInt32(1, subSurveyId); - stmt->setUInt32(2, rank); - stmt->setString(3, comment); + stmt->SetData(0, nextSurveyID); + stmt->SetData(1, subSurveyId); + stmt->SetData(2, rank); + stmt->SetData(3, comment); trans->Append(stmt); } @@ -243,10 +243,10 @@ void WorldSession::HandleGMSurveySubmit(WorldPacket& recv_data) } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GM_SURVEY); - stmt->setUInt32(0, GetPlayer()->GetGUID().GetCounter()); - stmt->setUInt32(1, nextSurveyID); - stmt->setUInt32(2, mainSurvey); - stmt->setString(3, comment); + stmt->SetData(0, GetPlayer()->GetGUID().GetCounter()); + stmt->SetData(1, nextSurveyID); + stmt->SetData(2, mainSurvey); + stmt->SetData(3, comment); trans->Append(stmt); @@ -266,14 +266,14 @@ void WorldSession::HandleReportLag(WorldPacket& recv_data) recv_data >> z; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_LAG_REPORT); - stmt->setUInt32(0, GetPlayer()->GetGUID().GetCounter()); - stmt->setUInt8 (1, lagType); - stmt->setUInt16(2, mapId); - stmt->setFloat (3, x); - stmt->setFloat (4, y); - stmt->setFloat (5, z); - stmt->setUInt32(6, GetLatency()); - stmt->setUInt32(7, GameTime::GetGameTime().count()); + stmt->SetData(0, GetPlayer()->GetGUID().GetCounter()); + stmt->SetData (1, lagType); + stmt->SetData(2, mapId); + stmt->SetData (3, x); + stmt->SetData (4, y); + stmt->SetData (5, z); + stmt->SetData(6, GetLatency()); + stmt->SetData(7, GameTime::GetGameTime().count()); CharacterDatabase.Execute(stmt); } diff --git a/src/server/game/Handlers/TradeHandler.cpp b/src/server/game/Handlers/TradeHandler.cpp index 3e31583988..10e2474688 100644 --- a/src/server/game/Handlers/TradeHandler.cpp +++ b/src/server/game/Handlers/TradeHandler.cpp @@ -463,13 +463,13 @@ void WorldSession::HandleAcceptTradeOpcode(WorldPacket& /*recvPacket*/) if( my_trade->GetMoney() >= 10 * GOLD ) { - CharacterDatabase.PExecute("INSERT INTO log_money VALUES(%u, %u, \"%s\", \"%s\", %u, \"%s\", %u, \"goods\", NOW(), %u)", - GetAccountId(), _player->GetGUID().GetCounter(), _player->GetName().c_str(), GetRemoteAddress().c_str(), trader->GetSession()->GetAccountId(), trader->GetName().c_str(), my_trade->GetMoney(), 6); + CharacterDatabase.Execute("INSERT INTO log_money VALUES({}, {}, \"{}\", \"{}\", {}, \"{}\", {}, \"goods\", NOW(), {})", + GetAccountId(), _player->GetGUID().GetCounter(), _player->GetName(), GetRemoteAddress(), trader->GetSession()->GetAccountId(), trader->GetName(), my_trade->GetMoney(), 6); } if( his_trade->GetMoney() >= 10 * GOLD ) { - CharacterDatabase.PExecute("INSERT INTO log_money VALUES(%u, %u, \"%s\", \"%s\", %u, \"%s\", %u, \"goods\", NOW(), %u)", - trader->GetSession()->GetAccountId(), trader->GetGUID().GetCounter(), trader->GetName().c_str(), trader->GetSession()->GetRemoteAddress().c_str(), GetAccountId(), _player->GetName().c_str(), his_trade->GetMoney(), 6); + CharacterDatabase.Execute("INSERT INTO log_money VALUES({}, {}, \"{}\", \"{}\", {}, \"{}\", {}, \"goods\", NOW(), {})", + trader->GetSession()->GetAccountId(), trader->GetGUID().GetCounter(), trader->GetName(), trader->GetSession()->GetRemoteAddress(), GetAccountId(), _player->GetName(), his_trade->GetMoney(), 6); } // update money diff --git a/src/server/game/Instances/InstanceSaveMgr.cpp b/src/server/game/Instances/InstanceSaveMgr.cpp index 71a00a7e43..c1268a7f3f 100644 --- a/src/server/game/Instances/InstanceSaveMgr.cpp +++ b/src/server/game/Instances/InstanceSaveMgr.cpp @@ -130,7 +130,7 @@ bool InstanceSaveMgr::DeleteInstanceSaveIfNeeded(InstanceSave* save, bool skipMa // delete save from db: // character_instance is deleted when unbinding a certain player CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INSTANCE_BY_INSTANCE); - stmt->setUInt32(0, save->GetInstanceId()); + stmt->SetData(0, save->GetInstanceId()); CharacterDatabase.Execute(stmt); // clear respawn times (if map is loaded do it just to be sure, if already unloaded it won't do it by itself) @@ -176,12 +176,12 @@ void InstanceSave::InsertToDB() } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_INSTANCE_SAVE); - stmt->setUInt32(0, m_instanceid); - stmt->setUInt16(1, GetMapId()); - stmt->setUInt32(2, uint32(GetResetTimeForDB())); - stmt->setUInt8(3, uint8(GetDifficulty())); - stmt->setUInt32(4, completedEncounters); - stmt->setString(5, data); + stmt->SetData(0, m_instanceid); + stmt->SetData(1, GetMapId()); + stmt->SetData(2, uint32(GetResetTimeForDB())); + stmt->SetData(3, uint8(GetDifficulty())); + stmt->SetData(4, completedEncounters); + stmt->SetData(5, data); CharacterDatabase.Execute(stmt); sScriptMgr->OnInstanceSave(this); @@ -272,15 +272,15 @@ void InstanceSaveMgr::LoadResetTimes() do { Field* fields = result->Fetch(); - uint32 mapid = fields[0].GetUInt16(); - Difficulty difficulty = Difficulty(fields[1].GetUInt8()); - uint64 resettime = fields[2].GetUInt32(); + uint32 mapid = fields[0].Get<uint16>(); + Difficulty difficulty = Difficulty(fields[1].Get<uint8>()); + uint64 resettime = fields[2].Get<uint32>(); MapDifficulty const* mapDiff = GetMapDifficultyData(mapid, difficulty); if (!mapDiff) { LOG_ERROR("instance.save", "InstanceSaveMgr::LoadResetTimes: invalid mapid({})/difficulty({}) pair in instance_reset!", mapid, difficulty); - CharacterDatabase.DirectPExecute("DELETE FROM instance_reset WHERE mapid = '%u' AND difficulty = '%u'", mapid, difficulty); + CharacterDatabase.DirectExecute("DELETE FROM instance_reset WHERE mapid = '{}' AND difficulty = '{}'", mapid, difficulty); continue; } @@ -310,7 +310,7 @@ void InstanceSaveMgr::LoadResetTimes() // initialize the reset time t = today + period + diff; SetResetTimeFor(mapid, difficulty, t); - CharacterDatabase.DirectPExecute("INSERT INTO instance_reset VALUES ('%u', '%u', '%u')", mapid, difficulty, (uint32)t); + CharacterDatabase.DirectExecute("INSERT INTO instance_reset VALUES ('{}', '{}', '{}')", mapid, difficulty, (uint32)t); } if (t < now) @@ -319,7 +319,7 @@ void InstanceSaveMgr::LoadResetTimes() // calculate the next reset time t = (t * DAY) / DAY; t += ((today - t) / period + 1) * period + diff; - CharacterDatabase.DirectPExecute("UPDATE instance_reset SET resettime = '%u' WHERE mapid = '%u' AND difficulty = '%u'", (uint32)t, mapid, difficulty); + CharacterDatabase.DirectExecute("UPDATE instance_reset SET resettime = '{}' WHERE mapid = '{}' AND difficulty = '{}'", (uint32)t, mapid, difficulty); } SetExtendedResetTimeFor(mapid, difficulty, t); @@ -343,12 +343,12 @@ void InstanceSaveMgr::LoadInstanceSaves() { Field* fields = result->Fetch(); - uint32 instanceId = fields[0].GetUInt32(); - uint32 mapId = fields[1].GetUInt16(); - time_t resettime = time_t(fields[2].GetUInt32()); - uint8 difficulty = fields[3].GetUInt8(); - uint32 completedEncounters = fields[4].GetUInt32(); - std::string instanceData = fields[5].GetString(); + uint32 instanceId = fields[0].Get<uint32>(); + uint32 mapId = fields[1].Get<uint16>(); + time_t resettime = time_t(fields[2].Get<uint32>()); + uint8 difficulty = fields[3].Get<uint8>(); + uint32 completedEncounters = fields[4].Get<uint32>(); + std::string instanceData = fields[5].Get<std::string>(); // Mark instance id as being used sMapMgr->RegisterInstanceId(instanceId); @@ -376,10 +376,10 @@ void InstanceSaveMgr::LoadCharacterBinds() { Field* fields = result->Fetch(); - ObjectGuid guid = ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt32()); - uint32 instanceId = fields[1].GetUInt32(); - bool perm = fields[2].GetBool(); - bool extended = fields[3].GetBool(); + ObjectGuid guid = ObjectGuid::Create<HighGuid::Player>(fields[0].Get<uint32>()); + uint32 instanceId = fields[1].Get<uint32>(); + bool perm = fields[2].Get<bool>(); + bool extended = fields[3].Get<bool>(); if (InstanceSave* save = GetInstanceSave(instanceId)) { @@ -390,16 +390,16 @@ void InstanceSaveMgr::LoadCharacterBinds() if (bind.perm) // already loaded perm -> delete currently checked one from db { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INSTANCE_BY_INSTANCE_GUID); - stmt->setUInt32(0, guid.GetCounter()); - stmt->setUInt32(1, instanceId); + stmt->SetData(0, guid.GetCounter()); + stmt->SetData(1, instanceId); CharacterDatabase.Execute(stmt); continue; } else // override temp bind by newest one { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INSTANCE_BY_INSTANCE_GUID); - stmt->setUInt32(0, guid.GetCounter()); - stmt->setUInt32(1, bind.save->GetInstanceId()); + stmt->SetData(0, guid.GetCounter()); + stmt->SetData(1, bind.save->GetInstanceId()); CharacterDatabase.Execute(stmt); bind.save->RemovePlayer(guid, this); } @@ -483,10 +483,10 @@ void InstanceSaveMgr::_ResetSave(InstanceSaveHashMap::iterator& itr) { // delete character_instance per id, delete instance per id CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INSTANCE_BY_INSTANCE); - stmt->setUInt32(0, itr->second->GetInstanceId()); + stmt->SetData(0, itr->second->GetInstanceId()); CharacterDatabase.Execute(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INSTANCE_BY_INSTANCE); - stmt->setUInt32(0, itr->second->GetInstanceId()); + stmt->SetData(0, itr->second->GetInstanceId()); CharacterDatabase.Execute(stmt); // clear respawn times if the map is already unloaded and won't do it by itself @@ -501,10 +501,10 @@ void InstanceSaveMgr::_ResetSave(InstanceSaveHashMap::iterator& itr) // delete character_instance per id where extended = 0, transtaction with set extended = 0, transaction is used to avoid mysql thread races CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INSTANCE_BY_INSTANCE_NOT_EXTENDED); - stmt->setUInt32(0, itr->second->GetInstanceId()); + stmt->SetData(0, itr->second->GetInstanceId()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_INSTANCE_SET_NOT_EXTENDED); - stmt->setUInt32(0, itr->second->GetInstanceId()); + stmt->SetData(0, itr->second->GetInstanceId()); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -548,9 +548,9 @@ void InstanceSaveMgr::_ResetOrWarnAll(uint32 mapid, Difficulty difficulty, bool // update it in the DB CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GLOBAL_INSTANCE_RESETTIME); - stmt->setUInt32(0, next_reset); - stmt->setUInt16(1, uint16(mapid)); - stmt->setUInt8(2, uint8(difficulty)); + stmt->SetData(0, next_reset); + stmt->SetData(1, uint16(mapid)); + stmt->SetData(2, uint8(difficulty)); CharacterDatabase.Execute(stmt); // remove all binds to instances of the given map and delete from db (delete per instance id, no mass deletion!) @@ -604,10 +604,10 @@ InstancePlayerBind* InstanceSaveMgr::PlayerBindToInstance(ObjectGuid guid, Insta bind.extended = false; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_INSTANCE); - stmt->setUInt32(0, save->GetInstanceId()); - stmt->setBool(1, permanent); - stmt->setUInt32(2, guid.GetCounter()); - stmt->setUInt32(3, bind.save->GetInstanceId()); + stmt->SetData(0, save->GetInstanceId()); + stmt->SetData(1, permanent); + stmt->SetData(2, guid.GetCounter()); + stmt->SetData(3, bind.save->GetInstanceId()); CharacterDatabase.Execute(stmt); } } @@ -620,21 +620,21 @@ InstancePlayerBind* InstanceSaveMgr::PlayerBindToInstance(ObjectGuid guid, Insta /*CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); // ensure any for that map+difficulty is deleted! CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INSTANCE_BY_GUID_MAP_DIFF); // DELETE ci FROM character_instance ci JOIN instance i ON ci.instance = i.id WHERE ci.guid = ? AND i.map = ? AND i.difficulty = ? - stmt->setUInt32(0, guidLow); - stmt->setUInt16(1, uint16(save->GetMapId())); - stmt->setUInt8(2, uint8(save->GetDifficulty())); + stmt->SetData(0, guidLow); + stmt->SetData(1, uint16(save->GetMapId())); + stmt->SetData(2, uint8(save->GetDifficulty())); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_INSTANCE); - stmt->setUInt32(0, guidLow); - stmt->setUInt32(1, save->GetInstanceId()); - stmt->setBool(2, permanent); + stmt->SetData(0, guidLow); + stmt->SetData(1, save->GetInstanceId()); + stmt->SetData(2, permanent); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans);*/ CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_INSTANCE); - stmt->setUInt32(0, guid.GetCounter()); - stmt->setUInt32(1, save->GetInstanceId()); - stmt->setBool(2, permanent); + stmt->SetData(0, guid.GetCounter()); + stmt->SetData(1, save->GetInstanceId()); + stmt->SetData(2, permanent); CharacterDatabase.Execute(stmt); } @@ -670,8 +670,8 @@ void InstanceSaveMgr::PlayerUnbindInstance(ObjectGuid guid, uint32 mapid, Diffic if (deleteFromDB) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INSTANCE_BY_INSTANCE_GUID); - stmt->setUInt32(0, guid.GetCounter()); - stmt->setUInt32(1, itr->second.save->GetInstanceId()); + stmt->SetData(0, guid.GetCounter()); + stmt->SetData(1, itr->second.save->GetInstanceId()); CharacterDatabase.Execute(stmt); } diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 6a4af33d1a..034f528803 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -43,8 +43,8 @@ void InstanceScript::SaveToDB() save->SetInstanceData(data); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_INSTANCE_SAVE_DATA); - stmt->setString(0, data); - stmt->setUInt32(1, instance->GetInstanceId()); + stmt->SetData(0, data); + stmt->SetData(1, instance->GetInstanceId()); CharacterDatabase.Execute(stmt); } @@ -524,8 +524,8 @@ void InstanceScript::SetCompletedEncountersMask(uint32 newMask, bool save) iSave->SetCompletedEncounterMask(completedEncounters); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_INSTANCE_SAVE_ENCOUNTERMASK); - stmt->setUInt32(0, completedEncounters); - stmt->setUInt32(1, instance->GetInstanceId()); + stmt->SetData(0, completedEncounters); + stmt->SetData(1, instance->GetInstanceId()); CharacterDatabase.Execute(stmt); } } diff --git a/src/server/game/Loot/LootItemStorage.cpp b/src/server/game/Loot/LootItemStorage.cpp index 5473ef92c0..def74faff8 100644 --- a/src/server/game/Loot/LootItemStorage.cpp +++ b/src/server/game/Loot/LootItemStorage.cpp @@ -53,9 +53,9 @@ void LootItemStorage::LoadStorageFromDB() { Field* fields = result->Fetch(); - StoredLootItemList& itemList = lootItemStore[ObjectGuid::Create<HighGuid::Item>(fields[0].GetUInt32())]; - itemList.push_back(StoredLootItem(fields[1].GetUInt32(), fields[2].GetUInt32(), fields[3].GetUInt32(), fields[4].GetInt32(), fields[5].GetUInt32(), fields[6].GetBool(), - fields[7].GetBool(), fields[8].GetBool(), fields[9].GetBool(), fields[10].GetBool(), fields[11].GetBool(), fields[12].GetUInt32())); + StoredLootItemList& itemList = lootItemStore[ObjectGuid::Create<HighGuid::Item>(fields[0].Get<uint32>())]; + itemList.push_back(StoredLootItem(fields[1].Get<uint32>(), fields[2].Get<uint32>(), fields[3].Get<uint32>(), fields[4].Get<int32>(), fields[5].Get<uint32>(), fields[6].Get<bool>(), + fields[7].Get<bool>(), fields[8].Get<bool>(), fields[9].Get<bool>(), fields[10].Get<bool>(), fields[11].Get<bool>(), fields[12].Get<uint32>())); ++count; } while (result->NextRow()); @@ -69,10 +69,10 @@ void LootItemStorage::RemoveEntryFromDB(ObjectGuid containerGUID, uint32 itemid, CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEMCONTAINER_SINGLE_ITEM); - stmt->setUInt32(0, containerGUID.GetCounter()); - stmt->setUInt32(1, itemid); - stmt->setUInt32(2, count); - stmt->setUInt32(3, itemIndex); + stmt->SetData(0, containerGUID.GetCounter()); + stmt->SetData(1, itemid); + stmt->SetData(2, count); + stmt->SetData(3, itemIndex); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); @@ -98,19 +98,19 @@ void LootItemStorage::AddNewStoredLoot(Loot* loot, Player* /*player*/) uint8 index = 0; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_ITEMCONTAINER_SINGLE_ITEM); - stmt->setUInt32(index++, loot->containerGUID.GetCounter()); - stmt->setUInt32(index++, 0); - stmt->setUInt32(index++, 0); - stmt->setUInt32(index++, loot->gold); - stmt->setInt32(index++, 0); - stmt->setUInt32(index++, 0); - stmt->setBool(index++, false); - stmt->setBool(index++, false); - stmt->setBool(index++, false); - stmt->setBool(index++, false); - stmt->setBool(index++, false); - stmt->setBool(index++, false); - stmt->setUInt32(index++, 0); + stmt->SetData(index++, loot->containerGUID.GetCounter()); + stmt->SetData(index++, 0); + stmt->SetData(index++, 0); + stmt->SetData(index++, loot->gold); + stmt->SetData(index++, 0); + stmt->SetData(index++, 0); + stmt->SetData(index++, false); + stmt->SetData(index++, false); + stmt->SetData(index++, false); + stmt->SetData(index++, false); + stmt->SetData(index++, false); + stmt->SetData(index++, false); + stmt->SetData(index++, 0); trans->Append(stmt); } @@ -139,19 +139,19 @@ void LootItemStorage::AddNewStoredLoot(Loot* loot, Player* /*player*/) uint8 index = 0; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_ITEMCONTAINER_SINGLE_ITEM); - stmt->setUInt32(index++, loot->containerGUID.GetCounter()); - stmt->setUInt32(index++, li->itemid); - stmt->setUInt32(index++, li->itemIndex); - stmt->setUInt32(index++, li->count); - stmt->setInt32 (index++, li->randomPropertyId); - stmt->setUInt32(index++, li->randomSuffix); - stmt->setBool(index++, li->follow_loot_rules); - stmt->setBool(index++, li->freeforall); - stmt->setBool(index++, li->is_blocked); - stmt->setBool(index++, li->is_counted); - stmt->setBool(index++, li->is_underthreshold); - stmt->setBool(index++, li->needs_quest); - stmt->setUInt32(index++, conditionLootId); + stmt->SetData(index++, loot->containerGUID.GetCounter()); + stmt->SetData(index++, li->itemid); + stmt->SetData(index++, li->itemIndex); + stmt->SetData(index++, li->count); + stmt->SetData (index++, li->randomPropertyId); + stmt->SetData(index++, li->randomSuffix); + stmt->SetData(index++, li->follow_loot_rules); + stmt->SetData(index++, li->freeforall); + stmt->SetData(index++, li->is_blocked); + stmt->SetData(index++, li->is_counted); + stmt->SetData(index++, li->is_underthreshold); + stmt->SetData(index++, li->needs_quest); + stmt->SetData(index++, conditionLootId); trans->Append(stmt); } @@ -279,7 +279,7 @@ void LootItemStorage::RemoveStoredLoot(ObjectGuid containerGUID) CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEMCONTAINER_CONTAINER); - stmt->setUInt32(0, containerGUID.GetCounter()); + stmt->SetData(0, containerGUID.GetCounter()); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp index 4dd1207d13..90809919bf 100644 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -146,7 +146,7 @@ uint32 LootStore::LoadLootTable() Clear(); // 0 1 2 3 4 5 6 - QueryResult result = WorldDatabase.PQuery("SELECT Entry, Item, Reference, Chance, QuestRequired, LootMode, GroupId, MinCount, MaxCount FROM %s", GetName()); + QueryResult result = WorldDatabase.Query("SELECT Entry, Item, Reference, Chance, QuestRequired, LootMode, GroupId, MinCount, MaxCount FROM {}", GetName()); if (!result) return 0; @@ -157,15 +157,15 @@ uint32 LootStore::LoadLootTable() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); - uint32 item = fields[1].GetUInt32(); - int32 reference = fields[2].GetInt32(); - float chance = fields[3].GetFloat(); - bool needsquest = fields[4].GetBool(); - uint16 lootmode = fields[5].GetUInt16(); - uint8 groupid = fields[6].GetUInt8(); - int32 mincount = fields[7].GetUInt8(); - int32 maxcount = fields[8].GetUInt8(); + uint32 entry = fields[0].Get<uint32>(); + uint32 item = fields[1].Get<uint32>(); + int32 reference = fields[2].Get<int32>(); + float chance = fields[3].Get<float>(); + bool needsquest = fields[4].Get<bool>(); + uint16 lootmode = fields[5].Get<uint16>(); + uint8 groupid = fields[6].Get<uint8>(); + int32 mincount = fields[7].Get<uint8>(); + int32 maxcount = fields[8].Get<uint8>(); if (maxcount > std::numeric_limits<uint8>::max()) { diff --git a/src/server/game/Mails/Mail.cpp b/src/server/game/Mails/Mail.cpp index 23590a7b10..d8e0542935 100644 --- a/src/server/game/Mails/Mail.cpp +++ b/src/server/game/Mails/Mail.cpp @@ -139,7 +139,7 @@ void MailDraft::deleteIncludedItems(CharacterDatabaseTransaction trans, bool inD if (inDB) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE); - stmt->setUInt32(0, item->GetGUID().GetCounter()); + stmt->SetData(0, item->GetGUID().GetCounter()); trans->Append(stmt); } @@ -177,8 +177,8 @@ void MailDraft::SendReturnToSender(uint32 /*sender_acc*/, ObjectGuid::LowType se item->SaveToDB(trans); // item not in inventory and can be save standalone // owner in data will set at mail receive and item extracting CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ITEM_OWNER); - stmt->setUInt32(0, receiver_guid); - stmt->setUInt32(1, item->GetGUID().GetCounter()); + stmt->SetData(0, receiver_guid); + stmt->SetData(1, item->GetGUID().GetCounter()); trans->Append(stmt); } } @@ -234,30 +234,30 @@ void MailDraft::SendMailTo(CharacterDatabaseTransaction trans, MailReceiver cons // Add to DB uint8 index = 0; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_MAIL); - stmt->setUInt32( index, mailId); - stmt->setUInt8 (++index, uint8(sender.GetMailMessageType())); - stmt->setInt8 (++index, int8(sender.GetStationery())); - stmt->setUInt16(++index, GetMailTemplateId()); - stmt->setUInt32(++index, sender.GetSenderId()); - stmt->setUInt32(++index, receiver.GetPlayerGUIDLow()); - stmt->setString(++index, GetSubject()); - stmt->setString(++index, GetBody()); - stmt->setBool (++index, !m_items.empty()); - stmt->setUInt32(++index, uint32(expire_time)); - stmt->setUInt32(++index, uint32(deliver_time)); - stmt->setUInt32(++index, m_money); - stmt->setUInt32(++index, m_COD); - stmt->setUInt8 (++index, uint8(checked)); - stmt->setInt32(++index, auctionId); + stmt->SetData( index, mailId); + stmt->SetData (++index, uint8(sender.GetMailMessageType())); + stmt->SetData (++index, int8(sender.GetStationery())); + stmt->SetData(++index, GetMailTemplateId()); + stmt->SetData(++index, sender.GetSenderId()); + stmt->SetData(++index, receiver.GetPlayerGUIDLow()); + stmt->SetData(++index, GetSubject()); + stmt->SetData(++index, GetBody()); + stmt->SetData (++index, !m_items.empty()); + stmt->SetData(++index, uint32(expire_time)); + stmt->SetData(++index, uint32(deliver_time)); + stmt->SetData(++index, m_money); + stmt->SetData(++index, m_COD); + stmt->SetData (++index, uint8(checked)); + stmt->SetData(++index, auctionId); trans->Append(stmt); for (MailItemMap::const_iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter) { Item* pItem = mailItemIter->second; stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_MAIL_ITEM); - stmt->setUInt32(0, mailId); - stmt->setUInt32(1, pItem->GetGUID().GetCounter()); - stmt->setUInt32(2, receiver.GetPlayerGUIDLow()); + stmt->SetData(0, mailId); + stmt->SetData(1, pItem->GetGUID().GetCounter()); + stmt->SetData(2, receiver.GetPlayerGUIDLow()); trans->Append(stmt); } diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 84e99e0571..8d342d000f 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -3305,10 +3305,10 @@ void Map::SaveCreatureRespawnTime(ObjectGuid::LowType spawnId, time_t& respawnTi _creatureRespawnTimes[spawnId] = respawnTime; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_CREATURE_RESPAWN); - stmt->setUInt32(0, spawnId); - stmt->setUInt32(1, uint32(respawnTime)); - stmt->setUInt16(2, GetId()); - stmt->setUInt32(3, GetInstanceId()); + stmt->SetData(0, spawnId); + stmt->SetData(1, uint32(respawnTime)); + stmt->SetData(2, GetId()); + stmt->SetData(3, GetInstanceId()); CharacterDatabase.Execute(stmt); } @@ -3317,9 +3317,9 @@ void Map::RemoveCreatureRespawnTime(ObjectGuid::LowType spawnId) _creatureRespawnTimes.erase(spawnId); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CREATURE_RESPAWN); - stmt->setUInt32(0, spawnId); - stmt->setUInt16(1, GetId()); - stmt->setUInt32(2, GetInstanceId()); + stmt->SetData(0, spawnId); + stmt->SetData(1, GetId()); + stmt->SetData(2, GetInstanceId()); CharacterDatabase.Execute(stmt); } @@ -3339,10 +3339,10 @@ void Map::SaveGORespawnTime(ObjectGuid::LowType spawnId, time_t& respawnTime) _goRespawnTimes[spawnId] = respawnTime; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_GO_RESPAWN); - stmt->setUInt32(0, spawnId); - stmt->setUInt32(1, uint32(respawnTime)); - stmt->setUInt16(2, GetId()); - stmt->setUInt32(3, GetInstanceId()); + stmt->SetData(0, spawnId); + stmt->SetData(1, uint32(respawnTime)); + stmt->SetData(2, GetId()); + stmt->SetData(3, GetInstanceId()); CharacterDatabase.Execute(stmt); } @@ -3351,39 +3351,39 @@ void Map::RemoveGORespawnTime(ObjectGuid::LowType spawnId) _goRespawnTimes.erase(spawnId); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GO_RESPAWN); - stmt->setUInt32(0, spawnId); - stmt->setUInt16(1, GetId()); - stmt->setUInt32(2, GetInstanceId()); + stmt->SetData(0, spawnId); + stmt->SetData(1, GetId()); + stmt->SetData(2, GetInstanceId()); CharacterDatabase.Execute(stmt); } void Map::LoadRespawnTimes() { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CREATURE_RESPAWNS); - stmt->setUInt16(0, GetId()); - stmt->setUInt32(1, GetInstanceId()); + stmt->SetData(0, GetId()); + stmt->SetData(1, GetInstanceId()); if (PreparedQueryResult result = CharacterDatabase.Query(stmt)) { do { Field* fields = result->Fetch(); - ObjectGuid::LowType lowguid = fields[0].GetUInt32(); - uint32 respawnTime = fields[1].GetUInt32(); + ObjectGuid::LowType lowguid = fields[0].Get<uint32>(); + uint32 respawnTime = fields[1].Get<uint32>(); _creatureRespawnTimes[lowguid] = time_t(respawnTime); } while (result->NextRow()); } stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GO_RESPAWNS); - stmt->setUInt16(0, GetId()); - stmt->setUInt32(1, GetInstanceId()); + stmt->SetData(0, GetId()); + stmt->SetData(1, GetInstanceId()); if (PreparedQueryResult result = CharacterDatabase.Query(stmt)) { do { Field* fields = result->Fetch(); - ObjectGuid::LowType lowguid = fields[0].GetUInt32(); - uint32 respawnTime = fields[1].GetUInt32(); + ObjectGuid::LowType lowguid = fields[0].Get<uint32>(); + uint32 respawnTime = fields[1].Get<uint32>(); _goRespawnTimes[lowguid] = time_t(respawnTime); } while (result->NextRow()); @@ -3401,13 +3401,13 @@ void Map::DeleteRespawnTimes() void Map::DeleteRespawnTimesInDB(uint16 mapId, uint32 instanceId) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CREATURE_RESPAWN_BY_INSTANCE); - stmt->setUInt16(0, mapId); - stmt->setUInt32(1, instanceId); + stmt->SetData(0, mapId); + stmt->SetData(1, instanceId); CharacterDatabase.Execute(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GO_RESPAWN_BY_INSTANCE); - stmt->setUInt16(0, mapId); - stmt->setUInt32(1, instanceId); + stmt->SetData(0, mapId); + stmt->SetData(1, instanceId); CharacterDatabase.Execute(stmt); } @@ -3502,7 +3502,7 @@ void Map::LogEncounterFinished(EncounterCreditType type, uint32 creditEntry) playersInfo += buffer; } CleanStringForMysqlQuery(playersInfo); - CharacterDatabase.PExecute("INSERT INTO log_encounter VALUES(NOW(), %u, %u, %u, %u, '%s')", GetId(), (uint32)GetDifficulty(), type, creditEntry, playersInfo.c_str()); + CharacterDatabase.Execute("INSERT INTO log_encounter VALUES(NOW(), {}, {}, {}, {}, '{}')", GetId(), (uint32)GetDifficulty(), type, creditEntry, playersInfo); } bool Map::AllTransportsEmpty() const @@ -3950,8 +3950,8 @@ bool Map::CheckCollisionAndGetValidCoords(const WorldObject* source, float start void Map::LoadCorpseData() { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CORPSES); - stmt->setUInt32(0, GetId()); - stmt->setUInt32(1, GetInstanceId()); + stmt->SetData(0, GetId()); + stmt->SetData(1, GetInstanceId()); // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // SELECT posX, posY, posZ, orientation, mapId, displayId, itemCache, bytes1, bytes2, guildId, flags, dynFlags, time, corpseType, instanceId, phaseMask, guid FROM corpse WHERE mapId = ? AND instanceId = ? @@ -3962,8 +3962,8 @@ void Map::LoadCorpseData() do { Field* fields = result->Fetch(); - CorpseType type = CorpseType(fields[13].GetUInt8()); - uint32 guid = fields[16].GetUInt32(); + CorpseType type = CorpseType(fields[13].Get<uint8>()); + uint32 guid = fields[16].Get<uint32>(); if (type >= MAX_CORPSE_TYPE || type == CORPSE_BONES) { LOG_ERROR("maps", "Corpse (guid: {}) have wrong corpse type ({}), not loading.", guid, type); @@ -3988,7 +3988,7 @@ void Map::DeleteCorpseData() { // DELETE FROM corpse WHERE mapId = ? AND instanceId = ? CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CORPSES_FROM_MAP); - stmt->setUInt32(0, GetId()); - stmt->setUInt32(1, GetInstanceId()); + stmt->SetData(0, GetId()); + stmt->SetData(1, GetInstanceId()); CharacterDatabase.Execute(stmt); } diff --git a/src/server/game/Maps/MapMgr.cpp b/src/server/game/Maps/MapMgr.cpp index 8fbf6ed355..983de0a9a4 100644 --- a/src/server/game/Maps/MapMgr.cpp +++ b/src/server/game/Maps/MapMgr.cpp @@ -386,7 +386,7 @@ void MapMgr::InitInstanceIds() QueryResult result = CharacterDatabase.Query("SELECT MAX(id) FROM instance"); if (result) { - uint32 maxId = (*result)[0].GetUInt32(); + uint32 maxId = (*result)[0].Get<uint32>(); _instanceIds.resize(maxId + 1); } } diff --git a/src/server/game/Maps/TransportMgr.cpp b/src/server/game/Maps/TransportMgr.cpp index c79a2a1ad7..2d44fc23df 100644 --- a/src/server/game/Maps/TransportMgr.cpp +++ b/src/server/game/Maps/TransportMgr.cpp @@ -64,7 +64,7 @@ void TransportMgr::LoadTransportTemplates() do { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); GameObjectTemplate const* goInfo = sObjectMgr->GetGameObjectTemplate(entry); if (goInfo == nullptr) { @@ -435,8 +435,8 @@ void TransportMgr::SpawnContinentTransports() do { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); - uint32 entry = fields[1].GetUInt32(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); + uint32 entry = fields[1].Get<uint32>(); if (TransportTemplate const* tInfo = GetTransportTemplate(entry)) if (!tInfo->inInstance) @@ -459,9 +459,9 @@ void TransportMgr::SpawnContinentTransports() do { Field* fields = result2->Fetch(); - uint16 mapId = fields[0].GetUInt16(); - float x = fields[1].GetFloat(); - float y = fields[2].GetFloat(); + uint16 mapId = fields[0].Get<uint16>(); + float x = fields[1].Get<float>(); + float y = fields[2].Get<float>(); MapEntry const* mapEntry = sMapStore.LookupEntry(mapId); if (mapEntry && !mapEntry->Instanceable()) diff --git a/src/server/game/Misc/BanMgr.cpp b/src/server/game/Misc/BanMgr.cpp index 7ebb215279..e55d4e276d 100644 --- a/src/server/game/Misc/BanMgr.cpp +++ b/src/server/game/Misc/BanMgr.cpp @@ -49,23 +49,23 @@ BanReturn BanMgr::BanAccount(std::string const& AccountName, std::string const& // pussywizard: check existing ban to prevent overriding by a shorter one! >_> LoginDatabasePreparedStatement* stmtAccountBanned = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BANNED); - stmtAccountBanned->setUInt32(0, AccountID); + stmtAccountBanned->SetData(0, AccountID); PreparedQueryResult banresult = LoginDatabase.Query(stmtAccountBanned); - if (banresult && ((*banresult)[0].GetUInt32() == (*banresult)[1].GetUInt32() || ((*banresult)[1].GetUInt32() > GameTime::GetGameTime().count() + DurationSecs && DurationSecs))) + if (banresult && ((*banresult)[0].Get<uint32>() == (*banresult)[1].Get<uint32>() || ((*banresult)[1].Get<uint32>() > GameTime::GetGameTime().count() + DurationSecs && DurationSecs))) return BAN_LONGER_EXISTS; // make sure there is only one active ban LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_NOT_BANNED); - stmt->setUInt32(0, AccountID); + stmt->SetData(0, AccountID); trans->Append(stmt); // No SQL injection with prepared statements stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ACCOUNT_BANNED); - stmt->setUInt32(0, AccountID); - stmt->setUInt32(1, DurationSecs); - stmt->setString(2, Author); - stmt->setString(3, Reason); + stmt->SetData(0, AccountID); + stmt->SetData(1, DurationSecs); + stmt->SetData(2, Author); + stmt->SetData(3, Reason); trans->Append(stmt); if (WorldSession* session = sWorld->FindSession(AccountID)) @@ -111,23 +111,23 @@ BanReturn BanMgr::BanAccountByPlayerName(std::string const& CharacterName, std:: // pussywizard: check existing ban to prevent overriding by a shorter one! >_> LoginDatabasePreparedStatement* stmtAccountBanned = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BANNED); - stmtAccountBanned->setUInt32(0, AccountID); + stmtAccountBanned->SetData(0, AccountID); PreparedQueryResult banresult = LoginDatabase.Query(stmtAccountBanned); - if (banresult && ((*banresult)[0].GetUInt32() == (*banresult)[1].GetUInt32() || ((*banresult)[1].GetUInt32() > GameTime::GetGameTime().count() + DurationSecs && DurationSecs))) + if (banresult && ((*banresult)[0].Get<uint32>() == (*banresult)[1].Get<uint32>() || ((*banresult)[1].Get<uint32>() > GameTime::GetGameTime().count() + DurationSecs && DurationSecs))) return BAN_LONGER_EXISTS; // make sure there is only one active ban LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_NOT_BANNED); - stmt->setUInt32(0, AccountID); + stmt->SetData(0, AccountID); trans->Append(stmt); // No SQL injection with prepared statements stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ACCOUNT_BANNED); - stmt->setUInt32(0, AccountID); - stmt->setUInt32(1, DurationSecs); - stmt->setString(2, Author); - stmt->setString(3, Reason); + stmt->SetData(0, AccountID); + stmt->SetData(1, DurationSecs); + stmt->SetData(2, Author); + stmt->SetData(3, Reason); trans->Append(stmt); if (WorldSession* session = sWorld->FindSession(AccountID)) @@ -170,14 +170,14 @@ BanReturn BanMgr::BanIP(std::string const& IP, std::string const& Duration, std: // No SQL injection with prepared statements LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BY_IP); - stmt->setString(0, IP); + stmt->SetData(0, IP); PreparedQueryResult resultAccounts = LoginDatabase.Query(stmt); stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_IP_BANNED); - stmt->setString(0, IP); - stmt->setUInt32(1, DurationSecs); - stmt->setString(2, Author); - stmt->setString(3, Reason); + stmt->SetData(0, IP); + stmt->SetData(1, DurationSecs); + stmt->SetData(2, Author); + stmt->SetData(3, Reason); LoginDatabase.Execute(stmt); if (sWorld->getBoolConfig(CONFIG_SHOW_BAN_IN_WORLD)) @@ -202,7 +202,7 @@ BanReturn BanMgr::BanIP(std::string const& IP, std::string const& Duration, std: do { Field* fields = resultAccounts->Fetch(); - uint32 AccountID = fields[0].GetUInt32(); + uint32 AccountID = fields[0].Get<uint32>(); if (WorldSession* session = sWorld->FindSession(AccountID)) if (session->GetPlayerName() != Author) @@ -237,14 +237,14 @@ BanReturn BanMgr::BanCharacter(std::string const& CharacterName, std::string con // make sure there is only one active ban CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_BAN); - stmt->setUInt32(0, TargetGUID.GetCounter()); + stmt->SetData(0, TargetGUID.GetCounter()); CharacterDatabase.Execute(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_BAN); - stmt->setUInt32(0, TargetGUID.GetCounter()); - stmt->setUInt32(1, DurationSecs); - stmt->setString(2, Author); - stmt->setString(3, Reason); + stmt->SetData(0, TargetGUID.GetCounter()); + stmt->SetData(1, DurationSecs); + stmt->SetData(2, Author); + stmt->SetData(3, Reason); CharacterDatabase.Execute(stmt); if (target) @@ -275,7 +275,7 @@ bool BanMgr::RemoveBanAccount(std::string const& AccountName) // NO SQL injection as account is uint32 LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_NOT_BANNED); - stmt->setUInt32(0, AccountID); + stmt->SetData(0, AccountID); LoginDatabase.Execute(stmt); return true; @@ -290,7 +290,7 @@ bool BanMgr::RemoveBanAccountByPlayerName(std::string const& CharacterName) // NO SQL injection as account is uint32 LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_NOT_BANNED); - stmt->setUInt32(0, AccountID); + stmt->SetData(0, AccountID); LoginDatabase.Execute(stmt); return true; @@ -300,7 +300,7 @@ bool BanMgr::RemoveBanAccountByPlayerName(std::string const& CharacterName) bool BanMgr::RemoveBanIP(std::string const& IP) { LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_IP_NOT_BANNED); - stmt->setString(0, IP); + stmt->SetData(0, IP); LoginDatabase.Execute(stmt); return true; @@ -322,7 +322,7 @@ bool BanMgr::RemoveBanCharacter(std::string const& CharacterName) return false; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_BAN); - stmt->setUInt32(0, guid.GetCounter()); + stmt->SetData(0, guid.GetCounter()); CharacterDatabase.Execute(stmt); return true; } diff --git a/src/server/game/Misc/GameGraveyard.cpp b/src/server/game/Misc/GameGraveyard.cpp index 84dc27eac1..4542e9077b 100644 --- a/src/server/game/Misc/GameGraveyard.cpp +++ b/src/server/game/Misc/GameGraveyard.cpp @@ -46,15 +46,15 @@ void Graveyard::LoadGraveyardFromDB() do { Field* fields = result->Fetch(); - uint32 ID = fields[0].GetUInt32(); + uint32 ID = fields[0].Get<uint32>(); GraveyardStruct Graveyard; - Graveyard.Map = fields[1].GetUInt32(); - Graveyard.x = fields[2].GetFloat(); - Graveyard.y = fields[3].GetFloat(); - Graveyard.z = fields[4].GetFloat(); - Graveyard.name = fields[5].GetString(); + Graveyard.Map = fields[1].Get<uint32>(); + Graveyard.x = fields[2].Get<float>(); + Graveyard.y = fields[3].Get<float>(); + Graveyard.z = fields[4].Get<float>(); + Graveyard.name = fields[5].Get<std::string>(); if (!Utf8toWStr(Graveyard.name, Graveyard.wnameLow)) { @@ -291,10 +291,10 @@ bool Graveyard::AddGraveyardLink(uint32 id, uint32 zoneId, TeamId teamId, bool p { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_GRAVEYARD_ZONE); - stmt->setUInt32(0, id); - stmt->setUInt32(1, zoneId); + stmt->SetData(0, id); + stmt->SetData(1, zoneId); // Xinef: DB Data compatibility... - stmt->setUInt16(2, uint16(teamId == TEAM_NEUTRAL ? 0 : (teamId == TEAM_ALLIANCE ? ALLIANCE : HORDE))); + stmt->SetData(2, uint16(teamId == TEAM_NEUTRAL ? 0 : (teamId == TEAM_ALLIANCE ? ALLIANCE : HORDE))); WorldDatabase.Execute(stmt); } @@ -342,10 +342,10 @@ void Graveyard::RemoveGraveyardLink(uint32 id, uint32 zoneId, TeamId teamId, boo { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_GRAVEYARD_ZONE); - stmt->setUInt32(0, id); - stmt->setUInt32(1, zoneId); + stmt->SetData(0, id); + stmt->SetData(1, zoneId); // Xinef: DB Data compatibility... - stmt->setUInt16(2, uint16(teamId == TEAM_NEUTRAL ? 0 : (teamId == TEAM_ALLIANCE ? ALLIANCE : HORDE))); + stmt->SetData(2, uint16(teamId == TEAM_NEUTRAL ? 0 : (teamId == TEAM_ALLIANCE ? ALLIANCE : HORDE))); WorldDatabase.Execute(stmt); } @@ -375,9 +375,9 @@ void Graveyard::LoadGraveyardZones() Field* fields = result->Fetch(); - uint32 safeLocId = fields[0].GetUInt32(); - uint32 zoneId = fields[1].GetUInt32(); - uint32 team = fields[2].GetUInt16(); + uint32 safeLocId = fields[0].Get<uint32>(); + uint32 zoneId = fields[1].Get<uint32>(); + uint32 team = fields[2].Get<uint16>(); TeamId teamId = team == 0 ? TEAM_NEUTRAL : (team == ALLIANCE ? TEAM_ALLIANCE : TEAM_HORDE); GraveyardStruct const* entry = sGraveyard->GetGraveyard(safeLocId); diff --git a/src/server/game/Movement/Waypoints/WaypointMgr.cpp b/src/server/game/Movement/Waypoints/WaypointMgr.cpp index e389d65aaf..9fda921096 100644 --- a/src/server/game/Movement/Waypoints/WaypointMgr.cpp +++ b/src/server/game/Movement/Waypoints/WaypointMgr.cpp @@ -64,23 +64,23 @@ void WaypointMgr::Load() Field* fields = result->Fetch(); WaypointData* wp = new WaypointData(); - uint32 pathId = fields[0].GetUInt32(); + uint32 pathId = fields[0].Get<uint32>(); WaypointPath& path = _waypointStore[pathId]; - float x = fields[2].GetFloat(); - float y = fields[3].GetFloat(); - float z = fields[4].GetFloat(); - float o = fields[5].GetFloat(); + float x = fields[2].Get<float>(); + float y = fields[3].Get<float>(); + float z = fields[4].Get<float>(); + float o = fields[5].Get<float>(); Acore::NormalizeMapCoord(x); Acore::NormalizeMapCoord(y); - wp->id = fields[1].GetUInt32(); + wp->id = fields[1].Get<uint32>(); wp->x = x; wp->y = y; wp->z = z; wp->orientation = o; - wp->move_type = fields[6].GetUInt32(); + wp->move_type = fields[6].Get<uint32>(); if (wp->move_type >= WAYPOINT_MOVE_TYPE_MAX) { @@ -89,9 +89,9 @@ void WaypointMgr::Load() continue; } - wp->delay = fields[7].GetUInt32(); - wp->event_id = fields[8].GetUInt32(); - wp->event_chance = fields[9].GetInt16(); + wp->delay = fields[7].Get<uint32>(); + wp->event_id = fields[8].Get<uint32>(); + wp->event_chance = fields[9].Get<int16>(); path.push_back(wp); ++count; @@ -114,7 +114,7 @@ void WaypointMgr::ReloadPath(uint32 id) WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_WAYPOINT_DATA_BY_ID); - stmt->setUInt32(0, id); + stmt->SetData(0, id); PreparedQueryResult result = WorldDatabase.Query(stmt); @@ -128,20 +128,20 @@ void WaypointMgr::ReloadPath(uint32 id) Field* fields = result->Fetch(); WaypointData* wp = new WaypointData(); - float x = fields[1].GetFloat(); - float y = fields[2].GetFloat(); - float z = fields[3].GetFloat(); - float o = fields[4].GetFloat(); + float x = fields[1].Get<float>(); + float y = fields[2].Get<float>(); + float z = fields[3].Get<float>(); + float o = fields[4].Get<float>(); Acore::NormalizeMapCoord(x); Acore::NormalizeMapCoord(y); - wp->id = fields[0].GetUInt32(); + wp->id = fields[0].Get<uint32>(); wp->x = x; wp->y = y; wp->z = z; wp->orientation = o; - wp->move_type = fields[5].GetUInt32(); + wp->move_type = fields[5].Get<uint32>(); if (wp->move_type >= WAYPOINT_MOVE_TYPE_MAX) { @@ -150,9 +150,9 @@ void WaypointMgr::ReloadPath(uint32 id) continue; } - wp->delay = fields[6].GetUInt32(); - wp->event_id = fields[7].GetUInt32(); - wp->event_chance = fields[8].GetUInt8(); + wp->delay = fields[6].Get<uint32>(); + wp->event_id = fields[7].Get<uint32>(); + wp->event_chance = fields[8].Get<uint8>(); path.push_back(wp); } while (result->NextRow()); diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.cpp b/src/server/game/OutdoorPvP/OutdoorPvP.cpp index 34a8ca417f..ff3a2b67ac 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvP.cpp +++ b/src/server/game/OutdoorPvP/OutdoorPvP.cpp @@ -164,9 +164,9 @@ bool OPvPCapturePoint::DelCreature(uint32 type) // map->Remove(cr, false); // delete respawn time for this creature CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CREATURE_RESPAWN); - stmt->setUInt32(0, spawnId); - stmt->setUInt16(1, m_PvP->GetMap()->GetId()); - stmt->setUInt32(2, 0); // instance id, always 0 for world maps + stmt->SetData(0, spawnId); + stmt->SetData(1, m_PvP->GetMap()->GetId()); + stmt->SetData(2, 0); // instance id, always 0 for world maps CharacterDatabase.Execute(stmt); sObjectMgr->DeleteCreatureData(spawnId); diff --git a/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp b/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp index 8a58179c67..da080b7093 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp +++ b/src/server/game/OutdoorPvP/OutdoorPvPMgr.cpp @@ -64,7 +64,7 @@ void OutdoorPvPMgr::InitOutdoorPvP() { Field* fields = result->Fetch(); - typeId = fields[0].GetUInt8(); + typeId = fields[0].Get<uint8>(); if (DisableMgr::IsDisabledFor(DISABLE_TYPE_OUTDOORPVP, typeId, nullptr)) continue; @@ -78,7 +78,7 @@ void OutdoorPvPMgr::InitOutdoorPvP() OutdoorPvPData* data = new OutdoorPvPData(); OutdoorPvPTypes realTypeId = OutdoorPvPTypes(typeId); data->TypeId = realTypeId; - data->ScriptId = sObjectMgr->GetScriptId(fields[1].GetCString()); + data->ScriptId = sObjectMgr->GetScriptId(fields[1].Get<std::string>()); m_OutdoorPvPDatas[realTypeId] = data; ++count; diff --git a/src/server/game/Petitions/PetitionMgr.cpp b/src/server/game/Petitions/PetitionMgr.cpp index b70695fc11..c2b7fc30d2 100644 --- a/src/server/game/Petitions/PetitionMgr.cpp +++ b/src/server/game/Petitions/PetitionMgr.cpp @@ -54,7 +54,7 @@ void PetitionMgr::LoadPetitions() do { Field* fields = result->Fetch(); - AddPetition(ObjectGuid::Create<HighGuid::Item>(fields[1].GetUInt32()), ObjectGuid::Create<HighGuid::Player>(fields[0].GetUInt32()), fields[2].GetString(), fields[3].GetUInt8()); + AddPetition(ObjectGuid::Create<HighGuid::Item>(fields[1].Get<uint32>()), ObjectGuid::Create<HighGuid::Player>(fields[0].Get<uint32>()), fields[2].Get<std::string>(), fields[3].Get<uint8>()); ++count; } while (result->NextRow()); @@ -79,7 +79,7 @@ void PetitionMgr::LoadSignatures() do { Field* fields = result->Fetch(); - AddSignature(ObjectGuid::Create<HighGuid::Item>(fields[0].GetUInt32()), fields[2].GetUInt32(), ObjectGuid::Create<HighGuid::Player>(fields[1].GetUInt32())); + AddSignature(ObjectGuid::Create<HighGuid::Item>(fields[0].Get<uint32>()), fields[2].Get<uint32>(), ObjectGuid::Create<HighGuid::Player>(fields[1].Get<uint32>())); ++count; } while (result->NextRow()); diff --git a/src/server/game/Pools/PoolMgr.cpp b/src/server/game/Pools/PoolMgr.cpp index d06ca85ae9..84d3c55e53 100644 --- a/src/server/game/Pools/PoolMgr.cpp +++ b/src/server/game/Pools/PoolMgr.cpp @@ -463,7 +463,7 @@ void PoolGroup<Quest>::SpawnObject(ActivePoolData& spawns, uint32 limit, uint32 { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_POOL_QUEST_SAVE); - stmt->setUInt32(0, poolId); + stmt->SetData(0, poolId); PreparedQueryResult result = CharacterDatabase.Query(stmt); @@ -471,7 +471,7 @@ void PoolGroup<Quest>::SpawnObject(ActivePoolData& spawns, uint32 limit, uint32 { do { - uint32 questId = result->Fetch()[0].GetUInt32(); + uint32 questId = result->Fetch()[0].Get<uint32>(); spawns.ActivateObject<Quest>(questId, poolId); PoolObject tempObj(questId, 0.0f); Spawn1Object(&tempObj); @@ -591,10 +591,10 @@ void PoolMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint32 pool_id = fields[0].GetUInt32(); + uint32 pool_id = fields[0].Get<uint32>(); PoolTemplateData& pPoolTemplate = mPoolTemplate[pool_id]; - pPoolTemplate.MaxLimit = fields[1].GetUInt32(); + pPoolTemplate.MaxLimit = fields[1].Get<uint32>(); ++count; } while (result->NextRow()); @@ -624,9 +624,9 @@ void PoolMgr::LoadFromDB() { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); - uint32 pool_id = fields[1].GetUInt32(); - float chance = fields[2].GetFloat(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); + uint32 pool_id = fields[1].Get<uint32>(); + float chance = fields[2].Get<float>(); CreatureData const* data = sObjectMgr->GetCreatureData(guid); if (!data) @@ -682,9 +682,9 @@ void PoolMgr::LoadFromDB() { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); - uint32 pool_id = fields[1].GetUInt32(); - float chance = fields[2].GetFloat(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); + uint32 pool_id = fields[1].Get<uint32>(); + float chance = fields[2].Get<float>(); GameObjectData const* data = sObjectMgr->GetGOData(guid); if (!data) @@ -752,9 +752,9 @@ void PoolMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint32 child_pool_id = fields[0].GetUInt32(); - uint32 mother_pool_id = fields[1].GetUInt32(); - float chance = fields[2].GetFloat(); + uint32 child_pool_id = fields[0].Get<uint32>(); + uint32 mother_pool_id = fields[1].Get<uint32>(); + float chance = fields[2].Get<float>(); { auto it = mPoolTemplate.find(mother_pool_id); @@ -853,8 +853,8 @@ void PoolMgr::LoadFromDB() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); - uint32 pool_id = fields[1].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); + uint32 pool_id = fields[1].Get<uint32>(); Quest const* quest = sObjectMgr->GetQuestTemplate(entry); if (!quest) @@ -933,15 +933,15 @@ void PoolMgr::LoadFromDB() do { Field* fields = result->Fetch(); - uint32 pool_entry = fields[0].GetUInt32(); - uint32 pool_pool_id = fields[1].GetUInt32(); + uint32 pool_entry = fields[0].Get<uint32>(); + uint32 pool_pool_id = fields[1].Get<uint32>(); if (!CheckPool(pool_entry)) { if (pool_pool_id) // The pool is a child pool in pool_pool table. Ideally we should remove it from the pool handler to ensure it never gets spawned, // however that could recursively invalidate entire chain of mother pools. It can be done in the future but for now we'll do nothing. - LOG_ERROR("sql.sql", "Pool Id {} has no equal chance pooled entites defined and explicit chance sum is not 100. This broken pool is a child pool of Id {} and cannot be safely removed.", pool_entry, fields[2].GetUInt32()); + LOG_ERROR("sql.sql", "Pool Id {} has no equal chance pooled entites defined and explicit chance sum is not 100. This broken pool is a child pool of Id {} and cannot be safely removed.", pool_entry, fields[2].Get<uint32>()); else LOG_ERROR("sql.sql", "Pool Id {} has no equal chance pooled entites defined and explicit chance sum is not 100. The pool will not be spawned.", pool_entry); continue; @@ -985,7 +985,7 @@ void PoolMgr::SaveQuestsToDB(bool daily, bool weekly, bool other) continue; } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_POOL_SAVE); - stmt->setUInt32(0, itr->second.GetPoolId()); + stmt->SetData(0, itr->second.GetPoolId()); trans->Append(stmt); deletedPools.insert(itr->second.GetPoolId()); } @@ -995,8 +995,8 @@ void PoolMgr::SaveQuestsToDB(bool daily, bool weekly, bool other) if (IsSpawnedObject<Quest>(itr->first)) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_QUEST_POOL_SAVE); - stmt->setUInt32(0, itr->second); - stmt->setUInt32(1, itr->first); + stmt->SetData(0, itr->second); + stmt->SetData(1, itr->first); trans->Append(stmt); } diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index aa9611d477..e28a7c4377 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -30,39 +30,39 @@ Quest::Quest(Field* questRecord) _rewItemsCount = 0; _rewChoiceItemsCount = 0; - Id = questRecord[0].GetUInt32(); - Method = questRecord[1].GetUInt8(); - Level = questRecord[2].GetInt16(); - MinLevel = questRecord[3].GetUInt8(); - ZoneOrSort = questRecord[4].GetInt16(); - Type = questRecord[5].GetUInt16(); - SuggestedPlayers = questRecord[6].GetUInt8(); - TimeAllowed = questRecord[7].GetUInt32(); - AllowableRaces = questRecord[8].GetUInt16(); - RequiredFactionId1 = questRecord[9].GetUInt16(); - RequiredFactionId2 = questRecord[10].GetUInt16(); - RequiredFactionValue1 = questRecord[11].GetInt32(); - RequiredFactionValue2 = questRecord[12].GetInt32(); - RewardNextQuest = questRecord[13].GetUInt32(); - RewardXPDifficulty = questRecord[14].GetUInt8(); - RewardMoney = questRecord[15].GetInt32(); - RewardMoneyDifficulty = questRecord[16].GetUInt32(); - RewardBonusMoney = questRecord[17].GetUInt32(); - RewardDisplaySpell = questRecord[18].GetUInt32(); - RewardSpell = questRecord[19].GetInt32(); - RewardHonor = questRecord[20].GetUInt32(); - RewardKillHonor = questRecord[21].GetFloat(); - StartItem = questRecord[22].GetUInt32(); - Flags = questRecord[23].GetUInt32(); - RewardTitleId = questRecord[24].GetUInt8(); - RequiredPlayerKills = questRecord[25].GetUInt8(); - RewardTalents = questRecord[26].GetUInt8(); - RewardArenaPoints = questRecord[27].GetUInt16(); + Id = questRecord[0].Get<uint32>(); + Method = questRecord[1].Get<uint8>(); + Level = questRecord[2].Get<int16>(); + MinLevel = questRecord[3].Get<uint8>(); + ZoneOrSort = questRecord[4].Get<int16>(); + Type = questRecord[5].Get<uint16>(); + SuggestedPlayers = questRecord[6].Get<uint8>(); + TimeAllowed = questRecord[7].Get<uint32>(); + AllowableRaces = questRecord[8].Get<uint16>(); + RequiredFactionId1 = questRecord[9].Get<uint16>(); + RequiredFactionId2 = questRecord[10].Get<uint16>(); + RequiredFactionValue1 = questRecord[11].Get<int32>(); + RequiredFactionValue2 = questRecord[12].Get<int32>(); + RewardNextQuest = questRecord[13].Get<uint32>(); + RewardXPDifficulty = questRecord[14].Get<uint8>(); + RewardMoney = questRecord[15].Get<int32>(); + RewardMoneyDifficulty = questRecord[16].Get<uint32>(); + RewardBonusMoney = questRecord[17].Get<uint32>(); + RewardDisplaySpell = questRecord[18].Get<uint32>(); + RewardSpell = questRecord[19].Get<int32>(); + RewardHonor = questRecord[20].Get<uint32>(); + RewardKillHonor = questRecord[21].Get<float>(); + StartItem = questRecord[22].Get<uint32>(); + Flags = questRecord[23].Get<uint32>(); + RewardTitleId = questRecord[24].Get<uint8>(); + RequiredPlayerKills = questRecord[25].Get<uint8>(); + RewardTalents = questRecord[26].Get<uint8>(); + RewardArenaPoints = questRecord[27].Get<uint16>(); for (int i = 0; i < QUEST_REWARDS_COUNT; ++i) { - RewardItemId[i] = questRecord[28 + i * 2].GetUInt32(); - RewardItemIdCount[i] = questRecord[29 + i * 2].GetUInt16(); + RewardItemId[i] = questRecord[28 + i * 2].Get<uint32>(); + RewardItemIdCount[i] = questRecord[29 + i * 2].Get<uint16>(); if (RewardItemId[i]) ++_rewItemsCount; @@ -70,8 +70,8 @@ Quest::Quest(Field* questRecord) for (int i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i) { - RewardChoiceItemId[i] = questRecord[36 + i * 2].GetUInt32(); - RewardChoiceItemCount[i] = questRecord[37 + i * 2].GetUInt16(); + RewardChoiceItemId[i] = questRecord[36 + i * 2].Get<uint32>(); + RewardChoiceItemCount[i] = questRecord[37 + i * 2].Get<uint16>(); if (RewardChoiceItemId[i]) ++_rewChoiceItemsCount; @@ -79,26 +79,26 @@ Quest::Quest(Field* questRecord) for (int i = 0; i < QUEST_REPUTATIONS_COUNT; ++i) { - RewardFactionId[i] = questRecord[48 + i * 3].GetUInt16(); - RewardFactionValueId[i] = questRecord[49 + i * 3].GetInt32(); - RewardFactionValueIdOverride[i] = questRecord[50 + i * 3].GetInt32(); + RewardFactionId[i] = questRecord[48 + i * 3].Get<uint16>(); + RewardFactionValueId[i] = questRecord[49 + i * 3].Get<int32>(); + RewardFactionValueIdOverride[i] = questRecord[50 + i * 3].Get<int32>(); } - POIContinent = questRecord[63].GetUInt16(); - POIx = questRecord[64].GetFloat(); - POIy = questRecord[65].GetFloat(); - POIPriority = questRecord[66].GetUInt32(); - Title = questRecord[67].GetString(); - Objectives = questRecord[68].GetString(); - Details = questRecord[69].GetString(); - AreaDescription = questRecord[70].GetString(); - CompletedText = questRecord[71].GetString(); + POIContinent = questRecord[63].Get<uint16>(); + POIx = questRecord[64].Get<float>(); + POIy = questRecord[65].Get<float>(); + POIPriority = questRecord[66].Get<uint32>(); + Title = questRecord[67].Get<std::string>(); + Objectives = questRecord[68].Get<std::string>(); + Details = questRecord[69].Get<std::string>(); + AreaDescription = questRecord[70].Get<std::string>(); + CompletedText = questRecord[71].Get<std::string>(); for (int i = 0; i < QUEST_OBJECTIVES_COUNT; ++i) { - RequiredNpcOrGo[i] = questRecord[72 + i].GetInt32(); - RequiredNpcOrGoCount[i] = questRecord[76 + i].GetUInt16(); - ObjectiveText[i] = questRecord[101 + i].GetString(); + RequiredNpcOrGo[i] = questRecord[72 + i].Get<int32>(); + RequiredNpcOrGoCount[i] = questRecord[76 + i].Get<uint16>(); + ObjectiveText[i] = questRecord[101 + i].Get<std::string>(); if (RequiredNpcOrGo[i]) ++_reqCreatureOrGOcount; @@ -106,21 +106,21 @@ Quest::Quest(Field* questRecord) for (int i = 0; i < QUEST_SOURCE_ITEM_IDS_COUNT; ++i) { - ItemDrop[i] = questRecord[80 + i].GetUInt32(); - ItemDropQuantity[i] = questRecord[84 + i].GetUInt16(); + ItemDrop[i] = questRecord[80 + i].Get<uint32>(); + ItemDropQuantity[i] = questRecord[84 + i].Get<uint16>(); } for (int i = 0; i < QUEST_ITEM_OBJECTIVES_COUNT; ++i) { - RequiredItemId[i] = questRecord[88 + i].GetUInt32(); - RequiredItemCount[i] = questRecord[94 + i].GetUInt16(); + RequiredItemId[i] = questRecord[88 + i].Get<uint32>(); + RequiredItemCount[i] = questRecord[94 + i].Get<uint16>(); if (RequiredItemId[i]) ++_reqItemsCount; } - // int8 Unknown0 = questRecord[100].GetUInt8(); - // int32 VerifiedBuild = questRecord[105].GetInt32(); + // int8 Unknown0 = questRecord[100].Get<uint8>(); + // int32 VerifiedBuild = questRecord[105].Get<int32>(); for (int i = 0; i < QUEST_EMOTE_COUNT; ++i) { @@ -136,49 +136,49 @@ Quest::Quest(Field* questRecord) void Quest::LoadQuestDetails(Field* fields) { for (int i = 0; i < QUEST_EMOTE_COUNT; ++i) - DetailsEmote[i] = fields[1 + i].GetUInt16(); + DetailsEmote[i] = fields[1 + i].Get<uint16>(); for (int i = 0; i < QUEST_EMOTE_COUNT; ++i) - DetailsEmoteDelay[i] = fields[5 + i].GetUInt32(); + DetailsEmoteDelay[i] = fields[5 + i].Get<uint32>(); } void Quest::LoadQuestRequestItems(Field* fields) { - EmoteOnComplete = fields[1].GetUInt16(); - EmoteOnIncomplete = fields[2].GetUInt16(); - RequestItemsText = fields[3].GetString(); + EmoteOnComplete = fields[1].Get<uint16>(); + EmoteOnIncomplete = fields[2].Get<uint16>(); + RequestItemsText = fields[3].Get<std::string>(); } void Quest::LoadQuestOfferReward(Field* fields) { for (int i = 0; i < QUEST_EMOTE_COUNT; ++i) - OfferRewardEmote[i] = fields[1 + i].GetUInt16(); + OfferRewardEmote[i] = fields[1 + i].Get<uint16>(); for (int i = 0; i < QUEST_EMOTE_COUNT; ++i) - OfferRewardEmoteDelay[i] = fields[5 + i].GetUInt32(); + OfferRewardEmoteDelay[i] = fields[5 + i].Get<uint32>(); - OfferRewardText = fields[9].GetString(); + OfferRewardText = fields[9].Get<std::string>(); } void Quest::LoadQuestTemplateAddon(Field* fields) { - MaxLevel = fields[1].GetUInt8(); - RequiredClasses = fields[2].GetUInt32(); - SourceSpellid = fields[3].GetUInt32(); - PrevQuestId = fields[4].GetInt32(); - NextQuestId = fields[5].GetUInt32(); - ExclusiveGroup = fields[6].GetInt32(); - RewardMailTemplateId = fields[7].GetUInt32(); - RewardMailDelay = fields[8].GetUInt32(); - RequiredSkillId = fields[9].GetUInt16(); - RequiredSkillPoints = fields[10].GetUInt16(); - RequiredMinRepFaction = fields[11].GetUInt16(); - RequiredMaxRepFaction = fields[12].GetUInt16(); - RequiredMinRepValue = fields[13].GetInt32(); - RequiredMaxRepValue = fields[14].GetInt32(); - StartItemCount = fields[15].GetUInt8(); - RewardMailSenderEntry = fields[16].GetUInt32(); - SpecialFlags = fields[17].GetUInt8(); + MaxLevel = fields[1].Get<uint8>(); + RequiredClasses = fields[2].Get<uint32>(); + SourceSpellid = fields[3].Get<uint32>(); + PrevQuestId = fields[4].Get<int32>(); + NextQuestId = fields[5].Get<uint32>(); + ExclusiveGroup = fields[6].Get<int32>(); + RewardMailTemplateId = fields[7].Get<uint32>(); + RewardMailDelay = fields[8].Get<uint32>(); + RequiredSkillId = fields[9].Get<uint16>(); + RequiredSkillPoints = fields[10].Get<uint16>(); + RequiredMinRepFaction = fields[11].Get<uint16>(); + RequiredMaxRepFaction = fields[12].Get<uint16>(); + RequiredMinRepValue = fields[13].Get<int32>(); + RequiredMaxRepValue = fields[14].Get<int32>(); + StartItemCount = fields[15].Get<uint8>(); + RewardMailSenderEntry = fields[16].Get<uint32>(); + SpecialFlags = fields[17].Get<uint8>(); if (SpecialFlags & QUEST_SPECIAL_FLAGS_AUTO_ACCEPT) Flags |= QUEST_FLAGS_AUTO_ACCEPT; diff --git a/src/server/game/Reputation/ReputationMgr.cpp b/src/server/game/Reputation/ReputationMgr.cpp index b53bcb1621..5496a86fce 100644 --- a/src/server/game/Reputation/ReputationMgr.cpp +++ b/src/server/game/Reputation/ReputationMgr.cpp @@ -522,7 +522,7 @@ void ReputationMgr::LoadFromDB(PreparedQueryResult result) // Set initial reputations (so everything is nifty before DB data load) Initialize(); - //QueryResult* result = CharacterDatabase.PQuery("SELECT faction, standing, flags FROM character_reputation WHERE guid = '%u'", GetGUID().GetCounter()); + //QueryResult* result = CharacterDatabase.Query("SELECT faction, standing, flags FROM character_reputation WHERE guid = '{}'", GetGUID().GetCounter()); if (result) { @@ -530,13 +530,13 @@ void ReputationMgr::LoadFromDB(PreparedQueryResult result) { Field* fields = result->Fetch(); - FactionEntry const* factionEntry = sFactionStore.LookupEntry(fields[0].GetUInt16()); + FactionEntry const* factionEntry = sFactionStore.LookupEntry(fields[0].Get<uint16>()); if (factionEntry && (factionEntry->reputationListID >= 0)) { FactionState* faction = &_factions[factionEntry->reputationListID]; // update standing to current - faction->Standing = fields[1].GetInt32(); + faction->Standing = fields[1].Get<int32>(); // update counters int32 BaseRep = GetBaseReputation(factionEntry); @@ -544,7 +544,7 @@ void ReputationMgr::LoadFromDB(PreparedQueryResult result) ReputationRank new_rank = ReputationToRank(BaseRep + faction->Standing); UpdateRankCounters(old_rank, new_rank); - uint32 dbFactionFlags = fields[2].GetUInt16(); + uint32 dbFactionFlags = fields[2].Get<uint16>(); if (dbFactionFlags & FACTION_FLAG_VISIBLE) SetVisible(faction); // have internal checks for forced invisibility @@ -586,15 +586,15 @@ void ReputationMgr::SaveToDB(CharacterDatabaseTransaction trans) if (itr->second.needSave) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_REPUTATION_BY_FACTION); - stmt->setUInt32(0, _player->GetGUID().GetCounter()); - stmt->setUInt16(1, uint16(itr->second.ID)); + stmt->SetData(0, _player->GetGUID().GetCounter()); + stmt->SetData(1, uint16(itr->second.ID)); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_REPUTATION_BY_FACTION); - stmt->setUInt32(0, _player->GetGUID().GetCounter()); - stmt->setUInt16(1, uint16(itr->second.ID)); - stmt->setInt32(2, itr->second.Standing); - stmt->setUInt16(3, uint16(itr->second.Flags)); + stmt->SetData(0, _player->GetGUID().GetCounter()); + stmt->SetData(1, uint16(itr->second.ID)); + stmt->SetData(2, itr->second.Standing); + stmt->SetData(3, uint16(itr->second.Flags)); trans->Append(stmt); itr->second.needSave = false; diff --git a/src/server/game/Scripting/ScriptSystem.cpp b/src/server/game/Scripting/ScriptSystem.cpp index 639f103282..73760cb8c3 100644 --- a/src/server/game/Scripting/ScriptSystem.cpp +++ b/src/server/game/Scripting/ScriptSystem.cpp @@ -60,13 +60,13 @@ void SystemMgr::LoadScriptWaypoints() Field* pFields = result->Fetch(); ScriptPointMove temp; - temp.uiCreatureEntry = pFields[0].GetUInt32(); + temp.uiCreatureEntry = pFields[0].Get<uint32>(); uint32 uiEntry = temp.uiCreatureEntry; - temp.uiPointId = pFields[1].GetUInt32(); - temp.fX = pFields[2].GetFloat(); - temp.fY = pFields[3].GetFloat(); - temp.fZ = pFields[4].GetFloat(); - temp.uiWaitTime = pFields[5].GetUInt32(); + temp.uiPointId = pFields[1].Get<uint32>(); + temp.fX = pFields[2].Get<float>(); + temp.fY = pFields[3].Get<float>(); + temp.fZ = pFields[4].Get<float>(); + temp.uiWaitTime = pFields[5].Get<uint32>(); CreatureTemplate const* pCInfo = sObjectMgr->GetCreatureTemplate(temp.uiCreatureEntry); diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 6eeecbfd8c..c07b31b6da 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -147,14 +147,14 @@ WorldSession::WorldSession(uint32 id, std::string&& name, std::shared_ptr<WorldS { m_Address = sock->GetRemoteIpAddress().to_string(); ResetTimeOutTime(false); - LoginDatabase.PExecute("UPDATE account SET online = 1 WHERE id = %u;", GetAccountId()); // One-time query + LoginDatabase.Execute("UPDATE account SET online = 1 WHERE id = {};", GetAccountId()); // One-time query } } /// WorldSession destructor WorldSession::~WorldSession() { - LoginDatabase.PExecute("UPDATE account SET totaltime = %u WHERE id = %u", GetTotalTime(), GetAccountId()); + LoginDatabase.Execute("UPDATE account SET totaltime = {} WHERE id = {}", GetTotalTime(), GetAccountId()); ///- unload player if not unloaded if (_player) @@ -173,7 +173,7 @@ WorldSession::~WorldSession() delete packet; if (GetShouldSetOfflineInDB()) - LoginDatabase.PExecute("UPDATE account SET online = 0 WHERE id = %u;", GetAccountId()); // One-time query + LoginDatabase.Execute("UPDATE account SET online = 0 WHERE id = {};", GetAccountId()); // One-time query } std::string const& WorldSession::GetPlayerName() const @@ -595,8 +595,8 @@ void WorldSession::LogoutPlayer(bool save) if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_TRACK_DESERTERS)) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_DESERTER_TRACK); - stmt->setUInt32(0, _player->GetGUID().GetCounter()); - stmt->setUInt8(1, BG_DESERTION_TYPE_INVITE_LOGOUT); + stmt->SetData(0, _player->GetGUID().GetCounter()); + stmt->SetData(1, BG_DESERTION_TYPE_INVITE_LOGOUT); CharacterDatabase.Execute(stmt); } sScriptMgr->OnBattlegroundDesertion(_player, BG_DESERTION_TYPE_INVITE_LOGOUT); @@ -694,7 +694,7 @@ void WorldSession::LogoutPlayer(bool save) //! Since each account can only have one online character at any given time, ensure all characters for active account are marked as offline CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ACCOUNT_ONLINE); - stmt->setUInt32(0, GetAccountId()); + stmt->SetData(0, GetAccountId()); CharacterDatabase.Execute(stmt); } @@ -831,7 +831,7 @@ void WorldSession::SendAuthWaitQueue(uint32 position) void WorldSession::LoadGlobalAccountData() { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ACCOUNT_DATA); - stmt->setUInt32(0, GetAccountId()); + stmt->SetData(0, GetAccountId()); LoadAccountData(CharacterDatabase.Query(stmt), GLOBAL_CACHE_MASK); } @@ -847,7 +847,7 @@ void WorldSession::LoadAccountData(PreparedQueryResult result, uint32 mask) do { Field* fields = result->Fetch(); - uint32 type = fields[0].GetUInt8(); + uint32 type = fields[0].Get<uint8>(); if (type >= NUM_ACCOUNT_DATA_TYPES) { LOG_ERROR("network", "Table `{}` have invalid account data type ({}), ignore.", mask == GLOBAL_CACHE_MASK ? "account_data" : "character_account_data", type); @@ -860,8 +860,8 @@ void WorldSession::LoadAccountData(PreparedQueryResult result, uint32 mask) continue; } - m_accountData[type].Time = time_t(fields[1].GetUInt32()); - m_accountData[type].Data = fields[2].GetString(); + m_accountData[type].Time = time_t(fields[1].Get<uint32>()); + m_accountData[type].Data = fields[2].Get<std::string>(); } while (result->NextRow()); } @@ -885,10 +885,10 @@ void WorldSession::SetAccountData(AccountDataType type, time_t tm, std::string c } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(index); - stmt->setUInt32(0, id); - stmt->setUInt8(1, type); - stmt->setUInt32(2, uint32(tm)); - stmt->setString(3, data); + stmt->SetData(0, id); + stmt->SetData(1, type); + stmt->SetData(2, uint32(tm)); + stmt->SetData(3, data); CharacterDatabase.Execute(stmt); m_accountData[type].Time = tm; @@ -912,10 +912,10 @@ void WorldSession::LoadTutorialsData() memset(m_Tutorials, 0, sizeof(uint32) * MAX_ACCOUNT_TUTORIAL_VALUES); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_TUTORIALS); - stmt->setUInt32(0, GetAccountId()); + stmt->SetData(0, GetAccountId()); if (PreparedQueryResult result = CharacterDatabase.Query(stmt)) for (uint8 i = 0; i < MAX_ACCOUNT_TUTORIAL_VALUES; ++i) - m_Tutorials[i] = (*result)[i].GetUInt32(); + m_Tutorials[i] = (*result)[i].Get<uint32>(); m_TutorialsChanged = false; } @@ -934,14 +934,14 @@ void WorldSession::SaveTutorialsData(CharacterDatabaseTransaction trans) return; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_HAS_TUTORIALS); - stmt->setUInt32(0, GetAccountId()); + stmt->SetData(0, GetAccountId()); bool hasTutorials = bool(CharacterDatabase.Query(stmt)); stmt = CharacterDatabase.GetPreparedStatement(hasTutorials ? CHAR_UPD_TUTORIALS : CHAR_INS_TUTORIALS); for (uint8 i = 0; i < MAX_ACCOUNT_TUTORIAL_VALUES; ++i) - stmt->setUInt32(i, m_Tutorials[i]); - stmt->setUInt32(MAX_ACCOUNT_TUTORIAL_VALUES, GetAccountId()); + stmt->SetData(i, m_Tutorials[i]); + stmt->SetData(MAX_ACCOUNT_TUTORIAL_VALUES, GetAccountId()); trans->Append(stmt); m_TutorialsChanged = false; diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 5962dbea09..68132a8749 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -48,7 +48,7 @@ void WorldSocket::Start() std::string ip_address = GetRemoteIpAddress().to_string(); LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_IP_INFO); - stmt->setString(0, ip_address); + stmt->SetData(0, ip_address); _queryProcessor.AddCallback(LoginDatabase.AsyncQuery(stmt).WithPreparedCallback(std::bind(&WorldSocket::CheckIpCallback, this, std::placeholders::_1))); } @@ -61,7 +61,7 @@ void WorldSocket::CheckIpCallback(PreparedQueryResult result) do { Field* fields = result->Fetch(); - if (fields[0].GetUInt64() != 0) + if (fields[0].Get<uint64>() != 0) banned = true; } while (result->NextRow()); @@ -278,20 +278,20 @@ struct AccountInfo // LEFT JOIN account_banned ab ON a.id = ab.id // LEFT JOIN account r ON a.id = r.recruiter // WHERE a.username = ? ORDER BY aa.RealmID DESC LIMIT 1 - Id = fields[0].GetUInt32(); - SessionKey = fields[1].GetBinary<SESSION_KEY_LENGTH>(); - LastIP = fields[2].GetString(); - IsLockedToIP = fields[3].GetBool(); - LockCountry = fields[4].GetString(); - Expansion = fields[5].GetUInt8(); - MuteTime = fields[6].GetInt64(); - Locale = LocaleConstant(fields[7].GetUInt8()); - Recruiter = fields[8].GetUInt32(); - OS = fields[9].GetString(); - TotalTime = fields[10].GetUInt32(); - Security = AccountTypes(fields[11].GetUInt8()); - IsBanned = fields[12].GetUInt64() != 0; - IsRectuiter = fields[13].GetUInt32() != 0; + Id = fields[0].Get<uint32>(); + SessionKey = fields[1].Get<Binary, SESSION_KEY_LENGTH>(); + LastIP = fields[2].Get<std::string>(); + IsLockedToIP = fields[3].Get<bool>(); + LockCountry = fields[4].Get<std::string>(); + Expansion = fields[5].Get<uint8>(); + MuteTime = fields[6].Get<int64>(); + Locale = LocaleConstant(fields[7].Get<uint8>()); + Recruiter = fields[8].Get<uint32>(); + OS = fields[9].Get<std::string>(); + TotalTime = fields[10].Get<uint32>(); + Security = AccountTypes(fields[11].Get<uint8>()); + IsBanned = fields[12].Get<uint64>() != 0; + IsRectuiter = fields[13].Get<uint32>() != 0; uint32 world_expansion = sWorld->getIntConfig(CONFIG_EXPANSION); if (Expansion > world_expansion) @@ -443,8 +443,8 @@ void WorldSocket::HandleAuthSession(WorldPacket & recvPacket) // Get the account information from the auth database LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_INFO_BY_NAME); - stmt->setInt32(0, int32(realm.Id.Realm)); - stmt->setString(1, authSession->Account); + stmt->SetData(0, int32(realm.Id.Realm)); + stmt->SetData(1, authSession->Account); _queryProcessor.AddCallback(LoginDatabase.AsyncQuery(stmt).WithPreparedCallback(std::bind(&WorldSocket::HandleAuthSessionCallback, this, authSession, std::placeholders::_1))); } @@ -470,8 +470,8 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptr<AuthSession> authSes // As we don't know if attempted login process by ip works, we update last_attempt_ip right away stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_LAST_ATTEMPT_IP); - stmt->setString(0, address); - stmt->setString(1, authSession->Account); + stmt->SetData(0, address); + stmt->SetData(1, authSession->Account); LoginDatabase.Execute(stmt); // This also allows to check for possible "hack" attempts on account @@ -560,8 +560,8 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptr<AuthSession> authSes account.MuteTime = GameTime::GetGameTime().count() + llabs(account.MuteTime); auto* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME_LOGIN); - stmt->setInt64(0, account.MuteTime); - stmt->setUInt32(1, account.Id); + stmt->SetData(0, account.MuteTime); + stmt->SetData(1, account.Id); LoginDatabase.Execute(stmt); } @@ -590,8 +590,8 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptr<AuthSession> authSes // Update the last_ip in the database as it was successful for login stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_LAST_IP); - stmt->setString(0, address); - stmt->setString(1, authSession->Account); + stmt->SetData(0, address); + stmt->SetData(1, authSession->Account); LoginDatabase.Execute(stmt); diff --git a/src/server/game/Skills/SkillDiscovery.cpp b/src/server/game/Skills/SkillDiscovery.cpp index b508b12971..1ec03570d9 100644 --- a/src/server/game/Skills/SkillDiscovery.cpp +++ b/src/server/game/Skills/SkillDiscovery.cpp @@ -68,10 +68,10 @@ void LoadSkillDiscoveryTable() { Field* fields = result->Fetch(); - uint32 spellId = fields[0].GetUInt32(); - int32 reqSkillOrSpell = fields[1].GetInt32(); - uint32 reqSkillValue = fields[2].GetUInt16(); - float chance = fields[3].GetFloat(); + uint32 spellId = fields[0].Get<uint32>(); + int32 reqSkillOrSpell = fields[1].Get<int32>(); + uint32 reqSkillValue = fields[2].Get<uint16>(); + float chance = fields[3].Get<float>(); if (chance <= 0) // chance { diff --git a/src/server/game/Skills/SkillExtraItems.cpp b/src/server/game/Skills/SkillExtraItems.cpp index 2e9ce2e5d0..763d229e3a 100644 --- a/src/server/game/Skills/SkillExtraItems.cpp +++ b/src/server/game/Skills/SkillExtraItems.cpp @@ -71,7 +71,7 @@ void LoadSkillPerfectItemTable() { Field* fields = result->Fetch(); - uint32 spellId = fields[0].GetUInt32(); + uint32 spellId = fields[0].Get<uint32>(); if (!sSpellMgr->GetSpellInfo(spellId)) { @@ -79,21 +79,21 @@ void LoadSkillPerfectItemTable() continue; } - uint32 requiredSpecialization = fields[1].GetUInt32(); + uint32 requiredSpecialization = fields[1].Get<uint32>(); if (!sSpellMgr->GetSpellInfo(requiredSpecialization)) { LOG_ERROR("sql.sql", "Skill perfection data for spell {} has non-existent required specialization spell id {} in `skill_perfect_item_template`!", spellId, requiredSpecialization); continue; } - float perfectCreateChance = fields[2].GetFloat(); + float perfectCreateChance = fields[2].Get<float>(); if (perfectCreateChance <= 0.0f) { LOG_ERROR("sql.sql", "Skill perfection data for spell {} has impossibly low proc chance in `skill_perfect_item_template`!", spellId); continue; } - uint32 perfectItemType = fields[3].GetUInt32(); + uint32 perfectItemType = fields[3].Get<uint32>(); if (!sObjectMgr->GetItemTemplate(perfectItemType)) { LOG_ERROR("sql.sql", "Skill perfection data for spell {} references non-existent perfect item id {} in `skill_perfect_item_template`!", spellId, perfectItemType); @@ -157,7 +157,7 @@ void LoadSkillExtraItemTable() { Field* fields = result->Fetch(); - uint32 spellId = fields[0].GetUInt32(); + uint32 spellId = fields[0].Get<uint32>(); if (!sSpellMgr->GetSpellInfo(spellId)) { @@ -165,21 +165,21 @@ void LoadSkillExtraItemTable() continue; } - uint32 requiredSpecialization = fields[1].GetUInt32(); + uint32 requiredSpecialization = fields[1].Get<uint32>(); if (!sSpellMgr->GetSpellInfo(requiredSpecialization)) { LOG_ERROR("sql.sql", "Skill specialization {} have not existed required specialization spell id {} in `skill_extra_item_template`!", spellId, requiredSpecialization); continue; } - float additionalCreateChance = fields[2].GetFloat(); + float additionalCreateChance = fields[2].Get<float>(); if (additionalCreateChance <= 0.0f) { LOG_ERROR("sql.sql", "Skill specialization {} has too low additional create chance in `skill_extra_item_template`!", spellId); continue; } - int32 newMaxOrEntry = fields[3].GetInt32(); + int32 newMaxOrEntry = fields[3].Get<int32>(); if (!newMaxOrEntry) { LOG_ERROR("sql.sql", "Skill specialization {} has 0 max number of extra items in `skill_extra_item_template`!", spellId); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index bb41cccc21..f3c569c534 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -452,7 +452,7 @@ void DeleteSpellFromAllPlayers(uint32 spellId) for (uint8 i = 0; i < 2; i++) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(stmts[i]); - stmt->setUInt32(0, spellId); + stmt->SetData(0, spellId); CharacterDatabase.Execute(stmt); } } @@ -1320,11 +1320,11 @@ void SpellMgr::LoadSpellRanks() { Field* fields = result->Fetch(); - currentSpell = fields[0].GetUInt32(); + currentSpell = fields[0].Get<uint32>(); if (lastSpell == -1) lastSpell = currentSpell; - uint32 spell_id = fields[1].GetUInt32(); - uint32 rank = fields[2].GetUInt8(); + uint32 spell_id = fields[1].Get<uint32>(); + uint32 rank = fields[2].Get<uint8>(); // don't drop the row if we're moving to the next rank if (currentSpell == lastSpell) @@ -1421,8 +1421,8 @@ void SpellMgr::LoadSpellRequired() { Field* fields = result->Fetch(); - uint32 spellId = fields[0].GetUInt32(); - uint32 spellReq = fields[1].GetUInt32(); + uint32 spellId = fields[0].Get<uint32>(); + uint32 spellReq = fields[1].Get<uint32>(); // check if chain is made with valid first spell SpellInfo const* spellInfo = GetSpellInfo(spellId); @@ -1538,17 +1538,17 @@ void SpellMgr::LoadSpellTargetPositions() { Field* fields = result->Fetch(); - uint32 Spell_ID = fields[0].GetUInt32(); + uint32 Spell_ID = fields[0].Get<uint32>(); - SpellEffIndex effIndex = SpellEffIndex(fields[1].GetUInt8()); + SpellEffIndex effIndex = SpellEffIndex(fields[1].Get<uint8>()); SpellTargetPosition st; - st.target_mapId = fields[2].GetUInt16(); - st.target_X = fields[3].GetFloat(); - st.target_Y = fields[4].GetFloat(); - st.target_Z = fields[5].GetFloat(); - st.target_Orientation = fields[6].GetFloat(); + st.target_mapId = fields[2].Get<uint16>(); + st.target_X = fields[3].Get<float>(); + st.target_Y = fields[4].Get<float>(); + st.target_Z = fields[5].Get<float>(); + st.target_Orientation = fields[6].Get<float>(); MapEntry const* mapEntry = sMapStore.LookupEntry(st.target_mapId); if (!mapEntry) @@ -1642,9 +1642,9 @@ void SpellMgr::LoadSpellGroups() { Field* fields = result->Fetch(); - uint32 group_id = fields[0].GetUInt32(); - int32 spell_id = fields[1].GetUInt32(); - SpellGroupSpecialFlags specialFlag = (SpellGroupSpecialFlags)fields[2].GetUInt32(); + uint32 group_id = fields[0].Get<uint32>(); + int32 spell_id = fields[1].Get<uint32>(); + SpellGroupSpecialFlags specialFlag = (SpellGroupSpecialFlags)fields[2].Get<uint32>(); SpellInfo const* spellInfo = GetSpellInfo(spell_id); if (!spellInfo) @@ -1702,8 +1702,8 @@ void SpellMgr::LoadSpellGroupStackRules() { Field* fields = result->Fetch(); - uint32 group_id = fields[0].GetUInt32(); - uint8 stack_rule = fields[1].GetInt8(); + uint32 group_id = fields[0].Get<uint32>(); + uint8 stack_rule = fields[1].Get<int8>(); if (stack_rule >= SPELL_GROUP_STACK_FLAG_MAX) { LOG_ERROR("sql.sql", "SpellGroupStackRule {} listed in `spell_group_stack_rules` does not exist", stack_rule); @@ -1753,7 +1753,7 @@ void SpellMgr::LoadSpellProcEvents() { Field* fields = result->Fetch(); - int32 spellId = fields[0].GetInt32(); + int32 spellId = fields[0].Get<int32>(); bool allRanks = false; if (spellId < 0) @@ -1783,17 +1783,17 @@ void SpellMgr::LoadSpellProcEvents() SpellProcEventEntry spellProcEvent; - spellProcEvent.schoolMask = fields[1].GetInt8(); - spellProcEvent.spellFamilyName = fields[2].GetUInt16(); - spellProcEvent.spellFamilyMask[0] = fields[3].GetUInt32(); - spellProcEvent.spellFamilyMask[1] = fields[4].GetUInt32(); - spellProcEvent.spellFamilyMask[2] = fields[5].GetUInt32(); - spellProcEvent.procFlags = fields[6].GetUInt32(); - spellProcEvent.procEx = fields[7].GetUInt32(); - spellProcEvent.procPhase = fields[8].GetUInt32(); - spellProcEvent.ppmRate = fields[9].GetFloat(); - spellProcEvent.customChance = fields[10].GetFloat(); - spellProcEvent.cooldown = fields[11].GetUInt32(); + spellProcEvent.schoolMask = fields[1].Get<int8>(); + spellProcEvent.spellFamilyName = fields[2].Get<uint16>(); + spellProcEvent.spellFamilyMask[0] = fields[3].Get<uint32>(); + spellProcEvent.spellFamilyMask[1] = fields[4].Get<uint32>(); + spellProcEvent.spellFamilyMask[2] = fields[5].Get<uint32>(); + spellProcEvent.procFlags = fields[6].Get<uint32>(); + spellProcEvent.procEx = fields[7].Get<uint32>(); + spellProcEvent.procPhase = fields[8].Get<uint32>(); + spellProcEvent.ppmRate = fields[9].Get<float>(); + spellProcEvent.customChance = fields[10].Get<float>(); + spellProcEvent.cooldown = fields[11].Get<uint32>(); // PROC_SPELL_PHASE_NONE is by default PROC_SPELL_PHASE_HIT if (spellProcEvent.procPhase == PROC_SPELL_PHASE_NONE) @@ -1847,7 +1847,7 @@ void SpellMgr::LoadSpellProcs() { Field* fields = result->Fetch(); - int32 spellId = fields[0].GetInt32(); + int32 spellId = fields[0].Get<int32>(); bool allRanks = false; if (spellId < 0) @@ -1867,28 +1867,28 @@ void SpellMgr::LoadSpellProcs() { if (spellInfo->GetFirstRankSpell()->Id != uint32(spellId)) { - LOG_ERROR("sql.sql", "Spell {} listed in `spell_proc` is not first rank of spell.", fields[0].GetInt32()); + LOG_ERROR("sql.sql", "Spell {} listed in `spell_proc` is not first rank of spell.", fields[0].Get<int32>()); continue; } } SpellProcEntry baseProcEntry; - baseProcEntry.schoolMask = fields[1].GetInt8(); - baseProcEntry.spellFamilyName = fields[2].GetUInt16(); - baseProcEntry.spellFamilyMask[0] = fields[3].GetUInt32(); - baseProcEntry.spellFamilyMask[1] = fields[4].GetUInt32(); - baseProcEntry.spellFamilyMask[2] = fields[5].GetUInt32(); - baseProcEntry.typeMask = fields[6].GetUInt32(); - baseProcEntry.spellTypeMask = fields[7].GetUInt32(); - baseProcEntry.spellPhaseMask = fields[8].GetUInt32(); - baseProcEntry.hitMask = fields[9].GetUInt32(); - baseProcEntry.attributesMask = fields[10].GetUInt32(); - baseProcEntry.ratePerMinute = fields[11].GetFloat(); - baseProcEntry.chance = fields[12].GetFloat(); - float cooldown = fields[13].GetFloat(); + baseProcEntry.schoolMask = fields[1].Get<int8>(); + baseProcEntry.spellFamilyName = fields[2].Get<uint16>(); + baseProcEntry.spellFamilyMask[0] = fields[3].Get<uint32>(); + baseProcEntry.spellFamilyMask[1] = fields[4].Get<uint32>(); + baseProcEntry.spellFamilyMask[2] = fields[5].Get<uint32>(); + baseProcEntry.typeMask = fields[6].Get<uint32>(); + baseProcEntry.spellTypeMask = fields[7].Get<uint32>(); + baseProcEntry.spellPhaseMask = fields[8].Get<uint32>(); + baseProcEntry.hitMask = fields[9].Get<uint32>(); + baseProcEntry.attributesMask = fields[10].Get<uint32>(); + baseProcEntry.ratePerMinute = fields[11].Get<float>(); + baseProcEntry.chance = fields[12].Get<float>(); + float cooldown = fields[13].Get<float>(); baseProcEntry.cooldown = uint32(cooldown); - baseProcEntry.charges = fields[14].GetUInt32(); + baseProcEntry.charges = fields[14].Get<uint32>(); while (spellInfo) { @@ -1984,7 +1984,7 @@ void SpellMgr::LoadSpellBonusess() do { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); SpellInfo const* spell = GetSpellInfo(entry); if (!spell) @@ -1994,10 +1994,10 @@ void SpellMgr::LoadSpellBonusess() } SpellBonusEntry& sbe = mSpellBonusMap[entry]; - sbe.direct_damage = fields[1].GetFloat(); - sbe.dot_damage = fields[2].GetFloat(); - sbe.ap_bonus = fields[3].GetFloat(); - sbe.ap_dot_bonus = fields[4].GetFloat(); + sbe.direct_damage = fields[1].Get<float>(); + sbe.dot_damage = fields[2].Get<float>(); + sbe.ap_bonus = fields[3].Get<float>(); + sbe.ap_dot_bonus = fields[4].Get<float>(); ++count; } while (result->NextRow()); @@ -2026,7 +2026,7 @@ void SpellMgr::LoadSpellThreats() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); if (!GetSpellInfo(entry)) { @@ -2035,9 +2035,9 @@ void SpellMgr::LoadSpellThreats() } SpellThreatEntry ste; - ste.flatMod = fields[1].GetInt32(); - ste.pctMod = fields[2].GetFloat(); - ste.apPctMod = fields[3].GetFloat(); + ste.flatMod = fields[1].Get<int32>(); + ste.pctMod = fields[2].Get<float>(); + ste.apPctMod = fields[3].Get<float>(); mSpellThreatMap[entry] = ste; ++count; @@ -2067,7 +2067,7 @@ void SpellMgr::LoadSpellMixology() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 entry = fields[0].Get<uint32>(); if (!GetSpellInfo(entry)) { @@ -2075,7 +2075,7 @@ void SpellMgr::LoadSpellMixology() continue; } - mSpellMixologyMap[entry] = fields[1].GetFloat(); + mSpellMixologyMap[entry] = fields[1].Get<float>(); ++count; } while (result->NextRow()); @@ -2125,10 +2125,10 @@ void SpellMgr::LoadSpellPetAuras() { Field* fields = result->Fetch(); - uint32 spell = fields[0].GetUInt32(); - uint8 eff = fields[1].GetUInt8(); - uint32 pet = fields[2].GetUInt32(); - uint32 aura = fields[3].GetUInt32(); + uint32 spell = fields[0].Get<uint32>(); + uint8 eff = fields[1].Get<uint8>(); + uint32 pet = fields[2].Get<uint32>(); + uint32 aura = fields[3].Get<uint32>(); SpellPetAuraMap::iterator itr = mSpellPetAuraMap.find((spell << 8) + eff); if (itr != mSpellPetAuraMap.end()) @@ -2229,7 +2229,7 @@ void SpellMgr::LoadSpellEnchantProcData() { Field* fields = result->Fetch(); - uint32 enchantId = fields[0].GetUInt32(); + uint32 enchantId = fields[0].Get<uint32>(); SpellItemEnchantmentEntry const* ench = sSpellItemEnchantmentStore.LookupEntry(enchantId); if (!ench) @@ -2240,9 +2240,9 @@ void SpellMgr::LoadSpellEnchantProcData() SpellEnchantProcEntry spe; - spe.customChance = fields[1].GetUInt32(); - spe.PPMChance = fields[2].GetFloat(); - spe.procEx = fields[3].GetUInt32(); + spe.customChance = fields[1].Get<uint32>(); + spe.PPMChance = fields[2].Get<float>(); + spe.procEx = fields[3].Get<uint32>(); mSpellEnchantProcEventMap[enchantId] = spe; @@ -2273,9 +2273,9 @@ void SpellMgr::LoadSpellLinked() { Field* fields = result->Fetch(); - int32 trigger = fields[0].GetInt32(); - int32 effect = fields[1].GetInt32(); - int32 type = fields[2].GetUInt8(); + int32 trigger = fields[0].Get<int32>(); + int32 effect = fields[1].Get<int32>(); + int32 type = fields[2].Get<uint8>(); SpellInfo const* spellInfo = GetSpellInfo(std::abs(trigger)); if (!spellInfo) @@ -2515,18 +2515,18 @@ void SpellMgr::LoadSpellAreas() { Field* fields = result->Fetch(); - uint32 spell = fields[0].GetUInt32(); + uint32 spell = fields[0].Get<uint32>(); SpellArea spellArea; spellArea.spellId = spell; - spellArea.areaId = fields[1].GetUInt32(); - spellArea.questStart = fields[2].GetUInt32(); - spellArea.questStartStatus = fields[3].GetUInt32(); - spellArea.questEndStatus = fields[4].GetUInt32(); - spellArea.questEnd = fields[5].GetUInt32(); - spellArea.auraSpell = fields[6].GetInt32(); - spellArea.raceMask = fields[7].GetUInt32(); - spellArea.gender = Gender(fields[8].GetUInt8()); - spellArea.autocast = fields[9].GetBool(); + spellArea.areaId = fields[1].Get<uint32>(); + spellArea.questStart = fields[2].Get<uint32>(); + spellArea.questStartStatus = fields[3].Get<uint32>(); + spellArea.questEndStatus = fields[4].Get<uint32>(); + spellArea.questEnd = fields[5].Get<uint32>(); + spellArea.auraSpell = fields[6].Get<int32>(); + spellArea.raceMask = fields[7].Get<uint32>(); + spellArea.gender = Gender(fields[8].Get<uint8>()); + spellArea.autocast = fields[9].Get<bool>(); if (SpellInfo const* spellInfo = GetSpellInfo(spell)) { @@ -2772,8 +2772,8 @@ void SpellMgr::LoadSpellCustomAttr() { Field const* fields = result->Fetch(); - uint32 const spellId = fields[0].GetUInt32(); - uint32 attributes = fields[1].GetUInt32(); + uint32 const spellId = fields[0].Get<uint32>(); + uint32 attributes = fields[1].Get<uint32>(); SpellInfo* spellInfo = _GetSpellInfo(spellId); if (!spellInfo) diff --git a/src/server/game/Texts/CreatureTextMgr.cpp b/src/server/game/Texts/CreatureTextMgr.cpp index 086367ba2b..eda2f978df 100644 --- a/src/server/game/Texts/CreatureTextMgr.cpp +++ b/src/server/game/Texts/CreatureTextMgr.cpp @@ -102,18 +102,18 @@ void CreatureTextMgr::LoadCreatureTexts() Field* fields = result->Fetch(); CreatureTextEntry temp; - temp.entry = fields[0].GetUInt32(); - temp.group = fields[1].GetUInt8(); - temp.id = fields[2].GetUInt8(); - temp.text = fields[3].GetString(); - temp.type = ChatMsg(fields[4].GetUInt8()); - temp.lang = Language(fields[5].GetUInt8()); - temp.probability = fields[6].GetFloat(); - temp.emote = Emote(fields[7].GetUInt32()); - temp.duration = fields[8].GetUInt32(); - temp.sound = fields[9].GetUInt32(); - temp.BroadcastTextId = fields[10].GetUInt32(); - temp.TextRange = CreatureTextRange(fields[11].GetUInt8()); + temp.entry = fields[0].Get<uint32>(); + temp.group = fields[1].Get<uint8>(); + temp.id = fields[2].Get<uint8>(); + temp.text = fields[3].Get<std::string>(); + temp.type = ChatMsg(fields[4].Get<uint8>()); + temp.lang = Language(fields[5].Get<uint8>()); + temp.probability = fields[6].Get<float>(); + temp.emote = Emote(fields[7].Get<uint32>()); + temp.duration = fields[8].Get<uint32>(); + temp.sound = fields[9].Get<uint32>(); + temp.BroadcastTextId = fields[10].Get<uint32>(); + temp.TextRange = CreatureTextRange(fields[11].Get<uint8>()); if (temp.sound) { @@ -180,16 +180,16 @@ void CreatureTextMgr::LoadCreatureTextLocales() { Field* fields = result->Fetch(); - uint32 CreatureId = fields[0].GetUInt32(); - uint32 GroupId = fields[1].GetUInt8(); - uint32 ID = fields[2].GetUInt8(); + uint32 CreatureId = fields[0].Get<uint32>(); + uint32 GroupId = fields[1].Get<uint8>(); + uint32 ID = fields[2].Get<uint8>(); - LocaleConstant locale = GetLocaleByName(fields[3].GetString()); + LocaleConstant locale = GetLocaleByName(fields[3].Get<std::string>()); if (locale == LOCALE_enUS) continue; CreatureTextLocale& data = mLocaleTextMap[CreatureTextId(CreatureId, GroupId, ID)]; - ObjectMgr::AddLocaleString(fields[4].GetString(), locale, data.Text); + ObjectMgr::AddLocaleString(fields[4].Get<std::string>(), locale, data.Text); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} Creature Text Locale in {} ms", uint32(mLocaleTextMap.size()), GetMSTimeDiffToNow(oldMSTime)); diff --git a/src/server/game/Tickets/TicketMgr.cpp b/src/server/game/Tickets/TicketMgr.cpp index 711b286f8f..6cf59cba4a 100644 --- a/src/server/game/Tickets/TicketMgr.cpp +++ b/src/server/game/Tickets/TicketMgr.cpp @@ -51,26 +51,26 @@ bool GmTicket::LoadFromDB(Field* fields) // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // id, type, playerGuid, name, message, createTime, mapId, posX, posY, posZ, lastModifiedTime, closedBy, assignedTo, comment, response, completed, escalated, viewed, haveTicket, resolvedBy uint8 index = 0; - _id = fields[ index].GetUInt32(); - _type = TicketType(fields[++index].GetUInt8()); - _playerGuid = ObjectGuid::Create<HighGuid::Player>(fields[++index].GetUInt32()); - _playerName = fields[++index].GetString(); - _message = fields[++index].GetString(); - _createTime = fields[++index].GetUInt32(); - _mapId = fields[++index].GetUInt16(); - _posX = fields[++index].GetFloat(); - _posY = fields[++index].GetFloat(); - _posZ = fields[++index].GetFloat(); - _lastModifiedTime = fields[++index].GetUInt32(); - _closedBy = ObjectGuid::Create<HighGuid::Player>(fields[++index].GetInt32()); - _assignedTo = ObjectGuid::Create<HighGuid::Player>(fields[++index].GetUInt32()); - _comment = fields[++index].GetString(); - _response = fields[++index].GetString(); - _completed = fields[++index].GetBool(); - _escalatedStatus = GMTicketEscalationStatus(fields[++index].GetUInt8()); - _viewed = fields[++index].GetBool(); - _needMoreHelp = fields[++index].GetBool(); - _resolvedBy = ObjectGuid::Create<HighGuid::Player>(fields[++index].GetInt32()); + _id = fields[ index].Get<uint32>(); + _type = TicketType(fields[++index].Get<uint8>()); + _playerGuid = ObjectGuid::Create<HighGuid::Player>(fields[++index].Get<uint32>()); + _playerName = fields[++index].Get<std::string>(); + _message = fields[++index].Get<std::string>(); + _createTime = fields[++index].Get<uint32>(); + _mapId = fields[++index].Get<uint16>(); + _posX = fields[++index].Get<float>(); + _posY = fields[++index].Get<float>(); + _posZ = fields[++index].Get<float>(); + _lastModifiedTime = fields[++index].Get<uint32>(); + _closedBy = ObjectGuid::Create<HighGuid::Player>(fields[++index].Get<int32>()); + _assignedTo = ObjectGuid::Create<HighGuid::Player>(fields[++index].Get<uint32>()); + _comment = fields[++index].Get<std::string>(); + _response = fields[++index].Get<std::string>(); + _completed = fields[++index].Get<bool>(); + _escalatedStatus = GMTicketEscalationStatus(fields[++index].Get<uint8>()); + _viewed = fields[++index].Get<bool>(); + _needMoreHelp = fields[++index].Get<bool>(); + _resolvedBy = ObjectGuid::Create<HighGuid::Player>(fields[++index].Get<int32>()); return true; } @@ -81,26 +81,26 @@ void GmTicket::SaveToDB(CharacterDatabaseTransaction trans) const // id, type, playerGuid, name, description, createTime, mapId, posX, posY, posZ, lastModifiedTime, closedBy, assignedTo, comment, response, completed, escalated, viewed, needMoreHelp, resolvedBy uint8 index = 0; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_GM_TICKET); - stmt->setUInt32( index, _id); - stmt->setUInt8 (++index, uint8(_type)); - stmt->setUInt32(++index, _playerGuid.GetCounter()); - stmt->setString(++index, _playerName); - stmt->setString(++index, _message); - stmt->setUInt32(++index, uint32(_createTime)); - stmt->setUInt16(++index, _mapId); - stmt->setFloat (++index, _posX); - stmt->setFloat (++index, _posY); - stmt->setFloat (++index, _posZ); - stmt->setUInt32(++index, uint32(_lastModifiedTime)); - stmt->setInt32 (++index, int32(_closedBy.GetCounter())); - stmt->setUInt32(++index, _assignedTo.GetCounter()); - stmt->setString(++index, _comment); - stmt->setString(++index, _response); - stmt->setBool (++index, _completed); - stmt->setUInt8 (++index, uint8(_escalatedStatus)); - stmt->setBool (++index, _viewed); - stmt->setBool (++index, _needMoreHelp); - stmt->setInt32 (++index, int32(_resolvedBy.GetCounter())); + stmt->SetData( index, _id); + stmt->SetData (++index, uint8(_type)); + stmt->SetData(++index, _playerGuid.GetCounter()); + stmt->SetData(++index, _playerName); + stmt->SetData(++index, _message); + stmt->SetData(++index, uint32(_createTime)); + stmt->SetData(++index, _mapId); + stmt->SetData (++index, _posX); + stmt->SetData (++index, _posY); + stmt->SetData (++index, _posZ); + stmt->SetData(++index, uint32(_lastModifiedTime)); + stmt->SetData (++index, int32(_closedBy.GetCounter())); + stmt->SetData(++index, _assignedTo.GetCounter()); + stmt->SetData(++index, _comment); + stmt->SetData(++index, _response); + stmt->SetData (++index, _completed); + stmt->SetData (++index, uint8(_escalatedStatus)); + stmt->SetData (++index, _viewed); + stmt->SetData (++index, _needMoreHelp); + stmt->SetData (++index, int32(_resolvedBy.GetCounter())); CharacterDatabase.ExecuteOrAppend(trans, stmt); } @@ -108,7 +108,7 @@ void GmTicket::SaveToDB(CharacterDatabaseTransaction trans) const void GmTicket::DeleteFromDB() { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GM_TICKET); - stmt->setUInt32(0, _id); + stmt->SetData(0, _id); CharacterDatabase.Execute(stmt); } @@ -351,7 +351,7 @@ void TicketMgr::LoadSurveys() uint32 oldMSTime = getMSTime(); if (QueryResult result = CharacterDatabase.Query("SELECT MAX(surveyId) FROM gm_survey")) - _lastSurveyId = (*result)[0].GetUInt32(); + _lastSurveyId = (*result)[0].Get<uint32>(); LOG_INFO("server.loading", ">> Loaded GM Survey count from database in {} ms", GetMSTimeDiffToNow(oldMSTime)); LOG_INFO("server.loading", " "); diff --git a/src/server/game/Tools/CharacterDatabaseCleaner.cpp b/src/server/game/Tools/CharacterDatabaseCleaner.cpp index 557d332069..794135b21a 100644 --- a/src/server/game/Tools/CharacterDatabaseCleaner.cpp +++ b/src/server/game/Tools/CharacterDatabaseCleaner.cpp @@ -34,11 +34,11 @@ void CharacterDatabaseCleaner::CleanDatabase() uint32 oldMSTime = getMSTime(); // check flags which clean ups are necessary - QueryResult result = CharacterDatabase.PQuery("SELECT value FROM worldstates WHERE entry = %d", WS_CLEANING_FLAGS); + QueryResult result = CharacterDatabase.Query("SELECT value FROM worldstates WHERE entry = {}", WS_CLEANING_FLAGS); if (!result) return; - uint32 flags = (*result)[0].GetUInt32(); + uint32 flags = (*result)[0].Get<uint32>(); // clean up if (flags & CLEANING_FLAG_ACHIEVEMENT_PROGRESS) @@ -59,7 +59,7 @@ void CharacterDatabaseCleaner::CleanDatabase() // NOTE: In order to have persistentFlags be set in worldstates for the next cleanup, // you need to define them at least once in worldstates. flags &= sWorld->getIntConfig(CONFIG_PERSISTENT_CHARACTER_CLEAN_FLAGS); - CharacterDatabase.DirectPExecute("UPDATE worldstates SET value = %u WHERE entry = %d", flags, WS_CLEANING_FLAGS); + CharacterDatabase.DirectExecute("UPDATE worldstates SET value = {} WHERE entry = {}", flags, WS_CLEANING_FLAGS); sWorld->SetCleaningFlags(flags); @@ -69,7 +69,7 @@ void CharacterDatabaseCleaner::CleanDatabase() void CharacterDatabaseCleaner::CheckUnique(const char* column, const char* table, bool (*check)(uint32)) { - QueryResult result = CharacterDatabase.PQuery("SELECT DISTINCT %s FROM %s", column, table); + QueryResult result = CharacterDatabase.Query("SELECT DISTINCT {} FROM {}", column, table); if (!result) { LOG_INFO("sql.sql", "Table {} is empty.", table); @@ -82,7 +82,7 @@ void CharacterDatabaseCleaner::CheckUnique(const char* column, const char* table { Field* fields = result->Fetch(); - uint32 id = fields[0].GetUInt32(); + uint32 id = fields[0].Get<uint32>(); if (!check(id)) { @@ -146,7 +146,7 @@ bool CharacterDatabaseCleaner::TalentCheck(uint32 talent_id) void CharacterDatabaseCleaner::CleanCharacterTalent() { - CharacterDatabase.DirectPExecute("DELETE FROM character_talent WHERE specMask >= %u", 1 << MAX_TALENT_SPECS); + CharacterDatabase.DirectExecute("DELETE FROM character_talent WHERE specMask >= {}", 1 << MAX_TALENT_SPECS); CheckUnique("spell", "character_talent", &TalentCheck); } diff --git a/src/server/game/Tools/PlayerDump.cpp b/src/server/game/Tools/PlayerDump.cpp index c47267755f..45c9149e60 100644 --- a/src/server/game/Tools/PlayerDump.cpp +++ b/src/server/game/Tools/PlayerDump.cpp @@ -259,14 +259,14 @@ void PlayerDump::InitializeTables() TableStruct t; t.TableName = dumpTable.Name; - QueryResult result = CharacterDatabase.PQuery("DESC %s", dumpTable.Name); + QueryResult result = CharacterDatabase.Query("DESC {}", dumpTable.Name); // prepared statement is correct (checked at startup) so table must exist ASSERT(result); int32 i = 0; do { - std::string columnName = (*result)[0].GetString(); + std::string columnName = (*result)[0].Get<std::string>(); t.FieldIndices.emplace(columnName, i++); TableField f; @@ -538,11 +538,11 @@ inline void AppendTableDump(StringTransaction& trans, TableStruct const& tableSt for (uint32 i = 0; i < fieldSize;) { - char const* cString = fields[i].GetCString(); + std::string cString = fields[i].Get<std::string>(); ++i; // null pointer -> we have null - if (!cString) + if (cString.empty()) ss << "'NULL'"; else { @@ -604,7 +604,7 @@ void PlayerDumpWriter::PopulateGuids(ObjectGuid::LowType guid) } std::string whereStr = GenerateWhereStr(baseTable.PlayerGuid, guid); - QueryResult result = CharacterDatabase.PQuery("SELECT %s FROM %s WHERE %s", baseTable.PrimaryKey, baseTable.TableName, whereStr.c_str()); + QueryResult result = CharacterDatabase.Query("SELECT {} FROM {} WHERE {}", baseTable.PrimaryKey, baseTable.TableName, whereStr); if (!result) continue; @@ -613,19 +613,19 @@ void PlayerDumpWriter::PopulateGuids(ObjectGuid::LowType guid) switch (baseTable.StoredType) { case GUID_TYPE_ITEM: - if (ObjectGuid::LowType itemLowGuid = (*result)[0].GetUInt32()) + if (ObjectGuid::LowType itemLowGuid = (*result)[0].Get<uint32>()) _items.insert(itemLowGuid); break; case GUID_TYPE_MAIL: - if (ObjectGuid::LowType mailLowGuid = (*result)[0].GetUInt32()) + if (ObjectGuid::LowType mailLowGuid = (*result)[0].Get<uint32>()) _mails.insert(mailLowGuid); break; case GUID_TYPE_PET: - if (ObjectGuid::LowType petLowGuid = (*result)[0].GetUInt32()) + if (ObjectGuid::LowType petLowGuid = (*result)[0].Get<uint32>()) _pets.insert(petLowGuid); break; case GUID_TYPE_EQUIPMENT_SET: - if (uint64 eqSetId = (*result)[0].GetUInt64()) + if (uint64 eqSetId = (*result)[0].Get<uint64>()) _itemSets.insert(eqSetId); break; default: @@ -671,7 +671,7 @@ bool PlayerDumpWriter::AppendTable(StringTransaction& trans, ObjectGuid::LowType break; } - QueryResult result = CharacterDatabase.PQuery("SELECT * FROM %s WHERE %s", dumpTable.Name, whereStr.c_str()); + QueryResult result = CharacterDatabase.Query("SELECT * FROM {} WHERE {}", dumpTable.Name, whereStr); switch (dumpTable.Type) { case DTT_CHARACTER: @@ -681,7 +681,7 @@ bool PlayerDumpWriter::AppendTable(StringTransaction& trans, ObjectGuid::LowType int32 index = GetColumnIndexByName(tableStruct, "deleteInfos_Account"); ASSERT(index != -1); // checked at startup - if ((*result)[index].GetUInt32()) + if ((*result)[index].Get<uint32>()) return false; } break; @@ -773,7 +773,7 @@ DumpReturn PlayerDumpReader::LoadDump(std::istream& input, uint32 account, std:: if (guid && guid < sObjectMgr->GetGenerator<HighGuid::Player>().GetNextAfterMaxUsed()) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHECK_GUID); - stmt->setUInt32(0, guid); + stmt->SetData(0, guid); if (PreparedQueryResult result = CharacterDatabase.Query(stmt)) guid = sObjectMgr->GetGenerator<HighGuid::Player>().GetNextAfterMaxUsed(); // use first free if exists @@ -790,7 +790,7 @@ DumpReturn PlayerDumpReader::LoadDump(std::istream& input, uint32 account, std:: if (ObjectMgr::CheckPlayerName(name, true) == CHAR_NAME_SUCCESS) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHECK_NAME); - stmt->setString(0, name); + stmt->SetData(0, name); if (PreparedQueryResult result = CharacterDatabase.Query(stmt)) name.clear(); // use the one from the dump diff --git a/src/server/game/Warden/WardenCheckMgr.cpp b/src/server/game/Warden/WardenCheckMgr.cpp index 8ee63a2b8e..18b5755878 100644 --- a/src/server/game/Warden/WardenCheckMgr.cpp +++ b/src/server/game/Warden/WardenCheckMgr.cpp @@ -57,7 +57,7 @@ void WardenCheckMgr::LoadWardenChecks() Field* fields = result->Fetch(); - uint16 maxCheckId = fields[0].GetUInt16(); + uint16 maxCheckId = fields[0].Get<uint16>(); CheckStore.resize(maxCheckId + 1); @@ -69,8 +69,8 @@ void WardenCheckMgr::LoadWardenChecks() { fields = result->Fetch(); - uint16 id = fields[0].GetUInt16(); - uint8 checkType = fields[1].GetUInt8(); + uint16 id = fields[0].Get<uint16>(); + uint8 checkType = fields[1].Get<uint8>(); if (checkType == LUA_EVAL_CHECK && id > 9999) { @@ -78,12 +78,12 @@ void WardenCheckMgr::LoadWardenChecks() continue; } - std::string data = fields[2].GetString(); - std::string checkResult = fields[3].GetString(); - uint32 address = fields[4].GetUInt32(); - uint8 length = fields[5].GetUInt8(); - std::string str = fields[6].GetString(); - std::string comment = fields[7].GetString(); + std::string data = fields[2].Get<std::string>(); + std::string checkResult = fields[3].Get<std::string>(); + uint32 address = fields[4].Get<uint32>(); + uint8 length = fields[5].Get<uint8>(); + std::string str = fields[6].Get<std::string>(); + std::string comment = fields[7].Get<std::string>(); WardenCheck &wardenCheck = CheckStore.at(id); wardenCheck.Type = checkType; @@ -187,8 +187,8 @@ void WardenCheckMgr::LoadWardenOverrides() { Field* fields = result->Fetch(); - uint16 checkId = fields[0].GetUInt16(); - uint8 action = fields[1].GetUInt8(); + uint16 checkId = fields[0].Get<uint16>(); + uint8 action = fields[1].Get<uint8>(); // Check if action value is in range (0-2, see WardenActions enum) if (action > WARDEN_ACTION_BAN) diff --git a/src/server/game/Weather/WeatherMgr.cpp b/src/server/game/Weather/WeatherMgr.cpp index 593388ad65..0ff17a8758 100644 --- a/src/server/game/Weather/WeatherMgr.cpp +++ b/src/server/game/Weather/WeatherMgr.cpp @@ -105,15 +105,15 @@ namespace WeatherMgr { Field* fields = result->Fetch(); - uint32 zone_id = fields[0].GetUInt32(); + uint32 zone_id = fields[0].Get<uint32>(); WeatherData& wzc = mWeatherZoneMap[zone_id]; for (uint8 season = 0; season < WEATHER_SEASONS; ++season) { - wzc.data[season].rainChance = fields[season * (MAX_WEATHER_TYPE - 1) + 1].GetUInt8(); - wzc.data[season].snowChance = fields[season * (MAX_WEATHER_TYPE - 1) + 2].GetUInt8(); - wzc.data[season].stormChance = fields[season * (MAX_WEATHER_TYPE - 1) + 3].GetUInt8(); + wzc.data[season].rainChance = fields[season * (MAX_WEATHER_TYPE - 1) + 1].Get<uint8>(); + wzc.data[season].snowChance = fields[season * (MAX_WEATHER_TYPE - 1) + 2].Get<uint8>(); + wzc.data[season].stormChance = fields[season * (MAX_WEATHER_TYPE - 1) + 3].Get<uint8>(); if (wzc.data[season].rainChance > 100) { @@ -134,7 +134,7 @@ namespace WeatherMgr } } - wzc.ScriptId = sObjectMgr->GetScriptId(fields[13].GetCString()); + wzc.ScriptId = sObjectMgr->GetScriptId(fields[13].Get<std::string>()); ++count; } while (result->NextRow()); diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index dd0e87a8be..b4e04e73df 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1503,7 +1503,7 @@ void World::SetInitialWorldSettings() uint32 realm_zone = getIntConfig(CONFIG_REALM_ZONE); - LoginDatabase.PExecute("UPDATE realmlist SET icon = %u, timezone = %u WHERE id = '%d'", server_type, realm_zone, realm.Id.Realm); // One-time query + LoginDatabase.Execute("UPDATE realmlist SET icon = {}, timezone = {} WHERE id = '{}'", server_type, realm_zone, realm.Id.Realm); // One-time query ///- Custom Hook for loading DB items sScriptMgr->OnLoadCustomDatabaseTable(); @@ -1966,7 +1966,7 @@ void World::SetInitialWorldSettings() LOG_INFO("server.loading", "Initialize game time and timers"); LOG_INFO("server.loading", " "); - LoginDatabase.PExecute("INSERT INTO uptime (realmid, starttime, uptime, revision) VALUES (%u, %u, 0, '%s')", + LoginDatabase.Execute("INSERT INTO uptime (realmid, starttime, uptime, revision) VALUES ({}, {}, 0, '{}')", realm.Id.Realm, uint32(GameTime::GetStartTime().count()), GitRevision::GetFullVersion()); // One-time query m_timers[WUPDATE_WEATHERS].SetInterval(1 * IN_MILLISECONDS); @@ -2169,7 +2169,7 @@ void World::LoadAutobroadcasts() uint32 realmId = sConfigMgr->GetOption<int32>("RealmID", 0); LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_AUTOBROADCAST); - stmt->setInt32(0, realmId); + stmt->SetData(0, realmId); PreparedQueryResult result = LoginDatabase.Query(stmt); if (!result) @@ -2183,10 +2183,10 @@ void World::LoadAutobroadcasts() do { Field* fields = result->Fetch(); - uint8 id = fields[0].GetUInt8(); + uint8 id = fields[0].Get<uint8>(); - m_Autobroadcasts[id] = fields[2].GetString(); - m_AutobroadcastsWeights[id] = fields[1].GetUInt8(); + m_Autobroadcasts[id] = fields[2].Get<std::string>(); + m_AutobroadcastsWeights[id] = fields[1].Get<uint8>(); ++count; } while (result->NextRow()); @@ -2331,8 +2331,8 @@ void World::Update(uint32 diff) m_timers[WUPDATE_CLEANDB].Reset(); LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_OLD_LOGS); - stmt->setUInt32(0, sWorld->getIntConfig(CONFIG_LOGDB_CLEARTIME)); - stmt->setUInt32(1, uint32(currentGameTime.count())); + stmt->SetData(0, sWorld->getIntConfig(CONFIG_LOGDB_CLEARTIME)); + stmt->SetData(1, uint32(currentGameTime.count())); LoginDatabase.Execute(stmt); } } @@ -2392,10 +2392,10 @@ void World::Update(uint32 diff) m_timers[WUPDATE_UPTIME].Reset(); LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_UPTIME_PLAYERS); - stmt->setUInt32(0, uint32(GameTime::GetUptime().count())); - stmt->setUInt16(1, uint16(GetMaxPlayerCount())); - stmt->setUInt32(2, realm.Id.Realm); - stmt->setUInt32(3, uint32(GameTime::GetStartTime().count())); + stmt->SetData(0, uint32(GameTime::GetUptime().count())); + stmt->SetData(1, uint16(GetMaxPlayerCount())); + stmt->SetData(2, realm.Id.Realm); + stmt->SetData(3, uint32(GameTime::GetStartTime().count())); LoginDatabase.Execute(stmt); } @@ -2999,7 +2999,7 @@ void World::SendAutoBroadcast() void World::UpdateRealmCharCount(uint32 accountId) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_COUNT); - stmt->setUInt32(0, accountId); + stmt->SetData(0, accountId); _queryProcessor.AddCallback(CharacterDatabase.AsyncQuery(stmt).WithPreparedCallback(std::bind(&World::_UpdateRealmCharCount, this, std::placeholders::_1))); } @@ -3008,20 +3008,20 @@ void World::_UpdateRealmCharCount(PreparedQueryResult resultCharCount) if (resultCharCount) { Field* fields = resultCharCount->Fetch(); - uint32 accountId = fields[0].GetUInt32(); - uint8 charCount = uint8(fields[1].GetUInt64()); + uint32 accountId = fields[0].Get<uint32>(); + uint8 charCount = uint8(fields[1].Get<uint64>()); LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction(); LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_REALM_CHARACTERS_BY_REALM); - stmt->setUInt32(0, accountId); - stmt->setUInt32(1, realm.Id.Realm); + stmt->SetData(0, accountId); + stmt->SetData(1, realm.Id.Realm); trans->Append(stmt); stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_REALM_CHARACTERS); - stmt->setUInt8(0, charCount); - stmt->setUInt32(1, accountId); - stmt->setUInt32(2, realm.Id.Realm); + stmt->SetData(0, charCount); + stmt->SetData(1, accountId); + stmt->SetData(2, realm.Id.Realm); trans->Append(stmt); LoginDatabase.CommitTransaction(trans); @@ -3124,11 +3124,11 @@ void World::ResetDailyQuests() void World::LoadDBAllowedSecurityLevel() { LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_REALMLIST_SECURITY_LEVEL); - stmt->setInt32(0, int32(realm.Id.Realm)); + stmt->SetData(0, int32(realm.Id.Realm)); PreparedQueryResult result = LoginDatabase.Query(stmt); if (result) - SetPlayerSecurityLimit(AccountTypes(result->Fetch()->GetUInt8())); + SetPlayerSecurityLimit(AccountTypes(result->Fetch()->Get<uint8>())); } void World::SetPlayerSecurityLimit(AccountTypes _sec) @@ -3174,7 +3174,7 @@ void World::ResetMonthlyQuests() void World::ResetEventSeasonalQuests(uint16 event_id) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_STATUS_SEASONAL); - stmt->setUInt16(0, event_id); + stmt->SetData(0, event_id); CharacterDatabase.Execute(stmt); for (SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr) @@ -3229,10 +3229,10 @@ void World::LoadDBVersion() { Field* fields = result->Fetch(); - m_DBVersion = fields[0].GetString(); + m_DBVersion = fields[0].Get<std::string>(); // will be overwrite by config values if different and non-0 - m_int_configs[CONFIG_CLIENTCACHE_VERSION] = fields[1].GetUInt32(); + m_int_configs[CONFIG_CLIENTCACHE_VERSION] = fields[1].Get<uint32>(); } if (m_DBVersion.empty()) @@ -3249,19 +3249,19 @@ void World::LoadDBRevision() { Field* fields = resultWorld->Fetch(); - m_WorldDBRevision = fields[0].GetString(); + m_WorldDBRevision = fields[0].Get<std::string>(); } if (resultCharacter) { Field* fields = resultCharacter->Fetch(); - m_CharacterDBRevision = fields[0].GetString(); + m_CharacterDBRevision = fields[0].Get<std::string>(); } if (resultAuth) { Field* fields = resultAuth->Fetch(); - m_AuthDBRevision = fields[0].GetString(); + m_AuthDBRevision = fields[0].Get<std::string>(); } if (m_WorldDBRevision.empty()) @@ -3305,7 +3305,7 @@ void World::LoadWorldStates() do { Field* fields = result->Fetch(); - m_worldstates[fields[0].GetUInt32()] = fields[1].GetUInt32(); + m_worldstates[fields[0].Get<uint32>()] = fields[1].Get<uint32>(); } while (result->NextRow()); LOG_INFO("server.loading", ">> Loaded {} world states in {} ms", m_worldstates.size(), GetMSTimeDiffToNow(oldMSTime)); @@ -3319,15 +3319,15 @@ void World::setWorldState(uint32 index, uint64 timeValue) if (it != m_worldstates.end()) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_WORLDSTATE); - stmt->setUInt32(0, uint32(timeValue)); - stmt->setUInt32(1, index); + stmt->SetData(0, uint32(timeValue)); + stmt->SetData(1, index); CharacterDatabase.Execute(stmt); } else { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_WORLDSTATE); - stmt->setUInt32(0, index); - stmt->setUInt32(1, uint32(timeValue)); + stmt->SetData(0, index); + stmt->SetData(1, uint32(timeValue)); CharacterDatabase.Execute(stmt); } diff --git a/src/server/scripts/Commands/cs_account.cpp b/src/server/scripts/Commands/cs_account.cpp index ce0a61c840..1b042b11bd 100644 --- a/src/server/scripts/Commands/cs_account.cpp +++ b/src/server/scripts/Commands/cs_account.cpp @@ -121,7 +121,7 @@ public: { // check if 2FA already enabled auto* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_TOTP_SECRET); - stmt->setUInt32(0, accountId); + stmt->SetData(0, accountId); PreparedQueryResult result = LoginDatabase.Query(stmt); if (!result) @@ -155,8 +155,8 @@ public: Acore::Crypto::AEEncryptWithRandomIV<Acore::Crypto::AES>(pair.first->second, *masterKey); auto* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_TOTP_SECRET); - stmt->setBinary(0, pair.first->second); - stmt->setUInt32(1, accountId); + stmt->SetData(0, pair.first->second); + stmt->SetData(1, accountId); LoginDatabase.Execute(stmt); suggestions.erase(pair.first); @@ -196,7 +196,7 @@ public: Acore::Crypto::TOTP::Secret secret; { // get current TOTP secret auto* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_TOTP_SECRET); - stmt->setUInt32(0, accountId); + stmt->SetData(0, accountId); PreparedQueryResult result = LoginDatabase.Query(stmt); if (!result) @@ -215,7 +215,7 @@ public: return false; } - secret = field->GetBinary(); + secret = field->Get<Binary>(); } if (token) @@ -235,8 +235,8 @@ public: if (Acore::Crypto::TOTP::ValidateToken(secret, *token)) { auto* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_TOTP_SECRET); - stmt->setNull(0); - stmt->setUInt32(1, accountId); + stmt->SetData(0); + stmt->SetData(1, accountId); LoginDatabase.Execute(stmt); handler->SendSysMessage(LANG_2FA_REMOVE_COMPLETE); return true; @@ -273,8 +273,8 @@ public: LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_EXPANSION); - stmt->setUInt8(0, *expansion); - stmt->setUInt32(1, accountId); + stmt->SetData(0, *expansion); + stmt->SetData(1, accountId); LoginDatabase.Execute(stmt); @@ -411,22 +411,22 @@ public: do { Field* fieldsDB = result->Fetch(); - std::string name = fieldsDB[0].GetString(); - uint32 account = fieldsDB[1].GetUInt32(); + std::string name = fieldsDB[0].Get<std::string>(); + uint32 account = fieldsDB[1].Get<uint32>(); ///- Get the username, last IP and GM level of each account // No SQL injection. account is uint32. LoginDatabasePreparedStatement* loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_INFO); - loginStmt->setUInt32(0, account); + loginStmt->SetData(0, account); PreparedQueryResult resultLogin = LoginDatabase.Query(loginStmt); if (resultLogin) { Field* fieldsLogin = resultLogin->Fetch(); handler->PSendSysMessage(LANG_ACCOUNT_LIST_LINE, - fieldsLogin[0].GetCString(), name.c_str(), fieldsLogin[1].GetCString(), - fieldsDB[2].GetUInt16(), fieldsDB[3].GetUInt16(), fieldsLogin[3].GetUInt8(), - fieldsLogin[2].GetUInt8()); + fieldsLogin[0].Get<std::string>().c_str(), name.c_str(), fieldsLogin[1].Get<std::string>().c_str(), + fieldsDB[2].Get<uint16>(), fieldsDB[3].Get<uint16>(), fieldsLogin[3].Get<uint8>(), + fieldsLogin[2].Get<uint8>()); } else handler->PSendSysMessage(LANG_ACCOUNT_LIST_ERROR, name.c_str()); @@ -467,8 +467,8 @@ public: } auto* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_LOCK_COUNTRY); - stmt->setString(0, "00"); - stmt->setUInt32(1, accountId); + stmt->SetData(0, "00"); + stmt->SetData(1, accountId); LoginDatabase.Execute(stmt); handler->PSendSysMessage(LANG_COMMAND_ACCLOCKUNLOCKED); @@ -493,8 +493,8 @@ public: if (IpLocationRecord const* location = sIPLocation->GetLocationRecord(handler->GetSession()->GetRemoteAddress())) { auto* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_LOCK_COUNTRY); - stmt->setString(0, location->CountryCode); - stmt->setUInt32(1, handler->GetSession()->GetAccountId()); + stmt->SetData(0, location->CountryCode); + stmt->SetData(1, handler->GetSession()->GetAccountId()); LoginDatabase.Execute(stmt); handler->PSendSysMessage(LANG_COMMAND_ACCLOCKLOCKED); } @@ -508,8 +508,8 @@ public: else if (param == "off") { auto* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_LOCK_COUNTRY); - stmt->setString(0, "00"); - stmt->setUInt32(1, handler->GetSession()->GetAccountId()); + stmt->SetData(0, "00"); + stmt->SetData(1, handler->GetSession()->GetAccountId()); LoginDatabase.Execute(stmt); handler->PSendSysMessage(LANG_COMMAND_ACCLOCKUNLOCKED); } @@ -538,16 +538,16 @@ public: if (param == "on") { - stmt->setBool(0, true); // locked + stmt->SetData(0, true); // locked handler->PSendSysMessage(LANG_COMMAND_ACCLOCKLOCKED); } else if (param == "off") { - stmt->setBool(0, false); // unlocked + stmt->SetData(0, false); // unlocked handler->PSendSysMessage(LANG_COMMAND_ACCLOCKUNLOCKED); } - stmt->setUInt32(1, handler->GetSession()->GetAccountId()); + stmt->SetData(1, handler->GetSession()->GetAccountId()); LoginDatabase.Execute(stmt); return true; @@ -658,8 +658,8 @@ public: if (secret == "off") { auto* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_TOTP_SECRET); - stmt->setNull(0); - stmt->setUInt32(1, targetAccountId); + stmt->SetData(0); + stmt->SetData(1, targetAccountId); LoginDatabase.Execute(stmt); handler->PSendSysMessage(LANG_2FA_REMOVE_COMPLETE); return true; @@ -692,8 +692,8 @@ public: Acore::Crypto::AEEncryptWithRandomIV<Acore::Crypto::AES>(*decoded, *masterKey); auto* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_TOTP_SECRET); - stmt->setBinary(0, *decoded); - stmt->setUInt32(1, targetAccountId); + stmt->SetData(0, *decoded); + stmt->SetData(1, targetAccountId); LoginDatabase.Execute(stmt); handler->PSendSysMessage(LANG_2FA_SECRET_SET_COMPLETE, accountName.c_str()); @@ -762,8 +762,8 @@ public: LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_EXPANSION); - stmt->setUInt8(0, *expansion); - stmt->setUInt32(1, accountId); + stmt->SetData(0, *expansion); + stmt->SetData(1, accountId); LoginDatabase.Execute(stmt); @@ -841,8 +841,8 @@ public: { LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_ACCESS_GMLEVEL_TEST); - stmt->setUInt32(0, targetAccountId); - stmt->setUInt8(1, uint8(gm)); + stmt->SetData(0, targetAccountId); + stmt->SetData(1, uint8(gm)); PreparedQueryResult result = LoginDatabase.Query(stmt); @@ -868,13 +868,13 @@ public: if (gmRealmID == -1) { stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_ACCOUNT_ACCESS); - stmt->setUInt32(0, targetAccountId); + stmt->SetData(0, targetAccountId); } else { stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_ACCOUNT_ACCESS_BY_REALM); - stmt->setUInt32(0, targetAccountId); - stmt->setUInt32(1, realm.Id.Realm); + stmt->SetData(0, targetAccountId); + stmt->SetData(1, realm.Id.Realm); } LoginDatabase.Execute(stmt); @@ -883,9 +883,9 @@ public: { stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ACCOUNT_ACCESS); - stmt->setUInt32(0, targetAccountId); - stmt->setUInt8(1, uint8(gm)); - stmt->setInt32(2, gmRealmID); + stmt->SetData(0, targetAccountId); + stmt->SetData(1, uint8(gm)); + stmt->SetData(2, gmRealmID); LoginDatabase.Execute(stmt); } diff --git a/src/server/scripts/Commands/cs_ban.cpp b/src/server/scripts/Commands/cs_ban.cpp index a34e0aa672..f17e470fc4 100644 --- a/src/server/scripts/Commands/cs_ban.cpp +++ b/src/server/scripts/Commands/cs_ban.cpp @@ -292,7 +292,7 @@ public: static bool HandleBanInfoHelper(uint32 accountId, char const* accountName, ChatHandler* handler) { - QueryResult result = LoginDatabase.PQuery("SELECT FROM_UNIXTIME(bandate, '%%Y-%%m-%%d..%%H:%%I:%%s') as bandate, unbandate-bandate, active, unbandate, banreason, bannedby FROM account_banned WHERE id = '%u' ORDER BY bandate ASC", accountId); + QueryResult result = LoginDatabase.Query("SELECT FROM_UNIXTIME(bandate, '%Y-%m-%d..%H:%I:%s') as bandate, unbandate-bandate, active, unbandate, banreason, bannedby FROM account_banned WHERE id = '{}' ORDER BY bandate ASC", accountId); if (!result) { handler->PSendSysMessage(LANG_BANINFO_NOACCOUNTBAN, accountName); @@ -304,14 +304,14 @@ public: { Field* fields = result->Fetch(); - time_t unbanDate = time_t(fields[3].GetUInt32()); + time_t unbanDate = time_t(fields[3].Get<uint32>()); bool active = false; - if (fields[2].GetBool() && (fields[1].GetUInt64() == uint64(0) || unbanDate >= GameTime::GetGameTime().count())) + if (fields[2].Get<bool>() && (fields[1].Get<uint64>() == uint64(0) || unbanDate >= GameTime::GetGameTime().count())) active = true; - bool permanent = (fields[1].GetUInt64() == uint64(0)); - std::string banTime = permanent ? handler->GetAcoreString(LANG_BANINFO_INFINITE) : secsToTimeString(fields[1].GetUInt64(), true); + bool permanent = (fields[1].Get<uint64>() == uint64(0)); + std::string banTime = permanent ? handler->GetAcoreString(LANG_BANINFO_INFINITE) : secsToTimeString(fields[1].Get<uint64>(), true); handler->PSendSysMessage(LANG_BANINFO_HISTORYENTRY, - fields[0].GetCString(), banTime.c_str(), active ? handler->GetAcoreString(LANG_YES) : handler->GetAcoreString(LANG_NO), fields[4].GetCString(), fields[5].GetCString()); + fields[0].Get<std::string>().c_str(), banTime.c_str(), active ? handler->GetAcoreString(LANG_YES) : handler->GetAcoreString(LANG_NO), fields[4].Get<std::string>().c_str(), fields[5].Get<std::string>().c_str()); } while (result->NextRow()); return true; @@ -339,7 +339,7 @@ public: targetGuid = target->GetGUID(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_BANINFO); - stmt->setUInt32(0, targetGuid.GetCounter()); + stmt->SetData(0, targetGuid.GetCounter()); PreparedQueryResult result = CharacterDatabase.Query(stmt); if (!result) @@ -352,14 +352,14 @@ public: do { Field* fields = result->Fetch(); - time_t unbanDate = time_t(fields[3].GetUInt32()); + time_t unbanDate = time_t(fields[3].Get<uint32>()); bool active = false; - if (fields[2].GetUInt8() && (!fields[1].GetUInt32() || unbanDate >= GameTime::GetGameTime().count())) + if (fields[2].Get<uint8>() && (!fields[1].Get<uint32>() || unbanDate >= GameTime::GetGameTime().count())) active = true; - bool permanent = (fields[1].GetUInt32() == uint32(0)); - std::string banTime = permanent ? handler->GetAcoreString(LANG_BANINFO_INFINITE) : secsToTimeString(fields[1].GetUInt64(), true); + bool permanent = (fields[1].Get<uint32>() == uint32(0)); + std::string banTime = permanent ? handler->GetAcoreString(LANG_BANINFO_INFINITE) : secsToTimeString(fields[1].Get<uint64>(), true); handler->PSendSysMessage(LANG_BANINFO_HISTORYENTRY, - fields[0].GetCString(), banTime.c_str(), active ? handler->GetAcoreString(LANG_YES) : handler->GetAcoreString(LANG_NO), fields[4].GetCString(), fields[5].GetCString()); + fields[0].Get<std::string>().c_str(), banTime.c_str(), active ? handler->GetAcoreString(LANG_YES) : handler->GetAcoreString(LANG_NO), fields[4].Get<std::string>().c_str(), fields[5].Get<std::string>().c_str()); } while (result->NextRow()); return true; @@ -380,7 +380,7 @@ public: std::string IP = ipStr; LoginDatabase.EscapeString(IP); - QueryResult result = LoginDatabase.PQuery("SELECT ip, FROM_UNIXTIME(bandate), FROM_UNIXTIME(unbandate), unbandate-UNIX_TIMESTAMP(), banreason, bannedby, unbandate-bandate FROM ip_banned WHERE ip = '%s'", IP.c_str()); + QueryResult result = LoginDatabase.Query("SELECT ip, FROM_UNIXTIME(bandate), FROM_UNIXTIME(unbandate), unbandate-UNIX_TIMESTAMP(), banreason, bannedby, unbandate-bandate FROM ip_banned WHERE ip = '{}'", IP); if (!result) { handler->PSendSysMessage(LANG_BANINFO_NOIP); @@ -388,10 +388,10 @@ public: } Field* fields = result->Fetch(); - bool permanent = !fields[6].GetUInt64(); + bool permanent = !fields[6].Get<uint64>(); handler->PSendSysMessage(LANG_BANINFO_IPENTRY, - fields[0].GetCString(), fields[1].GetCString(), permanent ? handler->GetAcoreString(LANG_BANINFO_NEVER) : fields[2].GetCString(), - permanent ? handler->GetAcoreString(LANG_BANINFO_INFINITE) : secsToTimeString(fields[3].GetUInt64(), true).c_str(), fields[4].GetCString(), fields[5].GetCString()); + fields[0].Get<std::string>().c_str(), fields[1].Get<std::string>().c_str(), permanent ? handler->GetAcoreString(LANG_BANINFO_NEVER) : fields[2].Get<std::string>().c_str(), + permanent ? handler->GetAcoreString(LANG_BANINFO_INFINITE) : secsToTimeString(fields[3].Get<uint64>(), true).c_str(), fields[4].Get<std::string>().c_str(), fields[5].Get<std::string>().c_str()); return true; } @@ -414,7 +414,7 @@ public: else { LoginDatabasePreparedStatement* stmt2 = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BANNED_BY_USERNAME); - stmt2->setString(0, filter); + stmt2->SetData(0, filter); result = LoginDatabase.Query(stmt2); } @@ -437,13 +437,13 @@ public: do { Field* fields = result->Fetch(); - uint32 accountid = fields[0].GetUInt32(); + uint32 accountid = fields[0].Get<uint32>(); - QueryResult banResult = LoginDatabase.PQuery("SELECT account.username FROM account, account_banned WHERE account_banned.id='%u' AND account_banned.id=account.id", accountid); + QueryResult banResult = LoginDatabase.Query("SELECT account.username FROM account, account_banned WHERE account_banned.id='{}' AND account_banned.id=account.id", accountid); if (banResult) { Field* fields2 = banResult->Fetch(); - handler->PSendSysMessage("%s", fields2[0].GetCString()); + handler->PSendSysMessage("%s", fields2[0].Get<std::string>().c_str()); } } while (result->NextRow()); } @@ -457,39 +457,39 @@ public: { handler->SendSysMessage("-------------------------------------------------------------------------------"); Field* fields = result->Fetch(); - uint32 accountId = fields[0].GetUInt32(); + uint32 accountId = fields[0].Get<uint32>(); std::string accountName; // "account" case, name can be get in same query if (result->GetFieldCount() > 1) - accountName = fields[1].GetString(); + accountName = fields[1].Get<std::string>(); // "character" case, name need extract from another DB else AccountMgr::GetName(accountId, accountName); // No SQL injection. id is uint32. - QueryResult banInfo = LoginDatabase.PQuery("SELECT bandate, unbandate, bannedby, banreason FROM account_banned WHERE id = %u ORDER BY unbandate", accountId); + QueryResult banInfo = LoginDatabase.Query("SELECT bandate, unbandate, bannedby, banreason FROM account_banned WHERE id = {} ORDER BY unbandate", accountId); if (banInfo) { Field* fields2 = banInfo->Fetch(); do { - tm tmBan = Acore::Time::TimeBreakdown(fields2[0].GetUInt32()); + tm tmBan = Acore::Time::TimeBreakdown(fields2[0].Get<uint32>()); - if (fields2[0].GetUInt32() == fields2[1].GetUInt32()) + if (fields2[0].Get<uint32>() == fields2[1].Get<uint32>()) { handler->PSendSysMessage("|%-15.15s|%02d-%02d-%02d %02d:%02d| permanent |%-15.15s|%-15.15s|", accountName.c_str(), tmBan.tm_year % 100, tmBan.tm_mon + 1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min, - fields2[2].GetCString(), fields2[3].GetCString()); + fields2[2].Get<std::string>().c_str(), fields2[3].Get<std::string>().c_str()); } else { - tm tmUnban = Acore::Time::TimeBreakdown(fields2[1].GetUInt32()); + tm tmUnban = Acore::Time::TimeBreakdown(fields2[1].Get<uint32>()); handler->PSendSysMessage("|%-15.15s|%02d-%02d-%02d %02d:%02d|%02d-%02d-%02d %02d:%02d|%-15.15s|%-15.15s|", accountName.c_str(), tmBan.tm_year % 100, tmBan.tm_mon + 1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min, tmUnban.tm_year % 100, tmUnban.tm_mon + 1, tmUnban.tm_mday, tmUnban.tm_hour, tmUnban.tm_min, - fields2[2].GetCString(), fields2[3].GetCString()); + fields2[2].Get<std::string>().c_str(), fields2[3].Get<std::string>().c_str()); } } while (banInfo->NextRow()); } @@ -512,7 +512,7 @@ public: std::string filter(filterStr); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUID_BY_NAME_FILTER); - stmt->setString(0, filter); + stmt->SetData(0, filter); PreparedQueryResult result = CharacterDatabase.Query(stmt); if (!result) { @@ -529,11 +529,11 @@ public: { Field* fields = result->Fetch(); CharacterDatabasePreparedStatement* stmt2 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_BANNED_NAME); - stmt2->setUInt32(0, fields[0].GetUInt32()); + stmt2->SetData(0, fields[0].Get<uint32>()); PreparedQueryResult banResult = CharacterDatabase.Query(stmt2); if (banResult) - handler->PSendSysMessage("%s", (*banResult)[0].GetCString()); + handler->PSendSysMessage("%s", (*banResult)[0].Get<std::string>().c_str()); } while (result->NextRow()); } // Console wide output @@ -548,10 +548,10 @@ public: Field* fields = result->Fetch(); - std::string char_name = fields[1].GetString(); + std::string char_name = fields[1].Get<std::string>(); CharacterDatabasePreparedStatement* stmt2 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_BANINFO_LIST); - stmt2->setUInt32(0, fields[0].GetUInt32()); + stmt2->SetData(0, fields[0].Get<uint32>()); PreparedQueryResult banInfo = CharacterDatabase.Query(stmt2); if (banInfo) @@ -559,21 +559,21 @@ public: Field* banFields = banInfo->Fetch(); do { - tm tmBan = Acore::Time::TimeBreakdown(banFields[0].GetUInt32()); + tm tmBan = Acore::Time::TimeBreakdown(banFields[0].Get<uint32>()); - if (banFields[0].GetUInt32() == banFields[1].GetUInt32()) + if (banFields[0].Get<uint32>() == banFields[1].Get<uint32>()) { handler->PSendSysMessage("|%-15.15s|%02d-%02d-%02d %02d:%02d| permanent |%-15.15s|%-15.15s|", char_name.c_str(), tmBan.tm_year % 100, tmBan.tm_mon + 1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min, - banFields[2].GetCString(), banFields[3].GetCString()); + banFields[2].Get<std::string>().c_str(), banFields[3].Get<std::string>().c_str()); } else { - tm tmUnban = Acore::Time::TimeBreakdown(banFields[1].GetUInt32()); + tm tmUnban = Acore::Time::TimeBreakdown(banFields[1].Get<uint32>()); handler->PSendSysMessage("|%-15.15s|%02d-%02d-%02d %02d:%02d|%02d-%02d-%02d %02d:%02d|%-15.15s|%-15.15s|", char_name.c_str(), tmBan.tm_year % 100, tmBan.tm_mon + 1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min, tmUnban.tm_year % 100, tmUnban.tm_mon + 1, tmUnban.tm_mday, tmUnban.tm_hour, tmUnban.tm_min, - banFields[2].GetCString(), banFields[3].GetCString()); + banFields[2].Get<std::string>().c_str(), banFields[3].Get<std::string>().c_str()); } } while (banInfo->NextRow()); } @@ -603,7 +603,7 @@ public: else { LoginDatabasePreparedStatement* stmt2 = LoginDatabase.GetPreparedStatement(LOGIN_SEL_IP_BANNED_BY_IP); - stmt2->setString(0, filter); + stmt2->SetData(0, filter); result = LoginDatabase.Query(stmt2); } @@ -620,7 +620,7 @@ public: do { Field* fields = result->Fetch(); - handler->PSendSysMessage("%s", fields[0].GetCString()); + handler->PSendSysMessage("%s", fields[0].Get<std::string>().c_str()); } while (result->NextRow()); } // Console wide output @@ -633,20 +633,20 @@ public: { handler->SendSysMessage("-------------------------------------------------------------------------------"); Field* fields = result->Fetch(); - tm tmBan = Acore::Time::TimeBreakdown(fields[1].GetUInt32()); - if (fields[1].GetUInt32() == fields[2].GetUInt32()) + tm tmBan = Acore::Time::TimeBreakdown(fields[1].Get<uint32>()); + if (fields[1].Get<uint32>() == fields[2].Get<uint32>()) { handler->PSendSysMessage("|%-15.15s|%02d-%02d-%02d %02d:%02d| permanent |%-15.15s|%-15.15s|", - fields[0].GetCString(), tmBan.tm_year % 100, tmBan.tm_mon + 1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min, - fields[3].GetCString(), fields[4].GetCString()); + fields[0].Get<std::string>().c_str(), tmBan.tm_year % 100, tmBan.tm_mon + 1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min, + fields[3].Get<std::string>().c_str(), fields[4].Get<std::string>().c_str()); } else { - tm tmUnban = Acore::Time::TimeBreakdown(fields[2].GetUInt32()); + tm tmUnban = Acore::Time::TimeBreakdown(fields[2].Get<uint32>()); handler->PSendSysMessage("|%-15.15s|%02d-%02d-%02d %02d:%02d|%02d-%02d-%02d %02d:%02d|%-15.15s|%-15.15s|", - fields[0].GetCString(), tmBan.tm_year % 100, tmBan.tm_mon + 1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min, + fields[0].Get<std::string>().c_str(), tmBan.tm_year % 100, tmBan.tm_mon + 1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min, tmUnban.tm_year % 100, tmUnban.tm_mon + 1, tmUnban.tm_mday, tmUnban.tm_hour, tmUnban.tm_min, - fields[3].GetCString(), fields[4].GetCString()); + fields[3].Get<std::string>().c_str(), fields[4].Get<std::string>().c_str()); } } while (result->NextRow()); diff --git a/src/server/scripts/Commands/cs_character.cpp b/src/server/scripts/Commands/cs_character.cpp index 6ce2241a07..3305748dfe 100644 --- a/src/server/scripts/Commands/cs_character.cpp +++ b/src/server/scripts/Commands/cs_character.cpp @@ -120,7 +120,7 @@ public: if (isNumeric(searchString.c_str())) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_DEL_INFO_BY_GUID); - stmt->setUInt32(0, *Acore::StringTo<uint32>(searchString)); + stmt->SetData(0, *Acore::StringTo<uint32>(searchString)); result = CharacterDatabase.Query(stmt); } // search by name @@ -130,7 +130,7 @@ public: return false; stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_DEL_INFO_BY_NAME); - stmt->setString(0, searchString); + stmt->SetData(0, searchString); result = CharacterDatabase.Query(stmt); } } @@ -148,13 +148,13 @@ public: DeletedInfo info; - info.lowGuid = fields[0].GetUInt32(); - info.name = fields[1].GetString(); - info.accountId = fields[2].GetUInt32(); + info.lowGuid = fields[0].Get<uint32>(); + info.name = fields[1].Get<std::string>(); + info.accountId = fields[2].Get<uint32>(); // account name will be empty for nonexisting account AccountMgr::GetName(info.accountId, info.accountName); - info.deleteDate = time_t(fields[3].GetUInt32()); + info.deleteDate = time_t(fields[3].Get<uint32>()); foundList.push_back(info); } while (result->NextRow()); } @@ -232,16 +232,16 @@ public: } auto* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UDP_RESTORE_DELETE_INFO); - stmt->setString(0, delInfo.name); - stmt->setUInt32(1, delInfo.accountId); - stmt->setUInt32(2, delInfo.lowGuid); + stmt->SetData(0, delInfo.name); + stmt->SetData(1, delInfo.accountId); + stmt->SetData(2, delInfo.lowGuid); CharacterDatabase.Execute(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_NAME_DATA); - stmt->setUInt32(0, delInfo.lowGuid); + stmt->SetData(0, delInfo.lowGuid); if (PreparedQueryResult result = CharacterDatabase.Query(stmt)) { - sCharacterCache->AddCharacterCacheEntry(ObjectGuid(HighGuid::Player, delInfo.lowGuid), delInfo.accountId, delInfo.name, (*result)[2].GetUInt8(), (*result)[0].GetUInt8(), (*result)[1].GetUInt8(), (*result)[3].GetUInt8()); + sCharacterCache->AddCharacterCacheEntry(ObjectGuid(HighGuid::Player, delInfo.lowGuid), delInfo.accountId, delInfo.name, (*result)[2].Get<uint8>(), (*result)[0].Get<uint8>(), (*result)[1].Get<uint8>(), (*result)[3].Get<uint8>()); } } @@ -267,8 +267,8 @@ public: { // Update level and reset XP, everything else will be updated at login auto* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_LEVEL); - stmt->setUInt8(0, uint8(newLevel)); - stmt->setUInt32(1, playerGuid.GetCounter()); + stmt->SetData(0, uint8(newLevel)); + stmt->SetData(1, playerGuid.GetCounter()); CharacterDatabase.Execute(stmt); sCharacterCache->UpdateCharacterLevel(playerGuid, newLevel); @@ -363,7 +363,7 @@ public: } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHECK_NAME); - stmt->setString(0, newName); + stmt->SetData(0, newName); PreparedQueryResult result = CharacterDatabase.Query(stmt); if (result) { @@ -374,7 +374,7 @@ public: // Remove declined name from db stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_DECLINED_NAME); - stmt->setUInt32(0, player->GetGUID().GetCounter()); + stmt->SetData(0, player->GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); if (Player* target = player->GetConnectedPlayer()) @@ -387,8 +387,8 @@ public: else { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_NAME_BY_GUID); - stmt->setString(0, newName); - stmt->setUInt32(1, player->GetGUID().GetCounter()); + stmt->SetData(0, newName); + stmt->SetData(1, player->GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } @@ -412,8 +412,8 @@ public: handler->PSendSysMessage(LANG_RENAME_PLAYER_GUID, handler->playerLink(*player).c_str(), player->GetGUID().GetCounter()); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG); - stmt->setUInt16(0, uint16(AT_LOGIN_RENAME)); - stmt->setUInt32(1, player->GetGUID().GetCounter()); + stmt->SetData(0, uint16(AT_LOGIN_RENAME)); + stmt->SetData(1, player->GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } } @@ -467,8 +467,8 @@ public: { handler->PSendSysMessage(LANG_CUSTOMIZE_PLAYER_GUID, handler->playerLink(*player).c_str(), player->GetGUID().GetCounter()); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG); - stmt->setUInt16(0, static_cast<uint16>(AT_LOGIN_CUSTOMIZE)); - stmt->setUInt32(1, player->GetGUID().GetCounter()); + stmt->SetData(0, static_cast<uint16>(AT_LOGIN_CUSTOMIZE)); + stmt->SetData(1, player->GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } @@ -491,8 +491,8 @@ public: { handler->PSendSysMessage(LANG_CUSTOMIZE_PLAYER_GUID, handler->playerLink(*player).c_str(), player->GetGUID().GetCounter()); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG); - stmt->setUInt16(0, uint16(AT_LOGIN_CHANGE_FACTION)); - stmt->setUInt32(1, player->GetGUID().GetCounter()); + stmt->SetData(0, uint16(AT_LOGIN_CHANGE_FACTION)); + stmt->SetData(1, player->GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } @@ -515,8 +515,8 @@ public: { handler->PSendSysMessage(LANG_CUSTOMIZE_PLAYER_GUID, handler->playerLink(*player).c_str(), player->GetGUID().GetCounter()); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG); - stmt->setUInt16(0, uint16(AT_LOGIN_CHANGE_RACE)); - stmt->setUInt32(1, player->GetGUID().GetCounter()); + stmt->SetData(0, uint16(AT_LOGIN_CHANGE_RACE)); + stmt->SetData(1, player->GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); } diff --git a/src/server/scripts/Commands/cs_disable.cpp b/src/server/scripts/Commands/cs_disable.cpp index 32dc24fc4a..30b28f12e3 100644 --- a/src/server/scripts/Commands/cs_disable.cpp +++ b/src/server/scripts/Commands/cs_disable.cpp @@ -149,8 +149,8 @@ public: WorldDatabasePreparedStatement* stmt = nullptr; stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_DISABLES); - stmt->setUInt32(0, entry); - stmt->setUInt8(1, disableType); + stmt->SetData(0, entry); + stmt->SetData(1, disableType); PreparedQueryResult result = WorldDatabase.Query(stmt); if (result) { @@ -160,10 +160,10 @@ public: } stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_DISABLES); - stmt->setUInt32(0, entry); - stmt->setUInt8(1, disableType); - stmt->setUInt16(2, flags); - stmt->setString(3, disableComment); + stmt->SetData(0, entry); + stmt->SetData(1, disableType); + stmt->SetData(2, flags); + stmt->SetData(3, disableComment); WorldDatabase.Execute(stmt); handler->PSendSysMessage("Add Disabled %s (Id: %u) for reason %s", disableTypeStr.c_str(), entry, disableComment.c_str()); @@ -237,8 +237,8 @@ public: WorldDatabasePreparedStatement* stmt = nullptr; stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_DISABLES); - stmt->setUInt32(0, entry); - stmt->setUInt8(1, disableType); + stmt->SetData(0, entry); + stmt->SetData(1, disableType); PreparedQueryResult result = WorldDatabase.Query(stmt); if (!result) { @@ -248,8 +248,8 @@ public: } stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_DISABLES); - stmt->setUInt32(0, entry); - stmt->setUInt8(1, disableType); + stmt->SetData(0, entry); + stmt->SetData(1, disableType); WorldDatabase.Execute(stmt); handler->PSendSysMessage("Remove Disabled %s (Id: %u)", disableTypeStr.c_str(), entry); diff --git a/src/server/scripts/Commands/cs_gear.cpp b/src/server/scripts/Commands/cs_gear.cpp index df53b59657..6e3e4c97cf 100644 --- a/src/server/scripts/Commands/cs_gear.cpp +++ b/src/server/scripts/Commands/cs_gear.cpp @@ -93,22 +93,22 @@ public: if (sWorld->getIntConfig(CONFIG_MIN_LEVEL_STAT_SAVE)) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_STATS); - stmt->setUInt32(0, player->GetGUID().GetCounter()); + stmt->SetData(0, player->GetGUID().GetCounter()); PreparedQueryResult result = CharacterDatabase.Query(stmt); if (result) { Field* fields = result->Fetch(); - uint32 MaxHealth = fields[0].GetUInt32(); - uint32 Strength = fields[1].GetUInt32(); - uint32 Agility = fields[2].GetUInt32(); - uint32 Stamina = fields[3].GetUInt32(); - uint32 Intellect = fields[4].GetUInt32(); - uint32 Spirit = fields[5].GetUInt32(); - uint32 Armor = fields[6].GetUInt32(); - uint32 AttackPower = fields[7].GetUInt32(); - uint32 SpellPower = fields[8].GetUInt32(); - uint32 Resilience = fields[9].GetUInt32(); + uint32 MaxHealth = fields[0].Get<uint32>(); + uint32 Strength = fields[1].Get<uint32>(); + uint32 Agility = fields[2].Get<uint32>(); + uint32 Stamina = fields[3].Get<uint32>(); + uint32 Intellect = fields[4].Get<uint32>(); + uint32 Spirit = fields[5].Get<uint32>(); + uint32 Armor = fields[6].Get<uint32>(); + uint32 AttackPower = fields[7].Get<uint32>(); + uint32 SpellPower = fields[8].Get<uint32>(); + uint32 Resilience = fields[9].Get<uint32>(); handler->PSendSysMessage("Health: |cff00ffff%u|r - Stamina: |cff00ffff%u|r", MaxHealth, Stamina); handler->PSendSysMessage("Strength: |cff00ffff%u|r - Agility: |cff00ffff%u|r", Strength, Agility); diff --git a/src/server/scripts/Commands/cs_gm.cpp b/src/server/scripts/Commands/cs_gm.cpp index 4f16d8cecb..06fb48581b 100644 --- a/src/server/scripts/Commands/cs_gm.cpp +++ b/src/server/scripts/Commands/cs_gm.cpp @@ -157,8 +157,8 @@ public: { ///- Get the accounts with GM Level >0 LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_GM_ACCOUNTS); - stmt->setUInt8(0, uint8(SEC_MODERATOR)); - stmt->setInt32(1, int32(realm.Id.Realm)); + stmt->SetData(0, uint8(SEC_MODERATOR)); + stmt->SetData(1, int32(realm.Id.Realm)); PreparedQueryResult result = LoginDatabase.Query(stmt); if (result) @@ -169,16 +169,16 @@ public: do { Field* fields = result->Fetch(); - char const* name = fields[0].GetCString(); - uint8 security = fields[1].GetUInt8(); - uint8 max = (16 - strlen(name)) / 2; + std::string name = fields[0].Get<std::string>(); + uint8 security = fields[1].Get<uint8>(); + uint8 max = (16 - name.length()) / 2; uint8 max2 = max; - if ((max + max2 + strlen(name)) == 16) + if ((max + max2 + name.length()) == 16) max2 = max - 1; if (handler->GetSession()) - handler->PSendSysMessage("| %s GMLevel %u", name, security); + handler->PSendSysMessage("| %s GMLevel %u", name.c_str(), security); else - handler->PSendSysMessage("|%*s%s%*s| %u |", max, " ", name, max2, " ", security); + handler->PSendSysMessage("|%*s%s%*s| %u |", max, " ", name.c_str(), max2, " ", security); } while (result->NextRow()); handler->SendSysMessage("========================"); } diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp index 6f255b5925..7fbf377808 100644 --- a/src/server/scripts/Commands/cs_gobject.cpp +++ b/src/server/scripts/Commands/cs_gobject.cpp @@ -190,17 +190,17 @@ public: { if (objectId->holds_alternative<GameObjectEntry>()) { - result = WorldDatabase.PQuery("SELECT guid, id, position_x, position_y, position_z, orientation, map, phaseMask, (POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) AS order_ FROM gameobject WHERE map = '%i' AND id = '%u' ORDER BY order_ ASC LIMIT 1", + result = WorldDatabase.Query("SELECT guid, id, position_x, position_y, position_z, orientation, map, phaseMask, (POW(position_x - '{}', 2) + POW(position_y - '{}', 2) + POW(position_z - '{}', 2)) AS order_ FROM gameobject WHERE map = '{}' AND id = '{}' ORDER BY order_ ASC LIMIT 1", player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetMapId(), static_cast<uint32>(objectId->get<GameObjectEntry>())); } else { std::string name = std::string(objectId->get<std::string_view>()); WorldDatabase.EscapeString(name); - result = WorldDatabase.PQuery( - "SELECT guid, id, position_x, position_y, position_z, orientation, map, phaseMask, (POW(position_x - %f, 2) + POW(position_y - %f, 2) + POW(position_z - %f, 2)) AS order_ " - "FROM gameobject LEFT JOIN gameobject_template ON gameobject_template.entry = gameobject.id WHERE map = %i AND name LIKE '%%%s%%' ORDER BY order_ ASC LIMIT 1", - player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetMapId(), name.c_str()); + result = WorldDatabase.Query( + "SELECT guid, id, position_x, position_y, position_z, orientation, map, phaseMask, (POW(position_x - {}, 2) + POW(position_y - {}, 2) + POW(position_z - {}, 2)) AS order_ " + "FROM gameobject LEFT JOIN gameobject_template ON gameobject_template.entry = gameobject.id WHERE map = {} AND name LIKE '%{}%' ORDER BY order_ ASC LIMIT 1", + player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetMapId(), name); } } else @@ -225,11 +225,11 @@ public: else eventFilter << ')'; - result = WorldDatabase.PQuery("SELECT gameobject.guid, id, position_x, position_y, position_z, orientation, map, phaseMask, " - "(POW(position_x - %f, 2) + POW(position_y - %f, 2) + POW(position_z - %f, 2)) AS order_ FROM gameobject " - "LEFT OUTER JOIN game_event_gameobject on gameobject.guid = game_event_gameobject.guid WHERE map = '%i' %s ORDER BY order_ ASC LIMIT 10", + result = WorldDatabase.Query("SELECT gameobject.guid, id, position_x, position_y, position_z, orientation, map, phaseMask, " + "(POW(position_x - {}, 2) + POW(position_y - {}, 2) + POW(position_z - {}, 2)) AS order_ FROM gameobject " + "LEFT OUTER JOIN game_event_gameobject on gameobject.guid = game_event_gameobject.guid WHERE map = '{}' {} ORDER BY order_ ASC LIMIT 10", handler->GetSession()->GetPlayer()->GetPositionX(), handler->GetSession()->GetPlayer()->GetPositionY(), handler->GetSession()->GetPlayer()->GetPositionZ(), - handler->GetSession()->GetPlayer()->GetMapId(), eventFilter.str().c_str()); + handler->GetSession()->GetPlayer()->GetMapId(), eventFilter.str()); } if (!result) @@ -248,14 +248,14 @@ public: do { Field* fields = result->Fetch(); - guidLow = fields[0].GetUInt32(); - id = fields[1].GetUInt32(); - x = fields[2].GetFloat(); - y = fields[3].GetFloat(); - z = fields[4].GetFloat(); - o = fields[5].GetFloat(); - mapId = fields[6].GetUInt16(); - phase = fields[7].GetUInt32(); + guidLow = fields[0].Get<uint32>(); + id = fields[1].Get<uint32>(); + x = fields[2].Get<float>(); + y = fields[3].Get<float>(); + z = fields[4].Get<float>(); + o = fields[5].Get<float>(); + mapId = fields[6].Get<uint16>(); + phase = fields[7].Get<uint32>(); poolId = sPoolMgr->IsPartOfAPool<GameObject>(guidLow); if (!poolId || sPoolMgr->IsSpawnedObject<GameObject>(guidLow)) found = true; @@ -457,15 +457,15 @@ public: Player* player = handler->GetSession()->GetPlayer(); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_GAMEOBJECT_NEAREST); - stmt->setFloat(0, player->GetPositionX()); - stmt->setFloat(1, player->GetPositionY()); - stmt->setFloat(2, player->GetPositionZ()); - stmt->setUInt32(3, player->GetMapId()); - stmt->setFloat(4, player->GetPositionX()); - stmt->setFloat(5, player->GetPositionY()); - stmt->setFloat(6, player->GetPositionZ()); - stmt->setFloat(7, distance * distance); - stmt->setUInt32(8, player->GetPhaseMask()); + stmt->SetData(0, player->GetPositionX()); + stmt->SetData(1, player->GetPositionY()); + stmt->SetData(2, player->GetPositionZ()); + stmt->SetData(3, player->GetMapId()); + stmt->SetData(4, player->GetPositionX()); + stmt->SetData(5, player->GetPositionY()); + stmt->SetData(6, player->GetPositionZ()); + stmt->SetData(7, distance * distance); + stmt->SetData(8, player->GetPhaseMask()); PreparedQueryResult result = WorldDatabase.Query(stmt); if (result) @@ -473,12 +473,12 @@ public: do { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); - uint32 entry = fields[1].GetUInt32(); - float x = fields[2].GetFloat(); - float y = fields[3].GetFloat(); - float z = fields[4].GetFloat(); - uint16 mapId = fields[5].GetUInt16(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); + uint32 entry = fields[1].Get<uint32>(); + float x = fields[2].Get<float>(); + float y = fields[3].Get<float>(); + float z = fields[4].Get<float>(); + uint16 mapId = fields[5].Get<uint16>(); GameObjectTemplate const* gameObjectInfo = sObjectMgr->GetGameObjectTemplate(entry); diff --git a/src/server/scripts/Commands/cs_item.cpp b/src/server/scripts/Commands/cs_item.cpp index 248b4a186e..d3edb11339 100644 --- a/src/server/scripts/Commands/cs_item.cpp +++ b/src/server/scripts/Commands/cs_item.cpp @@ -73,10 +73,10 @@ public: // Check existence of item in recovery table CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_RECOVERY_ITEM); - stmt->setUInt32(0, restoreId); + stmt->SetData(0, restoreId); PreparedQueryResult fields = CharacterDatabase.Query(stmt); - if (!fields || !(*fields)[1].GetUInt32() || (*fields)[3].GetUInt32() != player.GetGUID().GetCounter()) + if (!fields || !(*fields)[1].Get<uint32>() || (*fields)[3].Get<uint32>() != player.GetGUID().GetCounter()) { handler->SendSysMessage(LANG_ITEM_RESTORE_MISSING); handler->SetSentErrorMessage(true); @@ -84,8 +84,8 @@ public: } // Mail item to player - uint32 itemEntry = (*fields)[1].GetUInt32(); - uint32 itemCount = (*fields)[2].GetUInt32(); + uint32 itemEntry = (*fields)[1].Get<uint32>(); + uint32 itemCount = (*fields)[2].Get<uint32>(); if (Player* onlinePlayer = player.GetConnectedPlayer()) { @@ -112,7 +112,7 @@ public: // Remove from recovery table CharacterDatabasePreparedStatement* delStmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_RECOVERY_ITEM_BY_RECOVERY_ID); - delStmt->setUInt32(0, (*fields)[0].GetUInt32()); + delStmt->SetData(0, (*fields)[0].Get<uint32>()); CharacterDatabase.Execute(delStmt); std::string nameLink = handler->playerLink(player.GetName()); @@ -130,7 +130,7 @@ public: } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_RECOVERY_ITEM_LIST); - stmt->setUInt32(0, player.GetGUID().GetCounter()); + stmt->SetData(0, player.GetGUID().GetCounter()); PreparedQueryResult disposedItems = CharacterDatabase.Query(stmt); if (!disposedItems) @@ -143,9 +143,9 @@ public: do { Field* fields = disposedItems->Fetch(); - uint32 id = fields[0].GetUInt32(); - uint32 itemId = fields[1].GetUInt32(); - uint32 count = fields[2].GetUInt32(); + uint32 id = fields[0].Get<uint32>(); + uint32 itemId = fields[1].Get<uint32>(); + uint32 count = fields[2].Get<uint32>(); std::string itemName = ""; if (ItemTemplate const* item = sObjectMgr->GetItemTemplate(itemId)) @@ -265,8 +265,8 @@ public: ObjectGuid::LowType guid = player.GetGUID().GetCounter(); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_INVENTORY_ITEM_BY_ENTRY_AND_OWNER); - stmt->setUInt32(0, itemId); - stmt->setUInt32(1, guid); + stmt->SetData(0, itemId); + stmt->SetData(1, guid); PreparedQueryResult result = CharacterDatabase.Query(stmt); @@ -275,24 +275,24 @@ public: if (iece->reqhonorpoints) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_HONORPOINTS); - stmt->setUInt32(0, guid); + stmt->SetData(0, guid); PreparedQueryResult queryResult = CharacterDatabase.Query(stmt); if (queryResult) { Field* fields = queryResult->Fetch(); - if ((fields[0].GetUInt32() + iece->reqhonorpoints) > sWorld->getIntConfig(CONFIG_MAX_HONOR_POINTS)) + if ((fields[0].Get<uint32>() + iece->reqhonorpoints) > sWorld->getIntConfig(CONFIG_MAX_HONOR_POINTS)) { - handler->PSendSysMessage(LANG_CMD_ITEM_REFUND_MAX_HONOR, item->Name1, item->ItemId, sWorld->getIntConfig(CONFIG_MAX_HONOR_POINTS), fields[0].GetUInt32(), iece->reqhonorpoints); + handler->PSendSysMessage(LANG_CMD_ITEM_REFUND_MAX_HONOR, item->Name1, item->ItemId, sWorld->getIntConfig(CONFIG_MAX_HONOR_POINTS), fields[0].Get<uint32>(), iece->reqhonorpoints); handler->SetSentErrorMessage(true); return false; } } stmt = CharacterDatabase.GetPreparedStatement(CHAR_UDP_CHAR_HONOR_POINTS_ACCUMULATIVE); - stmt->setUInt32(0, iece->reqhonorpoints); - stmt->setUInt32(1, guid); + stmt->SetData(0, iece->reqhonorpoints); + stmt->SetData(1, guid); trans->Append(stmt); handler->PSendSysMessage(LANG_CMD_ITEM_REFUNDED_HONOR, item->Name1, item->ItemId, iece->reqhonorpoints); } @@ -300,24 +300,24 @@ public: if (iece->reqarenapoints) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_ARENAPOINTS); - stmt->setUInt32(0, guid); + stmt->SetData(0, guid); PreparedQueryResult queryResult = CharacterDatabase.Query(stmt); if (queryResult) { Field* fields = queryResult->Fetch(); - if ((fields[0].GetUInt32() + iece->reqhonorpoints) > sWorld->getIntConfig(CONFIG_MAX_ARENA_POINTS)) + if ((fields[0].Get<uint32>() + iece->reqhonorpoints) > sWorld->getIntConfig(CONFIG_MAX_ARENA_POINTS)) { - handler->PSendSysMessage(LANG_CMD_ITEM_REFUND_MAX_AP, item->Name1, item->ItemId, sWorld->getIntConfig(CONFIG_MAX_ARENA_POINTS), fields[0].GetUInt32(), iece->reqarenapoints); + handler->PSendSysMessage(LANG_CMD_ITEM_REFUND_MAX_AP, item->Name1, item->ItemId, sWorld->getIntConfig(CONFIG_MAX_ARENA_POINTS), fields[0].Get<uint32>(), iece->reqarenapoints); handler->SetSentErrorMessage(true); return false; } } stmt = CharacterDatabase.GetPreparedStatement(CHAR_UDP_CHAR_ARENA_POINTS_ACCUMULATIVE); - stmt->setUInt32(0, iece->reqarenapoints); - stmt->setUInt32(1, guid); + stmt->SetData(0, iece->reqarenapoints); + stmt->SetData(1, guid); trans->Append(stmt); handler->PSendSysMessage(LANG_CMD_ITEM_REFUNDED_AP, item->Name1, item->ItemId, iece->reqarenapoints); } @@ -358,11 +358,11 @@ public: Field* fields = result->Fetch(); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INVENTORY_BY_ITEM); - stmt->setUInt32(0, fields[0].GetUInt32()); + stmt->SetData(0, fields[0].Get<uint32>()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE); - stmt->setUInt32(0, fields[0].GetUInt32()); + stmt->SetData(0, fields[0].Get<uint32>()); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); diff --git a/src/server/scripts/Commands/cs_list.cpp b/src/server/scripts/Commands/cs_list.cpp index 137a55f689..855ce22c95 100644 --- a/src/server/scripts/Commands/cs_list.cpp +++ b/src/server/scripts/Commands/cs_list.cpp @@ -85,18 +85,18 @@ public: QueryResult result; uint32 creatureCount = 0; - result = WorldDatabase.PQuery("SELECT COUNT(guid) FROM creature WHERE id='%u'", uint32(creatureId)); + result = WorldDatabase.Query("SELECT COUNT(guid) FROM creature WHERE id='{}'", uint32(creatureId)); if (result) - creatureCount = (*result)[0].GetUInt64(); + creatureCount = (*result)[0].Get<uint64>(); if (handler->GetSession()) { Player* player = handler->GetSession()->GetPlayer(); - result = WorldDatabase.PQuery("SELECT guid, position_x, position_y, position_z, map, (POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) AS order_ FROM creature WHERE id = '%u' ORDER BY order_ ASC LIMIT %u", + result = WorldDatabase.Query("SELECT guid, position_x, position_y, position_z, map, (POW(position_x - '{}', 2) + POW(position_y - '{}', 2) + POW(position_z - '{}', 2)) AS order_ FROM creature WHERE id = '{}' ORDER BY order_ ASC LIMIT {}", player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), uint32(creatureId), count); } else - result = WorldDatabase.PQuery("SELECT guid, position_x, position_y, position_z, map FROM creature WHERE id = '%u' LIMIT %u", + result = WorldDatabase.Query("SELECT guid, position_x, position_y, position_z, map FROM creature WHERE id = '{}' LIMIT {}", uint32(creatureId), count); if (result) @@ -104,11 +104,11 @@ public: do { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); - float x = fields[1].GetFloat(); - float y = fields[2].GetFloat(); - float z = fields[3].GetFloat(); - uint16 mapId = fields[4].GetUInt16(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); + float x = fields[1].Get<float>(); + float y = fields[2].Get<float>(); + float z = fields[3].Get<float>(); + uint16 mapId = fields[4].Get<uint16>(); bool liveFound = false; // Get map (only support base map from console) @@ -175,15 +175,15 @@ public: uint32 inventoryCount = 0; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_INVENTORY_COUNT_ITEM); - stmt->setUInt32(0, itemId); + stmt->SetData(0, itemId); result = CharacterDatabase.Query(stmt); if (result) - inventoryCount = (*result)[0].GetUInt64(); + inventoryCount = (*result)[0].Get<uint64>(); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_INVENTORY_ITEM_BY_ENTRY); - stmt->setUInt32(0, itemId); - stmt->setUInt32(1, count); + stmt->SetData(0, itemId); + stmt->SetData(1, count); result = CharacterDatabase.Query(stmt); if (result) @@ -191,12 +191,12 @@ public: do { Field* fields = result->Fetch(); - uint32 itemGuid = fields[0].GetUInt32(); - uint32 itemBag = fields[1].GetUInt32(); - uint8 itemSlot = fields[2].GetUInt8(); - uint32 ownerGuid = fields[3].GetUInt32(); - uint32 ownerAccountId = fields[4].GetUInt32(); - std::string ownerName = fields[5].GetString(); + uint32 itemGuid = fields[0].Get<uint32>(); + uint32 itemBag = fields[1].Get<uint32>(); + uint8 itemSlot = fields[2].Get<uint8>(); + uint32 ownerGuid = fields[3].Get<uint32>(); + uint32 ownerAccountId = fields[4].Get<uint32>(); + std::string ownerName = fields[5].Get<std::string>(); char const* itemPos = nullptr; if (Player::IsEquipmentPos(itemBag, itemSlot)) @@ -224,17 +224,17 @@ public: uint32 mailCount = 0; stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_MAIL_COUNT_ITEM); - stmt->setUInt32(0, itemId); + stmt->SetData(0, itemId); result = CharacterDatabase.Query(stmt); if (result) - mailCount = (*result)[0].GetUInt64(); + mailCount = (*result)[0].Get<uint64>(); if (count > 0) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_MAIL_ITEMS_BY_ENTRY); - stmt->setUInt32(0, itemId); - stmt->setUInt32(1, count); + stmt->SetData(0, itemId); + stmt->SetData(1, count); result = CharacterDatabase.Query(stmt); } else @@ -245,13 +245,13 @@ public: do { Field* fields = result->Fetch(); - ObjectGuid::LowType itemGuid = fields[0].GetUInt32(); - ObjectGuid::LowType itemSender = fields[1].GetUInt32(); - uint32 itemReceiver = fields[2].GetUInt32(); - uint32 itemSenderAccountId = fields[3].GetUInt32(); - std::string itemSenderName = fields[4].GetString(); - uint32 itemReceiverAccount = fields[5].GetUInt32(); - std::string itemReceiverName = fields[6].GetString(); + ObjectGuid::LowType itemGuid = fields[0].Get<uint32>(); + ObjectGuid::LowType itemSender = fields[1].Get<uint32>(); + uint32 itemReceiver = fields[2].Get<uint32>(); + uint32 itemSenderAccountId = fields[3].Get<uint32>(); + std::string itemSenderName = fields[4].Get<std::string>(); + uint32 itemReceiverAccount = fields[5].Get<uint32>(); + std::string itemReceiverName = fields[6].Get<std::string>(); char const* itemPos = "[in mail]"; @@ -271,17 +271,17 @@ public: uint32 auctionCount = 0; stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_AUCTIONHOUSE_COUNT_ITEM); - stmt->setUInt32(0, itemId); + stmt->SetData(0, itemId); result = CharacterDatabase.Query(stmt); if (result) - auctionCount = (*result)[0].GetUInt64(); + auctionCount = (*result)[0].Get<uint64>(); if (count > 0) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_AUCTIONHOUSE_ITEM_BY_ENTRY); - stmt->setUInt32(0, itemId); - stmt->setUInt32(1, count); + stmt->SetData(0, itemId); + stmt->SetData(1, count); result = CharacterDatabase.Query(stmt); } else @@ -292,10 +292,10 @@ public: do { Field* fields = result->Fetch(); - uint32 itemGuid = fields[0].GetUInt32(); - uint32 owner = fields[1].GetUInt32(); - uint32 ownerAccountId = fields[2].GetUInt32(); - std::string ownerName = fields[3].GetString(); + uint32 itemGuid = fields[0].Get<uint32>(); + uint32 owner = fields[1].Get<uint32>(); + uint32 ownerAccountId = fields[2].Get<uint32>(); + std::string ownerName = fields[3].Get<std::string>(); char const* itemPos = "[in auction]"; @@ -308,15 +308,15 @@ public: uint32 guildCount = 0; stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_BANK_COUNT_ITEM); - stmt->setUInt32(0, itemId); + stmt->SetData(0, itemId); result = CharacterDatabase.Query(stmt); if (result) - guildCount = (*result)[0].GetUInt64(); + guildCount = (*result)[0].Get<uint64>(); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_BANK_ITEM_BY_ENTRY); - stmt->setUInt32(0, itemId); - stmt->setUInt32(1, count); + stmt->SetData(0, itemId); + stmt->SetData(1, count); result = CharacterDatabase.Query(stmt); if (result) @@ -324,9 +324,9 @@ public: do { Field* fields = result->Fetch(); - uint32 itemGuid = fields[0].GetUInt32(); - uint32 guildGuid = fields[1].GetUInt32(); - std::string guildName = fields[2].GetString(); + uint32 itemGuid = fields[0].Get<uint32>(); + uint32 guildGuid = fields[1].Get<uint32>(); + std::string guildName = fields[2].Get<std::string>(); char const* itemPos = "[in guild bank]"; @@ -372,18 +372,18 @@ public: QueryResult result; uint32 objectCount = 0; - result = WorldDatabase.PQuery("SELECT COUNT(guid) FROM gameobject WHERE id='%u'", uint32(gameObjectId)); + result = WorldDatabase.Query("SELECT COUNT(guid) FROM gameobject WHERE id='{}'", uint32(gameObjectId)); if (result) - objectCount = (*result)[0].GetUInt64(); + objectCount = (*result)[0].Get<uint64>(); if (handler->GetSession()) { Player* player = handler->GetSession()->GetPlayer(); - result = WorldDatabase.PQuery("SELECT guid, position_x, position_y, position_z, map, id, (POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) AS order_ FROM gameobject WHERE id = '%u' ORDER BY order_ ASC LIMIT %u", + result = WorldDatabase.Query("SELECT guid, position_x, position_y, position_z, map, id, (POW(position_x - '{}', 2) + POW(position_y - '{}', 2) + POW(position_z - '{}', 2)) AS order_ FROM gameobject WHERE id = '{}' ORDER BY order_ ASC LIMIT {}", player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), uint32(gameObjectId), count); } else - result = WorldDatabase.PQuery("SELECT guid, position_x, position_y, position_z, map, id FROM gameobject WHERE id = '%u' LIMIT %u", + result = WorldDatabase.Query("SELECT guid, position_x, position_y, position_z, map, id FROM gameobject WHERE id = '{}' LIMIT {}", uint32(gameObjectId), count); if (result) @@ -391,12 +391,12 @@ public: do { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); - float x = fields[1].GetFloat(); - float y = fields[2].GetFloat(); - float z = fields[3].GetFloat(); - uint16 mapId = fields[4].GetUInt16(); - uint32 entry = fields[5].GetUInt32(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); + float x = fields[1].Get<float>(); + float y = fields[2].Get<float>(); + float z = fields[3].Get<float>(); + uint16 mapId = fields[4].Get<uint16>(); + uint32 entry = fields[5].Get<uint32>(); bool liveFound = false; // Get map (only support base map from console) diff --git a/src/server/scripts/Commands/cs_lookup.cpp b/src/server/scripts/Commands/cs_lookup.cpp index 0905ecbe71..d4f2ce45b8 100644 --- a/src/server/scripts/Commands/cs_lookup.cpp +++ b/src/server/scripts/Commands/cs_lookup.cpp @@ -1617,7 +1617,7 @@ public: } LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BY_IP); - stmt->setStringView(0, *ip); + stmt->SetData(0, *ip); PreparedQueryResult result = LoginDatabase.Query(stmt); return LookupPlayerSearchCommand(result, *limit ? *limit : -1, handler); @@ -1631,7 +1631,7 @@ public: } LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_LIST_BY_NAME); - stmt->setString(0, account); + stmt->SetData(0, account); PreparedQueryResult result = LoginDatabase.Query(stmt); return LookupPlayerSearchCommand(result, *limit ? *limit : -1, handler); @@ -1640,7 +1640,7 @@ public: static bool HandleLookupPlayerEmailCommand(ChatHandler* handler, std::string email, Optional<int32> limit) { LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_LIST_BY_EMAIL); - stmt->setString(0, email); + stmt->SetData(0, email); PreparedQueryResult result = LoginDatabase.Query(stmt); return LookupPlayerSearchCommand(result, *limit ? *limit : -1, handler); @@ -1668,11 +1668,11 @@ public: } Field* fields = result->Fetch(); - uint32 accountId = fields[0].GetUInt32(); - std::string accountName = fields[1].GetString(); + uint32 accountId = fields[0].Get<uint32>(); + std::string accountName = fields[1].Get<std::string>(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_GUID_NAME_BY_ACC); - stmt->setUInt32(0, accountId); + stmt->SetData(0, accountId); PreparedQueryResult result2 = CharacterDatabase.Query(stmt); if (result2) @@ -1682,8 +1682,8 @@ public: do { Field* characterFields = result2->Fetch(); - ObjectGuid::LowType guid = characterFields[0].GetUInt32(); - std::string name = characterFields[1].GetString(); + ObjectGuid::LowType guid = characterFields[0].Get<uint32>(); + std::string name = characterFields[1].Get<std::string>(); uint8 plevel = 0, prace = 0, pclass = 0; bool online = ObjectAccessor::FindPlayerByLowGUID(guid) != nullptr; diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 5f35e58d2c..ac474772d6 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1981,7 +1981,7 @@ public: // Query informations from the DB stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_PINFO); - stmt->setUInt32(0, lowguid); + stmt->SetData(0, lowguid); PreparedQueryResult charInfoResult = CharacterDatabase.Query(stmt); if (!charInfoResult) @@ -1990,17 +1990,17 @@ public: } Field* fields = charInfoResult->Fetch(); - totalPlayerTime = fields[0].GetUInt32(); - level = fields[1].GetUInt8(); - money = fields[2].GetUInt32(); - accId = fields[3].GetUInt32(); - raceid = fields[4].GetUInt8(); - classid = fields[5].GetUInt8(); - mapId = fields[6].GetUInt16(); - areaId = fields[7].GetUInt16(); - gender = fields[8].GetUInt8(); - uint32 health = fields[9].GetUInt32(); - uint32 playerFlags = fields[10].GetUInt32(); + totalPlayerTime = fields[0].Get<uint32>(); + level = fields[1].Get<uint8>(); + money = fields[2].Get<uint32>(); + accId = fields[3].Get<uint32>(); + raceid = fields[4].Get<uint8>(); + classid = fields[5].Get<uint8>(); + mapId = fields[6].Get<uint16>(); + areaId = fields[7].Get<uint16>(); + gender = fields[8].Get<uint8>(); + uint32 health = fields[9].Get<uint32>(); + uint32 playerFlags = fields[10].Get<uint32>(); if (!health || playerFlags & PLAYER_FLAGS_GHOST) { @@ -2014,23 +2014,23 @@ public: // Query the prepared statement for login data loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO); - loginStmt->setInt32(0, int32(realm.Id.Realm)); - loginStmt->setUInt32(1, accId); + loginStmt->SetData(0, int32(realm.Id.Realm)); + loginStmt->SetData(1, accId); PreparedQueryResult accInfoResult = LoginDatabase.Query(loginStmt); if (accInfoResult) { Field* fields = accInfoResult->Fetch(); - userName = fields[0].GetString(); - security = fields[1].GetUInt8(); + userName = fields[0].Get<std::string>(); + security = fields[1].Get<uint8>(); // Only fetch these fields if commander has sufficient rights) if (!handler->GetSession() || handler->GetSession()->GetSecurity() >= AccountTypes(security)) { - eMail = fields[2].GetString(); - regMail = fields[3].GetString(); - lastIp = fields[4].GetString(); - lastLogin = fields[5].GetString(); + eMail = fields[2].Get<std::string>(); + regMail = fields[3].Get<std::string>(); + lastIp = fields[4].Get<std::string>(); + lastLogin = fields[5].Get<std::string>(); if (IpLocationRecord const* location = sIPLocation->GetLocationRecord(lastIp)) { @@ -2047,12 +2047,12 @@ public: lastLogin = handler->GetAcoreString(LANG_UNAUTHORIZED); } - muteTime = fields[6].GetUInt64(); - muteReason = fields[7].GetString(); - muteBy = fields[8].GetString(); - failedLogins = fields[9].GetUInt32(); - locked = fields[10].GetUInt8(); - OS = fields[11].GetString(); + muteTime = fields[6].Get<uint64>(); + muteReason = fields[7].Get<std::string>(); + muteBy = fields[8].Get<std::string>(); + failedLogins = fields[9].Get<uint32>(); + locked = fields[10].Get<uint8>(); + OS = fields[11].Get<std::string>(); } // Creates a chat link to the character. Returns nameLink @@ -2060,61 +2060,61 @@ public: // Returns banType, banTime, bannedBy, banreason LoginDatabasePreparedStatement* banQuery = LoginDatabase.GetPreparedStatement(LOGIN_SEL_PINFO_BANS); - banQuery->setUInt32(0, accId); + banQuery->SetData(0, accId); PreparedQueryResult accBannedResult = LoginDatabase.Query(banQuery); if (!accBannedResult) { banType = handler->GetAcoreString(LANG_CHARACTER); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_BANS); - stmt->setUInt32(0, lowguid); + stmt->SetData(0, lowguid); accBannedResult = CharacterDatabase.Query(stmt); } if (accBannedResult) { Field* fields = accBannedResult->Fetch(); - banTime = int64(fields[1].GetUInt64() ? 0 : fields[0].GetUInt32()); - bannedBy = fields[2].GetString(); - banReason = fields[3].GetString(); + banTime = int64(fields[1].Get<uint64>() ? 0 : fields[0].Get<uint32>()); + bannedBy = fields[2].Get<std::string>(); + banReason = fields[3].Get<std::string>(); } // Can be used to query data from World database WorldDatabasePreparedStatement* xpQuery = WorldDatabase.GetPreparedStatement(WORLD_SEL_REQ_XP); - xpQuery->setUInt8(0, level); + xpQuery->SetData(0, level); PreparedQueryResult xpResult = WorldDatabase.Query(xpQuery); if (xpResult) { Field* fields = xpResult->Fetch(); - xptotal = fields[0].GetUInt32(); + xptotal = fields[0].Get<uint32>(); } // Can be used to query data from Characters database CharacterDatabasePreparedStatement* charXpQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_XP); - charXpQuery->setUInt32(0, lowguid); + charXpQuery->SetData(0, lowguid); PreparedQueryResult charXpResult = CharacterDatabase.Query(charXpQuery); if (charXpResult) { Field* fields = charXpResult->Fetch(); - xp = fields[0].GetUInt32(); - ObjectGuid::LowType gguid = fields[1].GetUInt32(); + xp = fields[0].Get<uint32>(); + ObjectGuid::LowType gguid = fields[1].Get<uint32>(); if (gguid != 0) { CharacterDatabasePreparedStatement* guildQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUILD_MEMBER_EXTENDED); - guildQuery->setUInt32(0, lowguid); + guildQuery->SetData(0, lowguid); PreparedQueryResult guildInfoResult = CharacterDatabase.Query(guildQuery); if (guildInfoResult) { Field* guildInfoFields = guildInfoResult->Fetch(); - guildId = guildInfoFields[0].GetUInt32(); - guildName = guildInfoFields[1].GetString(); - guildRank = guildInfoFields[2].GetString(); - note = guildInfoFields[3].GetString(); - officeNote = guildInfoFields[4].GetString(); + guildId = guildInfoFields[0].Get<uint32>(); + guildName = guildInfoFields[1].Get<std::string>(); + guildRank = guildInfoFields[2].Get<std::string>(); + note = guildInfoFields[3].Get<std::string>(); + officeNote = guildInfoFields[4].Get<std::string>(); } } } @@ -2306,14 +2306,14 @@ public: // Mail Data - an own query, because it may or may not be useful. // SQL: "SELECT SUM(CASE WHEN (checked & 1) THEN 1 ELSE 0 END) AS 'readmail', COUNT(*) AS 'totalmail' FROM mail WHERE `receiver` = ?" CharacterDatabasePreparedStatement* mailQuery = CharacterDatabase.GetPreparedStatement(CHAR_SEL_PINFO_MAILS); - mailQuery->setUInt32(0, lowguid); + mailQuery->SetData(0, lowguid); PreparedQueryResult mailInfoResult = CharacterDatabase.Query(mailQuery); if (mailInfoResult) { Field* fields = mailInfoResult->Fetch(); - uint32 readmail = uint32(fields[0].GetDouble()); - uint32 totalmail = uint32(fields[1].GetUInt64()); + uint32 readmail = uint32(fields[0].Get<double>()); + uint32 totalmail = uint32(fields[1].Get<uint64>()); // Output XXI. LANG_INFO_CHR_MAILS if at least one mail is given if (totalmail >= 1) @@ -2412,7 +2412,7 @@ public: // Target is online, mute will be in effect right away. int64 muteTime = GameTime::GetGameTime().count() + notSpeakTime * MINUTE; target->GetSession()->m_muteTime = muteTime; - stmt->setInt64(0, muteTime); + stmt->SetData(0, muteTime); std::string nameLink = handler->playerLink(player->GetName()); if (sWorld->getBoolConfig(CONFIG_SHOW_MUTE_IN_WORLD)) @@ -2425,19 +2425,19 @@ public: else { // Target is offline, mute will be in effect starting from the next login. - stmt->setInt32(0, -int32(notSpeakTime * MINUTE)); + stmt->SetData(0, -int32(notSpeakTime * MINUTE)); } - stmt->setString(1, muteReasonStr); - stmt->setString(2, muteBy); - stmt->setUInt32(3, accountId); + stmt->SetData(1, muteReasonStr); + stmt->SetData(2, muteBy); + stmt->SetData(3, accountId); LoginDatabase.Execute(stmt); stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ACCOUNT_MUTE); - stmt->setUInt32(0, accountId); - stmt->setUInt32(1, notSpeakTime); - stmt->setString(2, muteBy); - stmt->setString(3, muteReasonStr); + stmt->SetData(0, accountId); + stmt->SetData(1, notSpeakTime); + stmt->SetData(2, muteBy); + stmt->SetData(3, muteReasonStr); LoginDatabase.Execute(stmt); std::string nameLink = handler->playerLink(player->GetName()); @@ -2504,10 +2504,10 @@ public: } LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME); - stmt->setInt64(0, 0); - stmt->setString(1, ""); - stmt->setString(2, ""); - stmt->setUInt32(3, accountId); + stmt->SetData(0, 0); + stmt->SetData(1, ""); + stmt->SetData(2, ""); + stmt->SetData(3, accountId); LoginDatabase.Execute(stmt); if (playerTarget) @@ -2544,7 +2544,7 @@ public: static bool HandleMuteInfoHelper(ChatHandler* handler, uint32 accountId, char const* accountName) { LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_MUTE_INFO); - stmt->setUInt16(0, accountId); + stmt->SetData(0, accountId); PreparedQueryResult result = LoginDatabase.Query(stmt); if (!result) @@ -2557,7 +2557,7 @@ public: do { Field* fields = result->Fetch(); - handler->PSendSysMessage(LANG_COMMAND_MUTEHISTORY_OUTPUT, Acore::Time::TimeToHumanReadable(Seconds(fields[0].GetUInt32())).c_str(), fields[1].GetUInt32(), fields[2].GetCString(), fields[3].GetCString()); + handler->PSendSysMessage(LANG_COMMAND_MUTEHISTORY_OUTPUT, Acore::Time::TimeToHumanReadable(Seconds(fields[0].Get<uint32>())).c_str(), fields[1].Get<uint32>(), fields[2].Get<std::string>().c_str(), fields[3].Get<std::string>().c_str()); } while (result->NextRow()); return true; @@ -2869,7 +2869,7 @@ public: else if (!creatureTarget && target && !target->IsConnected()) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_AURA_FROZEN); - stmt->setUInt32(0, target->GetGUID().GetCounter()); + stmt->SetData(0, target->GetGUID().GetCounter()); CharacterDatabase.Execute(stmt); handler->PSendSysMessage(LANG_COMMAND_UNFREEZE, target->GetName().c_str()); return true; diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 92689e8667..80ef81eebb 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -315,10 +315,8 @@ public: // Update movement type WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_MOVEMENT_TYPE); - - stmt->setUInt8(0, uint8(WAYPOINT_MOTION_TYPE)); - stmt->setUInt32(1, lowGuid); - + stmt->SetData(0, uint8(WAYPOINT_MOTION_TYPE)); + stmt->SetData(1, uint32(lowGuid)); WorldDatabase.Execute(stmt); handler->SendSysMessage(LANG_WAYPOINT_ADDED); @@ -468,8 +466,8 @@ public: // ..and DB WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_FACTION); - stmt->setUInt16(0, uint16(factionId)); - stmt->setUInt32(1, creature->GetEntry()); + stmt->SetData(0, uint16(factionId)); + stmt->SetData(1, creature->GetEntry()); WorldDatabase.Execute(stmt); @@ -529,8 +527,8 @@ public: WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_NPCFLAG); - stmt->setUInt32(0, NPCFlags(npcFlags)); - stmt->setUInt32(1, creature->GetEntry()); + stmt->SetData(0, NPCFlags(npcFlags)); + stmt->SetData(1, creature->GetEntry()); WorldDatabase.Execute(stmt); @@ -662,15 +660,15 @@ public: Player* player = handler->GetSession()->GetPlayer(); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_CREATURE_NEAREST); - stmt->setFloat(0, player->GetPositionX()); - stmt->setFloat(1, player->GetPositionY()); - stmt->setFloat(2, player->GetPositionZ()); - stmt->setUInt32(3, player->GetMapId()); - stmt->setFloat(4, player->GetPositionX()); - stmt->setFloat(5, player->GetPositionY()); - stmt->setFloat(6, player->GetPositionZ()); - stmt->setFloat(7, distance * distance); - stmt->setUInt32(8, player->GetPhaseMask()); + stmt->SetData(0, player->GetPositionX()); + stmt->SetData(1, player->GetPositionY()); + stmt->SetData(2, player->GetPositionZ()); + stmt->SetData(3, player->GetMapId()); + stmt->SetData(4, player->GetPositionX()); + stmt->SetData(5, player->GetPositionY()); + stmt->SetData(6, player->GetPositionZ()); + stmt->SetData(7, distance * distance); + stmt->SetData(8, player->GetPhaseMask()); PreparedQueryResult result = WorldDatabase.Query(stmt); if (result) @@ -678,13 +676,13 @@ public: do { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); - uint32 entry = fields[1].GetUInt32(); - //uint32 entry2 = fields[2].GetUInt32(); - float x = fields[3].GetFloat(); - float y = fields[4].GetFloat(); - float z = fields[5].GetFloat(); - uint16 mapId = fields[6].GetUInt16(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); + uint32 entry = fields[1].Get<uint32>(); + //uint32 entry2 = fields[2].Get<uint32>(); + float x = fields[3].Get<float>(); + float y = fields[4].Get<float>(); + float z = fields[5].Get<float>(); + uint16 mapId = fields[6].Get<uint16>(); CreatureTemplate const* creatureTemplate = sObjectMgr->GetCreatureTemplate(entry); if (!creatureTemplate) @@ -751,11 +749,11 @@ public: } WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_POSITION); - stmt->setFloat(0, x); - stmt->setFloat(1, y); - stmt->setFloat(2, z); - stmt->setFloat(3, o); - stmt->setUInt32(4, lowguid); + stmt->SetData(0, x); + stmt->SetData(1, y); + stmt->SetData(2, z); + stmt->SetData(3, o); + stmt->SetData(4, lowguid); WorldDatabase.Execute(stmt); @@ -977,9 +975,9 @@ public: WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_WANDER_DISTANCE); - stmt->setFloat(0, option); - stmt->setUInt8(1, uint8(mtype)); - stmt->setUInt32(2, guidLow); + stmt->SetData(0, option); + stmt->SetData(1, uint8(mtype)); + stmt->SetData(2, guidLow); WorldDatabase.Execute(stmt); @@ -995,8 +993,8 @@ public: return false; WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_SPAWN_TIME_SECS); - stmt->setUInt32(0, spawnTime); - stmt->setUInt32(1, creature->GetSpawnId()); + stmt->SetData(0, spawnTime); + stmt->SetData(1, creature->GetSpawnId()); WorldDatabase.Execute(stmt); creature->SetRespawnDelay(spawnTime); @@ -1216,11 +1214,11 @@ public: creature->SearchFormation(); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_CREATURE_FORMATION); - stmt->setUInt32(0, leaderGUID); - stmt->setUInt32(1, lowguid); - stmt->setFloat(2, group_member.follow_dist); - stmt->setFloat(3, group_member.follow_angle); - stmt->setUInt32(4, uint32(group_member.groupAI)); + stmt->SetData(0, leaderGUID); + stmt->SetData(1, lowguid); + stmt->SetData(2, group_member.follow_dist); + stmt->SetData(3, group_member.follow_angle); + stmt->SetData(4, uint32(group_member.groupAI)); WorldDatabase.Execute(stmt); diff --git a/src/server/scripts/Commands/cs_quest.cpp b/src/server/scripts/Commands/cs_quest.cpp index 18f3257265..30d6c55699 100644 --- a/src/server/scripts/Commands/cs_quest.cpp +++ b/src/server/scripts/Commands/cs_quest.cpp @@ -97,7 +97,7 @@ public: else { ObjectGuid::LowType guid = playerTarget->GetGUID().GetCounter(); - QueryResult result = CharacterDatabase.PQuery("SELECT 1 FROM character_queststatus WHERE guid = %u AND quest = %u", guid, entry); + QueryResult result = CharacterDatabase.Query("SELECT 1 FROM character_queststatus WHERE guid = {} AND quest = {}", guid, entry); if (result) { @@ -109,23 +109,23 @@ public: uint8 index = 0; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_CHAR_QUESTSTATUS); - stmt->setUInt32(index++, guid); - stmt->setUInt32(index++, entry); - stmt->setUInt8(index++, 1); - stmt->setBool(index++, false); - stmt->setUInt32(index++, 0); + stmt->SetData(index++, guid); + stmt->SetData(index++, entry); + stmt->SetData(index++, 1); + stmt->SetData(index++, false); + stmt->SetData(index++, 0); for (uint8 i = 0; i < QUEST_OBJECTIVES_COUNT; i++) { - stmt->setUInt16(index++, 0); + stmt->SetData(index++, 0); } for (uint8 i = 0; i < QUEST_ITEM_OBJECTIVES_COUNT; i++) { - stmt->setUInt16(index++, 0); + stmt->SetData(index++, 0); } - stmt->setUInt16(index, 0); + stmt->SetData(index, 0); CharacterDatabase.Execute(stmt); } @@ -188,20 +188,20 @@ public: CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_QUESTSTATUS_REWARDED_BY_QUEST); - stmt->setUInt32(0, guid); - stmt->setUInt32(1, entry); + stmt->SetData(0, guid); + stmt->SetData(1, entry); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_QUESTSTATUS_BY_QUEST); - stmt->setUInt32(0, guid); - stmt->setUInt32(1, entry); + stmt->SetData(0, guid); + stmt->SetData(1, entry); trans->Append(stmt); for (uint32 const& requiredItem : quest->RequiredItemId) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_INVENTORY_ITEM_BY_ENTRY_AND_OWNER); - stmt->setUInt32(0, requiredItem); - stmt->setUInt32(1, guid); + stmt->SetData(0, requiredItem); + stmt->SetData(1, guid); PreparedQueryResult result = CharacterDatabase.Query(stmt); @@ -210,11 +210,11 @@ public: Field* fields = result->Fetch(); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INVENTORY_BY_ITEM); - stmt->setUInt32(0, fields[0].GetUInt32()); + stmt->SetData(0, fields[0].Get<uint32>()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE); - stmt->setUInt32(0, fields[0].GetUInt32()); + stmt->SetData(0, fields[0].Get<uint32>()); trans->Append(stmt); } } @@ -348,7 +348,7 @@ public: else { ObjectGuid::LowType guid = playerTarget->GetGUID().GetCounter(); - QueryResult result = CharacterDatabase.PQuery("SELECT 1 FROM character_queststatus WHERE guid = %u AND quest = %u", guid, entry); + QueryResult result = CharacterDatabase.Query("SELECT 1 FROM character_queststatus WHERE guid = {} AND quest = {}", guid, entry); if (!result) { @@ -395,24 +395,24 @@ public: uint8 index = 0; CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_CHAR_QUESTSTATUS); - stmt->setUInt32(index++, guid); - stmt->setUInt32(index++, entry); - stmt->setUInt8(index++, 1); - stmt->setBool(index++, quest->HasFlag(QUEST_FLAGS_EXPLORATION)); - stmt->setUInt32(index++, 0); + stmt->SetData(index++, guid); + stmt->SetData(index++, entry); + stmt->SetData(index++, 1); + stmt->SetData(index++, quest->HasFlag(QUEST_FLAGS_EXPLORATION)); + stmt->SetData(index++, 0); for (uint8 i = 0; i < QUEST_OBJECTIVES_COUNT; i++) { - stmt->setUInt16(index++, quest->RequiredNpcOrGoCount[i]); + stmt->SetData(index++, quest->RequiredNpcOrGoCount[i]); } for (uint8 i = 0; i < QUEST_ITEM_OBJECTIVES_COUNT; i++) { // Will be updated once they loot the items from the mailbox. - stmt->setUInt16(index++, 0); + stmt->SetData(index++, 0); } - stmt->setUInt16(index, 0); + stmt->SetData(index, 0); trans->Append(stmt); @@ -422,24 +422,24 @@ public: uint32 repValue = quest->GetRepObjectiveValue(); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_REP_BY_FACTION); - stmt->setUInt32(0, repFaction); - stmt->setUInt32(1, guid); + stmt->SetData(0, repFaction); + stmt->SetData(1, guid); PreparedQueryResult result = CharacterDatabase.Query(stmt); if (result) { Field* fields = result->Fetch(); - uint32 curRep = fields[0].GetUInt32(); + uint32 curRep = fields[0].Get<uint32>(); if (curRep < repValue) { if (sFactionStore.LookupEntry(repFaction)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_REP_FACTION_CHANGE); - stmt->setUInt32(0, repFaction); - stmt->setUInt32(1, repValue); - stmt->setUInt32(2, repFaction); - stmt->setUInt32(3, guid); + stmt->SetData(0, repFaction); + stmt->SetData(1, repValue); + stmt->SetData(2, repFaction); + stmt->SetData(3, guid); trans->Append(stmt); } } @@ -452,24 +452,24 @@ public: uint32 repValue = quest->GetRepObjectiveValue(); stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_REP_BY_FACTION); - stmt->setUInt32(0, repFaction); - stmt->setUInt32(1, guid); + stmt->SetData(0, repFaction); + stmt->SetData(1, guid); PreparedQueryResult result = CharacterDatabase.Query(stmt); if (result) { Field* fields = result->Fetch(); - uint32 curRep = fields[0].GetUInt32(); + uint32 curRep = fields[0].Get<uint32>(); if (curRep < repValue) { if (sFactionStore.LookupEntry(repFaction)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_REP_FACTION_CHANGE); - stmt->setUInt32(0, repFaction); - stmt->setUInt32(1, repValue); - stmt->setUInt32(2, repFaction); - stmt->setUInt32(3, guid); + stmt->SetData(0, repFaction); + stmt->SetData(1, repValue); + stmt->SetData(2, repFaction); + stmt->SetData(3, guid); trans->Append(stmt); } } @@ -484,8 +484,8 @@ public: { // prepare Quest Tracker datas auto stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_QUEST_TRACK_GM_COMPLETE); - stmt->setUInt32(0, entry); - stmt->setUInt32(1, playerTarget->GetGUID().GetCounter()); + stmt->SetData(0, entry); + stmt->SetData(1, playerTarget->GetGUID().GetCounter()); // add to Quest Tracker CharacterDatabase.Execute(stmt); @@ -536,7 +536,7 @@ public: CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); CharacterDatabasePreparedStatement* stmt; - QueryResult result = CharacterDatabase.PQuery("SELECT 1 FROM character_queststatus WHERE guid = %u AND quest = %u AND status = 1", guid, entry); + QueryResult result = CharacterDatabase.Query("SELECT 1 FROM character_queststatus WHERE guid = {} AND quest = {} AND status = 1", guid, entry); if (!result) { @@ -548,8 +548,8 @@ public: for (uint32 const& requiredItem : quest->RequiredItemId) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_INVENTORY_ITEM_BY_ENTRY_AND_OWNER); - stmt->setUInt32(0, requiredItem); - stmt->setUInt32(1, guid); + stmt->SetData(0, requiredItem); + stmt->SetData(1, guid); PreparedQueryResult result = CharacterDatabase.Query(stmt); @@ -558,11 +558,11 @@ public: Field* fields = result->Fetch(); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INVENTORY_BY_ITEM); - stmt->setUInt32(0, fields[0].GetUInt32()); + stmt->SetData(0, fields[0].Get<uint32>()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE); - stmt->setUInt32(0, fields[0].GetUInt32()); + stmt->SetData(0, fields[0].Get<uint32>()); trans->Append(stmt); } } @@ -570,8 +570,8 @@ public: for (uint32 const& sourceItem : quest->ItemDrop) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_INVENTORY_ITEM_BY_ENTRY_AND_OWNER); - stmt->setUInt32(0, sourceItem); - stmt->setUInt32(1, guid); + stmt->SetData(0, sourceItem); + stmt->SetData(1, guid); PreparedQueryResult result = CharacterDatabase.Query(stmt); @@ -580,11 +580,11 @@ public: Field* fields = result->Fetch(); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INVENTORY_BY_ITEM); - stmt->setUInt32(0, fields[0].GetUInt32()); + stmt->SetData(0, fields[0].Get<uint32>()); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE); - stmt->setUInt32(0, fields[0].GetUInt32()); + stmt->SetData(0, fields[0].Get<uint32>()); trans->Append(stmt); } } @@ -651,48 +651,48 @@ public: if (quest->IsDaily() || quest->IsDFQuest()) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_DAILYQUESTSTATUS); - stmt->setUInt32(0, guid); - stmt->setUInt32(1, entry); - stmt->setUInt64(2, GameTime::GetGameTime().count()); + stmt->SetData(0, guid); + stmt->SetData(1, entry); + stmt->SetData(2, GameTime::GetGameTime().count()); trans->Append(stmt); } else if (quest->IsWeekly()) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_WEEKLYQUESTSTATUS); - stmt->setUInt32(0, guid); - stmt->setUInt32(1, entry); + stmt->SetData(0, guid); + stmt->SetData(1, entry); trans->Append(stmt); } else if (quest->IsMonthly()) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_MONTHLYQUESTSTATUS); - stmt->setUInt32(0, guid); - stmt->setUInt32(1, entry); + stmt->SetData(0, guid); + stmt->SetData(1, entry); trans->Append(stmt); } else if (quest->IsSeasonal()) { // We can't know which event is the quest linked to, so we can't do anything about this. /* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_SEASONALQUESTSTATUS); - stmt->setUInt32(0, guid); - stmt->setUInt32(1, entry); - stmt->setUInt32(2, event_id); + stmt->SetData(0, guid); + stmt->SetData(1, entry); + stmt->SetData(2, event_id); trans->Append(stmt);*/ } if (uint32 honor = quest->CalculateHonorGain(charLevel)) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UDP_CHAR_HONOR_POINTS_ACCUMULATIVE); - stmt->setUInt32(0, honor); - stmt->setUInt32(1, guid); + stmt->SetData(0, honor); + stmt->SetData(1, guid); trans->Append(stmt); } if (quest->GetRewArenaPoints()) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UDP_CHAR_ARENA_POINTS_ACCUMULATIVE); - stmt->setUInt32(0, quest->GetRewArenaPoints()); - stmt->setUInt32(1, guid); + stmt->SetData(0, quest->GetRewArenaPoints()); + stmt->SetData(1, guid); trans->Append(stmt); } @@ -707,8 +707,8 @@ public: // Some experience might get lost on level up. uint32 xp = uint32(quest->XPValue(charLevel) * sWorld->getRate(RATE_XP_QUEST)); stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_XP_ACCUMULATIVE); - stmt->setUInt32(0, xp); - stmt->setUInt32(1, guid); + stmt->SetData(0, xp); + stmt->SetData(1, guid); trans->Append(stmt); } @@ -721,19 +721,19 @@ public: if (rewMoney > 0) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UDP_CHAR_MONEY_ACCUMULATIVE); - stmt->setUInt32(0, rewMoney); - stmt->setUInt32(1, guid); + stmt->SetData(0, rewMoney); + stmt->SetData(1, guid); trans->Append(stmt); } stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_QUESTSTATUS_REWARDED); - stmt->setUInt32(0, guid); - stmt->setUInt32(1, entry); + stmt->SetData(0, guid); + stmt->SetData(1, entry); trans->Append(stmt); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_QUESTSTATUS_BY_QUEST); - stmt->setUInt32(0, guid); - stmt->setUInt32(1, entry); + stmt->SetData(0, guid); + stmt->SetData(1, entry); trans->Append(stmt); CharacterDatabase.CommitTransaction(trans); diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp index d920d29129..7f5ab230cd 100644 --- a/src/server/scripts/Commands/cs_reload.cpp +++ b/src/server/scripts/Commands/cs_reload.cpp @@ -435,7 +435,7 @@ public: uint32 entry = Acore::StringTo<uint32>(entryStr).value_or(0); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_CREATURE_TEMPLATE); - stmt->setUInt32(0, entry); + stmt->SetData(0, entry); PreparedQueryResult result = WorldDatabase.Query(stmt); if (!result) diff --git a/src/server/scripts/Commands/cs_reset.cpp b/src/server/scripts/Commands/cs_reset.cpp index f0cbf66143..e38a1f10ce 100644 --- a/src/server/scripts/Commands/cs_reset.cpp +++ b/src/server/scripts/Commands/cs_reset.cpp @@ -178,8 +178,8 @@ public: else { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG); - stmt->setUInt16(0, uint16(AT_LOGIN_RESET_SPELLS)); - stmt->setUInt32(1, targetGuid.GetCounter()); + stmt->SetData(0, uint16(AT_LOGIN_RESET_SPELLS)); + stmt->SetData(1, targetGuid.GetCounter()); CharacterDatabase.Execute(stmt); handler->PSendSysMessage(LANG_RESET_SPELLS_OFFLINE, targetName.c_str()); @@ -252,8 +252,8 @@ public: else if (targetGuid) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG); - stmt->setUInt16(0, uint16(AT_LOGIN_NONE | AT_LOGIN_RESET_PET_TALENTS)); - stmt->setUInt32(1, targetGuid.GetCounter()); + stmt->SetData(0, uint16(AT_LOGIN_NONE | AT_LOGIN_RESET_PET_TALENTS)); + stmt->SetData(1, targetGuid.GetCounter()); CharacterDatabase.Execute(stmt); std::string nameLink = handler->playerLink(targetName); @@ -298,7 +298,7 @@ public: } CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ALL_AT_LOGIN_FLAGS); - stmt->setUInt16(0, uint16(atLogin)); + stmt->SetData(0, uint16(atLogin)); CharacterDatabase.Execute(stmt); std::shared_lock<std::shared_mutex> lock(*HashMapHolder<Player>::GetLock()); diff --git a/src/server/scripts/Commands/cs_server.cpp b/src/server/scripts/Commands/cs_server.cpp index 5b9d25f879..0dd127834b 100644 --- a/src/server/scripts/Commands/cs_server.cpp +++ b/src/server/scripts/Commands/cs_server.cpp @@ -119,8 +119,8 @@ public: { uint16 dbPort = 0; - if (QueryResult res = LoginDatabase.PQuery("SELECT port FROM realmlist WHERE id = %u", realm.Id.Realm)) - dbPort = (*res)[0].GetUInt16(); + if (QueryResult res = LoginDatabase.Query("SELECT port FROM realmlist WHERE id = {}", realm.Id.Realm)) + dbPort = (*res)[0].Get<uint16>(); if (dbPort) dbPortOutput = Acore::StringFormatFmt("Realmlist (Realm Id: {}) configured in port {}", realm.Id.Realm, dbPort); diff --git a/src/server/scripts/Commands/cs_tele.cpp b/src/server/scripts/Commands/cs_tele.cpp index f8ebdaf80b..fb29793eb9 100644 --- a/src/server/scripts/Commands/cs_tele.cpp +++ b/src/server/scripts/Commands/cs_tele.cpp @@ -186,14 +186,14 @@ public: else { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_HOMEBIND); - stmt->setUInt32(0, player->GetGUID().GetCounter()); + stmt->SetData(0, player->GetGUID().GetCounter()); PreparedQueryResult resultDB = CharacterDatabase.Query(stmt); if (resultDB) { Field* fieldsDB = resultDB->Fetch(); - WorldLocation loc(fieldsDB[0].GetUInt16(), fieldsDB[2].GetFloat(), fieldsDB[3].GetFloat(), fieldsDB[4].GetFloat(), 0.0f); - uint32 zoneId = fieldsDB[1].GetUInt16(); + WorldLocation loc(fieldsDB[0].Get<uint16>(), fieldsDB[2].Get<float>(), fieldsDB[3].Get<float>(), fieldsDB[4].Get<float>(), 0.0f); + uint32 zoneId = fieldsDB[1].Get<uint16>(); Player::SavePositionInDB(loc, zoneId, player->GetGUID(), nullptr); } @@ -373,7 +373,7 @@ public: WorldDatabase.EscapeString(normalizedName); // May need work //PussyWizardEliteMalcrom - QueryResult result = WorldDatabase.PQuery("SELECT c.position_x, c.position_y, c.position_z, c.orientation, c.map, ct.name FROM creature c INNER JOIN creature_template ct ON c.id1 = ct.entry WHERE ct.name LIKE '%s'", normalizedName.c_str()); + QueryResult result = WorldDatabase.Query("SELECT c.position_x, c.position_y, c.position_z, c.orientation, c.map, ct.name FROM creature c INNER JOIN creature_template ct ON c.id1 = ct.entry WHERE ct.name LIKE '{}'", normalizedName); if (!result) { handler->SendSysMessage(LANG_COMMAND_GOCREATNOTFOUND); @@ -385,7 +385,7 @@ public: handler->SendSysMessage(LANG_COMMAND_GOCREATMULTIPLE); Field* fields = result->Fetch(); - return DoNameTeleport(handler, player, fields[4].GetUInt16(), { fields[0].GetFloat(), fields[1].GetFloat(), fields[2].GetFloat(), fields[3].GetFloat() }, fields[5].GetString()); + return DoNameTeleport(handler, player, fields[4].Get<uint16>(), { fields[0].Get<float>(), fields[1].Get<float>(), fields[2].Get<float>(), fields[3].Get<float>() }, fields[5].Get<std::string>()); } }; diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp index 0fe661f3c2..2220657411 100644 --- a/src/server/scripts/Commands/cs_wp.cpp +++ b/src/server/scripts/Commands/cs_wp.cpp @@ -101,7 +101,7 @@ public: PreparedQueryResult result = WorldDatabase.Query(stmt); - uint32 maxpathid = result->Fetch()->GetInt32(); + uint32 maxpathid = result->Fetch()->Get<int32>(); pathid = maxpathid + 1; handler->PSendSysMessage("%s%s|r", "|cff00ff00", "New path started."); } @@ -119,22 +119,22 @@ public: } WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_WAYPOINT_DATA_MAX_POINT); - stmt->setUInt32(0, pathid); + stmt->SetData(0, pathid); PreparedQueryResult result = WorldDatabase.Query(stmt); if (result) - point = (*result)[0].GetUInt32(); + point = (*result)[0].Get<uint32>(); Player* player = handler->GetSession()->GetPlayer(); //Map* map = player->GetMap(); stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_WAYPOINT_DATA); - stmt->setUInt32(0, pathid); - stmt->setUInt32(1, point + 1); - stmt->setFloat(2, player->GetPositionX()); - stmt->setFloat(3, player->GetPositionY()); - stmt->setFloat(4, player->GetPositionZ()); + stmt->SetData(0, pathid); + stmt->SetData(1, point + 1); + stmt->SetData(2, player->GetPositionX()); + stmt->SetData(3, player->GetPositionY()); + stmt->SetData(4, player->GetPositionZ()); WorldDatabase.Execute(stmt); @@ -187,7 +187,7 @@ public: WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_CREATURE_ADDON_BY_GUID); - stmt->setUInt32(0, guidLow); + stmt->SetData(0, guidLow); PreparedQueryResult result = WorldDatabase.Query(stmt); @@ -195,23 +195,23 @@ public: { stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_ADDON_PATH); - stmt->setUInt32(0, pathid); - stmt->setUInt32(1, guidLow); + stmt->SetData(0, pathid); + stmt->SetData(1, guidLow); } else { stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_CREATURE_ADDON); - stmt->setUInt32(0, guidLow); - stmt->setUInt32(1, pathid); + stmt->SetData(0, guidLow); + stmt->SetData(1, pathid); } WorldDatabase.Execute(stmt); stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_MOVEMENT_TYPE); - stmt->setUInt8(0, uint8(WAYPOINT_MOTION_TYPE)); - stmt->setUInt32(1, guidLow); + stmt->SetData(0, uint8(WAYPOINT_MOTION_TYPE)); + stmt->SetData(1, guidLow); WorldDatabase.Execute(stmt); @@ -255,15 +255,15 @@ public: if (target->GetCreatureAddon()->path_id != 0) { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CREATURE_ADDON); - stmt->setUInt32(0, guildLow); + stmt->SetData(0, guildLow); WorldDatabase.Execute(stmt); target->UpdateWaypointID(0); stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_MOVEMENT_TYPE); - stmt->setUInt8(0, uint8(IDLE_MOTION_TYPE)); - stmt->setUInt32(1, guildLow); + stmt->SetData(0, uint8(IDLE_MOTION_TYPE)); + stmt->SetData(1, guildLow); WorldDatabase.Execute(stmt); @@ -302,14 +302,14 @@ public: if (id) { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_WAYPOINT_SCRIPT_ID_BY_GUID); - stmt->setUInt32(0, id); + stmt->SetData(0, id); PreparedQueryResult result = WorldDatabase.Query(stmt); if (!result) { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_WAYPOINT_SCRIPT); - stmt->setUInt32(0, id); + stmt->SetData(0, id); WorldDatabase.Execute(stmt); @@ -324,11 +324,11 @@ public: PreparedQueryResult result = WorldDatabase.Query(stmt); - id = result->Fetch()->GetUInt32(); + id = result->Fetch()->Get<uint32>(); stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_WAYPOINT_SCRIPT); - stmt->setUInt32(0, id + 1); + stmt->SetData(0, id + 1); WorldDatabase.Execute(stmt); @@ -353,7 +353,7 @@ public: char const* a7; WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_WAYPOINT_SCRIPT_BY_ID); - stmt->setUInt32(0, id); + stmt->SetData(0, id); PreparedQueryResult result = WorldDatabase.Query(stmt); if (!result) @@ -367,16 +367,16 @@ public: do { fields = result->Fetch(); - a2 = fields[0].GetUInt32(); - a3 = fields[1].GetUInt32(); - a4 = fields[2].GetUInt32(); - a5 = fields[3].GetUInt32(); - a6 = fields[4].GetUInt32(); - a7 = fields[5].GetCString(); - a8 = fields[6].GetFloat(); - a9 = fields[7].GetFloat(); - a10 = fields[8].GetFloat(); - a11 = fields[9].GetFloat(); + a2 = fields[0].Get<uint32>(); + a3 = fields[1].Get<uint32>(); + a4 = fields[2].Get<uint32>(); + a5 = fields[3].Get<uint32>(); + a6 = fields[4].Get<uint32>(); + a7 = fields[5].Get<std::string>().c_str(); + a8 = fields[6].Get<float>(); + a9 = fields[7].Get<float>(); + a10 = fields[8].Get<float>(); + a11 = fields[9].Get<float>(); handler->PSendSysMessage("|cffff33ffid:|r|cff00ffff %u|r|cff00ff00, guid: |r|cff00ffff%u|r|cff00ff00, delay: |r|cff00ffff%u|r|cff00ff00, command: |r|cff00ffff%u|r|cff00ff00, datalong: |r|cff00ffff%u|r|cff00ff00, datalong2: |r|cff00ffff%u|r|cff00ff00, datatext: |r|cff00ffff%s|r|cff00ff00, posx: |r|cff00ffff%f|r|cff00ff00, posy: |r|cff00ffff%f|r|cff00ff00, posz: |r|cff00ffff%f|r|cff00ff00, orientation: |r|cff00ffff%f|r", id, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); } while (result->NextRow()); @@ -394,7 +394,7 @@ public: WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_WAYPOINT_SCRIPT_ID_BY_GUID); - stmt->setUInt32(0, id); + stmt->SetData(0, id); PreparedQueryResult result = WorldDatabase.Query(stmt); @@ -402,7 +402,7 @@ public: { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_WAYPOINT_SCRIPT); - stmt->setUInt32(0, id); + stmt->SetData(0, id); WorldDatabase.Execute(stmt); @@ -465,8 +465,8 @@ public: WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_WAYPOINT_SCRIPT_ID); - stmt->setUInt32(0, newid); - stmt->setUInt32(1, id); + stmt->SetData(0, newid); + stmt->SetData(1, id); WorldDatabase.Execute(stmt); @@ -475,7 +475,7 @@ public: else { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_WAYPOINT_SCRIPT_ID_BY_GUID); - stmt->setUInt32(0, id); + stmt->SetData(0, id); PreparedQueryResult result = WorldDatabase.Query(stmt); if (!result) @@ -488,8 +488,8 @@ public: { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_WAYPOINT_SCRIPT_X); - stmt->setFloat(0, float(atof(arg_3))); - stmt->setUInt32(1, id); + stmt->SetData(0, float(atof(arg_3))); + stmt->SetData(1, id); WorldDatabase.Execute(stmt); @@ -500,8 +500,8 @@ public: { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_WAYPOINT_SCRIPT_Y); - stmt->setFloat(0, float(atof(arg_3))); - stmt->setUInt32(1, id); + stmt->SetData(0, float(atof(arg_3))); + stmt->SetData(1, id); WorldDatabase.Execute(stmt); @@ -512,8 +512,8 @@ public: { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_WAYPOINT_SCRIPT_Z); - stmt->setFloat(0, float(atof(arg_3))); - stmt->setUInt32(1, id); + stmt->SetData(0, float(atof(arg_3))); + stmt->SetData(1, id); WorldDatabase.Execute(stmt); @@ -524,8 +524,8 @@ public: { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_WAYPOINT_SCRIPT_O); - stmt->setFloat(0, float(atof(arg_3))); - stmt->setUInt32(1, id); + stmt->SetData(0, float(atof(arg_3))); + stmt->SetData(1, id); WorldDatabase.Execute(stmt); @@ -534,7 +534,7 @@ public: } else if (arg_str_2 == "dataint") { - WorldDatabase.PExecute("UPDATE waypoint_scripts SET %s='%u' WHERE guid='%u'", arg_2, atoi(arg_3), id); // Query can't be a prepared statement + WorldDatabase.Execute("UPDATE waypoint_scripts SET {}='{}' WHERE guid='{}'", arg_2, atoi(arg_3), id); // Query can't be a prepared statement handler->PSendSysMessage("|cff00ff00Waypoint script: |r|cff00ffff%u|r|cff00ff00 dataint updated.|r", id); return true; @@ -543,7 +543,7 @@ public: { std::string arg_str_3 = arg_3; WorldDatabase.EscapeString(arg_str_3); - WorldDatabase.PExecute("UPDATE waypoint_scripts SET %s='%s' WHERE guid='%u'", arg_2, arg_str_3.c_str(), id); // Query can't be a prepared statement + WorldDatabase.Execute("UPDATE waypoint_scripts SET {}='{}' WHERE guid='{}'", arg_2, arg_str_3, id); // Query can't be a prepared statement } } handler->PSendSysMessage("%s%s|r|cff00ffff%u:|r|cff00ff00 %s %s|r", "|cff00ff00", "Waypoint script:", id, arg_2, "updated."); @@ -596,7 +596,7 @@ public: // Check the creature WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_WAYPOINT_DATA_BY_WPGUID); - stmt->setUInt32(0, wpSpawnId); + stmt->SetData(0, wpSpawnId); PreparedQueryResult result = WorldDatabase.Query(stmt); if (!result) @@ -611,12 +611,12 @@ public: std::string maxDiff = "0.01"; WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_WAYPOINT_DATA_BY_POS); - stmt->setFloat(0, target->GetPositionX()); - stmt->setString(1, maxDiff); - stmt->setFloat(2, target->GetPositionY()); - stmt->setString(3, maxDiff); - stmt->setFloat(4, target->GetPositionZ()); - stmt->setString(5, maxDiff); + stmt->SetData(0, target->GetPositionX()); + stmt->SetData(1, maxDiff); + stmt->SetData(2, target->GetPositionY()); + stmt->SetData(3, maxDiff); + stmt->SetData(4, target->GetPositionZ()); + stmt->SetData(5, maxDiff); PreparedQueryResult result = WorldDatabase.Query(stmt); if (!result) @@ -629,8 +629,8 @@ public: do { Field* fields = result->Fetch(); - pathid = fields[0].GetUInt32(); - point = fields[1].GetUInt32(); + pathid = fields[0].Get<uint32>(); + point = fields[1].Get<uint32>(); } while (result->NextRow()); // We have the waypoint number and the GUID of the "master npc" @@ -657,14 +657,14 @@ public: } WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_WAYPOINT_DATA); - stmt->setUInt32(0, pathid); - stmt->setUInt32(1, point); + stmt->SetData(0, pathid); + stmt->SetData(1, point); WorldDatabase.Execute(stmt); stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_WAYPOINT_DATA_POINT); - stmt->setUInt32(0, pathid); - stmt->setUInt32(1, point); + stmt->SetData(0, pathid); + stmt->SetData(1, point); WorldDatabase.Execute(stmt); @@ -715,11 +715,11 @@ public: WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_WAYPOINT_DATA_POSITION); - stmt->setFloat(0, chr->GetPositionX()); - stmt->setFloat(1, chr->GetPositionY()); - stmt->setFloat(2, chr->GetPositionZ()); - stmt->setUInt32(3, pathid); - stmt->setUInt32(4, point); + stmt->SetData(0, chr->GetPositionX()); + stmt->SetData(1, chr->GetPositionY()); + stmt->SetData(2, chr->GetPositionZ()); + stmt->SetData(3, pathid); + stmt->SetData(4, point); WorldDatabase.Execute(stmt); @@ -733,14 +733,14 @@ public: if (text == 0) { // show_str check for present in list of correct values, no sql injection possible - WorldDatabase.PExecute("UPDATE waypoint_data SET %s=nullptr WHERE id='%u' AND point='%u'", show_str, pathid, point); // Query can't be a prepared statement + WorldDatabase.Execute("UPDATE waypoint_data SET {}=nullptr WHERE id='{}' AND point='{}'", show_str, pathid, point); // Query can't be a prepared statement } else { // show_str check for present in list of correct values, no sql injection possible std::string text2 = text; WorldDatabase.EscapeString(text2); - WorldDatabase.PExecute("UPDATE waypoint_data SET %s='%s' WHERE id='%u' AND point='%u'", show_str, text2.c_str(), pathid, point); // Query can't be a prepared statement + WorldDatabase.Execute("UPDATE waypoint_data SET {}='{}' WHERE id='{}' AND point='{}'", show_str, text2, pathid, point); // Query can't be a prepared statement } handler->PSendSysMessage(LANG_WAYPOINT_CHANGED_NO, show_str); @@ -807,7 +807,7 @@ public: WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_WAYPOINT_DATA_ALL_BY_WPGUID); - stmt->setUInt32(0, target->GetSpawnId()); + stmt->SetData(0, target->GetSpawnId()); PreparedQueryResult result = WorldDatabase.Query(stmt); @@ -821,12 +821,12 @@ public: do { Field* fields = result->Fetch(); - pathid = fields[0].GetUInt32(); - uint32 point = fields[1].GetUInt32(); - uint32 delay = fields[2].GetUInt32(); - uint32 flag = fields[3].GetUInt32(); - uint32 ev_id = fields[4].GetUInt32(); - uint32 ev_chance = fields[5].GetUInt32(); + pathid = fields[0].Get<uint32>(); + uint32 point = fields[1].Get<uint32>(); + uint32 delay = fields[2].Get<uint32>(); + uint32 flag = fields[3].Get<uint32>(); + uint32 ev_id = fields[4].Get<uint32>(); + uint32 ev_chance = fields[5].Get<uint32>(); handler->PSendSysMessage("|cff00ff00Show info: for current point: |r|cff00ffff%u|r|cff00ff00, Path ID: |r|cff00ffff%u|r", point, pathid); handler->PSendSysMessage("|cff00ff00Show info: delay: |r|cff00ffff%u|r", delay); @@ -842,7 +842,7 @@ public: { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_WAYPOINT_DATA_POS_BY_ID); - stmt->setUInt32(0, pathid); + stmt->SetData(0, pathid); PreparedQueryResult result = WorldDatabase.Query(stmt); @@ -858,7 +858,7 @@ public: // Delete all visuals for this NPC stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_WAYPOINT_DATA_WPGUID_BY_ID); - stmt->setUInt32(0, pathid); + stmt->SetData(0, pathid); PreparedQueryResult result2 = WorldDatabase.Query(stmt); @@ -868,7 +868,7 @@ public: do { Field* fields = result2->Fetch(); - uint32 wpguid = fields[0].GetUInt32(); + uint32 wpguid = fields[0].Get<uint32>(); Creature* creature = handler->GetSession()->GetPlayer()->GetMap()->GetCreature(ObjectGuid::Create<HighGuid::Unit>(VISUAL_WAYPOINT, wpguid)); if (!creature) @@ -877,7 +877,7 @@ public: hasError = true; WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CREATURE); - stmt->setUInt32(0, wpguid); + stmt->SetData(0, wpguid); WorldDatabase.Execute(stmt); } @@ -900,10 +900,10 @@ public: do { Field* fields = result->Fetch(); - uint32 point = fields[0].GetUInt32(); - float x = fields[1].GetFloat(); - float y = fields[2].GetFloat(); - float z = fields[3].GetFloat(); + uint32 point = fields[0].Get<uint32>(); + float x = fields[1].Get<float>(); + float y = fields[2].Get<float>(); + float z = fields[3].Get<float>(); uint32 id = VISUAL_WAYPOINT; @@ -921,9 +921,9 @@ public: // Set "wpguid" column to the visual waypoint WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_WAYPOINT_DATA_WPGUID); - stmt->setInt32(0, int32(wpCreature->GetSpawnId())); - stmt->setUInt32(1, pathid); - stmt->setUInt32(2, point); + stmt->SetData(0, int32(wpCreature->GetSpawnId())); + stmt->SetData(1, pathid); + stmt->SetData(2, point); WorldDatabase.Execute(stmt); @@ -953,7 +953,7 @@ public: handler->PSendSysMessage("|cff00ff00DEBUG: wp first, GUID: %u|r", pathid); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_WAYPOINT_DATA_POS_FIRST_BY_ID); - stmt->setUInt32(0, pathid); + stmt->SetData(0, pathid); PreparedQueryResult result = WorldDatabase.Query(stmt); if (!result) @@ -964,9 +964,9 @@ public: } Field* fields = result->Fetch(); - float x = fields[0].GetFloat(); - float y = fields[1].GetFloat(); - float z = fields[2].GetFloat(); + float x = fields[0].Get<float>(); + float y = fields[1].Get<float>(); + float z = fields[2].Get<float>(); uint32 id = VISUAL_WAYPOINT; Player* chr = handler->GetSession()->GetPlayer(); @@ -1003,7 +1003,7 @@ public: handler->PSendSysMessage("|cff00ff00DEBUG: wp last, PathID: |r|cff00ffff%u|r", pathid); WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_WAYPOINT_DATA_POS_LAST_BY_ID); - stmt->setUInt32(0, pathid); + stmt->SetData(0, pathid); PreparedQueryResult result = WorldDatabase.Query(stmt); if (!result) @@ -1014,10 +1014,10 @@ public: } Field* fields = result->Fetch(); - float x = fields[0].GetFloat(); - float y = fields[1].GetFloat(); - float z = fields[2].GetFloat(); - float o = fields[3].GetFloat(); + float x = fields[0].Get<float>(); + float y = fields[1].Get<float>(); + float z = fields[2].Get<float>(); + float o = fields[3].Get<float>(); uint32 id = VISUAL_WAYPOINT; Player* chr = handler->GetSession()->GetPlayer(); @@ -1051,7 +1051,7 @@ public: if (show == "off") { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_CREATURE_BY_ID); - stmt->setUInt32(0, 1); + stmt->SetData(0, 1); PreparedQueryResult result = WorldDatabase.Query(stmt); if (!result) @@ -1066,7 +1066,7 @@ public: do { Field* fields = result->Fetch(); - ObjectGuid::LowType guid = fields[0].GetUInt32(); + ObjectGuid::LowType guid = fields[0].Get<uint32>(); Creature* creature = handler->GetSession()->GetPlayer()->GetMap()->GetCreature(ObjectGuid::Create<HighGuid::Unit>(VISUAL_WAYPOINT, guid)); if (!creature) { @@ -1075,7 +1075,7 @@ public: WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CREATURE); - stmt->setUInt32(0, guid); + stmt->SetData(0, guid); WorldDatabase.Execute(stmt); } diff --git a/src/server/scripts/World/action_ip_logger.cpp b/src/server/scripts/World/action_ip_logger.cpp index a37f0e01b9..1977217fb1 100644 --- a/src/server/scripts/World/action_ip_logger.cpp +++ b/src/server/scripts/World/action_ip_logger.cpp @@ -142,22 +142,22 @@ public: // For those, we need last_ip... LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_ALDL_IP_LOGGING); - stmt->setUInt32(0, playerGuid); - stmt->setUInt32(1, characterGuid); - stmt->setUInt8(2, aType); - stmt->setUInt32(3, playerGuid); - stmt->setString(4, systemNote.c_str()); + stmt->SetData(0, playerGuid); + stmt->SetData(1, characterGuid); + stmt->SetData(2, aType); + stmt->SetData(3, playerGuid); + stmt->SetData(4, systemNote.c_str()); LoginDatabase.Execute(stmt); } else // ... but for failed login, we query last_attempt_ip from account table. Which we do with an unique query { LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_FACL_IP_LOGGING); - stmt->setUInt32(0, playerGuid); - stmt->setUInt32(1, characterGuid); - stmt->setUInt8(2, aType); - stmt->setUInt32(3, playerGuid); - stmt->setString(4, systemNote.c_str()); + stmt->SetData(0, playerGuid); + stmt->SetData(1, characterGuid); + stmt->SetData(2, aType); + stmt->SetData(3, playerGuid); + stmt->SetData(4, systemNote.c_str()); LoginDatabase.Execute(stmt); } return; @@ -238,11 +238,11 @@ public: // Once we have done everything, we can insert the new log. LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_CHAR_IP_LOGGING); - stmt->setUInt32(0, playerGuid); - stmt->setUInt32(1, characterGuid); - stmt->setUInt8(2, aType); - stmt->setString(3, currentIp.c_str()); // We query the ip here. - stmt->setString(4, systemNote.c_str()); + stmt->SetData(0, playerGuid); + stmt->SetData(1, characterGuid); + stmt->SetData(2, aType); + stmt->SetData(3, currentIp.c_str()); // We query the ip here. + stmt->SetData(4, systemNote.c_str()); // Seeing as the time differences should be minimal, we do not get unixtime and the timestamp right now; // Rather, we let it be added with the SQL query. @@ -300,11 +300,11 @@ public: // Once we have done everything, we can insert the new log. LoginDatabasePreparedStatement* stmt2 = LoginDatabase.GetPreparedStatement(LOGIN_INS_ALDL_IP_LOGGING); - stmt2->setUInt32(0, playerGuid); - stmt2->setUInt32(1, characterGuid); - stmt2->setUInt8(2, aType); - stmt2->setUInt32(3, playerGuid); - stmt2->setString(4, systemNote.c_str()); + stmt2->SetData(0, playerGuid); + stmt2->SetData(1, characterGuid); + stmt2->SetData(2, aType); + stmt2->SetData(3, playerGuid); + stmt2->SetData(4, systemNote.c_str()); // Seeing as the time differences should be minimal, we do not get unixtime and the timestamp right now; // Rather, we let it be added with the SQL query. diff --git a/src/server/shared/DataStores/DBCDatabaseLoader.cpp b/src/server/shared/DataStores/DBCDatabaseLoader.cpp index da3e96e0bf..47016cf2d6 100644 --- a/src/server/shared/DataStores/DBCDatabaseLoader.cpp +++ b/src/server/shared/DataStores/DBCDatabaseLoader.cpp @@ -52,7 +52,7 @@ char* DBCDatabaseLoader::Load(uint32& records, char**& indexTable) // Resize index table // database query *MUST* contain ORDER BY `index_field` DESC clause - uint32 indexTableSize = std::max(records, (*result)[_sqlIndexPos].GetUInt32() + 1); + uint32 indexTableSize = std::max(records, (*result)[_sqlIndexPos].Get<uint32>() + 1); if (indexTableSize > records) { char** tmpIdxTable = new char* [indexTableSize]; @@ -70,7 +70,7 @@ char* DBCDatabaseLoader::Load(uint32& records, char**& indexTable) do { Field* fields = result->Fetch(); - uint32 indexValue = fields[_sqlIndexPos].GetUInt32(); + uint32 indexValue = fields[_sqlIndexPos].Get<uint32>(); char* dataValue = indexTable[indexValue]; // If exist in DBC file override from DB @@ -86,20 +86,20 @@ char* DBCDatabaseLoader::Load(uint32& records, char**& indexTable) switch (*dbcFormat) { case FT_FLOAT: - *reinterpret_cast<float*>(&dataValue[dataOffset]) = fields[sqlColumnNumber].GetFloat(); + *reinterpret_cast<float*>(&dataValue[dataOffset]) = fields[sqlColumnNumber].Get<float>(); dataOffset += sizeof(float); break; case FT_IND: case FT_INT: - *reinterpret_cast<uint32*>(&dataValue[dataOffset]) = fields[sqlColumnNumber].GetUInt32(); + *reinterpret_cast<uint32*>(&dataValue[dataOffset]) = fields[sqlColumnNumber].Get<uint32>(); dataOffset += sizeof(uint32); break; case FT_BYTE: - *reinterpret_cast<uint8*>(&dataValue[dataOffset]) = fields[sqlColumnNumber].GetUInt8(); + *reinterpret_cast<uint8*>(&dataValue[dataOffset]) = fields[sqlColumnNumber].Get<uint8>(); dataOffset += sizeof(uint8); break; case FT_STRING: - *reinterpret_cast<char**>(&dataValue[dataOffset]) = CloneStringToPool(fields[sqlColumnNumber].GetString()); + *reinterpret_cast<char**>(&dataValue[dataOffset]) = CloneStringToPool(fields[sqlColumnNumber].Get<std::string>()); dataOffset += sizeof(char*); break; case FT_SORT: diff --git a/src/server/shared/Realms/RealmList.cpp b/src/server/shared/Realms/RealmList.cpp index 505a02c6ec..8a07b710b2 100644 --- a/src/server/shared/Realms/RealmList.cpp +++ b/src/server/shared/Realms/RealmList.cpp @@ -59,10 +59,10 @@ void RealmList::LoadBuildInfo() { Field* fields = result->Fetch(); RealmBuildInfo& build = _builds.emplace_back(); - build.MajorVersion = fields[0].GetUInt32(); - build.MinorVersion = fields[1].GetUInt32(); - build.BugfixVersion = fields[2].GetUInt32(); - std::string hotfixVersion = fields[3].GetString(); + build.MajorVersion = fields[0].Get<uint32>(); + build.MinorVersion = fields[1].Get<uint32>(); + build.BugfixVersion = fields[2].Get<uint32>(); + std::string hotfixVersion = fields[3].Get<std::string>(); if (hotfixVersion.length() < build.HotfixVersion.size()) { @@ -73,15 +73,15 @@ void RealmList::LoadBuildInfo() std::fill(hotfixVersion.begin(), hotfixVersion.end(), '\0'); } - build.Build = fields[4].GetUInt32(); - std::string windowsHash = fields[5].GetString(); + build.Build = fields[4].Get<uint32>(); + std::string windowsHash = fields[5].Get<std::string>(); if (windowsHash.length() == build.WindowsHash.size() * 2) { HexStrToByteArray(windowsHash, build.WindowsHash); } - std::string macHash = fields[6].GetString(); + std::string macHash = fields[6].Get<std::string>(); if (macHash.length() == build.MacHash.size() * 2) { @@ -154,12 +154,12 @@ void RealmList::UpdateRealms(boost::system::error_code const& error) try { Field* fields = result->Fetch(); - uint32 realmId = fields[0].GetUInt32(); - std::string name = fields[1].GetString(); - std::string externalAddressString = fields[2].GetString(); - std::string localAddressString = fields[3].GetString(); - std::string localSubmaskString = fields[4].GetString(); - uint16 port = fields[5].GetUInt16(); + uint32 realmId = fields[0].Get<uint32>(); + std::string name = fields[1].Get<std::string>(); + std::string externalAddressString = fields[2].Get<std::string>(); + std::string localAddressString = fields[3].Get<std::string>(); + std::string localSubmaskString = fields[4].Get<std::string>(); + uint16 port = fields[5].Get<uint16>(); Optional<boost::asio::ip::tcp::endpoint> externalAddress = _resolver->Resolve(boost::asio::ip::tcp::v4(), externalAddressString, ""); if (!externalAddress) @@ -182,7 +182,7 @@ void RealmList::UpdateRealms(boost::system::error_code const& error) continue; } - uint8 icon = fields[6].GetUInt8(); + uint8 icon = fields[6].Get<uint8>(); if (icon == REALM_TYPE_FFA_PVP) { @@ -194,11 +194,11 @@ void RealmList::UpdateRealms(boost::system::error_code const& error) icon = REALM_TYPE_NORMAL; } - RealmFlags flag = RealmFlags(fields[7].GetUInt8()); - uint8 timezone = fields[8].GetUInt8(); - uint8 allowedSecurityLevel = fields[9].GetUInt8(); - float pop = fields[10].GetFloat(); - uint32 build = fields[11].GetUInt32(); + RealmFlags flag = RealmFlags(fields[7].Get<uint8>()); + uint8 timezone = fields[8].Get<uint8>(); + uint8 allowedSecurityLevel = fields[9].Get<uint8>(); + float pop = fields[10].Get<float>(); + uint32 build = fields[11].Get<uint32>(); RealmHandle id{ realmId }; diff --git a/src/server/shared/Secrets/SecretMgr.cpp b/src/server/shared/Secrets/SecretMgr.cpp index bded014971..cfc42e4ca6 100644 --- a/src/server/shared/Secrets/SecretMgr.cpp +++ b/src/server/shared/Secrets/SecretMgr.cpp @@ -110,10 +110,10 @@ void SecretMgr::AttemptLoad(Secrets i, LogLevel errorLevel, std::unique_lock<std Optional<std::string> oldDigest; { auto* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_SECRET_DIGEST); - stmt->setUInt32(0, i); + stmt->SetData(0, i); PreparedQueryResult result = LoginDatabase.Query(stmt); if (result) - oldDigest = result->Fetch()->GetString(); + oldDigest = result->Fetch()->Get<std::string>(); } Optional<BigNumber> currentValue = GetHexFromConfig(info.configKey, info.bits); @@ -182,8 +182,8 @@ Optional<std::string> SecretMgr::AttemptTransition(Secrets i, Optional<BigNumber if (fields[1].IsNull()) continue; - uint32 id = fields[0].GetUInt32(); - std::vector<uint8> totpSecret = fields[1].GetBinary(); + uint32 id = fields[0].Get<uint32>(); + std::vector<uint8> totpSecret = fields[1].Get<Binary>(); if (hadOldSecret) { @@ -199,8 +199,8 @@ Optional<std::string> SecretMgr::AttemptTransition(Secrets i, Optional<BigNumber Acore::Crypto::AEEncryptWithRandomIV<Acore::Crypto::AES>(totpSecret, newSecret->ToByteArray<Acore::Crypto::AES::KEY_SIZE_BYTES>()); auto* updateStmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_ACCOUNT_TOTP_SECRET); - updateStmt->setBinary(0, totpSecret); - updateStmt->setUInt32(1, id); + updateStmt->SetData(0, totpSecret); + updateStmt->SetData(1, id); trans->Append(updateStmt); } while (result->NextRow()); @@ -213,7 +213,7 @@ Optional<std::string> SecretMgr::AttemptTransition(Secrets i, Optional<BigNumber if (hadOldSecret) { auto* deleteStmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_SECRET_DIGEST); - deleteStmt->setUInt32(0, i); + deleteStmt->SetData(0, i); trans->Append(deleteStmt); } @@ -226,8 +226,8 @@ Optional<std::string> SecretMgr::AttemptTransition(Secrets i, Optional<BigNumber return std::string("Failed to hash new secret"); auto* insertStmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_SECRET_DIGEST); - insertStmt->setUInt32(0, i); - insertStmt->setString(1, *hash); + insertStmt->SetData(0, i); + insertStmt->SetData(1, *hash); trans->Append(insertStmt); } diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index ab3ff23975..633881678b 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -291,7 +291,7 @@ int main(int argc, char** argv) std::shared_ptr<void> dbHandle(nullptr, [](void*) { StopDB(); }); // set server offline (not connectable) - LoginDatabase.DirectPExecute("UPDATE realmlist SET flag = (flag & ~%u) | %u WHERE id = '%d'", REALM_FLAG_OFFLINE, REALM_FLAG_VERSION_MISMATCH, realm.Id.Realm); + LoginDatabase.DirectExecute("UPDATE realmlist SET flag = (flag & ~{}) | {} WHERE id = '{}'", REALM_FLAG_OFFLINE, REALM_FLAG_VERSION_MISMATCH, realm.Id.Realm); LoadRealmInfo(*ioContext); @@ -379,7 +379,7 @@ int main(int argc, char** argv) }); // Set server online (allow connecting now) - LoginDatabase.DirectPExecute("UPDATE realmlist SET flag = flag & ~%u, population = 0 WHERE id = '%u'", REALM_FLAG_VERSION_MISMATCH, realm.Id.Realm); + LoginDatabase.DirectExecute("UPDATE realmlist SET flag = flag & ~{}, population = 0 WHERE id = '{}'", REALM_FLAG_VERSION_MISMATCH, realm.Id.Realm); realm.PopulationLevel = 0.0f; realm.Flags = RealmFlags(realm.Flags & ~uint32(REALM_FLAG_VERSION_MISMATCH)); @@ -424,7 +424,7 @@ int main(int argc, char** argv) sScriptMgr->OnShutdown(); // set server offline - LoginDatabase.DirectPExecute("UPDATE realmlist SET flag = flag | %u WHERE id = '%d'", REALM_FLAG_OFFLINE, realm.Id.Realm); + LoginDatabase.DirectExecute("UPDATE realmlist SET flag = flag | {} WHERE id = '{}'", REALM_FLAG_OFFLINE, realm.Id.Realm); LOG_INFO("server.worldserver", "Halting process..."); @@ -475,7 +475,7 @@ bool StartDB() ClearOnlineAccounts(); ///- Insert version info into DB - WorldDatabase.PExecute("UPDATE version SET core_version = '%s', core_revision = '%s'", GitRevision::GetFullVersion(), GitRevision::GetHash()); // One-time query + WorldDatabase.Execute("UPDATE version SET core_version = '{}', core_revision = '{}'", GitRevision::GetFullVersion(), GitRevision::GetHash()); // One-time query sWorld->LoadDBVersion(); sWorld->LoadDBRevision(); @@ -501,7 +501,7 @@ void ClearOnlineAccounts() { // Reset online status for all accounts with characters on the current realm // pussywizard: tc query would set online=0 even if logged in on another realm >_> - LoginDatabase.DirectPExecute("UPDATE account SET online = 0 WHERE online = %u", realm.Id.Realm); + LoginDatabase.DirectExecute("UPDATE account SET online = 0 WHERE online = {}", realm.Id.Realm); // Reset online status for all characters CharacterDatabase.DirectExecute("UPDATE characters SET online = 0 WHERE online <> 0"); @@ -662,49 +662,49 @@ AsyncAcceptor* StartRaSocketAcceptor(Acore::Asio::IoContext& ioContext) bool LoadRealmInfo(Acore::Asio::IoContext& ioContext) { - QueryResult result = LoginDatabase.PQuery("SELECT id, name, address, localAddress, localSubnetMask, port, icon, flag, timezone, allowedSecurityLevel, population, gamebuild FROM realmlist WHERE id = %u", realm.Id.Realm); + QueryResult result = LoginDatabase.Query("SELECT id, name, address, localAddress, localSubnetMask, port, icon, flag, timezone, allowedSecurityLevel, population, gamebuild FROM realmlist WHERE id = {}", realm.Id.Realm); if (!result) return false; Acore::Asio::Resolver resolver(ioContext); Field* fields = result->Fetch(); - realm.Name = fields[1].GetString(); + realm.Name = fields[1].Get<std::string>(); - Optional<boost::asio::ip::tcp::endpoint> externalAddress = resolver.Resolve(boost::asio::ip::tcp::v4(), fields[2].GetString(), ""); + Optional<boost::asio::ip::tcp::endpoint> externalAddress = resolver.Resolve(boost::asio::ip::tcp::v4(), fields[2].Get<std::string>(), ""); if (!externalAddress) { - LOG_ERROR("server.worldserver", "Could not resolve address {}", fields[2].GetString()); + LOG_ERROR("server.worldserver", "Could not resolve address {}", fields[2].Get<std::string>()); return false; } realm.ExternalAddress = std::make_unique<boost::asio::ip::address>(externalAddress->address()); - Optional<boost::asio::ip::tcp::endpoint> localAddress = resolver.Resolve(boost::asio::ip::tcp::v4(), fields[3].GetString(), ""); + Optional<boost::asio::ip::tcp::endpoint> localAddress = resolver.Resolve(boost::asio::ip::tcp::v4(), fields[3].Get<std::string>(), ""); if (!localAddress) { - LOG_ERROR("server.worldserver", "Could not resolve address {}", fields[3].GetString()); + LOG_ERROR("server.worldserver", "Could not resolve address {}", fields[3].Get<std::string>()); return false; } realm.LocalAddress = std::make_unique<boost::asio::ip::address>(localAddress->address()); - Optional<boost::asio::ip::tcp::endpoint> localSubmask = resolver.Resolve(boost::asio::ip::tcp::v4(), fields[4].GetString(), ""); + Optional<boost::asio::ip::tcp::endpoint> localSubmask = resolver.Resolve(boost::asio::ip::tcp::v4(), fields[4].Get<std::string>(), ""); if (!localSubmask) { - LOG_ERROR("server.worldserver", "Could not resolve address {}", fields[4].GetString()); + LOG_ERROR("server.worldserver", "Could not resolve address {}", fields[4].Get<std::string>()); return false; } realm.LocalSubnetMask = std::make_unique<boost::asio::ip::address>(localSubmask->address()); - realm.Port = fields[5].GetUInt16(); - realm.Type = fields[6].GetUInt8(); - realm.Flags = RealmFlags(fields[7].GetUInt8()); - realm.Timezone = fields[8].GetUInt8(); - realm.AllowedSecurityLevel = AccountTypes(fields[9].GetUInt8()); - realm.PopulationLevel = fields[10].GetFloat(); - realm.Build = fields[11].GetUInt32(); + realm.Port = fields[5].Get<uint16>(); + realm.Type = fields[6].Get<uint8>(); + realm.Flags = RealmFlags(fields[7].Get<uint8>()); + realm.Timezone = fields[8].Get<uint8>(); + realm.AllowedSecurityLevel = AccountTypes(fields[9].Get<uint8>()); + realm.PopulationLevel = fields[10].Get<float>(); + realm.Build = fields[11].Get<uint32>(); return true; } diff --git a/src/server/worldserver/RemoteAccess/RASession.cpp b/src/server/worldserver/RemoteAccess/RASession.cpp index 4f478650ef..4bbd1b5385 100644 --- a/src/server/worldserver/RemoteAccess/RASession.cpp +++ b/src/server/worldserver/RemoteAccess/RASession.cpp @@ -126,7 +126,7 @@ bool RASession::CheckAccessLevel(const std::string& user) Utf8ToUpperOnlyLatin(safeUser); auto* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_ACCESS); - stmt->setString(0, safeUser); + stmt->SetData(0, safeUser); PreparedQueryResult result = LoginDatabase.Query(stmt); if (!result) @@ -137,12 +137,12 @@ bool RASession::CheckAccessLevel(const std::string& user) Field* fields = result->Fetch(); - if (fields[1].GetUInt8() < sConfigMgr->GetOption<int32>("Ra.MinLevel", 3)) + if (fields[1].Get<uint8>() < sConfigMgr->GetOption<int32>("Ra.MinLevel", 3)) { LOG_INFO("commands.ra", "User {} has no privilege to login", user); return false; } - else if (fields[2].GetInt32() != -1) + else if (fields[2].Get<int32>() != -1) { LOG_INFO("commands.ra", "User {} has to be assigned on all realms (with RealmID = '-1')", user); return false; @@ -163,12 +163,12 @@ bool RASession::CheckPassword(const std::string& user, const std::string& pass) auto* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_CHECK_PASSWORD_BY_NAME); - stmt->setString(0, safe_user); + stmt->SetData(0, safe_user); if (PreparedQueryResult result = LoginDatabase.Query(stmt)) { - Acore::Crypto::SRP6::Salt salt = (*result)[0].GetBinary<Acore::Crypto::SRP6::SALT_LENGTH>(); - Acore::Crypto::SRP6::Verifier verifier = (*result)[1].GetBinary<Acore::Crypto::SRP6::VERIFIER_LENGTH>(); + Acore::Crypto::SRP6::Salt salt = (*result)[0].Get<Binary, Acore::Crypto::SRP6::SALT_LENGTH>(); + Acore::Crypto::SRP6::Verifier verifier = (*result)[1].Get<Binary, Acore::Crypto::SRP6::VERIFIER_LENGTH>(); if (Acore::Crypto::SRP6::CheckLogin(safe_user, safe_pass, salt, verifier)) return true; diff --git a/src/tools/mesh_extractor/DBC.h b/src/tools/mesh_extractor/DBC.h index 4d93b13eaf..6c5126556b 100644 --- a/src/tools/mesh_extractor/DBC.h +++ b/src/tools/mesh_extractor/DBC.h @@ -61,7 +61,7 @@ public: return *(T*)(&Values[index]); } - std::string GetString(int index) + std::string Get<std::string>(int index) { return Source->GetStringByOffset(Values[index]); } diff --git a/src/tools/mesh_extractor/MeshExtractor.cpp b/src/tools/mesh_extractor/MeshExtractor.cpp index 117c0287f3..8ef89e31b4 100644 --- a/src/tools/mesh_extractor/MeshExtractor.cpp +++ b/src/tools/mesh_extractor/MeshExtractor.cpp @@ -50,7 +50,7 @@ void ExtractMMaps(std::set<uint32>& mapIds, uint32 threads) continue; } - std::string name = (*itr)->GetString(1); + std::string name = (*itr)->Get<std::string>(1); WDT wdt("World\\maps\\" + name + "\\" + name + ".wdt"); if (!wdt.IsValid) { @@ -121,7 +121,7 @@ void ExtractGameobjectModels() DBC* dbc = MPQHandler->GetDBC("GameObjectDisplayInfo"); for (std::vector<Record*>::iterator itr = dbc->Records.begin(); itr != dbc->Records.end(); ++itr) { - std::string path = (*itr)->GetString(1); + std::string path = (*itr)->Get<std::string>(1); std::string fileName = Utils::GetPlainName(path.c_str()); std::string extension = Utils::GetExtension(fileName); // Convert the extension to lowercase |