Jump to content

Can't enter Arena when team rating = 0


Recommended Posts

Posted

MaNGOS: 9611 (+ insider42)

YTDB: 539

Clear DB characters

When Arena.ArenaSeason.ID = 6 (or 7, 8) starting team rating = 0. Teams register in fight (test 2x2), but it the invitation doesn't come.

If change team rating in DB to "1" - invitation comes.

Help pls

Posted

Решение вот такое:

-------------------------- src/game/BattleGround.cpp --------------------------

index 25b8042..15acff3 100644

@@ -1099,7 +1099,7 @@ void BattleGround::RemovePlayerAtLeave(uint64 guid, bool Transport, bool SendPac

{

// a player has left the battleground, so there are free slots -> add to queue

AddToBGFreeSlotQueue();

- sBattleGroundMgr.ScheduleQueueUpdate(0, 0, bgQueueTypeId, bgTypeId, GetBracketId());

+ sBattleGroundMgr.ScheduleQueueUpdate(0, 0, 0, bgQueueTypeId, bgTypeId, GetBracketId());

}

// Let others know

----------------------- src/game/BattleGroundHandler.cpp -----------------------

index 7c6bdf8..fd6976a 100644

@@ -192,7 +192,7 @@ void WorldSession::HandleBattlemasterJoinOpcode( WorldPacket & recv_data )

SendPacket(&data);

sLog.outDebug("Battleground: player joined queue for bg queue type %u bg type %u: GUID %u, NAME %s",bgQueueTypeId,bgTypeId,_player->GetGUIDLow(), _player->GetName());

}

- sBattleGroundMgr.ScheduleQueueUpdate(0, 0, bgQueueTypeId, bgTypeId, bracketEntry->GetBracketId());

+ sBattleGroundMgr.ScheduleQueueUpdate(0, 0, 0, bgQueueTypeId, bgTypeId, bracketEntry->GetBracketId());

}

void WorldSession::HandleBattleGroundPlayerPositionsOpcode( WorldPacket & /*recv_data*/ )

@@ -441,7 +441,7 @@ void WorldSession::HandleBattleFieldPortOpcode( WorldPacket &recv_data )

bgQueue.RemovePlayer(_player->GetGUID(), true);

// player left queue, we should update it - do not update Arena Queue

if (!ginfo.ArenaType)

- sBattleGroundMgr.ScheduleQueueUpdate(ginfo.ArenaTeamRating, ginfo.ArenaType, bgQueueTypeId, bgTypeId, bracketEntry->GetBracketId());

+ sBattleGroundMgr.ScheduleQueueUpdate(0, ginfo.ArenaTeamRating, ginfo.ArenaType, bgQueueTypeId, bgTypeId, bracketEntry->GetBracketId());

SendPacket(&data);

sLog.outDebug("Battleground: player %s (%u) left queue for bgtype %u, queue type %u.", _player->GetName(), _player->GetGUIDLow(), bg->GetTypeID(), bgQueueTypeId);

break;

@@ -732,7 +732,7 @@ void WorldSession::HandleBattlemasterJoinArena( WorldPacket & recv_data )

SendPacket(&data);

sLog.outDebug("Battleground: player joined queue for arena, skirmish, bg queue type %u bg type %u: GUID %u, NAME %s",bgQueueTypeId,bgTypeId,_player->GetGUIDLow(), _player->GetName());

}

- sBattleGroundMgr.ScheduleQueueUpdate(arenaRating, arenatype, bgQueueTypeId, bgTypeId, bracketEntry->GetBracketId());

+ sBattleGroundMgr.ScheduleQueueUpdate(isRated, arenaRating, arenatype, bgQueueTypeId, bgTypeId, bracketEntry->GetBracketId());

}

void WorldSession::HandleReportPvPAFK( WorldPacket & recv_data )

------------------------- src/game/BattleGroundMgr.cpp -------------------------

index 54ba1a2..3980849 100644

@@ -1110,7 +1110,7 @@ bool BGQueueRemoveEvent::Execute(uint64 /*e_time*/, uint32 /*p_time*/)

bgQueue.RemovePlayer(m_PlayerGuid, true);

//update queues if battleground isn't ended

if (bg && bg->isBattleGround() && bg->GetStatus() != STATUS_WAIT_LEAVE)

- sBattleGroundMgr.ScheduleQueueUpdate(0, 0, m_BgQueueTypeId, m_BgTypeId, bg->GetBracketId());

+ sBattleGroundMgr.ScheduleQueueUpdate(0, 0, 0, m_BgQueueTypeId, m_BgTypeId, bg->GetBracketId());

WorldPacket data;

sBattleGroundMgr.BuildBattleGroundStatusPacket(&data, bg, queueSlot, STATUS_NONE, 0, 0, 0);

@@ -1177,11 +1177,12 @@ void BattleGroundMgr::Update(uint32 diff)

for (uint8 i = 0; i < scheduled.size(); i++)

{

uint32 arenaRating = scheduled >> 32;

- uint8 arenaType = scheduled >> 24 & 255;

+ uint8 isRated = scheduled >> 28 & 15;

+ uint8 arenaType = scheduled >> 24 & 15;

BattleGroundQueueTypeId bgQueueTypeId = BattleGroundQueueTypeId(scheduled >> 16 & 255);

BattleGroundTypeId bgTypeId = BattleGroundTypeId((scheduled >> 8) & 255);

BattleGroundBracketId bracket_id = BattleGroundBracketId(scheduled & 255);

- m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, bracket_id, arenaType, arenaRating > 0, arenaRating);

+ m_BattleGroundQueues[bgQueueTypeId].Update(bgTypeId, bracket_id, arenaType, isRated, arenaRating);

}

}

@@ -1969,11 +1970,11 @@ void BattleGroundMgr::ToggleArenaTesting()

sWorld.SendWorldText(LANG_DEBUG_ARENA_OFF);

}

-void BattleGroundMgr::ScheduleQueueUpdate(uint32 arenaRating, uint8 arenaType, BattleGroundQueueTypeId bgQueueTypeId, BattleGroundTypeId bgTypeId, BattleGroundBracketId bracket_id)

+void BattleGroundMgr::ScheduleQueueUpdate(uint8 isRated, uint32 arenaRating, uint8 arenaType, BattleGroundQueueTypeId bgQueueTypeId, BattleGroundTypeId bgTypeId, BattleGroundBracketId bracket_id)

{

//ACE_Guard<ACE_Thread_Mutex> guard(SchedulerLock);

//we will use only 1 number created of bgTypeId and bracket_id

- uint64 schedule_id = ((uint64)arenaRating << 32) | (arenaType << 24) | (bgQueueTypeId << 16) | (bgTypeId << 8) | bracket_id;

+ uint64 schedule_id = ((uint64)arenaRating << 32) | (isRated << 28) | (arenaType << 24) | (bgQueueTypeId << 16) | (bgTypeId << 8) | bracket_id;

bool found = false;

for (uint8 i = 0; i < m_QueueUpdateScheduler.size(); i++)

{

-------------------------- src/game/BattleGroundMgr.h --------------------------

index b16e801..4fda2d6 100644

@@ -228,7 +228,7 @@ class BattleGroundMgr

BGFreeSlotQueueType BGFreeSlotQueue[MAX_BATTLEGROUND_TYPE_ID];

- void ScheduleQueueUpdate(uint32 arenaRating, uint8 arenaType, BattleGroundQueueTypeId bgQueueTypeId, BattleGroundTypeId bgTypeId, BattleGroundBracketId bracket_id);

+ void ScheduleQueueUpdate(uint8 isRated, uint32 arenaRating, uint8 arenaType, BattleGroundQueueTypeId bgQueueTypeId, BattleGroundTypeId bgTypeId, BattleGroundBracketId bracket_id);

uint32 GetMaxRatingDifference() const;

uint32 GetRatingDiscardTimer() const;

uint32 GetPrematureFinishTime() const;

  • 2 months later...
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use