Core/DBLayer: Prevent committing transactions started on a different database
This commit is contained in:
@@ -392,7 +392,7 @@ int32 LoginRESTService::HandlePostLogin(std::shared_ptr<AsyncRequest> request)
|
||||
|
||||
if (maxWrongPassword)
|
||||
{
|
||||
SQLTransaction trans = LoginDatabase.BeginTransaction();
|
||||
LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction();
|
||||
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_BNET_FAILED_LOGINS);
|
||||
stmt->setUInt32(0, accountId);
|
||||
trans->Append(stmt);
|
||||
|
||||
@@ -28,11 +28,21 @@ typedef std::shared_ptr<ResultSet> QueryResult;
|
||||
typedef std::future<QueryResult> QueryResultFuture;
|
||||
typedef std::promise<QueryResult> QueryResultPromise;
|
||||
|
||||
class CharacterDatabaseConnection;
|
||||
class HotfixDatabaseConnection;
|
||||
class LoginDatabaseConnection;
|
||||
class WorldDatabaseConnection;
|
||||
|
||||
class PreparedStatementBase;
|
||||
|
||||
template<typename T>
|
||||
class PreparedStatement;
|
||||
|
||||
using CharacterDatabasePreparedStatement = PreparedStatement<CharacterDatabaseConnection>;
|
||||
using HotfixDatabasePreparedStatement = PreparedStatement<HotfixDatabaseConnection>;
|
||||
using LoginDatabasePreparedStatement = PreparedStatement<LoginDatabaseConnection>;
|
||||
using WorldDatabasePreparedStatement = PreparedStatement<WorldDatabaseConnection>;
|
||||
|
||||
class PreparedResultSet;
|
||||
typedef std::shared_ptr<PreparedResultSet> PreparedQueryResult;
|
||||
typedef std::future<PreparedQueryResult> PreparedQueryResultFuture;
|
||||
@@ -40,8 +50,18 @@ typedef std::promise<PreparedQueryResult> PreparedQueryResultPromise;
|
||||
|
||||
class QueryCallback;
|
||||
|
||||
class TransactionBase;
|
||||
|
||||
template<typename T>
|
||||
class Transaction;
|
||||
typedef std::shared_ptr<Transaction> SQLTransaction;
|
||||
|
||||
template<typename T>
|
||||
using SQLTransaction = std::shared_ptr<Transaction<T>>;
|
||||
|
||||
using CharacterDatabaseTransaction = SQLTransaction<CharacterDatabaseConnection>;
|
||||
using HotfixDatabaseTransaction = SQLTransaction<HotfixDatabaseConnection>;
|
||||
using LoginDatabaseTransaction = SQLTransaction<LoginDatabaseConnection>;
|
||||
using WorldDatabaseTransaction = SQLTransaction<WorldDatabaseConnection>;
|
||||
|
||||
class SQLQueryHolder;
|
||||
typedef std::future<SQLQueryHolder*> QueryResultHolderFuture;
|
||||
|
||||
@@ -211,13 +211,13 @@ QueryResultHolderFuture DatabaseWorkerPool<T>::DelayQueryHolder(SQLQueryHolder*
|
||||
}
|
||||
|
||||
template <class T>
|
||||
SQLTransaction DatabaseWorkerPool<T>::BeginTransaction()
|
||||
SQLTransaction<T> DatabaseWorkerPool<T>::BeginTransaction()
|
||||
{
|
||||
return std::make_shared<Transaction>();
|
||||
return std::make_shared<Transaction<T>>();
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void DatabaseWorkerPool<T>::CommitTransaction(SQLTransaction transaction)
|
||||
void DatabaseWorkerPool<T>::CommitTransaction(SQLTransaction<T> transaction)
|
||||
{
|
||||
#ifdef TRINITY_DEBUG
|
||||
//! Only analyze transaction weaknesses in Debug mode.
|
||||
@@ -240,7 +240,7 @@ void DatabaseWorkerPool<T>::CommitTransaction(SQLTransaction transaction)
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void DatabaseWorkerPool<T>::DirectCommitTransaction(SQLTransaction& transaction)
|
||||
void DatabaseWorkerPool<T>::DirectCommitTransaction(SQLTransaction<T>& transaction)
|
||||
{
|
||||
T* connection = GetFreeConnection();
|
||||
int errorCode = connection->ExecuteTransaction(transaction);
|
||||
@@ -426,7 +426,7 @@ void DatabaseWorkerPool<T>::DirectExecute(PreparedStatement<T>* stmt)
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void DatabaseWorkerPool<T>::ExecuteOrAppend(SQLTransaction& trans, const char* sql)
|
||||
void DatabaseWorkerPool<T>::ExecuteOrAppend(SQLTransaction<T>& trans, const char* sql)
|
||||
{
|
||||
if (!trans)
|
||||
Execute(sql);
|
||||
@@ -435,7 +435,7 @@ void DatabaseWorkerPool<T>::ExecuteOrAppend(SQLTransaction& trans, const char* s
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void DatabaseWorkerPool<T>::ExecuteOrAppend(SQLTransaction& trans, PreparedStatement<T>* stmt)
|
||||
void DatabaseWorkerPool<T>::ExecuteOrAppend(SQLTransaction<T>& trans, PreparedStatement<T>* stmt)
|
||||
{
|
||||
if (!trans)
|
||||
Execute(stmt);
|
||||
|
||||
@@ -167,23 +167,23 @@ class DatabaseWorkerPool
|
||||
*/
|
||||
|
||||
//! Begins an automanaged transaction pointer that will automatically rollback if not commited. (Autocommit=0)
|
||||
SQLTransaction BeginTransaction();
|
||||
SQLTransaction<T> BeginTransaction();
|
||||
|
||||
//! Enqueues a collection of one-way SQL operations (can be both adhoc and prepared). The order in which these operations
|
||||
//! were appended to the transaction will be respected during execution.
|
||||
void CommitTransaction(SQLTransaction transaction);
|
||||
void CommitTransaction(SQLTransaction<T> transaction);
|
||||
|
||||
//! Directly executes a collection of one-way SQL operations (can be both adhoc and prepared). The order in which these operations
|
||||
//! were appended to the transaction will be respected during execution.
|
||||
void DirectCommitTransaction(SQLTransaction& transaction);
|
||||
void DirectCommitTransaction(SQLTransaction<T>& transaction);
|
||||
|
||||
//! 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& trans, const char* sql);
|
||||
void ExecuteOrAppend(SQLTransaction<T>& trans, const char* 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.
|
||||
void ExecuteOrAppend(SQLTransaction& trans, PreparedStatement<T>* stmt);
|
||||
void ExecuteOrAppend(SQLTransaction<T>& trans, PreparedStatement<T>* stmt);
|
||||
|
||||
/**
|
||||
Other
|
||||
|
||||
@@ -647,6 +647,4 @@ public:
|
||||
void DoPrepareStatements() override;
|
||||
};
|
||||
|
||||
using CharacterDatabasePreparedStatement = PreparedStatement<CharacterDatabaseConnection>;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -589,6 +589,4 @@ public:
|
||||
void DoPrepareStatements() override;
|
||||
};
|
||||
|
||||
using HotfixDatabasePreparedStatement = PreparedStatement<HotfixDatabaseConnection>;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -181,6 +181,4 @@ public:
|
||||
void DoPrepareStatements() override;
|
||||
};
|
||||
|
||||
using LoginDatabasePreparedStatement = PreparedStatement<LoginDatabaseConnection>;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -116,6 +116,4 @@ public:
|
||||
void DoPrepareStatements() override;
|
||||
};
|
||||
|
||||
using WorldDatabasePreparedStatement = PreparedStatement<WorldDatabaseConnection>;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -372,7 +372,7 @@ void MySQLConnection::CommitTransaction()
|
||||
Execute("COMMIT");
|
||||
}
|
||||
|
||||
int MySQLConnection::ExecuteTransaction(SQLTransaction& transaction)
|
||||
int MySQLConnection::ExecuteTransaction(std::shared_ptr<TransactionBase> transaction)
|
||||
{
|
||||
std::vector<SQLElementData> const& queries = transaction->m_queries;
|
||||
if (queries.empty())
|
||||
|
||||
@@ -79,7 +79,7 @@ class TC_DATABASE_API MySQLConnection
|
||||
void BeginTransaction();
|
||||
void RollbackTransaction();
|
||||
void CommitTransaction();
|
||||
int ExecuteTransaction(SQLTransaction& transaction);
|
||||
int ExecuteTransaction(std::shared_ptr<TransactionBase> transaction);
|
||||
|
||||
void Ping();
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
std::mutex TransactionTask::_deadlockLock;
|
||||
|
||||
//- Append a raw ad-hoc query to the transaction
|
||||
void Transaction::Append(const char* sql)
|
||||
void TransactionBase::Append(const char* sql)
|
||||
{
|
||||
SQLElementData data;
|
||||
data.type = SQL_ELEMENT_RAW;
|
||||
@@ -32,7 +32,7 @@ void Transaction::Append(const char* sql)
|
||||
}
|
||||
|
||||
//- Append a prepared statement to the transaction
|
||||
void Transaction::Append(PreparedStatementBase* stmt)
|
||||
void TransactionBase::AppendPreparedStatement(PreparedStatementBase* stmt)
|
||||
{
|
||||
SQLElementData data;
|
||||
data.type = SQL_ELEMENT_PREPARED;
|
||||
@@ -40,7 +40,7 @@ void Transaction::Append(PreparedStatementBase* stmt)
|
||||
m_queries.push_back(data);
|
||||
}
|
||||
|
||||
void Transaction::Cleanup()
|
||||
void TransactionBase::Cleanup()
|
||||
{
|
||||
// This might be called by explicit calls to Cleanup or by the auto-destructor
|
||||
if (_cleanedUp)
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#include <vector>
|
||||
|
||||
/*! Transactions, high level class. */
|
||||
class TC_DATABASE_API Transaction
|
||||
class TC_DATABASE_API TransactionBase
|
||||
{
|
||||
friend class TransactionTask;
|
||||
friend class MySQLConnection;
|
||||
@@ -35,10 +35,9 @@ class TC_DATABASE_API Transaction
|
||||
friend class DatabaseWorkerPool;
|
||||
|
||||
public:
|
||||
Transaction() : _cleanedUp(false) { }
|
||||
~Transaction() { Cleanup(); }
|
||||
TransactionBase() : _cleanedUp(false) { }
|
||||
virtual ~TransactionBase() { Cleanup(); }
|
||||
|
||||
void Append(PreparedStatementBase* statement);
|
||||
void Append(const char* sql);
|
||||
template<typename Format, typename... Args>
|
||||
void PAppend(Format&& sql, Args&&... args)
|
||||
@@ -49,12 +48,23 @@ class TC_DATABASE_API Transaction
|
||||
std::size_t GetSize() const { return m_queries.size(); }
|
||||
|
||||
protected:
|
||||
void AppendPreparedStatement(PreparedStatementBase* statement);
|
||||
void Cleanup();
|
||||
std::vector<SQLElementData> m_queries;
|
||||
|
||||
private:
|
||||
bool _cleanedUp;
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class Transaction : public TransactionBase
|
||||
{
|
||||
public:
|
||||
using TransactionBase::Append;
|
||||
void Append(PreparedStatement<T>* statement)
|
||||
{
|
||||
AppendPreparedStatement(statement);
|
||||
}
|
||||
};
|
||||
|
||||
/*! Low level class*/
|
||||
@@ -64,13 +74,13 @@ class TC_DATABASE_API TransactionTask : public SQLOperation
|
||||
friend class DatabaseWorker;
|
||||
|
||||
public:
|
||||
TransactionTask(SQLTransaction trans) : m_trans(trans) { }
|
||||
TransactionTask(std::shared_ptr<TransactionBase> trans) : m_trans(trans) { }
|
||||
~TransactionTask() { }
|
||||
|
||||
protected:
|
||||
bool Execute() override;
|
||||
|
||||
SQLTransaction m_trans;
|
||||
std::shared_ptr<TransactionBase> m_trans;
|
||||
static std::mutex _deadlockLock;
|
||||
};
|
||||
|
||||
|
||||
@@ -130,7 +130,7 @@ AccountOpResult AccountMgr::DeleteAccount(uint32 accountId)
|
||||
stmt->setUInt32(0, accountId);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
|
||||
SQLTransaction trans = LoginDatabase.BeginTransaction();
|
||||
LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction();
|
||||
|
||||
loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_ACCOUNT);
|
||||
loginStmt->setUInt32(0, accountId);
|
||||
@@ -519,7 +519,7 @@ void AccountMgr::UpdateAccountAccess(rbac::RBACData* rbac, uint32 accountId, uin
|
||||
if (rbac && securityLevel != rbac->GetSecurityLevel())
|
||||
rbac->SetSecurityLevel(securityLevel);
|
||||
|
||||
SQLTransaction trans = LoginDatabase.BeginTransaction();
|
||||
LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction();
|
||||
// Delete old security level from DB
|
||||
if (realmId == -1)
|
||||
{
|
||||
|
||||
@@ -214,7 +214,7 @@ void PlayerAchievementMgr::Reset()
|
||||
|
||||
void PlayerAchievementMgr::DeleteFromDB(ObjectGuid const& guid)
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_ACHIEVEMENT);
|
||||
stmt->setUInt64(0, guid.GetCounter());
|
||||
@@ -290,7 +290,7 @@ void PlayerAchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, Pre
|
||||
}
|
||||
}
|
||||
|
||||
void PlayerAchievementMgr::SaveToDB(SQLTransaction& trans)
|
||||
void PlayerAchievementMgr::SaveToDB(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
if (!_completedAchievements.empty())
|
||||
{
|
||||
@@ -530,7 +530,7 @@ void PlayerAchievementMgr::CompletedAchievement(AchievementEntry const* achievem
|
||||
draft = MailDraft(subject, text);
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
Item* item = reward->ItemId ? Item::CreateItem(reward->ItemId, 1, _owner) : NULL;
|
||||
if (item)
|
||||
@@ -660,7 +660,7 @@ void GuildAchievementMgr::Reset()
|
||||
|
||||
void GuildAchievementMgr::DeleteFromDB(ObjectGuid const& guid)
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_GUILD_ACHIEVEMENTS);
|
||||
stmt->setUInt64(0, guid.GetCounter());
|
||||
@@ -734,7 +734,7 @@ void GuildAchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, Prep
|
||||
}
|
||||
}
|
||||
|
||||
void GuildAchievementMgr::SaveToDB(SQLTransaction& trans)
|
||||
void GuildAchievementMgr::SaveToDB(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt;
|
||||
std::ostringstream guidstr;
|
||||
|
||||
@@ -82,7 +82,7 @@ public:
|
||||
|
||||
static void DeleteFromDB(ObjectGuid const& guid);
|
||||
void LoadFromDB(PreparedQueryResult achievementResult, PreparedQueryResult criteriaResult);
|
||||
void SaveToDB(SQLTransaction& trans);
|
||||
void SaveToDB(CharacterDatabaseTransaction& trans);
|
||||
|
||||
void ResetCriteria(CriteriaTypes type, uint64 miscValue1 = 0, uint64 miscValue2 = 0, bool evenIfCriteriaComplete = false);
|
||||
|
||||
@@ -117,7 +117,7 @@ public:
|
||||
|
||||
static void DeleteFromDB(ObjectGuid const& guid);
|
||||
void LoadFromDB(PreparedQueryResult achievementResult, PreparedQueryResult criteriaResult);
|
||||
void SaveToDB(SQLTransaction& trans);
|
||||
void SaveToDB(CharacterDatabaseTransaction& trans);
|
||||
|
||||
void SendAllData(Player const* receiver) const override;
|
||||
void SendAchievementInfo(Player* receiver, uint32 achievementId = 0) const;
|
||||
|
||||
@@ -108,7 +108,7 @@ uint64 AuctionHouseMgr::GetAuctionDeposit(AuctionHouseEntry const* entry, uint32
|
||||
}
|
||||
|
||||
//does not clear ram
|
||||
void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, SQLTransaction& trans)
|
||||
void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
Item* item = GetAItem(auction->itemGUIDLow);
|
||||
if (!item)
|
||||
@@ -177,7 +177,7 @@ void AuctionHouseMgr::SendAuctionWonMail(AuctionEntry* auction, SQLTransaction&
|
||||
}
|
||||
}
|
||||
|
||||
void AuctionHouseMgr::SendAuctionSalePendingMail(AuctionEntry* auction, SQLTransaction& trans)
|
||||
void AuctionHouseMgr::SendAuctionSalePendingMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
ObjectGuid owner_guid = ObjectGuid::Create<HighGuid::Player>(auction->owner);
|
||||
Player* owner = ObjectAccessor::FindConnectedPlayer(owner_guid);
|
||||
@@ -189,7 +189,7 @@ void AuctionHouseMgr::SendAuctionSalePendingMail(AuctionEntry* auction, SQLTrans
|
||||
}
|
||||
|
||||
//call this method to send mail to auction owner, when auction is successful, it does not clear ram
|
||||
void AuctionHouseMgr::SendAuctionSuccessfulMail(AuctionEntry* auction, SQLTransaction& trans)
|
||||
void AuctionHouseMgr::SendAuctionSuccessfulMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
ObjectGuid owner_guid = ObjectGuid::Create<HighGuid::Player>(auction->owner);
|
||||
Player* owner = ObjectAccessor::FindConnectedPlayer(owner_guid);
|
||||
@@ -217,7 +217,7 @@ void AuctionHouseMgr::SendAuctionSuccessfulMail(AuctionEntry* auction, SQLTransa
|
||||
}
|
||||
|
||||
//does not clear ram
|
||||
void AuctionHouseMgr::SendAuctionExpiredMail(AuctionEntry* auction, SQLTransaction& trans)
|
||||
void AuctionHouseMgr::SendAuctionExpiredMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
//return an item in auction to its owner by mail
|
||||
Item* item = GetAItem(auction->itemGUIDLow);
|
||||
@@ -245,7 +245,7 @@ void AuctionHouseMgr::SendAuctionExpiredMail(AuctionEntry* auction, SQLTransacti
|
||||
}
|
||||
|
||||
//this function sends mail to old bidder
|
||||
void AuctionHouseMgr::SendAuctionOutbiddedMail(AuctionEntry* auction, uint64 /*newPrice*/, Player* /*newBidder*/, SQLTransaction& trans)
|
||||
void AuctionHouseMgr::SendAuctionOutbiddedMail(AuctionEntry* auction, uint64 /*newPrice*/, Player* /*newBidder*/, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
ObjectGuid oldBidder_guid = ObjectGuid::Create<HighGuid::Player>(auction->bidder);
|
||||
Player* oldBidder = ObjectAccessor::FindConnectedPlayer(oldBidder_guid);
|
||||
@@ -269,7 +269,7 @@ void AuctionHouseMgr::SendAuctionOutbiddedMail(AuctionEntry* auction, uint64 /*n
|
||||
}
|
||||
|
||||
//this function sends mail, when auction is cancelled to old bidder
|
||||
void AuctionHouseMgr::SendAuctionCancelledToBidderMail(AuctionEntry* auction, SQLTransaction& trans)
|
||||
void AuctionHouseMgr::SendAuctionCancelledToBidderMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
ObjectGuid bidder_guid = ObjectGuid::Create<HighGuid::Player>(auction->bidder);
|
||||
Player* bidder = ObjectAccessor::FindConnectedPlayer(bidder_guid);
|
||||
@@ -355,7 +355,7 @@ void AuctionHouseMgr::LoadAuctions()
|
||||
|
||||
uint32 count = 0;
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
do
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
@@ -393,7 +393,7 @@ bool AuctionHouseMgr::RemoveAItem(ObjectGuid::LowType id, bool deleteItem)
|
||||
|
||||
if (deleteItem)
|
||||
{
|
||||
SQLTransaction trans = SQLTransaction(nullptr);
|
||||
CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr);
|
||||
i->second->FSetState(ITEM_REMOVED);
|
||||
i->second->SaveToDB(trans);
|
||||
}
|
||||
@@ -447,7 +447,7 @@ void AuctionHouseMgr::PendingAuctionProcess(Player* player)
|
||||
|
||||
PlayerAuctions* thisAH = iterMap->second.first;
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
uint32 totalItems = 0;
|
||||
for (auto itrAH = thisAH->begin(); itrAH != thisAH->end(); ++itrAH)
|
||||
@@ -511,7 +511,7 @@ void AuctionHouseMgr::UpdatePendingAuctions()
|
||||
TC_LOG_WARN("auctionHouse", "Player %s was offline, unable to retrieve deposit!", playerGUID.ToString().c_str());
|
||||
PlayerAuctions* thisAH = itr->second.first;
|
||||
++itr;
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
for (auto AHitr = thisAH->begin(); AHitr != thisAH->end();)
|
||||
{
|
||||
AuctionEntry* AH = (*AHitr);
|
||||
@@ -614,7 +614,7 @@ void AuctionHouseObject::Update()
|
||||
++itr;
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
for (AuctionEntryMap::iterator it = AuctionsMap.begin(); it != AuctionsMap.end();)
|
||||
{
|
||||
@@ -862,14 +862,14 @@ uint64 AuctionEntry::GetAuctionOutBid() const
|
||||
return outbid ? outbid : 1;
|
||||
}
|
||||
|
||||
void AuctionEntry::DeleteFromDB(SQLTransaction& trans) const
|
||||
void AuctionEntry::DeleteFromDB(CharacterDatabaseTransaction& trans) const
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_AUCTION);
|
||||
stmt->setUInt32(0, Id);
|
||||
trans->Append(stmt);
|
||||
}
|
||||
|
||||
void AuctionEntry::SaveToDB(SQLTransaction& trans) const
|
||||
void AuctionEntry::SaveToDB(CharacterDatabaseTransaction& trans) const
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_AUCTION);
|
||||
stmt->setUInt32(0, Id);
|
||||
|
||||
@@ -102,8 +102,8 @@ struct TC_GAME_API AuctionEntry
|
||||
uint64 GetAuctionCut() const;
|
||||
uint64 GetAuctionOutBid() const;
|
||||
void BuildAuctionInfo(std::vector<WorldPackets::AuctionHouse::AuctionItem>& items, bool listAuctionItems, Item* sourceItem = nullptr) const;
|
||||
void DeleteFromDB(SQLTransaction& trans) const;
|
||||
void SaveToDB(SQLTransaction& trans) const;
|
||||
void DeleteFromDB(CharacterDatabaseTransaction& trans) const;
|
||||
void SaveToDB(CharacterDatabaseTransaction& trans) const;
|
||||
bool LoadFromDB(Field* fields);
|
||||
std::string BuildAuctionMailSubject(MailAuctionAnswers response) const;
|
||||
static std::string BuildAuctionMailBody(uint64 lowGuid, uint64 bid, uint64 buyout, uint64 deposit, uint64 cut);
|
||||
@@ -211,12 +211,12 @@ class TC_GAME_API AuctionHouseMgr
|
||||
}
|
||||
|
||||
//auction messages
|
||||
void SendAuctionWonMail(AuctionEntry* auction, SQLTransaction& trans);
|
||||
void SendAuctionSalePendingMail(AuctionEntry* auction, SQLTransaction& trans);
|
||||
void SendAuctionSuccessfulMail(AuctionEntry* auction, SQLTransaction& trans);
|
||||
void SendAuctionExpiredMail(AuctionEntry* auction, SQLTransaction& trans);
|
||||
void SendAuctionOutbiddedMail(AuctionEntry* auction, uint64 newPrice, Player* newBidder, SQLTransaction& trans);
|
||||
void SendAuctionCancelledToBidderMail(AuctionEntry* auction, SQLTransaction& trans);
|
||||
void SendAuctionWonMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans);
|
||||
void SendAuctionSalePendingMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans);
|
||||
void SendAuctionSuccessfulMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans);
|
||||
void SendAuctionExpiredMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans);
|
||||
void SendAuctionOutbiddedMail(AuctionEntry* auction, uint64 newPrice, Player* newBidder, CharacterDatabaseTransaction& trans);
|
||||
void SendAuctionCancelledToBidderMail(AuctionEntry* auction, CharacterDatabaseTransaction& trans);
|
||||
|
||||
static uint64 GetAuctionDeposit(AuctionHouseEntry const* entry, uint32 time, Item* pItem, uint32 count);
|
||||
static AuctionHouseEntry const* GetAuctionHouseEntry(uint32 factionTemplateId, uint32* houseId);
|
||||
|
||||
@@ -390,7 +390,7 @@ void AuctionBotBuyer::BuyEntry(AuctionEntry* auction, AuctionHouseObject* auctio
|
||||
{
|
||||
TC_LOG_DEBUG("ahbot", "AHBot: Entry %u bought at %.2fg", auction->Id, float(auction->buyout) / GOLD);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
// Send mail to previous bidder if any
|
||||
if (auction->bidder && !sAuctionBotConfig->IsBotChar(auction->bidder))
|
||||
@@ -421,7 +421,7 @@ void AuctionBotBuyer::PlaceBidToEntry(AuctionEntry* auction, uint32 bidPrice)
|
||||
{
|
||||
TC_LOG_DEBUG("ahbot", "AHBot: Bid placed to entry %u, %.2fg", auction->Id, float(bidPrice) / GOLD);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
// Send mail to previous bidder if any
|
||||
if (auction->bidder && !sAuctionBotConfig->IsBotChar(auction->bidder))
|
||||
|
||||
@@ -921,7 +921,7 @@ void AuctionBotSeller::AddNewAuctions(SellerConfiguration& config)
|
||||
AllItemsArray allItems(MAX_AUCTION_QUALITY, std::vector<uint32>(MAX_ITEM_CLASS));
|
||||
// Main loop
|
||||
// getRandomArray will give what categories of items should be added (return true if there is at least 1 items missed)
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
while (GetItemsToSell(config, itemsToSell, allItems) && items > 0)
|
||||
{
|
||||
--items;
|
||||
|
||||
@@ -237,7 +237,7 @@ void BattlePetMgr::LoadFromDB(PreparedQueryResult pets, PreparedQueryResult slot
|
||||
}
|
||||
}
|
||||
|
||||
void BattlePetMgr::SaveToDB(SQLTransaction& trans)
|
||||
void BattlePetMgr::SaveToDB(LoginDatabaseTransaction& trans)
|
||||
{
|
||||
LoginDatabasePreparedStatement* stmt = nullptr;
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@ public:
|
||||
static uint8 GetDefaultPetQuality(uint32 species);
|
||||
|
||||
void LoadFromDB(PreparedQueryResult pets, PreparedQueryResult slots);
|
||||
void SaveToDB(SQLTransaction& trans);
|
||||
void SaveToDB(LoginDatabaseTransaction& trans);
|
||||
|
||||
BattlePet* GetPet(ObjectGuid guid);
|
||||
void AddPet(uint32 species, uint32 creatureId, uint16 breed, uint8 quality, uint16 level = 1);
|
||||
|
||||
@@ -356,7 +356,7 @@ void ArenaTeam::Disband(WorldSession* session)
|
||||
DelMember(Members.front().Guid, false);
|
||||
|
||||
// Update database
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ARENA_TEAM);
|
||||
stmt->setUInt32(0, TeamId);
|
||||
@@ -379,7 +379,7 @@ void ArenaTeam::Disband()
|
||||
DelMember(Members.front().Guid, false);
|
||||
|
||||
// Update database
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ARENA_TEAM);
|
||||
stmt->setUInt32(0, TeamId);
|
||||
@@ -739,7 +739,7 @@ void ArenaTeam::SaveToDB()
|
||||
// Save team and member stats to db
|
||||
// Called after a match has ended or when calculating arena_points
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ARENA_TEAM_STATS);
|
||||
stmt->setUInt16(0, Stats.Rating);
|
||||
|
||||
@@ -909,7 +909,7 @@ void Battleground::RemovePlayerAtLeave(ObjectGuid guid, bool Transport, bool Sen
|
||||
}
|
||||
else
|
||||
{
|
||||
SQLTransaction trans(nullptr);
|
||||
CharacterDatabaseTransaction trans(nullptr);
|
||||
Player::OfflineResurrect(guid, trans);
|
||||
}
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ void BlackMarketMgr::LoadAuctions()
|
||||
|
||||
_lastUpdate = time(nullptr); //Set update time before loading
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
do
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
@@ -142,7 +142,7 @@ void BlackMarketMgr::LoadAuctions()
|
||||
|
||||
void BlackMarketMgr::Update(bool updateTime)
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
time_t now = time(nullptr);
|
||||
for (BlackMarketEntryMap::iterator itr = _auctions.begin(); itr != _auctions.end(); ++itr)
|
||||
{
|
||||
@@ -163,7 +163,7 @@ void BlackMarketMgr::Update(bool updateTime)
|
||||
|
||||
void BlackMarketMgr::RefreshAuctions()
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
// Delete completed auctions
|
||||
for (BlackMarketEntryMap::iterator itr = _auctions.begin(); itr != _auctions.end();)
|
||||
{
|
||||
@@ -258,7 +258,7 @@ void BlackMarketMgr::AddTemplate(BlackMarketTemplate* templ)
|
||||
_templates[templ->MarketID] = templ;
|
||||
}
|
||||
|
||||
void BlackMarketMgr::SendAuctionWonMail(BlackMarketEntry* entry, SQLTransaction& trans)
|
||||
void BlackMarketMgr::SendAuctionWonMail(BlackMarketEntry* entry, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
// Mail already sent
|
||||
if (entry->GetMailSent())
|
||||
@@ -318,7 +318,7 @@ void BlackMarketMgr::SendAuctionWonMail(BlackMarketEntry* entry, SQLTransaction&
|
||||
entry->MailSent();
|
||||
}
|
||||
|
||||
void BlackMarketMgr::SendAuctionOutbidMail(BlackMarketEntry* entry, SQLTransaction& trans)
|
||||
void BlackMarketMgr::SendAuctionOutbidMail(BlackMarketEntry* entry, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
ObjectGuid oldBidder_guid = ObjectGuid::Create<HighGuid::Player>(entry->GetBidder());
|
||||
Player* oldBidder = ObjectAccessor::FindConnectedPlayer(oldBidder_guid);
|
||||
@@ -445,7 +445,7 @@ bool BlackMarketEntry::LoadFromDB(Field* fields)
|
||||
return true;
|
||||
}
|
||||
|
||||
void BlackMarketEntry::SaveToDB(SQLTransaction& trans) const
|
||||
void BlackMarketEntry::SaveToDB(CharacterDatabaseTransaction& trans) const
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_BLACKMARKET_AUCTIONS);
|
||||
|
||||
@@ -458,7 +458,7 @@ void BlackMarketEntry::SaveToDB(SQLTransaction& trans) const
|
||||
trans->Append(stmt);
|
||||
}
|
||||
|
||||
void BlackMarketEntry::DeleteFromDB(SQLTransaction& trans) const
|
||||
void BlackMarketEntry::DeleteFromDB(CharacterDatabaseTransaction& trans) const
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_BLACKMARKET_AUCTIONS);
|
||||
stmt->setInt32(0, _marketId);
|
||||
@@ -479,7 +479,7 @@ bool BlackMarketEntry::ValidateBid(uint64 bid) const
|
||||
return true;
|
||||
}
|
||||
|
||||
void BlackMarketEntry::PlaceBid(uint64 bid, Player* player, SQLTransaction& trans) //Updated
|
||||
void BlackMarketEntry::PlaceBid(uint64 bid, Player* player, CharacterDatabaseTransaction& trans) //Updated
|
||||
{
|
||||
if (bid < _currentBid)
|
||||
return;
|
||||
|
||||
@@ -94,13 +94,13 @@ public:
|
||||
time_t GetExpirationTime() const;
|
||||
bool IsCompleted() const;
|
||||
|
||||
void DeleteFromDB(SQLTransaction& trans) const;
|
||||
void SaveToDB(SQLTransaction& trans) const;
|
||||
void DeleteFromDB(CharacterDatabaseTransaction& trans) const;
|
||||
void SaveToDB(CharacterDatabaseTransaction& trans) const;
|
||||
bool LoadFromDB(Field* fields);
|
||||
|
||||
uint64 GetMinIncrement() const { return (_currentBid / 20) - ((_currentBid / 20) % GOLD); } //5% increase every bid (has to be round gold value)
|
||||
bool ValidateBid(uint64 bid) const;
|
||||
void PlaceBid(uint64 bid, Player* player, SQLTransaction& trans);
|
||||
void PlaceBid(uint64 bid, Player* player, CharacterDatabaseTransaction& trans);
|
||||
|
||||
std::string BuildAuctionMailSubject(BMAHMailAuctionAnswers response) const;
|
||||
std::string BuildAuctionMailBody();
|
||||
@@ -147,8 +147,8 @@ class TC_GAME_API BlackMarketMgr
|
||||
void AddAuction(BlackMarketEntry* auction);
|
||||
void AddTemplate(BlackMarketTemplate* templ);
|
||||
|
||||
void SendAuctionWonMail(BlackMarketEntry* entry, SQLTransaction& trans);
|
||||
void SendAuctionOutbidMail(BlackMarketEntry* entry, SQLTransaction& trans); // Call before incrementing bid
|
||||
void SendAuctionWonMail(BlackMarketEntry* entry, CharacterDatabaseTransaction& trans);
|
||||
void SendAuctionOutbidMail(BlackMarketEntry* entry, CharacterDatabaseTransaction& trans); // Call before incrementing bid
|
||||
|
||||
private:
|
||||
BlackMarketEntryMap _auctions;
|
||||
|
||||
@@ -137,11 +137,11 @@ void CalendarMgr::AddEvent(CalendarEvent* calendarEvent, CalendarSendEventType s
|
||||
|
||||
void CalendarMgr::AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite)
|
||||
{
|
||||
SQLTransaction dummy;
|
||||
CharacterDatabaseTransaction dummy;
|
||||
AddInvite(calendarEvent, invite, dummy);
|
||||
}
|
||||
|
||||
void CalendarMgr::AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite, SQLTransaction& trans)
|
||||
void CalendarMgr::AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
if (!calendarEvent->IsGuildAnnouncement() && calendarEvent->GetOwnerGUID() != invite->GetInviteeGUID())
|
||||
SendCalendarEventInvite(*invite);
|
||||
@@ -168,7 +168,7 @@ void CalendarMgr::RemoveEvent(uint64 eventId, ObjectGuid remover)
|
||||
|
||||
SendCalendarEventRemovedAlert(*calendarEvent);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabasePreparedStatement* stmt;
|
||||
MailDraft mail(calendarEvent->BuildCalendarMailSubject(remover), calendarEvent->BuildCalendarMailBody());
|
||||
|
||||
@@ -214,7 +214,7 @@ void CalendarMgr::RemoveInvite(uint64 inviteId, uint64 eventId, ObjectGuid /*rem
|
||||
if (itr == _invites[eventId].end())
|
||||
return;
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CALENDAR_INVITE);
|
||||
stmt->setUInt64(0, (*itr)->GetInviteId());
|
||||
trans->Append(stmt);
|
||||
@@ -251,11 +251,11 @@ void CalendarMgr::UpdateEvent(CalendarEvent* calendarEvent)
|
||||
|
||||
void CalendarMgr::UpdateInvite(CalendarInvite* invite)
|
||||
{
|
||||
SQLTransaction dummy;
|
||||
CharacterDatabaseTransaction dummy;
|
||||
UpdateInvite(invite, dummy);
|
||||
}
|
||||
|
||||
void CalendarMgr::UpdateInvite(CalendarInvite* invite, SQLTransaction& trans)
|
||||
void CalendarMgr::UpdateInvite(CalendarInvite* invite, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_CALENDAR_INVITE);
|
||||
stmt->setUInt64(0, invite->GetInviteId());
|
||||
|
||||
@@ -313,10 +313,10 @@ class TC_GAME_API CalendarMgr
|
||||
void UpdateEvent(CalendarEvent* calendarEvent);
|
||||
|
||||
void AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite);
|
||||
void AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite, SQLTransaction& trans);
|
||||
void AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite, CharacterDatabaseTransaction& trans);
|
||||
void RemoveInvite(uint64 inviteId, uint64 eventId, ObjectGuid remover);
|
||||
void UpdateInvite(CalendarInvite* invite);
|
||||
void UpdateInvite(CalendarInvite* invite, SQLTransaction& trans);
|
||||
void UpdateInvite(CalendarInvite* invite, CharacterDatabaseTransaction& trans);
|
||||
|
||||
void RemoveAllPlayerEventsAndInvites(ObjectGuid guid);
|
||||
void RemovePlayerGuildEventsAndSignups(ObjectGuid guid, ObjectGuid::LowType guildId);
|
||||
|
||||
@@ -101,7 +101,7 @@ void LFGMgr::_SaveToDB(ObjectGuid guid, uint32 db_guid)
|
||||
if (!guid.IsParty())
|
||||
return;
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_LFG_DATA);
|
||||
stmt->setUInt32(0, db_guid);
|
||||
|
||||
@@ -95,7 +95,7 @@ bool Corpse::Create(ObjectGuid::LowType guidlow, Player* owner)
|
||||
void Corpse::SaveToDB()
|
||||
{
|
||||
// prevent DB data inconsistence problems and duplicates
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
DeleteFromDB(trans);
|
||||
|
||||
std::ostringstream items;
|
||||
@@ -136,12 +136,12 @@ void Corpse::SaveToDB()
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
}
|
||||
|
||||
void Corpse::DeleteFromDB(SQLTransaction& trans)
|
||||
void Corpse::DeleteFromDB(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
DeleteFromDB(GetOwnerGUID(), trans);
|
||||
}
|
||||
|
||||
void Corpse::DeleteFromDB(ObjectGuid const& ownerGuid, SQLTransaction& trans)
|
||||
void Corpse::DeleteFromDB(ObjectGuid const& ownerGuid, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CORPSE);
|
||||
stmt->setUInt64(0, ownerGuid.GetCounter());
|
||||
|
||||
@@ -66,8 +66,8 @@ class TC_GAME_API Corpse : public WorldObject, public GridObject<Corpse>
|
||||
void SaveToDB();
|
||||
bool LoadCorpseFromDB(ObjectGuid::LowType guid, Field* fields);
|
||||
|
||||
void DeleteFromDB(SQLTransaction& trans);
|
||||
static void DeleteFromDB(ObjectGuid const& ownerGuid, SQLTransaction& trans);
|
||||
void DeleteFromDB(CharacterDatabaseTransaction& trans);
|
||||
static void DeleteFromDB(ObjectGuid const& ownerGuid, CharacterDatabaseTransaction& trans);
|
||||
|
||||
void AddCorpseDynamicFlag(CorpseDynFlags dynamicFlags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Corpse::m_corpseData).ModifyValue(&UF::CorpseData::DynamicFlags), dynamicFlags); }
|
||||
void RemoveCorpseDynamicFlag(CorpseDynFlags dynamicFlags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Corpse::m_corpseData).ModifyValue(&UF::CorpseData::DynamicFlags), dynamicFlags); }
|
||||
|
||||
@@ -1241,7 +1241,7 @@ void Creature::SaveToDB(uint32 mapid, std::vector<Difficulty> const& spawnDiffic
|
||||
data.phaseGroup = GetDBPhase() < 0 ? -GetDBPhase() : data.phaseGroup;
|
||||
|
||||
// update in DB
|
||||
SQLTransaction trans = WorldDatabase.BeginTransaction();
|
||||
WorldDatabaseTransaction trans = WorldDatabase.BeginTransaction();
|
||||
|
||||
WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CREATURE);
|
||||
stmt->setUInt64(0, m_spawnId);
|
||||
@@ -1635,7 +1635,7 @@ void Creature::DeleteFromDB()
|
||||
GetMap()->RemoveCreatureRespawnTime(m_spawnId);
|
||||
sObjectMgr->DeleteCreatureData(m_spawnId);
|
||||
|
||||
SQLTransaction trans = WorldDatabase.BeginTransaction();
|
||||
WorldDatabaseTransaction trans = WorldDatabase.BeginTransaction();
|
||||
|
||||
WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CREATURE);
|
||||
stmt->setUInt64(0, m_spawnId);
|
||||
|
||||
@@ -962,7 +962,7 @@ void GameObject::SaveToDB(uint32 mapid, std::vector<Difficulty> const& spawnDiff
|
||||
data.phaseGroup = GetDBPhase() < 0 ? -GetDBPhase() : data.phaseGroup;
|
||||
|
||||
// Update in DB
|
||||
SQLTransaction trans = WorldDatabase.BeginTransaction();
|
||||
WorldDatabaseTransaction trans = WorldDatabase.BeginTransaction();
|
||||
|
||||
uint8 index = 0;
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ bool Bag::Create(ObjectGuid::LowType guidlow, uint32 itemid, Player const* owner
|
||||
return true;
|
||||
}
|
||||
|
||||
void Bag::SaveToDB(SQLTransaction& trans)
|
||||
void Bag::SaveToDB(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
Item::SaveToDB(trans);
|
||||
}
|
||||
@@ -127,7 +127,7 @@ bool Bag::LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fie
|
||||
return true;
|
||||
}
|
||||
|
||||
void Bag::DeleteFromDB(SQLTransaction& trans)
|
||||
void Bag::DeleteFromDB(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_BAG_SIZE; ++i)
|
||||
if (m_bagslot[i])
|
||||
|
||||
@@ -51,11 +51,11 @@ class TC_GAME_API Bag : public Item
|
||||
|
||||
// DB operations
|
||||
// overwrite virtual Item::SaveToDB
|
||||
void SaveToDB(SQLTransaction& trans) override;
|
||||
void SaveToDB(CharacterDatabaseTransaction& trans) override;
|
||||
// overwrite virtual Item::LoadFromDB
|
||||
bool LoadFromDB(ObjectGuid::LowType guid, ObjectGuid owner_guid, Field* fields, uint32 entry) override;
|
||||
// overwrite virtual Item::DeleteFromDB
|
||||
void DeleteFromDB(SQLTransaction& trans) override;
|
||||
void DeleteFromDB(CharacterDatabaseTransaction& trans) override;
|
||||
|
||||
void BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) const override;
|
||||
void BuildValuesCreate(ByteBuffer* data, Player const* target) const override;
|
||||
|
||||
@@ -373,7 +373,7 @@ void Item::UpdateDuration(Player* owner, uint32 diff)
|
||||
SetState(ITEM_CHANGED, owner); // save new time in database
|
||||
}
|
||||
|
||||
void Item::SaveToDB(SQLTransaction& trans)
|
||||
void Item::SaveToDB(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
bool isInTransaction = bool(trans);
|
||||
if (!isInTransaction)
|
||||
@@ -875,14 +875,14 @@ void Item::CheckArtifactRelicSlotUnlock(Player const* owner)
|
||||
}
|
||||
|
||||
/*static*/
|
||||
void Item::DeleteFromDB(SQLTransaction& trans, ObjectGuid::LowType itemGuid)
|
||||
void Item::DeleteFromDB(CharacterDatabaseTransaction& trans, ObjectGuid::LowType itemGuid)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_INSTANCE);
|
||||
stmt->setUInt64(0, itemGuid);
|
||||
trans->Append(stmt);
|
||||
}
|
||||
|
||||
void Item::DeleteFromDB(SQLTransaction& trans)
|
||||
void Item::DeleteFromDB(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
DeleteFromDB(trans, GetGUID().GetCounter());
|
||||
|
||||
@@ -892,14 +892,14 @@ void Item::DeleteFromDB(SQLTransaction& trans)
|
||||
}
|
||||
|
||||
/*static*/
|
||||
void Item::DeleteFromInventoryDB(SQLTransaction& trans, ObjectGuid::LowType itemGuid)
|
||||
void Item::DeleteFromInventoryDB(CharacterDatabaseTransaction& trans, ObjectGuid::LowType itemGuid)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_INVENTORY_BY_ITEM);
|
||||
stmt->setUInt64(0, itemGuid);
|
||||
trans->Append(stmt);
|
||||
}
|
||||
|
||||
void Item::DeleteFromInventoryDB(SQLTransaction& trans)
|
||||
void Item::DeleteFromInventoryDB(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
DeleteFromInventoryDB(trans, GetGUID().GetCounter());
|
||||
}
|
||||
@@ -1486,7 +1486,7 @@ void Item::RemoveFromObjectUpdate()
|
||||
|
||||
void Item::SaveRefundDataToDB()
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ITEM_REFUND_INSTANCE);
|
||||
stmt->setUInt64(0, GetGUID().GetCounter());
|
||||
@@ -1502,7 +1502,7 @@ void Item::SaveRefundDataToDB()
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
}
|
||||
|
||||
void Item::DeleteRefundDataFromDB(SQLTransaction* trans)
|
||||
void Item::DeleteRefundDataFromDB(CharacterDatabaseTransaction* trans)
|
||||
{
|
||||
if (trans)
|
||||
{
|
||||
@@ -1513,7 +1513,7 @@ void Item::DeleteRefundDataFromDB(SQLTransaction* trans)
|
||||
}
|
||||
}
|
||||
|
||||
void Item::SetNotRefundable(Player* owner, bool changestate /*= true*/, SQLTransaction* trans /*= nullptr*/, bool addToCollection /*= true*/)
|
||||
void Item::SetNotRefundable(Player* owner, bool changestate /*= true*/, CharacterDatabaseTransaction* trans /*= nullptr*/, bool addToCollection /*= true*/)
|
||||
{
|
||||
if (!HasItemFlag(ITEM_FIELD_FLAG_REFUNDABLE))
|
||||
return;
|
||||
@@ -1949,7 +1949,7 @@ void Item::ItemContainerSaveLootToDB()
|
||||
if (loot.isLooted()) // no money and no loot
|
||||
return;
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
loot.containerID = GetGUID(); // Save this for when a LootItem is removed
|
||||
|
||||
|
||||
@@ -169,7 +169,7 @@ class TC_GAME_API Item : public Object
|
||||
bool IsBattlenetAccountBound() const { return (GetTemplate()->GetFlags2() & ITEM_FLAG2_BNET_ACCOUNT_TRADE_OK) != 0; }
|
||||
bool IsBindedNotWith(Player const* player) const;
|
||||
bool IsBoundByEnchant() const;
|
||||
virtual void SaveToDB(SQLTransaction& trans);
|
||||
virtual void SaveToDB(CharacterDatabaseTransaction& trans);
|
||||
virtual bool LoadFromDB(ObjectGuid::LowType guid, ObjectGuid ownerGuid, Field* fields, uint32 entry);
|
||||
void LoadArtifactData(Player* owner, uint64 xp, uint32 artifactAppearanceId, uint32 artifactTier, std::vector<ArtifactPowerLoadInfo>& powers); // must be called after LoadFromDB to have gems (relics) initialized
|
||||
void CheckArtifactRelicSlotUnlock(Player const* owner);
|
||||
@@ -178,9 +178,9 @@ class TC_GAME_API Item : public Object
|
||||
void SetBonuses(std::vector<int32> bonusListIDs);
|
||||
void ClearBonuses();
|
||||
|
||||
static void DeleteFromDB(SQLTransaction& trans, ObjectGuid::LowType itemGuid);
|
||||
virtual void DeleteFromDB(SQLTransaction& trans);
|
||||
static void DeleteFromInventoryDB(SQLTransaction& trans, ObjectGuid::LowType itemGuid);
|
||||
static void DeleteFromDB(CharacterDatabaseTransaction& trans, ObjectGuid::LowType itemGuid);
|
||||
virtual void DeleteFromDB(CharacterDatabaseTransaction& trans);
|
||||
static void DeleteFromInventoryDB(CharacterDatabaseTransaction& trans, ObjectGuid::LowType itemGuid);
|
||||
|
||||
// Lootable items and their contents
|
||||
void ItemContainerSaveLootToDB();
|
||||
@@ -190,9 +190,9 @@ class TC_GAME_API Item : public Object
|
||||
void ItemContainerDeleteLootMoneyFromDB();
|
||||
void ItemContainerDeleteLootMoneyAndLootItemsFromDB();
|
||||
|
||||
void DeleteFromInventoryDB(SQLTransaction& trans);
|
||||
void DeleteFromInventoryDB(CharacterDatabaseTransaction& trans);
|
||||
void SaveRefundDataToDB();
|
||||
void DeleteRefundDataFromDB(SQLTransaction* trans);
|
||||
void DeleteRefundDataFromDB(CharacterDatabaseTransaction* trans);
|
||||
|
||||
Bag* ToBag() { if (IsBag()) return reinterpret_cast<Bag*>(this); else return NULL; }
|
||||
const Bag* ToBag() const { if (IsBag()) return reinterpret_cast<const Bag*>(this); else return NULL; }
|
||||
@@ -299,7 +299,7 @@ class TC_GAME_API Item : public Object
|
||||
void SetFixedLevel(uint8 level);
|
||||
|
||||
// Item Refund system
|
||||
void SetNotRefundable(Player* owner, bool changestate = true, SQLTransaction* trans = nullptr, bool addToCollection = true);
|
||||
void SetNotRefundable(Player* owner, bool changestate = true, CharacterDatabaseTransaction* trans = nullptr, bool addToCollection = true);
|
||||
void SetRefundRecipient(ObjectGuid const& guid) { m_refundRecipient = guid; }
|
||||
void SetPaidMoney(uint64 money) { m_paidMoney = money; }
|
||||
void SetPaidExtendedCost(uint32 iece) { m_paidExtendedCost = iece; }
|
||||
|
||||
@@ -278,7 +278,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c
|
||||
// PET_SAVE_NOT_IN_SLOT(100) = not stable slot (summoning))
|
||||
if (fields[7].GetUInt8())
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_PET_SLOT_BY_SLOT_EXCLUDE_ID);
|
||||
stmt->setUInt8(0, uint8(PET_SAVE_NOT_IN_SLOT));
|
||||
@@ -410,7 +410,7 @@ void Pet::SavePetToDB(PetSaveMode mode)
|
||||
uint32 curhealth = GetHealth();
|
||||
uint32 curmana = GetPower(POWER_MANA);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
// save auras before possibly removing them
|
||||
_SaveAuras(trans);
|
||||
|
||||
@@ -488,7 +488,7 @@ void Pet::SavePetToDB(PetSaveMode mode)
|
||||
|
||||
void Pet::DeleteFromDB(uint32 guidlow)
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_BY_ID);
|
||||
stmt->setUInt32(0, guidlow);
|
||||
@@ -1076,7 +1076,7 @@ void Pet::_LoadSpells()
|
||||
}
|
||||
}
|
||||
|
||||
void Pet::_SaveSpells(SQLTransaction& trans)
|
||||
void Pet::_SaveSpells(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
for (PetSpellMap::iterator itr = m_spells.begin(), next = m_spells.begin(); itr != m_spells.end(); itr = next)
|
||||
{
|
||||
@@ -1229,7 +1229,7 @@ void Pet::_LoadAuras(uint32 timediff)
|
||||
}
|
||||
}
|
||||
|
||||
void Pet::_SaveAuras(SQLTransaction& trans)
|
||||
void Pet::_SaveAuras(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PET_AURA_EFFECTS);
|
||||
stmt->setUInt32(0, m_charmInfo->GetPetNumber());
|
||||
|
||||
@@ -114,9 +114,9 @@ class TC_GAME_API Pet : public Guardian
|
||||
|
||||
void _LoadSpellCooldowns();
|
||||
void _LoadAuras(uint32 timediff);
|
||||
void _SaveAuras(SQLTransaction& trans);
|
||||
void _SaveAuras(CharacterDatabaseTransaction& trans);
|
||||
void _LoadSpells();
|
||||
void _SaveSpells(SQLTransaction& trans);
|
||||
void _SaveSpells(CharacterDatabaseTransaction& trans);
|
||||
|
||||
bool addSpell(uint32 spellId, ActiveStates active = ACT_DECIDE, PetSpellState state = PETSPELL_NEW, PetSpellType type = PETSPELL_NORMAL);
|
||||
bool learnSpell(uint32 spell_id);
|
||||
|
||||
@@ -123,7 +123,7 @@ void CollectionMgr::LoadAccountToys(PreparedQueryResult result)
|
||||
} while (result->NextRow());
|
||||
}
|
||||
|
||||
void CollectionMgr::SaveAccountToys(SQLTransaction& trans)
|
||||
void CollectionMgr::SaveAccountToys(LoginDatabaseTransaction& trans)
|
||||
{
|
||||
LoginDatabasePreparedStatement* stmt = nullptr;
|
||||
for (auto const& toy : _toys)
|
||||
@@ -201,7 +201,7 @@ void CollectionMgr::LoadAccountHeirlooms(PreparedQueryResult result)
|
||||
} while (result->NextRow());
|
||||
}
|
||||
|
||||
void CollectionMgr::SaveAccountHeirlooms(SQLTransaction& trans)
|
||||
void CollectionMgr::SaveAccountHeirlooms(LoginDatabaseTransaction& trans)
|
||||
{
|
||||
LoginDatabasePreparedStatement* stmt = nullptr;
|
||||
for (auto const& heirloom : _heirlooms)
|
||||
@@ -395,7 +395,7 @@ void CollectionMgr::LoadAccountMounts(PreparedQueryResult result)
|
||||
} while (result->NextRow());
|
||||
}
|
||||
|
||||
void CollectionMgr::SaveAccountMounts(SQLTransaction& trans)
|
||||
void CollectionMgr::SaveAccountMounts(LoginDatabaseTransaction& trans)
|
||||
{
|
||||
for (auto const& mount : _mounts)
|
||||
{
|
||||
@@ -551,7 +551,7 @@ void CollectionMgr::LoadAccountItemAppearances(PreparedQueryResult knownAppearan
|
||||
}
|
||||
}
|
||||
|
||||
void CollectionMgr::SaveAccountItemAppearances(SQLTransaction& trans)
|
||||
void CollectionMgr::SaveAccountItemAppearances(LoginDatabaseTransaction& trans)
|
||||
{
|
||||
uint16 blockIndex = 0;
|
||||
boost::to_block_range(*_appearances, DynamicBitsetBlockOutputIterator([this, &blockIndex, trans](uint32 blockValue)
|
||||
|
||||
@@ -86,7 +86,7 @@ public:
|
||||
// Account-wide toys
|
||||
void LoadToys();
|
||||
void LoadAccountToys(PreparedQueryResult result);
|
||||
void SaveAccountToys(SQLTransaction& trans);
|
||||
void SaveAccountToys(LoginDatabaseTransaction& trans);
|
||||
void ToySetFavorite(uint32 itemId, bool favorite);
|
||||
void ToyClearFanfare(uint32 itemId);
|
||||
|
||||
@@ -101,7 +101,7 @@ public:
|
||||
// Account-wide heirlooms
|
||||
void LoadHeirlooms();
|
||||
void LoadAccountHeirlooms(PreparedQueryResult result);
|
||||
void SaveAccountHeirlooms(SQLTransaction& trans);
|
||||
void SaveAccountHeirlooms(LoginDatabaseTransaction& trans);
|
||||
void AddHeirloom(uint32 itemId, uint32 flags);
|
||||
void UpgradeHeirloom(uint32 itemId, int32 castItem);
|
||||
void CheckHeirloomUpgrades(Item* item);
|
||||
@@ -114,7 +114,7 @@ public:
|
||||
// Account-wide mounts
|
||||
void LoadMounts();
|
||||
void LoadAccountMounts(PreparedQueryResult result);
|
||||
void SaveAccountMounts(SQLTransaction& trans);
|
||||
void SaveAccountMounts(LoginDatabaseTransaction& trans);
|
||||
bool AddMount(uint32 spellId, MountStatusFlags flags, bool factionMount = false, bool learned = false);
|
||||
void MountSetFavorite(uint32 spellId, bool favorite);
|
||||
void SendSingleMountUpdate(std::pair<uint32, MountStatusFlags> mount);
|
||||
@@ -123,7 +123,7 @@ public:
|
||||
// Appearances
|
||||
void LoadItemAppearances();
|
||||
void LoadAccountItemAppearances(PreparedQueryResult knownAppearances, PreparedQueryResult favoriteAppearances);
|
||||
void SaveAccountItemAppearances(SQLTransaction& trans);
|
||||
void SaveAccountItemAppearances(LoginDatabaseTransaction& trans);
|
||||
void AddItemAppearance(Item* item);
|
||||
void AddItemAppearance(uint32 itemId, uint32 appearanceModId = 0);
|
||||
void AddTransmogSet(uint32 transmogSetId);
|
||||
|
||||
@@ -2480,7 +2480,7 @@ void Player::GiveLevel(uint8 level)
|
||||
if (MailLevelReward const* mailReward = sObjectMgr->GetMailLevelReward(level, getRaceMask()))
|
||||
{
|
||||
/// @todo Poor design of mail system
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
MailDraft(mailReward->mailTemplateId).SendMailTo(trans, this, MailSender(MAIL_CREATURE, uint64(mailReward->senderEntry)));
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
}
|
||||
@@ -3535,7 +3535,7 @@ bool Player::ResetTalents(bool noCost)
|
||||
RemoveTalent(talentInfo);
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
_SaveTalents(trans);
|
||||
_SaveSpells(trans);
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
@@ -3572,7 +3572,7 @@ void Player::ResetPvpTalents()
|
||||
RemovePvpTalent(talentInfo);
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
_SaveTalents(trans);
|
||||
_SaveSpells(trans);
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
@@ -3807,7 +3807,7 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe
|
||||
charDeleteMethod = CHAR_DELETE_REMOVE;
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
if (ObjectGuid::LowType guildId = sCharacterCache->GetCharacterGuildIdByGuid(playerguid))
|
||||
if (Guild* guild = sGuildMgr->GetGuildById(guildId))
|
||||
guild->DeleteMember(trans, playerguid, false, false, true);
|
||||
@@ -4405,7 +4405,7 @@ void Player::KillPlayer()
|
||||
UpdateObjectVisibility();
|
||||
}
|
||||
|
||||
void Player::OfflineResurrect(ObjectGuid const& guid, SQLTransaction& trans)
|
||||
void Player::OfflineResurrect(ObjectGuid const& guid, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
Corpse::DeleteFromDB(guid, trans);
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG);
|
||||
@@ -6611,7 +6611,7 @@ void Player::_LoadCurrency(PreparedQueryResult result)
|
||||
} while (result->NextRow());
|
||||
}
|
||||
|
||||
void Player::_SaveCurrency(SQLTransaction& trans)
|
||||
void Player::_SaveCurrency(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt;
|
||||
for (PlayerCurrenciesMap::iterator itr = _currencyStorage.begin(); itr != _currencyStorage.end(); ++itr)
|
||||
@@ -9955,7 +9955,7 @@ void Player::SetInventorySlotCount(uint8 slots)
|
||||
{
|
||||
std::size_t fullBatches = unstorableItems.size() / MAX_MAIL_ITEMS;
|
||||
std::size_t remainder = unstorableItems.size() % MAX_MAIL_ITEMS;
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
auto sendItemsBatch = [this, &trans, &unstorableItems](std::size_t batchNumber, std::size_t batchSize)
|
||||
{
|
||||
@@ -15418,7 +15418,7 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
||||
if (uint32 mail_template_id = quest->GetRewMailTemplateId())
|
||||
{
|
||||
/// @todo Poor design of mail system
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
if (uint32 questMailSender = quest->GetRewMailSenderEntry())
|
||||
MailDraft(mail_template_id).SendMailTo(trans, this, questMailSender, MAIL_CHECK_MASK_HAS_BODY, quest->GetRewMailDelaySecs());
|
||||
else
|
||||
@@ -15449,7 +15449,7 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
|
||||
// StoreNewItem, mail reward, etc. save data directly to the database
|
||||
// to prevent exploitable data desynchronisation we save the quest status to the database too
|
||||
// (to prevent rewarding this quest another time while rewards were already given out)
|
||||
SQLTransaction trans = SQLTransaction(nullptr);
|
||||
CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr);
|
||||
_SaveQuestStatus(trans);
|
||||
|
||||
SendQuestReward(quest, questGiver ? questGiver->ToCreature() : nullptr, XP, !announce);
|
||||
@@ -18598,7 +18598,7 @@ void Player::_LoadInventory(PreparedQueryResult result, PreparedQueryResult arti
|
||||
std::map<ObjectGuid, Bag*> bagMap; // fast guid lookup for bags
|
||||
std::map<ObjectGuid, Item*> invalidBagMap; // fast guid lookup for bags
|
||||
std::list<Item*> problematicItems;
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
// Prevent items from being added to the queue while loading
|
||||
m_itemUpdateQueueBlocked = true;
|
||||
@@ -18790,7 +18790,7 @@ void Player::_LoadVoidStorage(PreparedQueryResult result)
|
||||
while (result->NextRow());
|
||||
}
|
||||
|
||||
Item* Player::_LoadItem(SQLTransaction& trans, uint32 zoneId, uint32 timeDiff, Field* fields)
|
||||
Item* Player::_LoadItem(CharacterDatabaseTransaction& trans, uint32 zoneId, uint32 timeDiff, Field* fields)
|
||||
{
|
||||
Item* item = nullptr;
|
||||
ObjectGuid::LowType itemGuid = fields[0].GetUInt64();
|
||||
@@ -18965,7 +18965,7 @@ void Player::_LoadMailedItems(Mail* mail)
|
||||
|
||||
item->FSetState(ITEM_REMOVED);
|
||||
|
||||
SQLTransaction temp = SQLTransaction(nullptr);
|
||||
CharacterDatabaseTransaction temp = CharacterDatabaseTransaction(nullptr);
|
||||
item->SaveToDB(temp); // it also deletes item object !
|
||||
continue;
|
||||
}
|
||||
@@ -19899,7 +19899,7 @@ void Player::SaveToDB(bool create /*=false*/)
|
||||
if (!create)
|
||||
sScriptMgr->OnPlayerSave(this);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabasePreparedStatement* stmt = nullptr;
|
||||
uint8 index = 0;
|
||||
|
||||
@@ -20253,18 +20253,18 @@ void Player::SaveToDB(bool create /*=false*/)
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
|
||||
// TODO: Move this out
|
||||
trans = LoginDatabase.BeginTransaction();
|
||||
GetSession()->GetCollectionMgr()->SaveAccountToys(trans);
|
||||
GetSession()->GetBattlePetMgr()->SaveToDB(trans);
|
||||
GetSession()->GetCollectionMgr()->SaveAccountHeirlooms(trans);
|
||||
GetSession()->GetCollectionMgr()->SaveAccountMounts(trans);
|
||||
GetSession()->GetCollectionMgr()->SaveAccountItemAppearances(trans);
|
||||
LoginDatabaseTransaction loginTransaction = LoginDatabase.BeginTransaction();
|
||||
GetSession()->GetCollectionMgr()->SaveAccountToys(loginTransaction);
|
||||
GetSession()->GetBattlePetMgr()->SaveToDB(loginTransaction);
|
||||
GetSession()->GetCollectionMgr()->SaveAccountHeirlooms(loginTransaction);
|
||||
GetSession()->GetCollectionMgr()->SaveAccountMounts(loginTransaction);
|
||||
GetSession()->GetCollectionMgr()->SaveAccountItemAppearances(loginTransaction);
|
||||
|
||||
LoginDatabasePreparedStatement* loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_BNET_LAST_PLAYER_CHARACTERS);
|
||||
loginStmt->setUInt32(0, GetSession()->GetAccountId());
|
||||
loginStmt->setUInt8(1, realm.Id.Region);
|
||||
loginStmt->setUInt8(2, realm.Id.Site);
|
||||
trans->Append(loginStmt);
|
||||
loginTransaction->Append(loginStmt);
|
||||
|
||||
loginStmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_BNET_LAST_PLAYER_CHARACTERS);
|
||||
loginStmt->setUInt32(0, GetSession()->GetAccountId());
|
||||
@@ -20274,9 +20274,9 @@ void Player::SaveToDB(bool create /*=false*/)
|
||||
loginStmt->setString(4, GetName());
|
||||
loginStmt->setUInt64(5, GetGUID().GetCounter());
|
||||
loginStmt->setUInt32(6, time(nullptr));
|
||||
trans->Append(loginStmt);
|
||||
loginTransaction->Append(loginStmt);
|
||||
|
||||
LoginDatabase.CommitTransaction(trans);
|
||||
LoginDatabase.CommitTransaction(loginTransaction);
|
||||
|
||||
// save pet (hunter pet level and experience and all type pets health/mana).
|
||||
if (Pet* pet = GetPet())
|
||||
@@ -20284,14 +20284,14 @@ void Player::SaveToDB(bool create /*=false*/)
|
||||
}
|
||||
|
||||
// fast save function for item/money cheating preventing - save only inventory and money state
|
||||
void Player::SaveInventoryAndGoldToDB(SQLTransaction& trans)
|
||||
void Player::SaveInventoryAndGoldToDB(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
_SaveInventory(trans);
|
||||
_SaveCurrency(trans);
|
||||
SaveGoldToDB(trans);
|
||||
}
|
||||
|
||||
void Player::SaveGoldToDB(SQLTransaction& trans) const
|
||||
void Player::SaveGoldToDB(CharacterDatabaseTransaction& trans) const
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_MONEY);
|
||||
stmt->setUInt64(0, GetMoney());
|
||||
@@ -20299,7 +20299,7 @@ void Player::SaveGoldToDB(SQLTransaction& trans) const
|
||||
trans->Append(stmt);
|
||||
}
|
||||
|
||||
void Player::_SaveActions(SQLTransaction& trans)
|
||||
void Player::_SaveActions(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt;
|
||||
|
||||
@@ -20347,7 +20347,7 @@ void Player::_SaveActions(SQLTransaction& trans)
|
||||
}
|
||||
}
|
||||
|
||||
void Player::_SaveAuras(SQLTransaction& trans)
|
||||
void Player::_SaveAuras(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_AURA_EFFECT);
|
||||
stmt->setUInt64(0, GetGUID().GetCounter());
|
||||
@@ -20402,7 +20402,7 @@ void Player::_SaveAuras(SQLTransaction& trans)
|
||||
}
|
||||
}
|
||||
|
||||
void Player::_SaveInventory(SQLTransaction& trans)
|
||||
void Player::_SaveInventory(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt;
|
||||
// force items in buyback slots to new state
|
||||
@@ -20527,7 +20527,7 @@ void Player::_SaveInventory(SQLTransaction& trans)
|
||||
m_itemUpdateQueue.clear();
|
||||
}
|
||||
|
||||
void Player::_SaveVoidStorage(SQLTransaction& trans)
|
||||
void Player::_SaveVoidStorage(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = nullptr;
|
||||
|
||||
@@ -20564,7 +20564,7 @@ void Player::_SaveVoidStorage(SQLTransaction& trans)
|
||||
}
|
||||
}
|
||||
|
||||
void Player::_SaveCUFProfiles(SQLTransaction& trans)
|
||||
void Player::_SaveCUFProfiles(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt;
|
||||
for (uint8 i = 0; i < MAX_CUF_PROFILES; ++i)
|
||||
@@ -20600,7 +20600,7 @@ void Player::_SaveCUFProfiles(SQLTransaction& trans)
|
||||
}
|
||||
}
|
||||
|
||||
void Player::_SaveMail(SQLTransaction& trans)
|
||||
void Player::_SaveMail(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
if (!m_mailsLoaded)
|
||||
return;
|
||||
@@ -20673,7 +20673,7 @@ void Player::_SaveMail(SQLTransaction& trans)
|
||||
m_mailsUpdated = false;
|
||||
}
|
||||
|
||||
void Player::_SaveQuestStatus(SQLTransaction& trans)
|
||||
void Player::_SaveQuestStatus(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
bool isTransaction = bool(trans);
|
||||
if (!isTransaction)
|
||||
@@ -20756,7 +20756,7 @@ void Player::_SaveQuestStatus(SQLTransaction& trans)
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
}
|
||||
|
||||
void Player::_SaveDailyQuestStatus(SQLTransaction& trans)
|
||||
void Player::_SaveDailyQuestStatus(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
if (!m_DailyQuestChanged)
|
||||
return;
|
||||
@@ -20792,7 +20792,7 @@ void Player::_SaveDailyQuestStatus(SQLTransaction& trans)
|
||||
}
|
||||
}
|
||||
|
||||
void Player::_SaveWeeklyQuestStatus(SQLTransaction& trans)
|
||||
void Player::_SaveWeeklyQuestStatus(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
if (!m_WeeklyQuestChanged || m_weeklyquests.empty())
|
||||
return;
|
||||
@@ -20815,7 +20815,7 @@ void Player::_SaveWeeklyQuestStatus(SQLTransaction& trans)
|
||||
m_WeeklyQuestChanged = false;
|
||||
}
|
||||
|
||||
void Player::_SaveSeasonalQuestStatus(SQLTransaction& trans)
|
||||
void Player::_SaveSeasonalQuestStatus(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
if (!m_SeasonalQuestChanged || m_seasonalquests.empty())
|
||||
return;
|
||||
@@ -20844,7 +20844,7 @@ void Player::_SaveSeasonalQuestStatus(SQLTransaction& trans)
|
||||
m_SeasonalQuestChanged = false;
|
||||
}
|
||||
|
||||
void Player::_SaveMonthlyQuestStatus(SQLTransaction& trans)
|
||||
void Player::_SaveMonthlyQuestStatus(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
if (!m_MonthlyQuestChanged || m_monthlyquests.empty())
|
||||
return;
|
||||
@@ -20867,7 +20867,7 @@ void Player::_SaveMonthlyQuestStatus(SQLTransaction& trans)
|
||||
m_MonthlyQuestChanged = false;
|
||||
}
|
||||
|
||||
void Player::_SaveSkills(SQLTransaction& trans)
|
||||
void Player::_SaveSkills(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt;
|
||||
// we don't need transactions here.
|
||||
@@ -20915,7 +20915,7 @@ void Player::_SaveSkills(SQLTransaction& trans)
|
||||
}
|
||||
}
|
||||
|
||||
void Player::_SaveSpells(SQLTransaction& trans)
|
||||
void Player::_SaveSpells(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt;
|
||||
|
||||
@@ -20955,7 +20955,7 @@ void Player::_SaveSpells(SQLTransaction& trans)
|
||||
|
||||
// save player stats -- only for external usage
|
||||
// real stats will be recalculated on player login
|
||||
void Player::_SaveStats(SQLTransaction& trans) const
|
||||
void Player::_SaveStats(CharacterDatabaseTransaction& trans) const
|
||||
{
|
||||
// check if stat saving is enabled and if char level is high enough
|
||||
if (!sWorld->getIntConfig(CONFIG_MIN_LEVEL_STAT_SAVE) || getLevel() < sWorld->getIntConfig(CONFIG_MIN_LEVEL_STAT_SAVE))
|
||||
@@ -21058,7 +21058,7 @@ bool Player::CanSpeak() const
|
||||
/*** LOW LEVEL FUNCTIONS:Notifiers ***/
|
||||
/*********************************************************/
|
||||
|
||||
void Player::SavePositionInDB(WorldLocation const& loc, uint16 zoneId, ObjectGuid guid, SQLTransaction& trans)
|
||||
void Player::SavePositionInDB(WorldLocation const& loc, uint16 zoneId, ObjectGuid guid, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_POSITION);
|
||||
|
||||
@@ -21991,7 +21991,7 @@ void Player::RemovePetitionsAndSigns(ObjectGuid guid)
|
||||
CharacterDatabase.Execute(stmt);
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_BY_OWNER);
|
||||
stmt->setUInt64(0, guid.GetCounter());
|
||||
@@ -24656,7 +24656,7 @@ void Player::AutoUnequipOffhandIfNeed(bool force /*= false*/)
|
||||
else
|
||||
{
|
||||
MoveItemFromInventory(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND, true);
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
offItem->DeleteFromInventoryDB(trans); // deletes item from character's inventory
|
||||
offItem->SaveToDB(trans); // recursive and not have transaction guard into self, item not in inventory and can be save standalone
|
||||
|
||||
@@ -26550,7 +26550,7 @@ void Player::SetEquipmentSet(EquipmentSetInfo::EquipmentSetData const& newEqSet)
|
||||
eqSlot.State = eqSlot.State == EQUIPMENT_SET_NEW ? EQUIPMENT_SET_NEW : EQUIPMENT_SET_CHANGED;
|
||||
}
|
||||
|
||||
void Player::_SaveEquipmentSets(SQLTransaction& trans)
|
||||
void Player::_SaveEquipmentSets(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
for (EquipmentSetContainer::iterator itr = _equipmentSets.begin(); itr != _equipmentSets.end();)
|
||||
{
|
||||
@@ -26643,7 +26643,7 @@ void Player::_SaveEquipmentSets(SQLTransaction& trans)
|
||||
}
|
||||
}
|
||||
|
||||
void Player::_SaveBGData(SQLTransaction& trans)
|
||||
void Player::_SaveBGData(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_BGDATA);
|
||||
stmt->setUInt64(0, GetGUID().GetCounter());
|
||||
@@ -26736,7 +26736,7 @@ void Player::_LoadGlyphs(PreparedQueryResult result)
|
||||
} while (result->NextRow());
|
||||
}
|
||||
|
||||
void Player::_SaveGlyphs(SQLTransaction& trans) const
|
||||
void Player::_SaveGlyphs(CharacterDatabaseTransaction& trans) const
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_GLYPHS);
|
||||
stmt->setUInt64(0, GetGUID().GetCounter());
|
||||
@@ -26783,7 +26783,7 @@ void Player::_LoadPvpTalents(PreparedQueryResult result)
|
||||
}
|
||||
}
|
||||
|
||||
void Player::_SaveTalents(SQLTransaction& trans)
|
||||
void Player::_SaveTalents(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_TALENT);
|
||||
stmt->setUInt64(0, GetGUID().GetCounter());
|
||||
@@ -26835,7 +26835,7 @@ void Player::ActivateTalentGroup(ChrSpecializationEntry const* spec)
|
||||
if (IsNonMeleeSpellCast(false))
|
||||
InterruptNonMeleeSpells(false);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
_SaveActions(trans);
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
|
||||
@@ -27240,7 +27240,7 @@ void Player::RefundItem(Item* item)
|
||||
uint64 moneyRefund = item->GetPaidMoney(); // item-> will be invalidated in DestroyItem
|
||||
|
||||
// Save all relevant data to DB to prevent desynchronisation exploits
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
// Delete any references to the refund data
|
||||
item->SetNotRefundable(this, true, &trans, false);
|
||||
@@ -27289,7 +27289,7 @@ void Player::SendItemRetrievalMail(uint32 itemEntry, uint32 count)
|
||||
{
|
||||
MailSender sender(MAIL_CREATURE, UI64LIT(34337) /* The Postmaster */);
|
||||
MailDraft draft("Recovered Item", "We recovered a lost item in the twisting nether and noted that it was yours.$B$BPlease find said object enclosed."); // This is the text used in Cataclysm, it probably wasn't changed.
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
if (Item* item = Item::CreateItem(itemEntry, count, nullptr))
|
||||
{
|
||||
@@ -27354,7 +27354,7 @@ void Player::_LoadInstanceTimeRestrictions(PreparedQueryResult result)
|
||||
} while (result->NextRow());
|
||||
}
|
||||
|
||||
void Player::_SaveInstanceTimeRestrictions(SQLTransaction& trans)
|
||||
void Player::_SaveInstanceTimeRestrictions(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
if (_instanceResetTimes.empty())
|
||||
return;
|
||||
|
||||
@@ -1450,11 +1450,11 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
/*********************************************************/
|
||||
|
||||
void SaveToDB(bool create = false);
|
||||
void SaveInventoryAndGoldToDB(SQLTransaction& trans); // fast save function for item/money cheating preventing
|
||||
void SaveGoldToDB(SQLTransaction& trans) const;
|
||||
void SaveInventoryAndGoldToDB(CharacterDatabaseTransaction& trans); // fast save function for item/money cheating preventing
|
||||
void SaveGoldToDB(CharacterDatabaseTransaction& trans) const;
|
||||
|
||||
static void SetUInt32ValueInArray(Tokenizer& data, uint16 index, uint32 value);
|
||||
static void SavePositionInDB(WorldLocation const& loc, uint16 zoneId, ObjectGuid guid, SQLTransaction& trans);
|
||||
static void SavePositionInDB(WorldLocation const& loc, uint16 zoneId, ObjectGuid guid, CharacterDatabaseTransaction& trans);
|
||||
|
||||
static void DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRealmChars = true, bool deleteFinally = false);
|
||||
static void DeleteOldCharacters();
|
||||
@@ -1839,7 +1839,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
void SpawnCorpseBones(bool triggerSave = true);
|
||||
Corpse* CreateCorpse();
|
||||
void KillPlayer();
|
||||
static void OfflineResurrect(ObjectGuid const& guid, SQLTransaction& trans);
|
||||
static void OfflineResurrect(ObjectGuid const& guid, CharacterDatabaseTransaction& trans);
|
||||
bool HasCorpse() const { return _corpseLocation.GetMapId() != MAPID_INVALID; }
|
||||
WorldLocation GetCorpseLocation() const { return _corpseLocation; }
|
||||
void InitializeSelfResurrectionSpells();
|
||||
@@ -2521,26 +2521,26 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
/*** SAVE SYSTEM ***/
|
||||
/*********************************************************/
|
||||
|
||||
void _SaveActions(SQLTransaction& trans);
|
||||
void _SaveAuras(SQLTransaction& trans);
|
||||
void _SaveInventory(SQLTransaction& trans);
|
||||
void _SaveVoidStorage(SQLTransaction& trans);
|
||||
void _SaveMail(SQLTransaction& trans);
|
||||
void _SaveQuestStatus(SQLTransaction& trans);
|
||||
void _SaveDailyQuestStatus(SQLTransaction& trans);
|
||||
void _SaveWeeklyQuestStatus(SQLTransaction& trans);
|
||||
void _SaveMonthlyQuestStatus(SQLTransaction& trans);
|
||||
void _SaveSeasonalQuestStatus(SQLTransaction& trans);
|
||||
void _SaveSkills(SQLTransaction& trans);
|
||||
void _SaveSpells(SQLTransaction& trans);
|
||||
void _SaveEquipmentSets(SQLTransaction& trans);
|
||||
void _SaveBGData(SQLTransaction& trans);
|
||||
void _SaveGlyphs(SQLTransaction& trans) const;
|
||||
void _SaveTalents(SQLTransaction& trans);
|
||||
void _SaveStats(SQLTransaction& trans) const;
|
||||
void _SaveInstanceTimeRestrictions(SQLTransaction& trans);
|
||||
void _SaveCurrency(SQLTransaction& trans);
|
||||
void _SaveCUFProfiles(SQLTransaction& trans);
|
||||
void _SaveActions(CharacterDatabaseTransaction& trans);
|
||||
void _SaveAuras(CharacterDatabaseTransaction& trans);
|
||||
void _SaveInventory(CharacterDatabaseTransaction& trans);
|
||||
void _SaveVoidStorage(CharacterDatabaseTransaction& trans);
|
||||
void _SaveMail(CharacterDatabaseTransaction& trans);
|
||||
void _SaveQuestStatus(CharacterDatabaseTransaction& trans);
|
||||
void _SaveDailyQuestStatus(CharacterDatabaseTransaction& trans);
|
||||
void _SaveWeeklyQuestStatus(CharacterDatabaseTransaction& trans);
|
||||
void _SaveMonthlyQuestStatus(CharacterDatabaseTransaction& trans);
|
||||
void _SaveSeasonalQuestStatus(CharacterDatabaseTransaction& trans);
|
||||
void _SaveSkills(CharacterDatabaseTransaction& trans);
|
||||
void _SaveSpells(CharacterDatabaseTransaction& trans);
|
||||
void _SaveEquipmentSets(CharacterDatabaseTransaction& trans);
|
||||
void _SaveBGData(CharacterDatabaseTransaction& trans);
|
||||
void _SaveGlyphs(CharacterDatabaseTransaction& trans) const;
|
||||
void _SaveTalents(CharacterDatabaseTransaction& trans);
|
||||
void _SaveStats(CharacterDatabaseTransaction& trans) const;
|
||||
void _SaveInstanceTimeRestrictions(CharacterDatabaseTransaction& trans);
|
||||
void _SaveCurrency(CharacterDatabaseTransaction& trans);
|
||||
void _SaveCUFProfiles(CharacterDatabaseTransaction& trans);
|
||||
|
||||
/*********************************************************/
|
||||
/*** ENVIRONMENTAL SYSTEM ***/
|
||||
@@ -2711,7 +2711,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
InventoryResult CanStoreItem_InBag(uint8 bag, ItemPosCountVec& dest, ItemTemplate const* pProto, uint32& count, bool merge, bool non_specialized, Item* pSrcItem, uint8 skip_bag, uint8 skip_slot) const;
|
||||
InventoryResult CanStoreItem_InInventorySlots(uint8 slot_begin, uint8 slot_end, ItemPosCountVec& dest, ItemTemplate const* pProto, uint32& count, bool merge, Item* pSrcItem, uint8 skip_bag, uint8 skip_slot) const;
|
||||
Item* _StoreItem(uint16 pos, Item* pItem, uint32 count, bool clone, bool update);
|
||||
Item* _LoadItem(SQLTransaction& trans, uint32 zoneId, uint32 timeDiff, Field* fields);
|
||||
Item* _LoadItem(CharacterDatabaseTransaction& trans, uint32 zoneId, uint32 timeDiff, Field* fields);
|
||||
|
||||
CinematicMgr* _cinematicMgr;
|
||||
|
||||
|
||||
@@ -202,7 +202,7 @@ void GameEventMgr::StopEvent(uint16 event_id, bool overwrite)
|
||||
for (itr = data.conditions.begin(); itr != data.conditions.end(); ++itr)
|
||||
itr->second.done = 0;
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_GAME_EVENT_CONDITION_SAVE);
|
||||
stmt->setUInt8(0, uint8(event_id));
|
||||
trans->Append(stmt);
|
||||
@@ -1573,7 +1573,7 @@ void GameEventMgr::HandleQuestComplete(uint32 quest_id)
|
||||
if (citr->second.done > citr->second.reqNum)
|
||||
citr->second.done = citr->second.reqNum;
|
||||
// save the change to db
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GAME_EVENT_CONDITION_SAVE);
|
||||
stmt->setUInt8(0, uint8(event_id));
|
||||
@@ -1618,7 +1618,7 @@ bool GameEventMgr::CheckOneGameEventConditions(uint16 event_id)
|
||||
|
||||
void GameEventMgr::SaveWorldEventStateToDB(uint16 event_id)
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GAME_EVENT_SAVE);
|
||||
stmt->setUInt8(0, uint8(event_id));
|
||||
|
||||
@@ -141,7 +141,7 @@ bool Garrison::LoadFromDB(PreparedQueryResult garrison, PreparedQueryResult blue
|
||||
return true;
|
||||
}
|
||||
|
||||
void Garrison::SaveToDB(SQLTransaction trans)
|
||||
void Garrison::SaveToDB(CharacterDatabaseTransaction trans)
|
||||
{
|
||||
DeleteFromDB(_owner->GetGUID().GetCounter(), trans);
|
||||
|
||||
@@ -204,7 +204,7 @@ void Garrison::SaveToDB(SQLTransaction trans)
|
||||
}
|
||||
}
|
||||
|
||||
void Garrison::DeleteFromDB(ObjectGuid::LowType ownerGuid, SQLTransaction trans)
|
||||
void Garrison::DeleteFromDB(ObjectGuid::LowType ownerGuid, CharacterDatabaseTransaction trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON);
|
||||
stmt->setUInt64(0, ownerGuid);
|
||||
@@ -243,7 +243,7 @@ bool Garrison::Create(uint32 garrSiteId)
|
||||
|
||||
void Garrison::Delete()
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
DeleteFromDB(_owner->GetGUID().GetCounter(), trans);
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
|
||||
|
||||
@@ -212,8 +212,8 @@ public:
|
||||
|
||||
bool LoadFromDB(PreparedQueryResult garrison, PreparedQueryResult blueprints, PreparedQueryResult buildings,
|
||||
PreparedQueryResult followers, PreparedQueryResult abilities);
|
||||
void SaveToDB(SQLTransaction trans);
|
||||
static void DeleteFromDB(ObjectGuid::LowType ownerGuid, SQLTransaction trans);
|
||||
void SaveToDB(CharacterDatabaseTransaction trans);
|
||||
static void DeleteFromDB(ObjectGuid::LowType ownerGuid, CharacterDatabaseTransaction trans);
|
||||
|
||||
bool Create(uint32 garrSiteId);
|
||||
void Delete();
|
||||
|
||||
@@ -692,7 +692,7 @@ void Group::ChangeLeader(ObjectGuid newLeaderGuid, int8 partyIndex)
|
||||
|
||||
if (!isBGGroup() && !isBFGroup())
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
// Remove the groups permanent instance bindings
|
||||
for (auto difficultyItr = m_boundInstances.begin(); difficultyItr != m_boundInstances.end(); ++difficultyItr)
|
||||
@@ -825,7 +825,7 @@ void Group::Disband(bool hideDestroy /* = false */)
|
||||
|
||||
if (!isBGGroup() && !isBFGroup())
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GROUP);
|
||||
stmt->setUInt32(0, m_dbStoreId);
|
||||
@@ -1704,7 +1704,7 @@ void Group::SwapMembersGroups(ObjectGuid firstGuid, ObjectGuid secondGuid)
|
||||
slots[0]->group = slots[1]->group;
|
||||
slots[1]->group = tmp;
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
for (uint8 i = 0; i < 2; i++)
|
||||
{
|
||||
// Preserve new sub group in database for non-raid groups
|
||||
|
||||
@@ -93,7 +93,7 @@ inline void Guild::LogHolder::LoadEvent(LogEntry* entry)
|
||||
|
||||
// Adds new event happened in game.
|
||||
// If maximum number of events is reached, oldest event is removed from collection.
|
||||
inline void Guild::LogHolder::AddEvent(SQLTransaction& trans, LogEntry* entry)
|
||||
inline void Guild::LogHolder::AddEvent(CharacterDatabaseTransaction& trans, LogEntry* entry)
|
||||
{
|
||||
// Check max records limit
|
||||
if (m_log.size() >= m_maxRecords)
|
||||
@@ -120,7 +120,7 @@ inline uint32 Guild::LogHolder::GetNextGUID()
|
||||
}
|
||||
|
||||
// EventLogEntry
|
||||
void Guild::EventLogEntry::SaveToDB(SQLTransaction& trans) const
|
||||
void Guild::EventLogEntry::SaveToDB(CharacterDatabaseTransaction& trans) const
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_EVENTLOG);
|
||||
stmt->setUInt64(0, m_guildId);
|
||||
@@ -154,7 +154,7 @@ void Guild::EventLogEntry::WritePacket(WorldPackets::Guild::GuildEventLogQueryRe
|
||||
}
|
||||
|
||||
// BankEventLogEntry
|
||||
void Guild::BankEventLogEntry::SaveToDB(SQLTransaction& trans) const
|
||||
void Guild::BankEventLogEntry::SaveToDB(CharacterDatabaseTransaction& trans) const
|
||||
{
|
||||
uint8 index = 0;
|
||||
|
||||
@@ -209,7 +209,7 @@ void Guild::BankEventLogEntry::WritePacket(WorldPackets::Guild:: GuildBankLogQue
|
||||
packet.Entry.push_back(bankLogEntry);
|
||||
}
|
||||
|
||||
void Guild::NewsLogEntry::SaveToDB(SQLTransaction& trans) const
|
||||
void Guild::NewsLogEntry::SaveToDB(CharacterDatabaseTransaction& trans) const
|
||||
{
|
||||
uint8 index = 0;
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_NEWS);
|
||||
@@ -258,7 +258,7 @@ void Guild::RankInfo::LoadFromDB(Field* fields)
|
||||
m_rights |= GR_RIGHT_ALL;
|
||||
}
|
||||
|
||||
void Guild::RankInfo::SaveToDB(SQLTransaction& trans) const
|
||||
void Guild::RankInfo::SaveToDB(CharacterDatabaseTransaction& trans) const
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_RANK);
|
||||
stmt->setUInt64(0, m_guildId);
|
||||
@@ -269,7 +269,7 @@ void Guild::RankInfo::SaveToDB(SQLTransaction& trans) const
|
||||
CharacterDatabase.ExecuteOrAppend(trans, stmt);
|
||||
}
|
||||
|
||||
void Guild::RankInfo::CreateMissingTabsIfNeeded(uint8 tabs, SQLTransaction& trans, bool logOnCreate /* = false */)
|
||||
void Guild::RankInfo::CreateMissingTabsIfNeeded(uint8 tabs, CharacterDatabaseTransaction& trans, bool logOnCreate /* = false */)
|
||||
{
|
||||
for (uint8 i = 0; i < tabs; ++i)
|
||||
{
|
||||
@@ -411,7 +411,7 @@ bool Guild::BankTab::LoadItemFromDB(Field* fields)
|
||||
}
|
||||
|
||||
// Deletes contents of the tab from the world (and from DB if necessary)
|
||||
void Guild::BankTab::Delete(SQLTransaction& trans, bool removeItemsFromDB)
|
||||
void Guild::BankTab::Delete(CharacterDatabaseTransaction& trans, bool removeItemsFromDB)
|
||||
{
|
||||
for (uint8 slotId = 0; slotId < GUILD_BANK_MAX_SLOTS; ++slotId)
|
||||
{
|
||||
@@ -459,7 +459,7 @@ void Guild::BankTab::SetText(std::string const& text)
|
||||
|
||||
// Sets/removes contents of specified slot.
|
||||
// If pItem == nullptr contents are removed.
|
||||
bool Guild::BankTab::SetItem(SQLTransaction& trans, uint8 slotId, Item* item)
|
||||
bool Guild::BankTab::SetItem(CharacterDatabaseTransaction& trans, uint8 slotId, Item* item)
|
||||
{
|
||||
if (slotId >= GUILD_BANK_MAX_SLOTS)
|
||||
return false;
|
||||
@@ -579,7 +579,7 @@ void Guild::Member::SetOfficerNote(std::string const& officerNote)
|
||||
CharacterDatabase.Execute(stmt);
|
||||
}
|
||||
|
||||
void Guild::Member::ChangeRank(SQLTransaction& trans, uint8 newRank)
|
||||
void Guild::Member::ChangeRank(CharacterDatabaseTransaction& trans, uint8 newRank)
|
||||
{
|
||||
m_rankId = newRank;
|
||||
|
||||
@@ -593,7 +593,7 @@ void Guild::Member::ChangeRank(SQLTransaction& trans, uint8 newRank)
|
||||
CharacterDatabase.ExecuteOrAppend(trans, stmt);
|
||||
}
|
||||
|
||||
void Guild::Member::SaveToDB(SQLTransaction& trans) const
|
||||
void Guild::Member::SaveToDB(CharacterDatabaseTransaction& trans) const
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_GUILD_MEMBER);
|
||||
stmt->setUInt64(0, m_guildId);
|
||||
@@ -667,7 +667,7 @@ float Guild::Member::GetInactiveDays() const
|
||||
}
|
||||
|
||||
// Decreases amount of slots left for today.
|
||||
void Guild::Member::UpdateBankTabWithdrawValue(SQLTransaction& trans, uint8 tabId, uint32 amount)
|
||||
void Guild::Member::UpdateBankTabWithdrawValue(CharacterDatabaseTransaction& trans, uint8 tabId, uint32 amount)
|
||||
{
|
||||
m_bankWithdraw[tabId] += amount;
|
||||
|
||||
@@ -683,7 +683,7 @@ void Guild::Member::UpdateBankTabWithdrawValue(SQLTransaction& trans, uint8 tabI
|
||||
}
|
||||
|
||||
// Decreases amount of money left for today.
|
||||
void Guild::Member::UpdateBankMoneyWithdrawValue(SQLTransaction& trans, uint64 amount)
|
||||
void Guild::Member::UpdateBankMoneyWithdrawValue(CharacterDatabaseTransaction& trans, uint64 amount)
|
||||
{
|
||||
m_bankWithdrawMoney += amount;
|
||||
|
||||
@@ -836,7 +836,7 @@ bool Guild::PlayerMoveItemData::InitItem()
|
||||
return (m_pItem != nullptr);
|
||||
}
|
||||
|
||||
void Guild::PlayerMoveItemData::RemoveItem(SQLTransaction& trans, MoveItemData* /*pOther*/, uint32 splitedAmount)
|
||||
void Guild::PlayerMoveItemData::RemoveItem(CharacterDatabaseTransaction& trans, MoveItemData* /*pOther*/, uint32 splitedAmount)
|
||||
{
|
||||
if (splitedAmount)
|
||||
{
|
||||
@@ -852,7 +852,7 @@ void Guild::PlayerMoveItemData::RemoveItem(SQLTransaction& trans, MoveItemData*
|
||||
}
|
||||
}
|
||||
|
||||
Item* Guild::PlayerMoveItemData::StoreItem(SQLTransaction& trans, Item* pItem)
|
||||
Item* Guild::PlayerMoveItemData::StoreItem(CharacterDatabaseTransaction& trans, Item* pItem)
|
||||
{
|
||||
ASSERT(pItem);
|
||||
m_pPlayer->MoveItemToInventory(m_vec, pItem, true);
|
||||
@@ -860,7 +860,7 @@ Item* Guild::PlayerMoveItemData::StoreItem(SQLTransaction& trans, Item* pItem)
|
||||
return pItem;
|
||||
}
|
||||
|
||||
void Guild::PlayerMoveItemData::LogBankEvent(SQLTransaction& trans, MoveItemData* pFrom, uint32 count) const
|
||||
void Guild::PlayerMoveItemData::LogBankEvent(CharacterDatabaseTransaction& trans, MoveItemData* pFrom, uint32 count) const
|
||||
{
|
||||
ASSERT(pFrom);
|
||||
// Bank -> Char
|
||||
@@ -903,7 +903,7 @@ bool Guild::BankMoveItemData::HasWithdrawRights(MoveItemData* pOther) const
|
||||
return slots != 0;
|
||||
}
|
||||
|
||||
void Guild::BankMoveItemData::RemoveItem(SQLTransaction& trans, MoveItemData* pOther, uint32 splitedAmount)
|
||||
void Guild::BankMoveItemData::RemoveItem(CharacterDatabaseTransaction& trans, MoveItemData* pOther, uint32 splitedAmount)
|
||||
{
|
||||
ASSERT(m_pItem);
|
||||
if (splitedAmount)
|
||||
@@ -922,7 +922,7 @@ void Guild::BankMoveItemData::RemoveItem(SQLTransaction& trans, MoveItemData* pO
|
||||
m_pGuild->_UpdateMemberWithdrawSlots(trans, m_pPlayer->GetGUID(), m_container);
|
||||
}
|
||||
|
||||
Item* Guild::BankMoveItemData::StoreItem(SQLTransaction& trans, Item* pItem)
|
||||
Item* Guild::BankMoveItemData::StoreItem(CharacterDatabaseTransaction& trans, Item* pItem)
|
||||
{
|
||||
if (!pItem)
|
||||
return nullptr;
|
||||
@@ -944,7 +944,7 @@ Item* Guild::BankMoveItemData::StoreItem(SQLTransaction& trans, Item* pItem)
|
||||
return pLastItem;
|
||||
}
|
||||
|
||||
void Guild::BankMoveItemData::LogBankEvent(SQLTransaction& trans, MoveItemData* pFrom, uint32 count) const
|
||||
void Guild::BankMoveItemData::LogBankEvent(CharacterDatabaseTransaction& trans, MoveItemData* pFrom, uint32 count) const
|
||||
{
|
||||
ASSERT(pFrom->GetItem());
|
||||
if (pFrom->IsBank())
|
||||
@@ -970,7 +970,7 @@ void Guild::BankMoveItemData::LogAction(MoveItemData* pFrom) const
|
||||
}
|
||||
}
|
||||
|
||||
Item* Guild::BankMoveItemData::_StoreItem(SQLTransaction& trans, BankTab* pTab, Item* pItem, ItemPosCount& pos, bool clone) const
|
||||
Item* Guild::BankMoveItemData::_StoreItem(CharacterDatabaseTransaction& trans, BankTab* pTab, Item* pItem, ItemPosCount& pos, bool clone) const
|
||||
{
|
||||
uint8 slotId = uint8(pos.pos);
|
||||
uint32 count = pos.count;
|
||||
@@ -1108,7 +1108,7 @@ Guild::Guild():
|
||||
|
||||
Guild::~Guild()
|
||||
{
|
||||
SQLTransaction temp(nullptr);
|
||||
CharacterDatabaseTransaction temp(nullptr);
|
||||
_DeleteBankItems(temp);
|
||||
|
||||
// Cleanup
|
||||
@@ -1153,7 +1153,7 @@ bool Guild::Create(Player* pLeader, std::string const& name)
|
||||
TC_LOG_DEBUG("guild", "GUILD: creating guild [%s] for leader %s (%s)",
|
||||
name.c_str(), pLeader->GetName().c_str(), m_leaderGuid.ToString().c_str());
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_MEMBERS);
|
||||
stmt->setUInt64(0, m_id);
|
||||
@@ -1201,7 +1201,7 @@ void Guild::Disband()
|
||||
WorldPackets::Guild::GuildEventDisbanded packet;
|
||||
BroadcastPacket(packet.Write());
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
// Remove all members
|
||||
while (!m_members.empty())
|
||||
{
|
||||
@@ -1249,7 +1249,7 @@ void Guild::Disband()
|
||||
|
||||
void Guild::SaveToDB()
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
m_achievementMgr.SaveToDB(trans);
|
||||
|
||||
@@ -1547,7 +1547,7 @@ void Guild::HandleSetNewGuildMaster(WorldSession* session, std::string const& na
|
||||
return;
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
_SetLeader(trans, newGuildMaster);
|
||||
oldGuildMaster->ChangeRank(trans, GR_INITIATE);
|
||||
@@ -1738,7 +1738,7 @@ void Guild::HandleAcceptMember(WorldSession* session)
|
||||
player->GetTeam() != sCharacterCache->GetCharacterTeamByGuid(GetLeaderGUID()))
|
||||
return;
|
||||
|
||||
SQLTransaction trans(nullptr);
|
||||
CharacterDatabaseTransaction trans(nullptr);
|
||||
AddMember(trans, player->GetGUID());
|
||||
}
|
||||
|
||||
@@ -1765,7 +1765,7 @@ void Guild::HandleLeaveMember(WorldSession* session)
|
||||
_LogEvent(GUILD_EVENT_LOG_LEAVE_GUILD, player->GetGUID().GetCounter());
|
||||
SendEventPlayerLeft(GetMember(player->GetGUID()));
|
||||
|
||||
SQLTransaction trans(nullptr);
|
||||
CharacterDatabaseTransaction trans(nullptr);
|
||||
DeleteMember(trans, player->GetGUID(), false, false);
|
||||
|
||||
SendCommandResult(session, GUILD_COMMAND_LEAVE_GUILD, ERR_GUILD_COMMAND_SUCCESS, m_name);
|
||||
@@ -1803,7 +1803,7 @@ void Guild::HandleRemoveMember(WorldSession* session, ObjectGuid guid)
|
||||
SendEventPlayerLeft(member, memberMe, true);
|
||||
|
||||
// After call to DeleteMember pointer to member becomes invalid
|
||||
SQLTransaction trans(nullptr);
|
||||
CharacterDatabaseTransaction trans(nullptr);
|
||||
DeleteMember(trans, guid, false, true);
|
||||
|
||||
SendCommandResult(session, GUILD_COMMAND_REMOVE_PLAYER, ERR_GUILD_COMMAND_SUCCESS, name);
|
||||
@@ -1860,7 +1860,7 @@ void Guild::HandleUpdateMemberRank(WorldSession* session, ObjectGuid guid, bool
|
||||
}
|
||||
|
||||
uint32 newRankId = member->GetRankId() + (demote ? 1 : -1);
|
||||
SQLTransaction trans(nullptr);
|
||||
CharacterDatabaseTransaction trans(nullptr);
|
||||
member->ChangeRank(trans, newRankId);
|
||||
_LogEvent(demote ? GUILD_EVENT_LOG_DEMOTE_PLAYER : GUILD_EVENT_LOG_PROMOTE_PLAYER, player->GetGUID().GetCounter(), member->GetGUID().GetCounter(), newRankId);
|
||||
//_BroadcastEvent(demote ? GE_DEMOTION : GE_PROMOTION, ObjectGuid::Empty, player->GetName().c_str(), name.c_str(), _GetRankName(newRankId).c_str());
|
||||
@@ -1908,7 +1908,7 @@ void Guild::HandleAddNewRank(WorldSession* session, std::string const& name)
|
||||
// Only leader can add new rank
|
||||
if (_IsLeader(session->GetPlayer()))
|
||||
{
|
||||
SQLTransaction trans(nullptr);
|
||||
CharacterDatabaseTransaction trans(nullptr);
|
||||
if (_CreateRank(trans, name, GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK))
|
||||
{
|
||||
WorldPackets::Guild::GuildEventRanksUpdated eventPacket;
|
||||
@@ -1953,7 +1953,7 @@ void Guild::HandleMemberDepositMoney(WorldSession* session, uint64 amount, bool
|
||||
// Call script after validation and before money transfer.
|
||||
sScriptMgr->OnGuildMemberDepositMoney(this, player, amount);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
_ModifyBankMoney(trans, amount, true);
|
||||
if (!cashFlow)
|
||||
{
|
||||
@@ -1997,7 +1997,7 @@ bool Guild::HandleMemberWithdrawMoney(WorldSession* session, uint64 amount, bool
|
||||
// Call script after validation and before money transfer.
|
||||
sScriptMgr->OnGuildMemberWitdrawMoney(this, player, amount, repair);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
// Add money to player (if required)
|
||||
if (!repair)
|
||||
{
|
||||
@@ -2369,7 +2369,7 @@ bool Guild::LoadMemberFromDB(Field* fields)
|
||||
Member* member = new Member(m_id, playerGuid, fields[2].GetUInt8());
|
||||
if (!member->LoadFromDB(fields))
|
||||
{
|
||||
SQLTransaction trans(nullptr);
|
||||
CharacterDatabaseTransaction trans(nullptr);
|
||||
Guild::_DeleteMemberFromDB(trans, lowguid);
|
||||
delete member;
|
||||
return false;
|
||||
@@ -2492,7 +2492,7 @@ bool Guild::Validate()
|
||||
bool broken_ranks = false;
|
||||
uint8 ranks = _GetRanksSize();
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
if (ranks < GUILD_RANKS_MIN_COUNT || ranks > GUILD_RANKS_MAX_COUNT)
|
||||
{
|
||||
TC_LOG_ERROR("guild", "Guild " UI64FMTD " has invalid number of ranks, creating new...", m_id);
|
||||
@@ -2530,7 +2530,7 @@ bool Guild::Validate()
|
||||
Member* leader = GetMember(m_leaderGuid);
|
||||
if (!leader)
|
||||
{
|
||||
SQLTransaction trans(nullptr);
|
||||
CharacterDatabaseTransaction trans(nullptr);
|
||||
DeleteMember(trans, m_leaderGuid);
|
||||
// If no more members left, disband guild
|
||||
if (m_members.empty())
|
||||
@@ -2634,7 +2634,7 @@ void Guild::MassInviteToEvent(WorldSession* session, uint32 minLevel, uint32 max
|
||||
}
|
||||
|
||||
// Members handling
|
||||
bool Guild::AddMember(SQLTransaction& trans, ObjectGuid guid, uint8 rankId)
|
||||
bool Guild::AddMember(CharacterDatabaseTransaction& trans, ObjectGuid guid, uint8 rankId)
|
||||
{
|
||||
Player* player = ObjectAccessor::FindConnectedPlayer(guid);
|
||||
// Player cannot be in guild
|
||||
@@ -2720,7 +2720,7 @@ bool Guild::AddMember(SQLTransaction& trans, ObjectGuid guid, uint8 rankId)
|
||||
return true;
|
||||
}
|
||||
|
||||
void Guild::DeleteMember(SQLTransaction& trans, ObjectGuid guid, bool isDisbanding, bool isKicked, bool canDeleteGuild)
|
||||
void Guild::DeleteMember(CharacterDatabaseTransaction& trans, ObjectGuid guid, bool isDisbanding, bool isKicked, bool canDeleteGuild)
|
||||
{
|
||||
// Guild master can be deleted when loading guild and guid doesn't exist in characters table
|
||||
// or when he is removed from guild by gm command
|
||||
@@ -2779,7 +2779,7 @@ void Guild::DeleteMember(SQLTransaction& trans, ObjectGuid guid, bool isDisbandi
|
||||
_UpdateAccountsNumber();
|
||||
}
|
||||
|
||||
bool Guild::ChangeMemberRank(SQLTransaction& trans, ObjectGuid guid, uint8 newRank)
|
||||
bool Guild::ChangeMemberRank(CharacterDatabaseTransaction& trans, ObjectGuid guid, uint8 newRank)
|
||||
{
|
||||
if (newRank <= _GetLowestRankId()) // Validate rank (allow only existing ranks)
|
||||
{
|
||||
@@ -2849,7 +2849,7 @@ bool Guild::_HasRankRight(Player const* player, uint32 right) const
|
||||
return false;
|
||||
}
|
||||
|
||||
void Guild::_DeleteMemberFromDB(SQLTransaction& trans, ObjectGuid::LowType lowguid)
|
||||
void Guild::_DeleteMemberFromDB(CharacterDatabaseTransaction& trans, ObjectGuid::LowType lowguid)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_MEMBER);
|
||||
stmt->setUInt64(0, lowguid);
|
||||
@@ -2870,7 +2870,7 @@ void Guild::_CreateNewBankTab()
|
||||
uint8 tabId = _GetPurchasedTabsSize(); // Next free id
|
||||
m_bankTabs.push_back(new BankTab(m_id, tabId));
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_BANK_TAB);
|
||||
stmt->setUInt64(0, m_id);
|
||||
@@ -2889,7 +2889,7 @@ void Guild::_CreateNewBankTab()
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
}
|
||||
|
||||
void Guild::_CreateDefaultGuildRanks(SQLTransaction& trans, LocaleConstant loc)
|
||||
void Guild::_CreateDefaultGuildRanks(CharacterDatabaseTransaction& trans, LocaleConstant loc)
|
||||
{
|
||||
ASSERT(trans);
|
||||
|
||||
@@ -2908,7 +2908,7 @@ void Guild::_CreateDefaultGuildRanks(SQLTransaction& trans, LocaleConstant loc)
|
||||
_CreateRank(trans, sObjectMgr->GetTrinityString(LANG_GUILD_INITIATE, loc), GR_RIGHT_GCHATLISTEN | GR_RIGHT_GCHATSPEAK);
|
||||
}
|
||||
|
||||
bool Guild::_CreateRank(SQLTransaction& trans, std::string const& name, uint32 rights)
|
||||
bool Guild::_CreateRank(CharacterDatabaseTransaction& trans, std::string const& name, uint32 rights)
|
||||
{
|
||||
uint8 newRankId = _GetRanksSize();
|
||||
if (newRankId >= GUILD_RANKS_MAX_COUNT)
|
||||
@@ -2955,7 +2955,7 @@ bool Guild::_IsLeader(Player* player) const
|
||||
return false;
|
||||
}
|
||||
|
||||
void Guild::_DeleteBankItems(SQLTransaction& trans, bool removeItemsFromDB)
|
||||
void Guild::_DeleteBankItems(CharacterDatabaseTransaction& trans, bool removeItemsFromDB)
|
||||
{
|
||||
for (uint8 tabId = 0; tabId < _GetPurchasedTabsSize(); ++tabId)
|
||||
{
|
||||
@@ -2966,7 +2966,7 @@ void Guild::_DeleteBankItems(SQLTransaction& trans, bool removeItemsFromDB)
|
||||
m_bankTabs.clear();
|
||||
}
|
||||
|
||||
bool Guild::_ModifyBankMoney(SQLTransaction& trans, uint64 amount, bool add)
|
||||
bool Guild::_ModifyBankMoney(CharacterDatabaseTransaction& trans, uint64 amount, bool add)
|
||||
{
|
||||
if (add)
|
||||
m_bankMoney += amount;
|
||||
@@ -2985,7 +2985,7 @@ bool Guild::_ModifyBankMoney(SQLTransaction& trans, uint64 amount, bool add)
|
||||
return true;
|
||||
}
|
||||
|
||||
void Guild::_SetLeader(SQLTransaction& trans, Member* leader)
|
||||
void Guild::_SetLeader(CharacterDatabaseTransaction& trans, Member* leader)
|
||||
{
|
||||
if (!leader)
|
||||
return;
|
||||
@@ -3092,7 +3092,7 @@ inline int64 Guild::_GetMemberRemainingMoney(Member const* member) const
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline void Guild::_UpdateMemberWithdrawSlots(SQLTransaction& trans, ObjectGuid guid, uint8 tabId)
|
||||
inline void Guild::_UpdateMemberWithdrawSlots(CharacterDatabaseTransaction& trans, ObjectGuid guid, uint8 tabId)
|
||||
{
|
||||
if (Member* member = GetMember(guid))
|
||||
member->UpdateBankTabWithdrawValue(trans, tabId, 1);
|
||||
@@ -3113,7 +3113,7 @@ inline bool Guild::_MemberHasTabRights(ObjectGuid guid, uint8 tabId, int32 right
|
||||
// Add new event log record
|
||||
inline void Guild::_LogEvent(GuildEventLogTypes eventType, ObjectGuid::LowType playerGuid1, ObjectGuid::LowType playerGuid2, uint8 newRank)
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
m_eventLog->AddEvent(trans, new EventLogEntry(m_id, m_eventLog->GetNextGUID(), eventType, playerGuid1, playerGuid2, newRank));
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
|
||||
@@ -3121,7 +3121,7 @@ inline void Guild::_LogEvent(GuildEventLogTypes eventType, ObjectGuid::LowType p
|
||||
}
|
||||
|
||||
// Add new bank event log record
|
||||
void Guild::_LogBankEvent(SQLTransaction& trans, GuildBankEventLogTypes eventType, uint8 tabId, ObjectGuid::LowType lowguid, uint64 itemOrMoney, uint16 itemStackCount, uint8 destTabId)
|
||||
void Guild::_LogBankEvent(CharacterDatabaseTransaction& trans, GuildBankEventLogTypes eventType, uint8 tabId, ObjectGuid::LowType lowguid, uint64 itemOrMoney, uint16 itemStackCount, uint8 destTabId)
|
||||
{
|
||||
if (tabId > GUILD_BANK_MAX_TABS)
|
||||
return;
|
||||
@@ -3149,7 +3149,7 @@ inline Item* Guild::_GetItem(uint8 tabId, uint8 slotId) const
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
inline void Guild::_RemoveItem(SQLTransaction& trans, uint8 tabId, uint8 slotId)
|
||||
inline void Guild::_RemoveItem(CharacterDatabaseTransaction& trans, uint8 tabId, uint8 slotId)
|
||||
{
|
||||
if (BankTab* pTab = GetBankTab(tabId))
|
||||
pTab->SetItem(trans, slotId, nullptr);
|
||||
@@ -3236,7 +3236,7 @@ bool Guild::_DoItemsMove(MoveItemData* pSrc, MoveItemData* pDest, bool sendError
|
||||
if (swap)
|
||||
pSrc->LogAction(pDest);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
// 3. Log bank events
|
||||
pDest->LogBankEvent(trans, pSrc, pSrcItem->GetCount());
|
||||
if (swap)
|
||||
@@ -3435,7 +3435,7 @@ void Guild::SendGuildRanksUpdate(ObjectGuid setterGuid, ObjectGuid targetGuid, u
|
||||
rankChange.Promote = (rank < member->GetRankId());
|
||||
BroadcastPacket(rankChange.Write());
|
||||
|
||||
SQLTransaction trans;
|
||||
CharacterDatabaseTransaction trans;
|
||||
member->ChangeRank(trans, rank);
|
||||
|
||||
TC_LOG_DEBUG("network", "SMSG_GUILD_RANKS_UPDATE [Broadcast] Target: %s, Issuer: %s, RankId: %u",
|
||||
@@ -3459,7 +3459,7 @@ void Guild::AddGuildNews(uint8 type, ObjectGuid guid, uint32 flags, uint32 value
|
||||
{
|
||||
NewsLogEntry* news = new NewsLogEntry(m_id, m_newsLog->GetNextGUID(), GuildNews(type), guid, flags, value);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
m_newsLog->AddEvent(trans, news);
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
|
||||
|
||||
@@ -347,7 +347,7 @@ class TC_GAME_API Guild
|
||||
void ResetFlags() { m_flags = GUILDMEMBER_STATUS_NONE; }
|
||||
|
||||
bool LoadFromDB(Field* fields);
|
||||
void SaveToDB(SQLTransaction& trans) const;
|
||||
void SaveToDB(CharacterDatabaseTransaction& trans) const;
|
||||
|
||||
ObjectGuid const& GetGUID() const { return m_guid; }
|
||||
std::string const& GetName() const { return m_name; }
|
||||
@@ -374,15 +374,15 @@ class TC_GAME_API Guild
|
||||
|
||||
bool IsOnline() const { return (m_flags & GUILDMEMBER_STATUS_ONLINE); }
|
||||
|
||||
void ChangeRank(SQLTransaction& trans, uint8 newRank);
|
||||
void ChangeRank(CharacterDatabaseTransaction& trans, uint8 newRank);
|
||||
|
||||
inline void UpdateLogoutTime() { m_logoutTime = ::time(nullptr); }
|
||||
inline bool IsRank(uint8 rankId) const { return m_rankId == rankId; }
|
||||
inline bool IsRankNotLower(uint8 rankId) const { return m_rankId <= rankId; }
|
||||
inline bool IsSamePlayer(ObjectGuid guid) const { return m_guid == guid; }
|
||||
|
||||
void UpdateBankTabWithdrawValue(SQLTransaction& trans, uint8 tabId, uint32 amount);
|
||||
void UpdateBankMoneyWithdrawValue(SQLTransaction& trans, uint64 amount);
|
||||
void UpdateBankTabWithdrawValue(CharacterDatabaseTransaction& trans, uint8 tabId, uint32 amount);
|
||||
void UpdateBankMoneyWithdrawValue(CharacterDatabaseTransaction& trans, uint64 amount);
|
||||
uint32 GetBankTabWithdrawValue(uint8 tabId) const { return m_bankWithdraw[tabId]; };
|
||||
uint64 GetBankMoneyWithdrawValue() const { return m_bankWithdrawMoney; };
|
||||
void ResetValues(bool weekly = false);
|
||||
@@ -429,7 +429,7 @@ class TC_GAME_API Guild
|
||||
uint32 GetGUID() const { return m_guid; }
|
||||
uint64 GetTimestamp() const { return m_timestamp; }
|
||||
|
||||
virtual void SaveToDB(SQLTransaction& trans) const = 0;
|
||||
virtual void SaveToDB(CharacterDatabaseTransaction& trans) const = 0;
|
||||
|
||||
protected:
|
||||
ObjectGuid::LowType m_guildId;
|
||||
@@ -449,7 +449,7 @@ class TC_GAME_API Guild
|
||||
|
||||
~EventLogEntry() { }
|
||||
|
||||
void SaveToDB(SQLTransaction& trans) const override;
|
||||
void SaveToDB(CharacterDatabaseTransaction& trans) const override;
|
||||
void WritePacket(WorldPackets::Guild::GuildEventLogQueryResults& packet) const;
|
||||
|
||||
private:
|
||||
@@ -487,7 +487,7 @@ class TC_GAME_API Guild
|
||||
|
||||
~BankEventLogEntry() { }
|
||||
|
||||
void SaveToDB(SQLTransaction& trans) const override;
|
||||
void SaveToDB(CharacterDatabaseTransaction& trans) const override;
|
||||
void WritePacket(WorldPackets::Guild::GuildBankLogQueryResults& packet) const;
|
||||
|
||||
private:
|
||||
@@ -523,7 +523,7 @@ class TC_GAME_API Guild
|
||||
m_flags &= ~1;
|
||||
}
|
||||
|
||||
void SaveToDB(SQLTransaction& trans) const override;
|
||||
void SaveToDB(CharacterDatabaseTransaction& trans) const override;
|
||||
void WritePacket(WorldPackets::Guild::GuildNews& newsPacket) const;
|
||||
|
||||
private:
|
||||
@@ -548,7 +548,7 @@ class TC_GAME_API Guild
|
||||
// Adds event from DB to collection
|
||||
void LoadEvent(LogEntry* entry);
|
||||
// Adds new event to collection and saves it to DB
|
||||
void AddEvent(SQLTransaction& trans, LogEntry* entry);
|
||||
void AddEvent(CharacterDatabaseTransaction& trans, LogEntry* entry);
|
||||
uint32 GetNextGUID();
|
||||
GuildLog* GetGuildLog() { return &m_log; }
|
||||
|
||||
@@ -568,7 +568,7 @@ class TC_GAME_API Guild
|
||||
m_guildId(guildId), m_rankId(rankId), m_name(name), m_rights(rights), m_bankMoneyPerDay(money) { }
|
||||
|
||||
void LoadFromDB(Field* fields);
|
||||
void SaveToDB(SQLTransaction& trans) const;
|
||||
void SaveToDB(CharacterDatabaseTransaction& trans) const;
|
||||
|
||||
uint8 GetId() const { return m_rankId; }
|
||||
|
||||
@@ -596,7 +596,7 @@ class TC_GAME_API Guild
|
||||
}
|
||||
|
||||
void SetBankTabSlotsAndRights(GuildBankRightsAndSlots rightsAndSlots, bool saveToDB);
|
||||
void CreateMissingTabsIfNeeded(uint8 ranks, SQLTransaction& trans, bool logOnCreate = false);
|
||||
void CreateMissingTabsIfNeeded(uint8 ranks, CharacterDatabaseTransaction& trans, bool logOnCreate = false);
|
||||
|
||||
private:
|
||||
ObjectGuid::LowType m_guildId;
|
||||
@@ -614,7 +614,7 @@ class TC_GAME_API Guild
|
||||
|
||||
void LoadFromDB(Field* fields);
|
||||
bool LoadItemFromDB(Field* fields);
|
||||
void Delete(SQLTransaction& trans, bool removeItemsFromDB = false);
|
||||
void Delete(CharacterDatabaseTransaction& trans, bool removeItemsFromDB = false);
|
||||
|
||||
void SetInfo(std::string const& name, std::string const& icon);
|
||||
void SetText(std::string const& text);
|
||||
@@ -625,7 +625,7 @@ class TC_GAME_API Guild
|
||||
std::string const& GetText() const { return m_text; }
|
||||
|
||||
inline Item* GetItem(uint8 slotId) const { return slotId < GUILD_BANK_MAX_SLOTS ? m_items[slotId] : nullptr; }
|
||||
bool SetItem(SQLTransaction& trans, uint8 slotId, Item* item);
|
||||
bool SetItem(CharacterDatabaseTransaction& trans, uint8 slotId, Item* item);
|
||||
|
||||
private:
|
||||
ObjectGuid::LowType m_guildId;
|
||||
@@ -658,11 +658,11 @@ class TC_GAME_API Guild
|
||||
// Clones stored item
|
||||
bool CloneItem(uint32 count);
|
||||
// Remove item from container (if splited update items fields)
|
||||
virtual void RemoveItem(SQLTransaction& trans, MoveItemData* pOther, uint32 splitedAmount = 0) = 0;
|
||||
virtual void RemoveItem(CharacterDatabaseTransaction& trans, MoveItemData* pOther, uint32 splitedAmount = 0) = 0;
|
||||
// Saves item to container
|
||||
virtual Item* StoreItem(SQLTransaction& trans, Item* pItem) = 0;
|
||||
virtual Item* StoreItem(CharacterDatabaseTransaction& trans, Item* pItem) = 0;
|
||||
// Log bank event
|
||||
virtual void LogBankEvent(SQLTransaction& trans, MoveItemData* pFrom, uint32 count) const = 0;
|
||||
virtual void LogBankEvent(CharacterDatabaseTransaction& trans, MoveItemData* pFrom, uint32 count) const = 0;
|
||||
// Log GM action
|
||||
virtual void LogAction(MoveItemData* pFrom) const;
|
||||
// Copy slots id from position vector
|
||||
@@ -692,9 +692,9 @@ class TC_GAME_API Guild
|
||||
|
||||
bool IsBank() const override { return false; }
|
||||
bool InitItem() override;
|
||||
void RemoveItem(SQLTransaction& trans, MoveItemData* pOther, uint32 splitedAmount = 0) override;
|
||||
Item* StoreItem(SQLTransaction& trans, Item* pItem) override;
|
||||
void LogBankEvent(SQLTransaction& trans, MoveItemData* pFrom, uint32 count) const override;
|
||||
void RemoveItem(CharacterDatabaseTransaction& trans, MoveItemData* pOther, uint32 splitedAmount = 0) override;
|
||||
Item* StoreItem(CharacterDatabaseTransaction& trans, Item* pItem) override;
|
||||
void LogBankEvent(CharacterDatabaseTransaction& trans, MoveItemData* pFrom, uint32 count) const override;
|
||||
|
||||
protected:
|
||||
InventoryResult CanStore(Item* pItem, bool swap) override;
|
||||
@@ -710,16 +710,16 @@ class TC_GAME_API Guild
|
||||
bool InitItem() override;
|
||||
bool HasStoreRights(MoveItemData* pOther) const override;
|
||||
bool HasWithdrawRights(MoveItemData* pOther) const override;
|
||||
void RemoveItem(SQLTransaction& trans, MoveItemData* pOther, uint32 splitedAmount) override;
|
||||
Item* StoreItem(SQLTransaction& trans, Item* pItem) override;
|
||||
void LogBankEvent(SQLTransaction& trans, MoveItemData* pFrom, uint32 count) const override;
|
||||
void RemoveItem(CharacterDatabaseTransaction& trans, MoveItemData* pOther, uint32 splitedAmount) override;
|
||||
Item* StoreItem(CharacterDatabaseTransaction& trans, Item* pItem) override;
|
||||
void LogBankEvent(CharacterDatabaseTransaction& trans, MoveItemData* pFrom, uint32 count) const override;
|
||||
void LogAction(MoveItemData* pFrom) const override;
|
||||
|
||||
protected:
|
||||
InventoryResult CanStore(Item* pItem, bool swap) override;
|
||||
|
||||
private:
|
||||
Item* _StoreItem(SQLTransaction& trans, BankTab* pTab, Item* pItem, ItemPosCount& pos, bool clone) const;
|
||||
Item* _StoreItem(CharacterDatabaseTransaction& trans, BankTab* pTab, Item* pItem, ItemPosCount& pos, bool clone) const;
|
||||
bool _ReserveSpace(uint8 slotId, Item* pItem, Item* pItemDest, uint32& count);
|
||||
void CanStoreItemInTab(Item* pItem, uint8 skipSlotId, bool merge, uint32& count);
|
||||
};
|
||||
@@ -834,9 +834,9 @@ class TC_GAME_API Guild
|
||||
|
||||
// Members
|
||||
// Adds member to guild. If rankId == GUILD_RANK_NONE, lowest rank is assigned.
|
||||
bool AddMember(SQLTransaction& trans, ObjectGuid guid, uint8 rankId = GUILD_RANK_NONE);
|
||||
void DeleteMember(SQLTransaction& trans, ObjectGuid guid, bool isDisbanding = false, bool isKicked = false, bool canDeleteGuild = false);
|
||||
bool ChangeMemberRank(SQLTransaction& trans, ObjectGuid guid, uint8 newRank);
|
||||
bool AddMember(CharacterDatabaseTransaction& trans, ObjectGuid guid, uint8 rankId = GUILD_RANK_NONE);
|
||||
void DeleteMember(CharacterDatabaseTransaction& trans, ObjectGuid guid, bool isDisbanding = false, bool isKicked = false, bool canDeleteGuild = false);
|
||||
bool ChangeMemberRank(CharacterDatabaseTransaction& trans, ObjectGuid guid, uint8 newRank);
|
||||
bool IsMember(ObjectGuid guid) const;
|
||||
uint32 GetMembersCount() const { return uint32(m_members.size()); }
|
||||
|
||||
@@ -916,22 +916,22 @@ class TC_GAME_API Guild
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static void _DeleteMemberFromDB(SQLTransaction& trans, ObjectGuid::LowType lowguid);
|
||||
static void _DeleteMemberFromDB(CharacterDatabaseTransaction& trans, ObjectGuid::LowType lowguid);
|
||||
|
||||
// Creates log holders (either when loading or when creating guild)
|
||||
void _CreateLogHolders();
|
||||
// Tries to create new bank tab
|
||||
void _CreateNewBankTab();
|
||||
// Creates default guild ranks with names in given locale
|
||||
void _CreateDefaultGuildRanks(SQLTransaction& trans, LocaleConstant loc);
|
||||
void _CreateDefaultGuildRanks(CharacterDatabaseTransaction& trans, LocaleConstant loc);
|
||||
// Creates new rank
|
||||
bool _CreateRank(SQLTransaction& trans, std::string const& name, uint32 rights);
|
||||
bool _CreateRank(CharacterDatabaseTransaction& trans, std::string const& name, uint32 rights);
|
||||
// Update account number when member added/removed from guild
|
||||
void _UpdateAccountsNumber();
|
||||
bool _IsLeader(Player* player) const;
|
||||
void _DeleteBankItems(SQLTransaction& trans, bool removeItemsFromDB = false);
|
||||
bool _ModifyBankMoney(SQLTransaction& trans, uint64 amount, bool add);
|
||||
void _SetLeader(SQLTransaction& trans, Member* leader);
|
||||
void _DeleteBankItems(CharacterDatabaseTransaction& trans, bool removeItemsFromDB = false);
|
||||
bool _ModifyBankMoney(CharacterDatabaseTransaction& trans, uint64 amount, bool add);
|
||||
void _SetLeader(CharacterDatabaseTransaction& trans, Member* leader);
|
||||
|
||||
void _SetRankBankMoneyPerDay(uint8 rankId, uint32 moneyPerDay);
|
||||
void _SetRankBankTabRightsAndSlots(uint8 rankId, GuildBankRightsAndSlots rightsAndSlots, bool saveToDB = true);
|
||||
@@ -943,14 +943,14 @@ class TC_GAME_API Guild
|
||||
|
||||
int32 _GetMemberRemainingSlots(Member const* member, uint8 tabId) const;
|
||||
int64 _GetMemberRemainingMoney(Member const* member) const;
|
||||
void _UpdateMemberWithdrawSlots(SQLTransaction& trans, ObjectGuid guid, uint8 tabId);
|
||||
void _UpdateMemberWithdrawSlots(CharacterDatabaseTransaction& trans, ObjectGuid guid, uint8 tabId);
|
||||
bool _MemberHasTabRights(ObjectGuid guid, uint8 tabId, int32 rights) const;
|
||||
|
||||
void _LogEvent(GuildEventLogTypes eventType, ObjectGuid::LowType playerGuid1, ObjectGuid::LowType playerGuid2 = UI64LIT(0), uint8 newRank = 0);
|
||||
void _LogBankEvent(SQLTransaction& trans, GuildBankEventLogTypes eventType, uint8 tabId, ObjectGuid::LowType playerGuid, uint64 itemOrMoney, uint16 itemStackCount = 0, uint8 destTabId = 0);
|
||||
void _LogBankEvent(CharacterDatabaseTransaction& trans, GuildBankEventLogTypes eventType, uint8 tabId, ObjectGuid::LowType playerGuid, uint64 itemOrMoney, uint16 itemStackCount = 0, uint8 destTabId = 0);
|
||||
|
||||
Item* _GetItem(uint8 tabId, uint8 slotId) const;
|
||||
void _RemoveItem(SQLTransaction& trans, uint8 tabId, uint8 slotId);
|
||||
void _RemoveItem(CharacterDatabaseTransaction& trans, uint8 tabId, uint8 slotId);
|
||||
void _MoveItems(MoveItemData* pSrc, MoveItemData* pDest, uint32 splitedAmount) const;
|
||||
static bool _DoItemsMove(MoveItemData* pSrc, MoveItemData* pDest, bool sendError, uint32 splitedAmount = 0);
|
||||
|
||||
|
||||
@@ -132,7 +132,7 @@ void GuildFinderMgr::AddMembershipRequest(ObjectGuid const& guildGuid, Membershi
|
||||
_membershipRequestsByGuild[guildGuid][request.GetPlayerGUID()] = request;
|
||||
_membershipRequestsByPlayer[request.GetPlayerGUID()][guildGuid] = request;
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_GUILD_FINDER_APPLICANT);
|
||||
stmt->setUInt64(0, request.GetGuildGuid().GetCounter());
|
||||
stmt->setUInt64(1, request.GetPlayerGUID().GetCounter());
|
||||
@@ -159,7 +159,7 @@ void GuildFinderMgr::RemoveAllMembershipRequestsFromPlayer(ObjectGuid const& pla
|
||||
if (playerItr == _membershipRequestsByPlayer.end())
|
||||
return;
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
for (auto& guildRequestPair : playerItr->second)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_FINDER_APPLICANT);
|
||||
@@ -203,7 +203,7 @@ void GuildFinderMgr::RemoveMembershipRequest(ObjectGuid const& playerId, ObjectG
|
||||
_membershipRequestsByPlayer.erase(playerItr);
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_FINDER_APPLICANT);
|
||||
stmt->setUInt64(0, guildId.GetCounter());
|
||||
@@ -285,7 +285,7 @@ void GuildFinderMgr::SetGuildSettings(ObjectGuid const& guildGuid, LFGuildSettin
|
||||
{
|
||||
_guildSettings[guildGuid] = settings;
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_GUILD_FINDER_GUILD_SETTINGS);
|
||||
stmt->setUInt64(0, settings.GetGUID().GetCounter());
|
||||
@@ -302,7 +302,7 @@ void GuildFinderMgr::SetGuildSettings(ObjectGuid const& guildGuid, LFGuildSettin
|
||||
|
||||
void GuildFinderMgr::DeleteGuild(ObjectGuid const& guildId)
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
auto guildItr = _membershipRequestsByGuild.find(guildId);
|
||||
if (guildItr != _membershipRequestsByGuild.end())
|
||||
{
|
||||
|
||||
@@ -280,7 +280,7 @@ void WorldSession::HandleAuctionSellItem(WorldPackets::AuctionHouse::AuctionSell
|
||||
auctionHouse->AddAuction(AH);
|
||||
_player->MoveItemFromInventory(item->GetBagSlot(), item->GetSlot(), true);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
item->DeleteFromInventoryDB(trans);
|
||||
item->SaveToDB(trans);
|
||||
|
||||
@@ -345,7 +345,7 @@ void WorldSession::HandleAuctionSellItem(WorldPackets::AuctionHouse::AuctionSell
|
||||
{
|
||||
_player->MoveItemFromInventory(item2->GetBagSlot(), item2->GetSlot(), true);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
item2->DeleteFromInventoryDB(trans);
|
||||
item2->DeleteFromDB(trans);
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
@@ -358,13 +358,13 @@ void WorldSession::HandleAuctionSellItem(WorldPackets::AuctionHouse::AuctionSell
|
||||
_player->ItemRemovedQuestCheck(item2->GetEntry(), packet.Items[i].UseCount);
|
||||
item2->SendUpdateToPlayer(_player);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
item2->SaveToDB(trans);
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
}
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
newItem->SaveToDB(trans);
|
||||
AH->SaveToDB(trans);
|
||||
_player->SaveInventoryAndGoldToDB(trans);
|
||||
@@ -435,7 +435,7 @@ void WorldSession::HandleAuctionPlaceBid(WorldPackets::AuctionHouse::AuctionPlac
|
||||
return;
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
if (packet.BidAmount < auction->buyout || auction->buyout == 0)
|
||||
{
|
||||
@@ -522,7 +522,7 @@ void WorldSession::HandleAuctionRemoveItem(WorldPackets::AuctionHouse::AuctionRe
|
||||
AuctionEntry* auction = auctionHouse->GetAuction(packet.AuctionItemID);
|
||||
Player* player = GetPlayer();
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
if (auction && auction->owner == player->GetGUID().GetCounter())
|
||||
{
|
||||
Item* item = sAuctionMgr->GetAItem(auction->itemGUIDLow);
|
||||
|
||||
@@ -115,7 +115,7 @@ void WorldSession::HandleBlackMarketBidOnItem(WorldPackets::BlackMarket::BlackMa
|
||||
return;
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
sBlackMarketMgr->SendAuctionOutbidMail(entry, trans);
|
||||
entry->PlaceBid(blackMarketBidOnItem.BidAmount, player, trans);
|
||||
|
||||
@@ -155,7 +155,7 @@ void WorldSession::HandleCalendarAddEvent(WorldPackets::Calendar::CalendarAddEve
|
||||
}
|
||||
else
|
||||
{
|
||||
SQLTransaction trans;
|
||||
CharacterDatabaseTransaction trans;
|
||||
if (calendarAddEvent.EventInfo.Invites.size() > 1)
|
||||
trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
@@ -224,7 +224,7 @@ void WorldSession::HandleCalendarCopyEvent(WorldPackets::Calendar::CalendarCopyE
|
||||
sCalendarMgr->AddEvent(newEvent, CALENDAR_SENDTYPE_COPY);
|
||||
|
||||
CalendarInviteStore invites = sCalendarMgr->GetEventInvites(calendarCopyEvent.EventID);
|
||||
SQLTransaction trans;
|
||||
CharacterDatabaseTransaction trans;
|
||||
if (invites.size() > 1)
|
||||
trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
|
||||
@@ -720,7 +720,7 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact
|
||||
newChar.SaveToDB(true);
|
||||
createInfo->CharCount += 1;
|
||||
|
||||
SQLTransaction trans = LoginDatabase.BeginTransaction();
|
||||
LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction();
|
||||
|
||||
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_REALM_CHARACTERS_BY_REALM);
|
||||
stmt->setUInt32(0, GetAccountId());
|
||||
@@ -1300,7 +1300,7 @@ void WorldSession::HandleCharRenameCallBack(std::shared_ptr<WorldPackets::Charac
|
||||
|
||||
atLoginFlags &= ~AT_LOGIN_RENAME;
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
ObjectGuid::LowType lowGuid = renameInfo->Guid.GetCounter();
|
||||
|
||||
// Update name and at_login flag in the db
|
||||
@@ -1368,7 +1368,7 @@ void WorldSession::HandleSetPlayerDeclinedNames(WorldPackets::Character::SetPlay
|
||||
for (int i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
|
||||
CharacterDatabase.EscapeString(packet.DeclinedNames.name[i]);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_DECLINED_NAME);
|
||||
stmt->setUInt64(0, packet.Player.GetCounter());
|
||||
@@ -1560,7 +1560,7 @@ void WorldSession::HandleCharCustomizeCallback(std::shared_ptr<WorldPackets::Cha
|
||||
}
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = nullptr;
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
ObjectGuid::LowType lowGuid = customizeInfo->CharGUID.GetCounter();
|
||||
|
||||
@@ -1883,7 +1883,7 @@ void WorldSession::HandleCharRaceOrFactionChangeCallback(std::shared_ptr<WorldPa
|
||||
ObjectGuid::LowType lowGuid = factionChangeInfo->Guid.GetCounter();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = nullptr;
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
// resurrect the character in case he's dead
|
||||
Player::OfflineResurrect(factionChangeInfo->Guid, trans);
|
||||
@@ -2321,7 +2321,7 @@ void WorldSession::HandleRandomizeCharNameOpcode(WorldPackets::Character::Genera
|
||||
|
||||
void WorldSession::HandleReorderCharacters(WorldPackets::Character::ReorderCharacters& reorderChars)
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
for (WorldPackets::Character::ReorderCharacters::ReorderInfo const& reorderInfo : reorderChars.Entries)
|
||||
{
|
||||
|
||||
@@ -859,7 +859,7 @@ void WorldSession::HandleWrapItem(WorldPackets::Item::WrapItem& packet)
|
||||
return;
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_GIFT);
|
||||
stmt->setUInt64(0, item->GetOwnerGUID().GetCounter());
|
||||
|
||||
@@ -278,7 +278,7 @@ void WorldSession::HandleSendMail(WorldPackets::Mail::SendMail& packet)
|
||||
|
||||
MailDraft draft(packet.Info.Subject, packet.Info.Body);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
if (!packet.Info.Attachments.empty() || packet.Info.SendMoney > 0)
|
||||
{
|
||||
@@ -390,7 +390,7 @@ void WorldSession::HandleMailReturnToSender(WorldPackets::Mail::MailReturnToSend
|
||||
return;
|
||||
}
|
||||
//we can return mail now, so firstly delete the old one
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_MAIL_BY_ID);
|
||||
stmt->setUInt32(0, packet.MailID);
|
||||
@@ -464,7 +464,7 @@ void WorldSession::HandleMailTakeItem(WorldPackets::Mail::MailTakeItem& packet)
|
||||
uint8 msg = _player->CanStoreItem(NULL_BAG, NULL_SLOT, dest, it, false);
|
||||
if (msg == EQUIP_ERR_OK)
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
m->RemoveItem(packet.AttachID);
|
||||
m->removedItems.push_back(packet.AttachID);
|
||||
|
||||
@@ -554,7 +554,7 @@ void WorldSession::HandleMailTakeMoney(WorldPackets::Mail::MailTakeMoney& packet
|
||||
player->SendMailResult(packet.MailID, MAIL_MONEY_TAKEN, MAIL_OK);
|
||||
|
||||
// save money and mail to prevent cheating
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
player->SaveGoldToDB(trans);
|
||||
player->_SaveMail(trans);
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
|
||||
@@ -557,7 +557,7 @@ void WorldSession::HandlePetRename(WorldPackets::Pet::PetRename& packet)
|
||||
}
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
if (declinedname)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_PET_DECLINEDNAME);
|
||||
|
||||
@@ -124,7 +124,7 @@ void WorldSession::HandlePetitionBuy(WorldPackets::Petition::PetitionBuy& packet
|
||||
|
||||
TC_LOG_DEBUG("network", "Invalid petition GUIDs: %s", ssInvalidPetitionGUIDs.str().c_str());
|
||||
CharacterDatabase.EscapeString(packet.Title);
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
trans->PAppend("DELETE FROM petition WHERE petitionguid IN (%s)", ssInvalidPetitionGUIDs.str().c_str());
|
||||
trans->PAppend("DELETE FROM petition_sign WHERE petitionguid IN (%s)", ssInvalidPetitionGUIDs.str().c_str());
|
||||
|
||||
@@ -537,7 +537,7 @@ void WorldSession::HandleTurnInPetition(WorldPackets::Petition::TurnInPetition&
|
||||
Guild::SendCommandResult(this, GUILD_COMMAND_CREATE_GUILD, ERR_GUILD_COMMAND_SUCCESS, name);
|
||||
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
// Add members from signatures
|
||||
for (uint8 i = 0; i < signatures; ++i)
|
||||
@@ -553,7 +553,7 @@ void WorldSession::HandleTurnInPetition(WorldPackets::Petition::TurnInPetition&
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PETITION_BY_GUID);
|
||||
stmt->setUInt64(0, packet.Item.GetCounter());
|
||||
|
||||
@@ -220,7 +220,7 @@ void WorldSession::HandleOpenWrappedItemCallback(uint16 pos, ObjectGuid itemGuid
|
||||
return;
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
Field* fields = result->Fetch();
|
||||
uint32 entry = fields[0].GetUInt32();
|
||||
|
||||
@@ -522,7 +522,7 @@ void WorldSession::HandleAcceptTradeOpcode(WorldPackets::Trade::AcceptTrade& acc
|
||||
trader->m_trade = NULL;
|
||||
|
||||
// desynchronized with the other saves here (SaveInventoryAndGoldToDB() not have own transaction guards)
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
_player->SaveInventoryAndGoldToDB(trans);
|
||||
trader->SaveInventoryAndGoldToDB(trans);
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
|
||||
@@ -137,7 +137,7 @@ InstanceSave* InstanceSaveManager::GetInstanceSave(uint32 InstanceId)
|
||||
|
||||
void InstanceSaveManager::DeleteInstanceFromDB(uint32 instanceid)
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INSTANCE_BY_INSTANCE);
|
||||
stmt->setUInt32(0, instanceid);
|
||||
@@ -664,7 +664,7 @@ void InstanceSaveManager::_ResetOrWarnAll(uint32 mapid, Difficulty difficulty, b
|
||||
return;
|
||||
|
||||
// delete/promote instance binds from the DB, even if not loaded
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_EXPIRED_CHAR_INSTANCE_BY_MAP_DIFF);
|
||||
stmt->setUInt16(0, uint16(mapid));
|
||||
|
||||
@@ -96,7 +96,7 @@ MailDraft& MailDraft::AddItem(Item* item)
|
||||
return *this;
|
||||
}
|
||||
|
||||
void MailDraft::prepareItems(Player* receiver, SQLTransaction& trans)
|
||||
void MailDraft::prepareItems(Player* receiver, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
if (!m_mailTemplateId || !m_mailTemplateItemsNeed)
|
||||
return;
|
||||
@@ -122,7 +122,7 @@ void MailDraft::prepareItems(Player* receiver, SQLTransaction& trans)
|
||||
}
|
||||
}
|
||||
|
||||
void MailDraft::deleteIncludedItems(SQLTransaction& trans, bool inDB /*= false*/ )
|
||||
void MailDraft::deleteIncludedItems(CharacterDatabaseTransaction& trans, bool inDB /*= false*/ )
|
||||
{
|
||||
for (MailItemMap::iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter)
|
||||
{
|
||||
@@ -141,7 +141,7 @@ void MailDraft::deleteIncludedItems(SQLTransaction& trans, bool inDB /*= false*/
|
||||
m_items.clear();
|
||||
}
|
||||
|
||||
void MailDraft::SendReturnToSender(uint32 sender_acc, ObjectGuid::LowType sender_guid, ObjectGuid::LowType receiver_guid, SQLTransaction& trans)
|
||||
void MailDraft::SendReturnToSender(uint32 sender_acc, ObjectGuid::LowType sender_guid, ObjectGuid::LowType receiver_guid, CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
ObjectGuid receiverGuid = ObjectGuid::Create<HighGuid::Player>(receiver_guid);
|
||||
Player* receiver = ObjectAccessor::FindConnectedPlayer(receiverGuid);
|
||||
@@ -184,7 +184,7 @@ void MailDraft::SendReturnToSender(uint32 sender_acc, ObjectGuid::LowType sender
|
||||
SendMailTo(trans, MailReceiver(receiver, receiver_guid), MailSender(MAIL_NORMAL, sender_guid), MAIL_CHECK_MASK_RETURNED, deliver_delay);
|
||||
}
|
||||
|
||||
void MailDraft::SendMailTo(SQLTransaction& trans, MailReceiver const& receiver, MailSender const& sender, MailCheckMask checked, uint32 deliver_delay)
|
||||
void MailDraft::SendMailTo(CharacterDatabaseTransaction& trans, MailReceiver const& receiver, MailSender const& sender, MailCheckMask checked, uint32 deliver_delay)
|
||||
{
|
||||
Player* pReceiver = receiver.GetPlayer(); // can be NULL
|
||||
Player* pSender = ObjectAccessor::FindPlayer(ObjectGuid::Create<HighGuid::Player>(sender.GetSenderId()));
|
||||
@@ -282,13 +282,13 @@ void MailDraft::SendMailTo(SQLTransaction& trans, MailReceiver const& receiver,
|
||||
}
|
||||
else if (!m_items.empty())
|
||||
{
|
||||
SQLTransaction temp = SQLTransaction(NULL);
|
||||
CharacterDatabaseTransaction temp = CharacterDatabaseTransaction(NULL);
|
||||
deleteIncludedItems(temp);
|
||||
}
|
||||
}
|
||||
else if (!m_items.empty())
|
||||
{
|
||||
SQLTransaction temp = SQLTransaction(NULL);
|
||||
CharacterDatabaseTransaction temp = CharacterDatabaseTransaction(NULL);
|
||||
deleteIncludedItems(temp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,12 +143,12 @@ class TC_GAME_API MailDraft
|
||||
MailDraft& AddCOD(uint64 COD) { m_COD = COD; return *this; }
|
||||
|
||||
public: // finishers
|
||||
void SendReturnToSender(uint32 sender_acc, ObjectGuid::LowType sender_guid, ObjectGuid::LowType receiver_guid, SQLTransaction& trans);
|
||||
void SendMailTo(SQLTransaction& trans, MailReceiver const& receiver, MailSender const& sender, MailCheckMask checked = MAIL_CHECK_MASK_NONE, uint32 deliver_delay = 0);
|
||||
void SendReturnToSender(uint32 sender_acc, ObjectGuid::LowType sender_guid, ObjectGuid::LowType receiver_guid, CharacterDatabaseTransaction& trans);
|
||||
void SendMailTo(CharacterDatabaseTransaction& trans, MailReceiver const& receiver, MailSender const& sender, MailCheckMask checked = MAIL_CHECK_MASK_NONE, uint32 deliver_delay = 0);
|
||||
|
||||
private:
|
||||
void deleteIncludedItems(SQLTransaction& trans, bool inDB = false);
|
||||
void prepareItems(Player* receiver, SQLTransaction& trans); // called from SendMailTo for generate mailTemplateBase items
|
||||
void deleteIncludedItems(CharacterDatabaseTransaction& trans, bool inDB = false);
|
||||
void prepareItems(Player* receiver, CharacterDatabaseTransaction& trans); // called from SendMailTo for generate mailTemplateBase items
|
||||
|
||||
uint16 m_mailTemplateId;
|
||||
bool m_mailTemplateItemsNeed;
|
||||
|
||||
@@ -4209,7 +4209,7 @@ Corpse* Map::ConvertCorpseToBones(ObjectGuid const& ownerGuid, bool insignia /*=
|
||||
RemoveCorpse(corpse);
|
||||
|
||||
// remove corpse from DB
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
corpse->DeleteFromDB(trans);
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
|
||||
|
||||
@@ -952,7 +952,7 @@ void PoolMgr::LoadQuestPools()
|
||||
|
||||
void PoolMgr::SaveQuestsToDB()
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
for (PoolGroupQuestMap::iterator itr = mPoolQuestGroups.begin(); itr != mPoolQuestGroups.end(); ++itr)
|
||||
{
|
||||
|
||||
@@ -53,7 +53,7 @@ void QuestObjectiveCriteriaMgr::Reset()
|
||||
|
||||
void QuestObjectiveCriteriaMgr::DeleteFromDB(ObjectGuid const& guid)
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_QUESTSTATUS_OBJECTIVES_CRITERIA);
|
||||
stmt->setUInt64(0, guid.GetCounter());
|
||||
@@ -117,7 +117,7 @@ void QuestObjectiveCriteriaMgr::LoadFromDB(PreparedQueryResult objectiveResult,
|
||||
}
|
||||
}
|
||||
|
||||
void QuestObjectiveCriteriaMgr::SaveToDB(SQLTransaction& trans)
|
||||
void QuestObjectiveCriteriaMgr::SaveToDB(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_QUESTSTATUS_OBJECTIVES_CRITERIA);
|
||||
stmt->setUInt64(0, _owner->GetGUID().GetCounter());
|
||||
|
||||
@@ -32,7 +32,7 @@ public:
|
||||
|
||||
static void DeleteFromDB(ObjectGuid const& guid);
|
||||
void LoadFromDB(PreparedQueryResult objectiveResult, PreparedQueryResult criteriaResult);
|
||||
void SaveToDB(SQLTransaction& trans);
|
||||
void SaveToDB(CharacterDatabaseTransaction& trans);
|
||||
|
||||
void ResetCriteria(CriteriaTypes type, uint64 miscValue1 = 0, uint64 miscValue2 = 0, bool evenIfCriteriaComplete = false);
|
||||
void ResetCriteriaTree(uint32 criteriaTreeId);
|
||||
|
||||
@@ -553,7 +553,7 @@ void ReputationMgr::LoadFromDB(PreparedQueryResult result)
|
||||
}
|
||||
}
|
||||
|
||||
void ReputationMgr::SaveToDB(SQLTransaction& trans)
|
||||
void ReputationMgr::SaveToDB(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
for (FactionStateList::iterator itr = _factions.begin(); itr != _factions.end(); ++itr)
|
||||
{
|
||||
|
||||
@@ -70,7 +70,7 @@ class TC_GAME_API ReputationMgr
|
||||
_visibleFactionCount(0), _honoredFactionCount(0), _reveredFactionCount(0), _exaltedFactionCount(0), _sendFactionIncreased(false) { }
|
||||
~ReputationMgr() { }
|
||||
|
||||
void SaveToDB(SQLTransaction& trans);
|
||||
void SaveToDB(CharacterDatabaseTransaction& trans);
|
||||
void LoadFromDB(PreparedQueryResult result);
|
||||
public: // statics
|
||||
static const int32 PointsInRank[MAX_REPUTATION_RANK];
|
||||
|
||||
@@ -51,7 +51,7 @@ void InstanceScenario::SaveToDB()
|
||||
return;
|
||||
}
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
for (auto iter = _criteriaProgress.begin(); iter != _criteriaProgress.end(); ++iter)
|
||||
{
|
||||
if (!iter->second.Changed)
|
||||
@@ -96,7 +96,7 @@ void InstanceScenario::LoadInstanceData(uint32 instanceId)
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
if (result)
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
time_t now = time(nullptr);
|
||||
|
||||
std::vector<CriteriaTree const*> criteriaTrees;
|
||||
|
||||
@@ -818,7 +818,7 @@ void WorldSession::SendTutorialsData()
|
||||
SendPacket(packet.Write());
|
||||
}
|
||||
|
||||
void WorldSession::SaveTutorialsData(SQLTransaction& trans)
|
||||
void WorldSession::SaveTutorialsData(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
if (!(_tutorialsChanged & TUTORIALS_FLAG_CHANGED))
|
||||
return;
|
||||
|
||||
@@ -1010,7 +1010,7 @@ class TC_GAME_API WorldSession
|
||||
|
||||
void LoadTutorialsData(PreparedQueryResult result);
|
||||
void SendTutorialsData();
|
||||
void SaveTutorialsData(SQLTransaction& trans);
|
||||
void SaveTutorialsData(CharacterDatabaseTransaction& trans);
|
||||
uint32 GetTutorialInt(uint8 index) const { return _tutorials[index]; }
|
||||
void SetTutorialInt(uint8 index, uint32 value)
|
||||
{
|
||||
|
||||
@@ -170,7 +170,7 @@ void SpellHistory::LoadFromDB(PreparedQueryResult cooldownsResult, PreparedQuery
|
||||
}
|
||||
|
||||
template<class OwnerType>
|
||||
void SpellHistory::SaveToDB(SQLTransaction& trans)
|
||||
void SpellHistory::SaveToDB(CharacterDatabaseTransaction& trans)
|
||||
{
|
||||
typedef PersistenceHelper<OwnerType> StatementInfo;
|
||||
|
||||
@@ -965,5 +965,5 @@ void SpellHistory::RestoreCooldownStateAfterDuel()
|
||||
|
||||
template void SpellHistory::LoadFromDB<Player>(PreparedQueryResult cooldownsResult, PreparedQueryResult chargesResult);
|
||||
template void SpellHistory::LoadFromDB<Pet>(PreparedQueryResult cooldownsResult, PreparedQueryResult chargesResult);
|
||||
template void SpellHistory::SaveToDB<Player>(SQLTransaction& trans);
|
||||
template void SpellHistory::SaveToDB<Pet>(SQLTransaction& trans);
|
||||
template void SpellHistory::SaveToDB<Player>(CharacterDatabaseTransaction& trans);
|
||||
template void SpellHistory::SaveToDB<Pet>(CharacterDatabaseTransaction& trans);
|
||||
|
||||
@@ -76,7 +76,7 @@ public:
|
||||
void LoadFromDB(PreparedQueryResult cooldownsResult, PreparedQueryResult chargesResult);
|
||||
|
||||
template<class OwnerType>
|
||||
void SaveToDB(SQLTransaction& trans);
|
||||
void SaveToDB(CharacterDatabaseTransaction& trans);
|
||||
|
||||
void Update();
|
||||
|
||||
|
||||
@@ -225,7 +225,7 @@ void ComplaintTicket::LoadChatLineFromDB(Field* fields)
|
||||
|
||||
void ComplaintTicket::SaveToDB() const
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
uint8 idx = 0;
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_GM_COMPLAINT);
|
||||
@@ -718,7 +718,7 @@ TC_GAME_API void SupportMgr::ResetTickets<ComplaintTicket>()
|
||||
|
||||
_lastComplaintId = 0;
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
trans->Append(CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_GM_COMPLAINTS));
|
||||
trans->Append(CharacterDatabase.GetPreparedStatement(CHAR_DEL_ALL_GM_COMPLAINT_CHATLOGS));
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
|
||||
@@ -519,7 +519,7 @@ DumpReturn PlayerDumpReader::LoadDump(std::string const& file, uint32 account, s
|
||||
|
||||
ObjectGuid::LowType itemLowGuidOffset = sObjectMgr->GetGenerator<HighGuid::Item>().GetNextAfterMaxUsed();
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
while (!feof(fin))
|
||||
{
|
||||
if (!fgets(buf, 32000, fin))
|
||||
|
||||
@@ -2798,7 +2798,7 @@ BanReturn World::BanAccount(BanMode mode, std::string const& nameOrIP, uint32 du
|
||||
}
|
||||
|
||||
///- Disconnect all affected players (for IP it can be several)
|
||||
SQLTransaction trans = LoginDatabase.BeginTransaction();
|
||||
LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction();
|
||||
do
|
||||
{
|
||||
Field* fieldsAccount = resultAccounts->Fetch();
|
||||
@@ -2877,7 +2877,7 @@ BanReturn World::BanCharacter(std::string const& name, std::string const& durati
|
||||
guid = banned->GetGUID();
|
||||
|
||||
//Use transaction in order to ensure the order of the queries
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
// make sure there is only one active ban
|
||||
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHARACTER_BAN);
|
||||
stmt->setUInt64(0, guid.GetCounter());
|
||||
@@ -3129,7 +3129,7 @@ void World::_UpdateRealmCharCount(PreparedQueryResult resultCharCount)
|
||||
uint32 accountId = fields[0].GetUInt32();
|
||||
uint8 charCount = uint8(fields[1].GetUInt64());
|
||||
|
||||
SQLTransaction trans = LoginDatabase.BeginTransaction();
|
||||
LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction();
|
||||
|
||||
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_REALM_CHARACTERS_BY_REALM);
|
||||
stmt->setUInt32(0, accountId);
|
||||
|
||||
@@ -152,7 +152,7 @@ public:
|
||||
return false;
|
||||
|
||||
// player's guild membership checked in AddMember before add
|
||||
SQLTransaction trans(nullptr);
|
||||
CharacterDatabaseTransaction trans(nullptr);
|
||||
return targetGuild->AddMember(trans, targetGuid);
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ public:
|
||||
if (!targetGuild)
|
||||
return false;
|
||||
|
||||
SQLTransaction trans(nullptr);
|
||||
CharacterDatabaseTransaction trans(nullptr);
|
||||
targetGuild->DeleteMember(trans, targetGuid, false, true, true);
|
||||
return true;
|
||||
}
|
||||
@@ -199,7 +199,7 @@ public:
|
||||
return false;
|
||||
|
||||
uint8 newRank = uint8(atoi(rankStr));
|
||||
SQLTransaction trans(nullptr);
|
||||
CharacterDatabaseTransaction trans(nullptr);
|
||||
return targetGuild->ChangeMemberRank(trans, targetGuid, newRank);
|
||||
}
|
||||
|
||||
|
||||
@@ -607,7 +607,7 @@ public:
|
||||
handler->PSendSysMessage(LANG_SUMMONING, nameLink.c_str(), handler->GetTrinityString(LANG_OFFLINE));
|
||||
|
||||
// in point where GM stay
|
||||
SQLTransaction dummy;
|
||||
CharacterDatabaseTransaction dummy;
|
||||
Player::SavePositionInDB(WorldLocation(handler->GetSession()->GetPlayer()->GetMapId(),
|
||||
handler->GetSession()->GetPlayer()->GetPositionX(),
|
||||
handler->GetSession()->GetPlayer()->GetPositionY(),
|
||||
@@ -667,7 +667,7 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
SQLTransaction trans(nullptr);
|
||||
CharacterDatabaseTransaction trans(nullptr);
|
||||
Player::OfflineResurrect(targetGuid, trans);
|
||||
}
|
||||
|
||||
@@ -1007,7 +1007,7 @@ public:
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
|
||||
SQLTransaction dummy;
|
||||
CharacterDatabaseTransaction dummy;
|
||||
Player::SavePositionInDB(WorldLocation(fields[0].GetUInt16(), fields[2].GetFloat(), fields[3].GetFloat(), fields[4].GetFloat(), 0.0f), fields[1].GetUInt16(), targetGUID, dummy);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ public:
|
||||
MailSender sender(MAIL_NORMAL, handler->GetSession() ? handler->GetSession()->GetPlayer()->GetGUID().GetCounter() : UI64LIT(0), MAIL_STATIONERY_GM);
|
||||
|
||||
/// @todo Fix poor design
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
MailDraft(subject, text)
|
||||
.SendMailTo(trans, MailReceiver(target, targetGuid.GetCounter()), sender);
|
||||
|
||||
@@ -184,7 +184,7 @@ public:
|
||||
// fill mail
|
||||
MailDraft draft(subject, text);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
for (ItemPairs::const_iterator itr = items.begin(); itr != items.end(); ++itr)
|
||||
{
|
||||
@@ -241,7 +241,7 @@ public:
|
||||
// from console show nonexisting sender
|
||||
MailSender sender(MAIL_NORMAL, handler->GetSession() ? handler->GetSession()->GetPlayer()->GetGUID().GetCounter() : UI64LIT(0), MAIL_STATIONERY_GM);
|
||||
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
MailDraft(subject, text)
|
||||
.AddMoney(money)
|
||||
|
||||
@@ -148,7 +148,7 @@ public:
|
||||
WorldLocation loc(fieldsDB[0].GetUInt16(), fieldsDB[2].GetFloat(), fieldsDB[3].GetFloat(), fieldsDB[4].GetFloat(), 0.0f);
|
||||
uint32 zoneId = fieldsDB[1].GetUInt16();
|
||||
|
||||
SQLTransaction dummy;
|
||||
CharacterDatabaseTransaction dummy;
|
||||
Player::SavePositionInDB(loc, zoneId, target_guid, dummy);
|
||||
}
|
||||
}
|
||||
@@ -206,7 +206,7 @@ public:
|
||||
|
||||
handler->PSendSysMessage(LANG_TELEPORTING_TO, nameLink.c_str(), handler->GetTrinityString(LANG_OFFLINE), tele->name.c_str());
|
||||
|
||||
SQLTransaction dummy;
|
||||
CharacterDatabaseTransaction dummy;
|
||||
Player::SavePositionInDB(WorldLocation(tele->mapId, tele->position_x, tele->position_y, tele->position_z, tele->orientation),
|
||||
sMapMgr->GetZoneId(PhasingHandler::GetEmptyPhaseShift(), tele->mapId, tele->position_x, tele->position_y, tele->position_z), target_guid, dummy);
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ class npc_minigob_manabonk : public CreatureScript
|
||||
|
||||
void SendMailToPlayer(Player* player)
|
||||
{
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
int16 deliverDelay = irand(MAIL_DELIVER_DELAY_MIN, MAIL_DELIVER_DELAY_MAX);
|
||||
MailDraft(MAIL_MINIGOB_ENTRY, true).SendMailTo(trans, MailReceiver(player), MailSender(MAIL_CREATURE, uint64(me->GetEntry())), MAIL_CHECK_MASK_NONE, deliverDelay);
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
|
||||
Reference in New Issue
Block a user