Core/Dungeon Finder: Correct rolechecks (4e8fa52)
- Fix bad sql (36806bf)
- Add better teleport debug messages
This commit is contained in:
@@ -1,17 +0,0 @@
|
||||
DELETE FROM `trinity_string` WHERE `entry` IN (9986, 9987, 9989, 9990, 9991, 9992, 9993, 9994, 9995, 9996, 9997, 9998, 9999);
|
||||
INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`)
|
||||
VALUES
|
||||
(9986, 'Error', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9987, 'None', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9988, 'Leader', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9989, 'Dps', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9990, 'Healer', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9991, 'Tank', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9992, 'Raid browser', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9993, 'Finished dungeon', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9994, 'In dungeon', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9995, 'Vote kick', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9996, 'Proposal', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9997, 'Queued', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9998, 'Role check', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9999, 'None', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
@@ -0,0 +1,17 @@
|
||||
DELETE FROM `trinity_string` WHERE `entry` IN (9986, 9987, 9989, 9990, 9991, 9992, 9993, 9994, 9995, 9996, 9997, 9998, 9999);
|
||||
INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`)
|
||||
VALUES
|
||||
(9999, 'Error', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9998, 'None', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9997, 'Leader', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9996, 'Dps', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9995, 'Healer', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9994, 'Tank', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9993, 'Raid browser', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9992, 'Finished dungeon', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9991, 'In dungeon', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9990, 'Vote kick', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9989, 'Proposal', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9988, 'Queued', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9987, 'Role check', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
|
||||
(9986, 'None', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
@@ -889,11 +889,13 @@ void LFGMgr::UpdateRoleCheck(uint64 gguid, uint64 guid /* = 0 */, uint8 roles /*
|
||||
SetState(gguid, LFG_STATE_QUEUED);
|
||||
LfgQueue& queue = GetQueue(gguid);
|
||||
queue.AddQueueData(gguid, time_t(time(NULL)), roleCheck.dungeons, roleCheck.roles);
|
||||
m_RoleChecks.erase(itRoleCheck);
|
||||
}
|
||||
else if (roleCheck.state != LFG_ROLECHECK_INITIALITING)
|
||||
{
|
||||
RestoreState(gguid, "Rolecheck Failed");
|
||||
|
||||
m_RoleChecks.erase(itRoleCheck);
|
||||
m_RoleChecks.erase(itRoleCheck);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1386,18 +1388,22 @@ void LFGMgr::UpdateBoot(uint64 guid, bool accept)
|
||||
*/
|
||||
void LFGMgr::TeleportPlayer(Player* player, bool out, bool fromOpcode /*= false*/)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::TeleportPlayer: [" UI64FMTD "] is being teleported %s", player->GetGUID(), out ? "out" : "in");
|
||||
|
||||
Group* grp = player->GetGroup();
|
||||
uint64 gguid = grp->GetGUID();
|
||||
LFGDungeonData const* dungeon = GetLFGDungeon(GetDungeon(gguid));
|
||||
if (!dungeon || (out && player->GetMapId() != uint32(dungeon->map)))
|
||||
if (!dungeon)
|
||||
return;
|
||||
|
||||
if (out)
|
||||
{
|
||||
player->RemoveAurasDueToSpell(LFG_SPELL_LUCK_OF_THE_DRAW);
|
||||
player->TeleportToBGEntryPoint();
|
||||
sLog->outDebug(LOG_FILTER_LFG, "TeleportPlayer: Player %s is being teleported out. Current Map %u - Expected Map %u",
|
||||
player->GetName(), player->GetMapId(), uint32(dungeon->map));
|
||||
if (player->GetMapId() == uint32(dungeon->map))
|
||||
{
|
||||
player->RemoveAurasDueToSpell(LFG_SPELL_LUCK_OF_THE_DRAW);
|
||||
player->TeleportToBGEntryPoint();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1415,57 +1421,55 @@ void LFGMgr::TeleportPlayer(Player* player, bool out, bool fromOpcode /*= false*
|
||||
error = LFG_TELEPORTERROR_IN_VEHICLE;
|
||||
else if (player->GetCharmGUID())
|
||||
error = LFG_TELEPORTERROR_CHARMING;
|
||||
else
|
||||
else if (player->GetMapId() != uint32(dungeon->map)) // Do not teleport players in dungeon to the entrance
|
||||
{
|
||||
if (!dungeon)
|
||||
error = LFG_TELEPORTERROR_INVALID_LOCATION;
|
||||
else if (player->GetMapId() != uint32(dungeon->map)) // Do not teleport players in dungeon to the entrance
|
||||
{
|
||||
uint32 mapid = dungeon->map;
|
||||
float x = dungeon->x;
|
||||
float y = dungeon->y;
|
||||
float z = dungeon->z;
|
||||
float orientation = dungeon->o;
|
||||
uint32 mapid = dungeon->map;
|
||||
float x = dungeon->x;
|
||||
float y = dungeon->y;
|
||||
float z = dungeon->z;
|
||||
float orientation = dungeon->o;
|
||||
|
||||
if (!fromOpcode)
|
||||
if (!fromOpcode)
|
||||
{
|
||||
// Select a player inside to be teleported to
|
||||
for (GroupReference* itr = grp->GetFirstMember(); itr != NULL && !mapid; itr = itr->next())
|
||||
{
|
||||
// Select a player inside to be teleported to
|
||||
for (GroupReference* itr = grp->GetFirstMember(); itr != NULL && !mapid; itr = itr->next())
|
||||
Player* plrg = itr->getSource();
|
||||
if (plrg && plrg != player && plrg->GetMapId() == uint32(dungeon->map))
|
||||
{
|
||||
Player* plrg = itr->getSource();
|
||||
if (plrg && plrg != player && plrg->GetMapId() == uint32(dungeon->map))
|
||||
{
|
||||
mapid = plrg->GetMapId();
|
||||
x = plrg->GetPositionX();
|
||||
y = plrg->GetPositionY();
|
||||
z = plrg->GetPositionZ();
|
||||
orientation = plrg->GetOrientation();
|
||||
}
|
||||
mapid = plrg->GetMapId();
|
||||
x = plrg->GetPositionX();
|
||||
y = plrg->GetPositionY();
|
||||
z = plrg->GetPositionZ();
|
||||
orientation = plrg->GetOrientation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (error == LFG_TELEPORTERROR_OK)
|
||||
if (error == LFG_TELEPORTERROR_OK)
|
||||
{
|
||||
if (!player->GetMap()->IsDungeon())
|
||||
player->SetBattlegroundEntryPoint();
|
||||
|
||||
if (player->isInFlight())
|
||||
{
|
||||
if (!player->GetMap()->IsDungeon())
|
||||
player->SetBattlegroundEntryPoint();
|
||||
player->GetMotionMaster()->MovementExpired();
|
||||
player->CleanupAfterTaxiFlight();
|
||||
}
|
||||
|
||||
if (player->isInFlight())
|
||||
{
|
||||
player->GetMotionMaster()->MovementExpired();
|
||||
player->CleanupAfterTaxiFlight();
|
||||
}
|
||||
|
||||
if (!player->TeleportTo(mapid, x, y, z, orientation))
|
||||
{
|
||||
error = LFG_TELEPORTERROR_INVALID_LOCATION;
|
||||
sLog->outError(LOG_FILTER_LFG, "LfgMgr::TeleportPlayer: Failed to teleport [" UI64FMTD "] to map %u: ", player->GetGUID(), mapid);
|
||||
}
|
||||
if (!player->TeleportTo(mapid, x, y, z, orientation))
|
||||
{
|
||||
error = LFG_TELEPORTERROR_INVALID_LOCATION;
|
||||
sLog->outError(LOG_FILTER_LFG, "TeleportPlayer: Failed to teleport [" UI64FMTD "] to map %u (x: %f, y: %f, z: %f)", player->GetGUID(), mapid, x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (error != LFG_TELEPORTERROR_OK)
|
||||
player->GetSession()->SendLfgTeleportError(uint8(error));
|
||||
|
||||
sLog->outDebug(LOG_FILTER_LFG, "TeleportPlayer: Player %s is being teleported in. Result: %u",
|
||||
player->GetName(), error);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user