Added (blizzlike) packet broadcast to near teleport. Thanks to Zor and nalimleinad (AKA anonymous colleague #1) for research.
--HG-- branch : trunk
This commit is contained in:
+12
-3
@@ -1640,7 +1640,16 @@ uint8 Player::chatTag() const
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Player::SendTeleportAckMsg()
|
||||
void Player::SendTeleportPacket(Position &oldPos)
|
||||
{
|
||||
WorldPacket data2(MSG_MOVE_TELEPORT, 38);
|
||||
data2.append(GetPackGUID());
|
||||
BuildMovementPacket(&data2);
|
||||
Relocate(&oldPos);
|
||||
SendMessageToSet(&data2, false);
|
||||
}
|
||||
|
||||
void Player::SendTeleportAckPacket()
|
||||
{
|
||||
WorldPacket data(MSG_MOVE_TELEPORT_ACK, 41);
|
||||
data.append(GetPackGUID());
|
||||
@@ -1777,8 +1786,8 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
|
||||
Position oldPos;
|
||||
GetPosition(&oldPos);
|
||||
Relocate(x, y, z, orientation);
|
||||
SendTeleportAckMsg();
|
||||
Relocate(&oldPos);
|
||||
SendTeleportAckPacket();
|
||||
SendTeleportPacket(oldPos); // this automatically relocates to oldPos in order to broadcast the packet in the right place
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
+2
-1
@@ -1825,7 +1825,8 @@ class Player : public Unit, public GridObject<Player>
|
||||
void SendMessageToSetInRange(WorldPacket *data, float fist, bool self);// overwrite Object::SendMessageToSetInRange
|
||||
void SendMessageToSetInRange(WorldPacket *data, float dist, bool self, bool own_team_only);
|
||||
|
||||
void SendTeleportAckMsg();
|
||||
void SendTeleportPacket(Position &oldPos);
|
||||
void SendTeleportAckPacket();
|
||||
|
||||
static void DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmChars = true);
|
||||
|
||||
|
||||
@@ -3898,7 +3898,7 @@ void Spell::EffectDistract(uint32 /*i*/)
|
||||
{
|
||||
// For players just turn them
|
||||
unitTarget->ToPlayer()->SetPosition(unitTarget->GetPositionX(), unitTarget->GetPositionY(), unitTarget->GetPositionZ(), angle, false);
|
||||
unitTarget->ToPlayer()->SendTeleportAckMsg();
|
||||
unitTarget->ToPlayer()->SendTeleportAckPacket();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+1
-23
@@ -15990,7 +15990,7 @@ void Unit::ExitVehicle()
|
||||
if (GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
//this->ToPlayer()->SetClientControl(this, 1);
|
||||
this->ToPlayer()->SendTeleportAckMsg();
|
||||
this->ToPlayer()->SendTeleportAckPacket();
|
||||
this->ToPlayer()->SetFallInformation(0, GetPositionZ());
|
||||
}
|
||||
WorldPacket data;
|
||||
@@ -16109,31 +16109,9 @@ void Unit::NearTeleportTo( float x, float y, float z, float orientation, bool ca
|
||||
this->ToPlayer()->TeleportTo(GetMapId(), x, y, z, orientation, TELE_TO_NOT_LEAVE_TRANSPORT | TELE_TO_NOT_LEAVE_COMBAT | TELE_TO_NOT_UNSUMMON_PET | (casting ? TELE_TO_SPELL : 0));
|
||||
else
|
||||
{
|
||||
WorldPacket data;
|
||||
/*data.Initialize(MSG_MOVE_TELEPORT, 30);
|
||||
data.append(GetPackGUID());
|
||||
data << uint32(GetUnitMovementFlags());
|
||||
data << uint16(0); // Probably walk flags here
|
||||
data << getMSTime(); // time
|
||||
data << x; // destination coords
|
||||
data << y;
|
||||
data << z;
|
||||
data << orientation;
|
||||
data << uint32 (0);
|
||||
// Other information here: jumping angle etc
|
||||
SendMessageToSet(&data, false);*/
|
||||
|
||||
// FIXME: this interrupts spell visual
|
||||
DestroyForNearbyPlayers();
|
||||
|
||||
SetPosition(x, y, z, orientation, true);
|
||||
//ObjectAccessor::UpdateObjectVisibility(this);
|
||||
|
||||
//WorldPacket data;
|
||||
// Work strange for many spells: triggered active mover set for targeted player to creature
|
||||
//BuildTeleportAckMsg(&data, x, y, z, orientation);
|
||||
//BuildHeartBeatMsg(&data);
|
||||
//SendMessageToSet(&data, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -341,7 +341,7 @@ bool Vehicle::AddPassenger(Unit *unit, int8 seatId)
|
||||
}
|
||||
|
||||
//if(unit->GetTypeId() == TYPEID_PLAYER)
|
||||
// unit->ToPlayer()->SendTeleportAckMsg();
|
||||
// unit->ToPlayer()->SendTeleportAckPacket();
|
||||
//unit->SendMovementFlagUpdate();
|
||||
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user