mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 01:37:00 +00:00
[10048] Move trade data to dynamic created structure.
Also possible fix old bug with spam trade cancel after logout.
This commit is contained in:
parent
59c8741e9b
commit
9dd45d5cf0
4 changed files with 152 additions and 123 deletions
|
|
@ -381,8 +381,7 @@ Player::Player (WorldSession *session): Unit(), m_achievementMgr(this), m_reputa
|
|||
m_bHasDelayedTeleport = false;
|
||||
m_teleport_options = 0;
|
||||
|
||||
pTrader = 0;
|
||||
ClearTrade();
|
||||
m_trade = NULL;
|
||||
|
||||
m_cinematic = 0;
|
||||
|
||||
|
|
@ -11989,33 +11988,23 @@ void Player::SendSellError( uint8 msg, Creature* pCreature, uint64 guid, uint32
|
|||
GetSession()->SendPacket(&data);
|
||||
}
|
||||
|
||||
void Player::ClearTrade()
|
||||
{
|
||||
tradeGold = 0;
|
||||
acceptTrade = false;
|
||||
for(int i = 0; i < TRADE_SLOT_COUNT; ++i)
|
||||
m_tradeItems[i].Clear();
|
||||
}
|
||||
|
||||
void Player::TradeCancel(bool sendback)
|
||||
{
|
||||
if (pTrader)
|
||||
if (m_trade)
|
||||
{
|
||||
Player* trader = m_trade->m_tradeWith;
|
||||
|
||||
// send yellow "Trade canceled" message to both traders
|
||||
WorldSession* ws;
|
||||
ws = GetSession();
|
||||
if (sendback)
|
||||
ws->SendCancelTrade();
|
||||
ws = pTrader->GetSession();
|
||||
if (!ws->PlayerLogout())
|
||||
ws->SendCancelTrade();
|
||||
GetSession()->SendCancelTrade();
|
||||
|
||||
trader->GetSession()->SendCancelTrade();
|
||||
|
||||
// cleanup
|
||||
ClearTrade();
|
||||
pTrader->ClearTrade();
|
||||
// prevent loss of reference
|
||||
pTrader->pTrader = NULL;
|
||||
pTrader = NULL;
|
||||
delete m_trade;
|
||||
m_trade = NULL;
|
||||
delete trader->m_trade;
|
||||
trader->m_trade = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue