Код:
----------------------------- src/game/Player.cpp -----------------------------
index 8a53809..8ebf515 100644
@@ -1946,6 +1946,17 @@ void Player::ProcessDelayedOperations()
CastSpell(this, 26013, true); // Deserter
}
+ if(m_DelayedOperations & DELAYED_UPDATE_ZONE)
+ {
+ UpdateLocalChannels(m_zoneUpdateId);
+
+ // group update
+ if(GetGroup())
+ SetGroupUpdateFlag(GROUP_UPDATE_FLAG_ZONE);
+
+ UpdateZoneDependentAuras(m_zoneUpdateId);
+ }
+
//we have executed ALL delayed ops, so clear the flag
m_DelayedOperations = 0;
}
@@ -6422,6 +6441,12 @@ void Player::UpdateZone(uint32 newZone, uint32 newArea)
DestroyZoneLimitedItem( true, newZone );
// recent client version not send leave/join channel packets for built-in local channels
+ if(!IsInWorld())
+ {
+ ScheduleDelayedOperation(DELAYED_UPDATE_ZONE);
+ return;
+ }
+
UpdateLocalChannels( newZone );
// group update
------------------------------ src/game/Player.h ------------------------------
index d84e931..d003853 100644
@@ -740,6 +740,7 @@ enum PlayerDelayedOperations
DELAYED_SAVE_PLAYER = 1,
DELAYED_RESURRECT_PLAYER = 2,
DELAYED_SPELL_CAST_DESERTER = 4,
+ DELAYED_UPDATE_ZONE = 8,
DELAYED_END
};
другой, более правильный способ исправления бага. Вместе с тем, замечен еще баг, который все еще не исправлен - если игрок в пати телепортируется в инст, а пати вне инста - пати видит статус игрока - оффлайн.