mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 04:37:00 +00:00
[11566] Fixed problem with reuse BG save data not only at first failed login to BG.
Most visible problem result: infinity restart in taxi flight after join to BG from taxi if character logout in BG and BG finished before re-login.
This commit is contained in:
parent
2dbc5b219a
commit
4f214f55d7
2 changed files with 11 additions and 4 deletions
|
|
@ -15487,7 +15487,7 @@ bool Player::LoadFromDB(ObjectGuid guid, SqlQueryHolder *holder )
|
||||||
|
|
||||||
_LoadBoundInstances(holder->GetResult(PLAYER_LOGIN_QUERY_LOADBOUNDINSTANCES));
|
_LoadBoundInstances(holder->GetResult(PLAYER_LOGIN_QUERY_LOADBOUNDINSTANCES));
|
||||||
|
|
||||||
if(!IsPositionValid())
|
if (!IsPositionValid())
|
||||||
{
|
{
|
||||||
sLog.outError("%s have invalid coordinates (X: %f Y: %f Z: %f O: %f). Teleport to default race/class locations.",
|
sLog.outError("%s have invalid coordinates (X: %f Y: %f Z: %f O: %f). Teleport to default race/class locations.",
|
||||||
guid.GetString().c_str(), GetPositionX(), GetPositionY(), GetPositionZ(), GetOrientation());
|
guid.GetString().c_str(), GetPositionX(), GetPositionY(), GetPositionZ(), GetOrientation());
|
||||||
|
|
@ -15500,13 +15500,13 @@ bool Player::LoadFromDB(ObjectGuid guid, SqlQueryHolder *holder )
|
||||||
|
|
||||||
_LoadBGData(holder->GetResult(PLAYER_LOGIN_QUERY_LOADBGDATA));
|
_LoadBGData(holder->GetResult(PLAYER_LOGIN_QUERY_LOADBGDATA));
|
||||||
|
|
||||||
if(m_bgData.bgInstanceID) //saved in BattleGround
|
if (m_bgData.bgInstanceID) //saved in BattleGround
|
||||||
{
|
{
|
||||||
BattleGround *currentBg = sBattleGroundMgr.GetBattleGround(m_bgData.bgInstanceID, BATTLEGROUND_TYPE_NONE);
|
BattleGround *currentBg = sBattleGroundMgr.GetBattleGround(m_bgData.bgInstanceID, BATTLEGROUND_TYPE_NONE);
|
||||||
|
|
||||||
bool player_at_bg = currentBg && currentBg->IsPlayerInBattleGround(GetObjectGuid());
|
bool player_at_bg = currentBg && currentBg->IsPlayerInBattleGround(GetObjectGuid());
|
||||||
|
|
||||||
if(player_at_bg && currentBg->GetStatus() != STATUS_WAIT_LEAVE)
|
if (player_at_bg && currentBg->GetStatus() != STATUS_WAIT_LEAVE)
|
||||||
{
|
{
|
||||||
BattleGroundQueueTypeId bgQueueTypeId = BattleGroundMgr::BGQueueTypeId(currentBg->GetTypeID(), currentBg->GetArenaType());
|
BattleGroundQueueTypeId bgQueueTypeId = BattleGroundMgr::BGQueueTypeId(currentBg->GetTypeID(), currentBg->GetArenaType());
|
||||||
AddBattleGroundQueueId(bgQueueTypeId);
|
AddBattleGroundQueueId(bgQueueTypeId);
|
||||||
|
|
@ -15532,6 +15532,8 @@ bool Player::LoadFromDB(ObjectGuid guid, SqlQueryHolder *holder )
|
||||||
|
|
||||||
// We are not in BG anymore
|
// We are not in BG anymore
|
||||||
SetBattleGroundId(0, BATTLEGROUND_TYPE_NONE);
|
SetBattleGroundId(0, BATTLEGROUND_TYPE_NONE);
|
||||||
|
// remove outdated DB data in DB
|
||||||
|
_SaveBGData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -15544,6 +15546,11 @@ bool Player::LoadFromDB(ObjectGuid guid, SqlQueryHolder *holder )
|
||||||
const WorldLocation& _loc = GetBattleGroundEntryPoint();
|
const WorldLocation& _loc = GetBattleGroundEntryPoint();
|
||||||
SetLocationMapId(_loc.mapid);
|
SetLocationMapId(_loc.mapid);
|
||||||
Relocate(_loc.coord_x, _loc.coord_y, _loc.coord_z, _loc.orientation);
|
Relocate(_loc.coord_x, _loc.coord_y, _loc.coord_z, _loc.orientation);
|
||||||
|
|
||||||
|
// We are not in BG anymore
|
||||||
|
SetBattleGroundId(0, BATTLEGROUND_TYPE_NONE);
|
||||||
|
// remove outdated DB data in DB
|
||||||
|
_SaveBGData();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "11565"
|
#define REVISION_NR "11566"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue