[Crash fix] Fix summon to instance crash

This commit is contained in:
Yunfan Li
2024-07-17 19:48:27 +08:00
parent 1d9de4331b
commit 770921ae50

View File

@@ -450,22 +450,24 @@ void PlayerbotAI::HandleTeleportAck()
bot->GetMotionMaster()->Clear(true); bot->GetMotionMaster()->Clear(true);
bot->StopMoving(); bot->StopMoving();
if (bot->IsBeingTeleportedNear()) if (bot->IsBeingTeleportedNear()) {
{ while (bot->IsInWorld() && bot->IsBeingTeleportedNear()) {
WorldPacket p = WorldPacket(MSG_MOVE_TELEPORT_ACK, 8 + 4 + 4); Player* plMover = bot->m_mover->ToPlayer();
p << bot->GetGUID().WriteAsPacked(); if (!plMover)
p << (uint32) 0; // supposed to be flags? not used currently return;
p << (uint32) time(nullptr); // time - not currently used WorldPacket p = WorldPacket(MSG_MOVE_TELEPORT_ACK, 8 + 4 + 4);
bot->GetSession()->HandleMoveTeleportAck(p); p << plMover->GetPackGUID();
p << (uint32) 0; // supposed to be flags? not used currently
// add delay to simulate teleport delay p << (uint32) 0; // time - not currently used
bot->GetSession()->HandleMoveTeleportAck(p);
}
SetNextCheckDelay(urand(1000, 3000)); SetNextCheckDelay(urand(1000, 3000));
} }
else if (bot->IsBeingTeleportedFar()) if (bot->IsBeingTeleportedFar())
{ {
bot->GetSession()->HandleMoveWorldportAck(); while (bot->IsBeingTeleportedFar()) {
bot->GetSession()->HandleMoveWorldportAck();
// add delay to simulate teleport delay }
SetNextCheckDelay(urand(2000, 5000)); SetNextCheckDelay(urand(2000, 5000));
} }