Core/Battleground: Deserter track on bg leaving
This commit is contained in:
@@ -989,6 +989,8 @@ bool BGQueueRemoveEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/)
|
|||||||
if (!player)
|
if (!player)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
Battleground* bg = sBattlegroundMgr->GetBattleground(m_BgInstanceGUID);
|
||||||
|
|
||||||
// battleground can be already deleted, bg may be NULL!
|
// battleground can be already deleted, bg may be NULL!
|
||||||
|
|
||||||
// check if still in queue for this battleground
|
// check if still in queue for this battleground
|
||||||
@@ -999,6 +1001,15 @@ bool BGQueueRemoveEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/)
|
|||||||
BattlegroundQueue &bgQueue = sBattlegroundMgr->GetBattlegroundQueue(m_BgQueueTypeId);
|
BattlegroundQueue &bgQueue = sBattlegroundMgr->GetBattlegroundQueue(m_BgQueueTypeId);
|
||||||
if (bgQueue.IsPlayerInvited(m_PlayerGuid, m_BgInstanceGUID, m_RemoveTime))
|
if (bgQueue.IsPlayerInvited(m_PlayerGuid, m_BgInstanceGUID, m_RemoveTime))
|
||||||
{
|
{
|
||||||
|
// track if player leaves the BG by not clicking enter button
|
||||||
|
if (bg && bg->isBattleground() && sWorld->getBoolConfig(CONFIG_BATTLEGROUND_TRACK_DESERTERS) &&
|
||||||
|
(bg->GetStatus() == STATUS_IN_PROGRESS || bg->GetStatus() == STATUS_WAIT_JOIN))
|
||||||
|
{
|
||||||
|
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_DESERTER_TRACK);
|
||||||
|
stmt->setUInt32(0, player->GetGUIDLow());
|
||||||
|
stmt->setUInt8(1, BG_DESERTION_TYPE_NO_ENTER_BUTTON);
|
||||||
|
CharacterDatabase.Execute(stmt);
|
||||||
|
}
|
||||||
player->RemoveBattlegroundQueueId(m_BgQueueTypeId);
|
player->RemoveBattlegroundQueueId(m_BgQueueTypeId);
|
||||||
bgQueue.RemovePlayer(m_PlayerGuid, false, queueSlot);
|
bgQueue.RemovePlayer(m_PlayerGuid, false, queueSlot);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user