Показать сообщение отдельно
Старый 27.04.2010, 13:55   #2
Chipleo
Пользователь
 
Аватар для Chipleo
 
Регистрация: 05.04.2010
Сообщений: 53
Сказал(а) спасибо: 4
Поблагодарили 24 раз(а) в 15 сообщениях
Chipleo На верном пути
По умолчанию

Код:
----------------------------- 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
 };
другой, более правильный способ исправления бага. Вместе с тем, замечен еще баг, который все еще не исправлен - если игрок в пати телепортируется в инст, а пати вне инста - пати видит статус игрока - оффлайн.

Последний раз редактировалось Chipleo; 27.04.2010 в 13:59.
Chipleo вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Limpnau (12.06.2010)